我想在12点30上去触发M20.0,这一点,现在我把12和30都转化位BCD格式了,监控了感觉不对,他这个12也没有去转换成BCD格式把?这是哪里出现了问题?谢谢
图片说明:
最佳答案
1、
最后一张图中,I_BCD 转换的结果是 16 位的BCD码,有效值是在低位字节中,西门子是低位高存,所以中间那张图比*VD30、*VD34 取的都是I_BCD 转换的结果BCD码的高位,这就不对了。
可以再引入两个指针,比如 VD38、VD42,其中 VD38=VD30+1,VD42=VD34+1,这样*VD38、*VD42就都指向了有效字节。
再用字节比较指令进行时比较,则比较 VB23 *VD38 的关系
再用字节比较指令进行分比较,则比较 VB24 *VD42 的关系
2、
其实西门子提供了一个 Clock_integer 库指令,其功能:由于S7-200时钟指令的数据格式是BCD码,使用该库指令可以直接读取S7-200 CPU时钟并以整数格式输出所读取的值。
用这个指令则不用这么麻烦进行转换了。
下面链接《2.2 Clock_integer》
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/software/library/library_links/Library_links.html
Clock_Integer 指令库及其使用
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/software/library/Clock_Integer/Clock_Integer.html
提问者对于答案的评价:
谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc343288.html