关于西门子S7 200 SMART 的时间设置

请问在编程中,这两段程序怎么理解?据说是读取PLC的系统时间,数据转换传送给上位机;读取写入PLC的时间。但是不懂为什么是这样的,请各位前辈指教,可以详加说明一家。

问题补充:
左图中的B_I是将字节转换为整数,BCD_I是将BCD码转换为整数,但图中是将VW2036(16位的整数)转换为整数存放在VW2038中,这里是指用VW2036这个16位的整数表示BCD码吗?最后MOV_B指令的输入只取了VW2038的低8位VB2039,将这个低8位的值传送给VB2110。是这样理解吗?
关于1个字有2个字节组成,如VW0,这个字是VB0和vb这两个字节组成,那么VB0是这个字的高位,VB1是这个字的低位?是这样吗?数据是先存放在低位中?如果有相关资料,请指教一下。谢谢各位前辈!

图片说明:

关于西门子S7 200 SMART 的时间设置    关于西门子S7 200 SMART 的时间设置   

最佳答案

Read_RTC(读时钟)和Set_RTC(设置时钟)指令靠数据缓冲区在用户程序与硬件芯片间交换数据,它们的缓冲区格式相同。
VB311 开始的8个字节中前6个分别是年、月、日、时、分、秒,读到的都是BCD码,左图应是将年、月、日、时、分、秒的 BCD 码转成整数,好让位机识别。
右图是读、写时CPU时钟
S7-200 SMART实时时钟常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/010.html
补充:
BCD码是每四位二进制码表示一位十进制码,这个可以百度一下码制方面的内容
左图中最上面一行 VB311是 BCD 码,你可以理解为是一个字节,B_I 是将字节扩展为字存储在 VW2036,其高 8 位全部是0,而低 8 位仍然是年的BCD码。这条指令主要是为了下一条指令做准备工作。
接着用  BCD_I  将 16 位的 BCD 码转换为整数,存储在 VW2038;同样高8位全是0,而低 8 位就是年的十进制数。低 8 位就是VB2039
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/Data_addressing.html

提问者对于答案的评价:
谢谢您!对我帮助很大!请问Read_RTC(读时钟)和Set_RTC(设置时钟)这两个指令是需要配合使用的,在程序中,是成对出现的,就像置位和复位指令?是这么理解吗?Read_RTC(读时钟)读取的PLC时间,是自动读取的?

最佳答案作者回复:
可以这么理解,一个是为了读取时钟,时间长了CPU的时钟是有误差的另一个是为了校准时间,向CPU写时钟用的。
右图中是每一个扫描周期都读取时钟,而校时是由M0.0控制的。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论