维控测试艾默生PLC浮点数总结 点击:860 | 回复:3



触摸屏之神

    
  • 精华:3帖
  • 求助:0帖
  • 帖子:367帖 | 384回
  • 年度积分:7
  • 历史总积分:3624
  • 注册:2006年10月12日
发表于:2011-07-15 11:41:50
楼主
维控测试艾默生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



云锋

  • 精华:1帖
  • 求助:4帖
  • 帖子:252帖 | 5541回
  • 年度积分:0
  • 历史总积分:30376
  • 注册:2005年6月24日
发表于:2011-07-15 12:48:09
1楼
不错,触摸屏支持通讯的PLC厂家越多,销路越广,但这与前期的测试密不可分的。

迈思德

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 176回
  • 年度积分:0
  • 历史总积分:676
  • 注册:2011年3月17日
发表于:2011-07-15 21:01:53
2楼

MODBUS协议本身就是支持单精度浮点以及宽整形4个字节互换的,像常用的组态软件都支持1234,1243,2134,,1243,4种方式。

这个是正常的。

南京迈思德电气自动化有限公司 技术支持部

FastDevelop

  • 精华:0帖
  • 求助:0帖
  • 帖子:40帖 | 234回
  • 年度积分:0
  • 历史总积分:686
  • 注册:2010年11月13日
发表于:2011-07-15 23:00:08
3楼
引用迈思德 的回复内容:

MODBUS协议本身就是支持单精度浮点以及宽整形4个字节互换的,像常用的组态软件都支持1234,1243,2134,,1243,4种方式。

这个是正常的。

南京迈思德电气自动化有限公司 技术支持部


2楼的是行家,的确很多组态软件都支持MODBUS 4字节互换的。




热门招聘
相关主题

官方公众号

智造工程师