设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
AB PLC | 将故障时间戳转换为日期时间
返回列表
发新帖
[AB]
AB PLC | 将故障时间戳转换为日期时间
[复制链接]
55548
|
0
|
2024-7-25 09:19:04
|
显示全部楼层
|
阅读模式
前言:在发表了《如何避免CPU在发生故障时停机》之后,有朋友在后台留言:如何获取并显示发生故障的时间?在那篇文章中,只提及到了存储故障时间戳是由2个DINT数据组成,无法直观的显示为yyyy-mm-dd hh:mm:ss时间格式。那么,本文来说说如何实现获取并直观显示发生故障的时间。
时间戳定义
由于存储故障发生的时间为时间戳格式,首先了解一下什么是时间戳?
1. 定义:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,如下图所示:
2. 时间戳通常是一个字符序列,唯一地标识某一刻的时间,一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据;
3. 广泛的运用在知识产权保护、 合同签字、 金融帐务、 电子报价投标、 股票交易等方面.
故障时间戳
1. 在《如何避免CPU在发生故障时停机》文章中,获取的主故障信息,包括了故障时间戳,由2个DINT数据组成为1个64位的时间戳.
2. 发生主故障时,将其发生的时间记录下来,如下图,其中:Time_Low为-401804333,Time_High为362541,均为十进制数据,无法直观的显示为日期时间格式。
获取故障时间
在《如何避免CPU在发生故障时停机》的程序里面,继续下面的操作。
1. 新建一个自定义的日期时间数据类型.
2. 在控制器标签域内新建3个变量,均用于存储发生故障的时间:
(1)FaultDateTime:数据类型UDT_DateTime;
(2)FaultTime_unit_ms:数据类型LINT,类型为Date/Time;
(3)FaultTime_unit_us:数据类型LINT,类型为Date/Time.
3. 在清除故障的例程Fault里面,编写获取发生故障时间的程序,详见下图.
方法介绍
1. 方法一:使用COP指令,将Time_Low和Time_High,2个DINT(8个字节)数据复制到1个LINT数据(FaultTime_unit_us)里,这样就能完整的显示发生故障的日期时间了.
2. 方法二:使用GSV指令,获取TimeSynchronize的当前时间CurrentTimeMicrosecond.
3. 方法三:使用GSV指令,获取WallClockTime的当地日期时间.
模拟故障测试
模拟间接寻址数组维度超过范围,发生故障类型4、代码20的主故障,使用上面介绍的三种方法,均能获取并显示发生故障的精精确间(us级别).
结束语:本文介绍了获取并显示故障时间的三种方法,这样对控制器发生故障或指令执行出错的时间进行追溯,以便找出问题所在。
【AB PLC工作室】
微信公众号ID:abseme
坚持原创 注重实用
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
ABPLC工作室
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』