我以前是做西门子PLC的,用的很熟。这段时间改用施耐德M340,练习Unity Pro,有几点心得跟大家分享下。
%I,%Q,%IW,%QW,%M,%MW各自的区别
%I,%Q,%M,EBOOL类型,这个EBOOL是我第一次听说,看完说明书我明白了,其实它是一个Byte,刚开始我练习的时候想建立一个M位地址(BOOL类型),发现失败,只能用%MWX.Y。这个EBOOL按照说明书的讲法是有很多功能的,包括跳变延等等,各位可以自己看看书。
%MW类型,这个也很独特,在定义DINT或者REAL时,%MW只能从偶数地址开始,各位要问了,%MW只有16位啊,怎么表示32位的数据,其实这个大家不用考虑,Unity Pro给大家做好了,定义的这个32位数据其实就包含了你给的地址+1的那16位。
再说说施耐德对负数的处理,西门子大家搞过的应该很熟,MB0-MB1-MB2-MB3基本是按这个规则逐渐增大的,如果你一个DINT或者一个REAL数据,那么对于西门子而言它的最高位实际上是M0.7,接下来看看施耐德的搞法:如果你定义一个32位数据%MW32,你猜猜最高位是哪个?是%MW33.15,大家看明白了没?
再说说关于对负数的处理,在西门子PLC中负整数其实就是正整数的补码,这点施耐德一样。