S7-1200 AS-OS系统关于时间FAQ(二)
主要内容:
1、S7-1200 PLC中日期和时间
2、WINCC中日期和时间
3、WINCC读写S7-1200日期和时间
WINCC版本:V7.4 SP1 ASIA
TIA博途版本:V14 SP1
1S7-1200 PLC中日期和时间
1.时钟数据格式
S7-1200以PLC系统预定义的结构DTL存储日期和时间信息,数据长度为12个字节。
下表列出了数据类型DTL的属性:
数据类型 DTL 的结构由几个部分组成,每一部分都包含不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。
下表给出了数据类型DTL的结构组成及其属性:
2.定时器时间数据格式
S7-1200 PLC使用的是 IEC 定时器(无SIMATIC定时器),输入参数PT数据类型为TIME,其操作数内容以毫秒表示。表示信息包括天 (d)、小时 (h)、分钟 (m)、秒 (s) 和毫秒 (ms),数据长度为4个字节。也可以使用DWORD、DINT数据类型赋值。
下表列出了数据类型 TIME 的属性:
没必要指定所有时间单位。例如,T#5h10s 是有效条目。如果仅指定了一个单位,则天、小时和分钟的绝对值不能超过上限或下限。当指定了多个时间单位时,数值不能超过 24 天 23 小时 59 分 59 秒 999 毫秒。
使用IEC定时器的好处是没有数量的限制,只需分配一个IEC_TIMER系统数据类型的结构变量。如可以声明一个系统数据类型为 IEC_TIMER 的DB,但一般为了减少项目DB数量,可以在一全局DB数据块中声明IEC_TIMER 类型的变量。并可设置保持性。
如下图IEC_TIMER结构的数据块DB3,占用装载存储器为762字节,工作存储器24字节,而IEC_TIMER结构本身只有12字节。即使是一个空的非全局优化的块访问DB5也会占用不少系统存储资源,优化的块访问DB会更多。这一点大家要了。
2WINCC中日期和时间
1.时钟数据格式
WINCC中“日期/时间”(Date/Time) 数据类型为浮点数 64 位 IEEE 754,长度为 8 字节。
变量获取日期和时间,并作为浮点数使用,其整数部分为 1899 年 12 月 30 日午夜前或午夜后的天数,其小数部分为这一天的时间除以 24。
例如,1899 年 12 月 31 日的午夜表示为 1.0,1900 年 1 月 1 日早上 6 点表示为 2.25,1899 年 12 月 29 日午夜表示为 -1.0,而 1899 年 12 月 29 日早上 6 点表示为 -1.25。
2.定时器时间数据格式
WINCC中并没有定时器时间数据类型,从前文了解,S7-1200 PLC中DINT和TIME(为带符号的32位IEC时间数据类型)可以进行隐式转换(执行指令时对不同类型操作数自动进行转换),所以WINCC中可使用“有符号的 32 位值” 数据类型读取定时器时间。
3WINCC读写S7-1200日期和时间
1.读取时钟
新建WINCC变量,数据类型选择“日期/时间”,格式调整选择“DateTimeToSimaticDTL”。且该格式调整是双向的。
设置地址对应为PLC中DTL变量的地址(当WINCC通过绝对地址访问DB数据时,需取消DB“优化的块访问”。)
在画面中显示时钟:添加“I/O域”,连接变量,数据格式选择“日期/时间”。
说明:上篇文章提到,可以在“区域与语言”设置本机WINCC日期/时间的显示格式,但对I/O域“数据格式”设置为“日期/时间”来显示日期/时间时是无效的。如果要按“YYYY-MM-DD”格式显示日期,可以把I/O域“数据格式”设置为“字符串"。
2.读取定时器值
新建WINCC变量,数据类型选择“有符号的 32 位值”,格式调整选择“LongToSignedDword”。
设置地址对应为PLC中DTL变量的地址
在画面中显示时间:添加“I/O域”,连接变量,数据格式选择“日期/时间”,输出格式选择“时间(+毫秒)”
注意:
上面的方法通过变量的读写只能进行PLC时种设置而不能完成时间同步的功能。因为必须考虑到延迟,比如报文的处理时间,C 脚本的运行时间等,因此这个方法在精度方面不如真正的时间同步精确。
推荐阅读:
若觉得文章对你有帮助,记得随手点赞、分享。扫描下面二维码、关注后,在底部菜单中查看更多内容!
微信公众号:scadaclub
长按识别图中二维码关注