数据运算的问题

S7-300,wincc往PLC里写数据,写入的是DWORD,但是PLC内部DWORD不能直接运算,我想转换成DINT,我想问下用BCD-DI的转换指令和直接将DWORD用传送指令传送到DINT单元中有区别吗,我在现场调试,用转换指令写的数稍大CPU就会停止,后来换成了传送指令就好了,但是我感觉这样传送会有问题,谁能告诉我怎样写才对?
另外DWORD和DINT到底是什么样的关系,能不能通俗的讲一讲?看了很多都不是太懂,能不能简单点说说,我在现场出差有点急,谢谢了!

最佳答案

你没弄明白西门子的数据格式,首先BCD-DI是把BCD码格式的数据转换为DINT(BCD码的介绍见链接http://baike.baidu.com/view/45179.htm),你用这个指令肯定是不对的,DWORD和DINT都是32位整数,区别是前者是无符号整数(范围是16#0~16#FFFF_FFFF),后者是有符号位整数(范围是-2147483648~2147483647),显然只要你的WINCC写入数值不超过2147483647,用MOVE指令将DWORD传送给DINT是没问题的,如果超过了,那么就会出现溢出。

提问者对于答案的评价:
还是不太明白,如果DWORD超过DINT的运算范围,DWORD不能送到DINT怎么运算

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午4:57
下一篇 2018年12月2日 下午4:58

相关推荐