InTouch如何显示高、低字倒换的实数? 点击:2106 | 回复:3



AmadeusLee

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2012年9月10日
发表于:2014-12-15 12:43:32
楼主

PLC(西门子 s7-200)里定义了实数(VD),32位(bit),占两个字(word)。

但上位机应把此数的高、低字倒换位置后,再按实数(float)进行显示。我用Modbus Poll,Modbus Master等测试软件,是选的Float Inverse(负单精度小数)这种显示模式。

InTouch(或Da Server/IO Server)应该如何设置?困扰我一个星期了。。

谢谢大家!




AmadeusLee

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2012年9月10日
发表于:2014-12-16 09:52:11
1楼

自己补充:上位机和PLC是以太网通讯,驱动(DA Server)是DASMBTCP(我知道也可以用IO Server)。因为PLC是外地公司几年前安装,所以不方便更改PLC程序,我相信上位机一定可以处理这个问题。谢谢~

AmadeusLee

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2012年9月10日
发表于:2014-12-24 11:31:09
2楼

自己回复:

详细查看了文档,InTouch不提供位层面上的数据处理方法,DA Server/IO Server也不提供相关设置,InTouch和DA Server的功能有待加强...现在的解法至少有两种:

1. 上位机把两个VW(16位)分别读上来,交换顺序后写到另外一个PLC的存储区中,再重新把数按VD(32位)读出来。这其实还是在PLC里交换了字的顺序,很繁琐,我目前就是这么做的。

2. 在InTouch里编写用户函数,按照浮点数IEEE 754标准自行把32位二进制数据转换成浮点数小数表示。

碧海长空

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 53回
  • 年度积分:0
  • 历史总积分:215
  • 注册:2004年7月12日
发表于:2015-01-12 15:49:18
3楼

应该可以建一个内存实型标签,写一个功能函数,把数据转换后再赋值给标签 是可以的吧!


热门招聘
相关主题

官方公众号

智造工程师