维控测试艾默生PLC浮点数总结
我们手上已拿到艾默生EC20的PLC,专门就浮点数数值问题进行测试,我们得出如下结论:
(1) 艾默生PLC的驱动,的确支持modbus协议,但是其的浮点的做法与一般的做法不一样,是浮点的双字,高字在前,低字在后;而一般的做法,包括所有人机的做法,对于浮点的处理是低字在前,高字在后。以下是我们监控艾默生PLC的数据:
现在往D560的地址,浮点数写1.0,读回来的数据就是上述图片说指:3F800000;
一般的数据应该返回00003F80
故要正确读取艾默生PLC的浮点,需要设置维控工程的组态,浮点处理有特殊的处理,浮点设置”高字在前”
,默认是“低字在前”。
(2)我们测试过维纶,显控,台达的组态软件,发现他们的做法:没有”浮点高低字互换”的功能,所以他们组态读写浮点数时,显示的全是0.0. 目前我们还没找到他们类似我们的设置
他们的做法和我们维控默认的做法一样,同样不能满足艾默生PLC的浮点数处理;
(2) 艾默生PLC监控强制浮点数的问题:
如下图1:
这里的”REAL”就是相当于”浮点数”,现在“D560”地址的浮点数为“1.0000”,若用16进制看,如下图2:
图3:
如果需要强制D560的浮点数为“2.00000”,此时需要在数据类型为”DWORD”模式下强制(即在图3的方式下),此时写下去的值才是浮点的”2.00000”,否则,如果按数据类型为”REAL”的模式,艾默生就会按10进制的“2”,往PLC写值,就会出现如图4的情况:
图4:(用10进制查看)
图5:(用16进制查看)
显然,艾默生PLC的这种处理,让用户理解起来有点别扭。呵呵,不知是否有客户给他们反馈过这个问题。
以上就是维控对于测试艾默生 EC20 系列PLC的浮点数处理的结果,如有不周,希吝赐教。
福州富昌维控电子科技有限公司 软件研发部
2011-5-21