AmadeusLee
PLC(西门子 s7-200)里定义了实数(VD),32位(bit),占两个字(word)。
但上位机应把此数的高、低字倒换位置后,再按实数(float)进行显示。我用Modbus Poll,Modbus Master等测试软件,是选的Float Inverse(负单精度小数)这种显示模式。
InTouch(或Da Server/IO Server)应该如何设置?困扰我一个星期了。。
谢谢大家!
自己补充:上位机和PLC是以太网通讯,驱动(DA Server)是DASMBTCP(我知道也可以用IO Server)。因为PLC是外地公司几年前安装,所以不方便更改PLC程序,我相信上位机一定可以处理这个问题。谢谢~
自己回复:
详细查看了文档,InTouch不提供位层面上的数据处理方法,DA Server/IO Server也不提供相关设置,InTouch和DA Server的功能有待加强...现在的解法至少有两种:
1. 上位机把两个VW(16位)分别读上来,交换顺序后写到另外一个PLC的存储区中,再重新把数按VD(32位)读出来。这其实还是在PLC里交换了字的顺序,很繁琐,我目前就是这么做的。
2. 在InTouch里编写用户函数,按照浮点数IEEE 754标准自行把32位二进制数据转换成浮点数小数表示。
碧海长空
应该可以建一个内存实型标签,写一个功能函数,把数据转换后再赋值给标签 是可以的吧!