现在有一个电表协议,读正向有功电能,对方电表该数据用的INT64. 到了西门子smart200PLC这是不是只能接收最大32位无符号数据? 假如对方电能数据放在寄存40001到40007中放到西门子VD0和VD4中,PLC这只能用过40004到40007这个VD4中的数据?
程序另外设置,当总电量大于等于VD4的最大值,将电量用电量清0.
是不是只能这样处理?
图片说明:
最佳答案
不是这样理解的,假设从站(仪表)的数据长度为40001~40007的8个字的长度,那么,你读取的信息在dataptr管脚以指针方式接收是如&vb0,那么,他们对应关系是
40001 vw0
。。。 vw2
。。。 vw4
40007 vw14
MSG指令如果是读、写V存储区数据的,那么只能是以字的形式。
你仪表的数据是int64,是理解为64位数据?
如果是,那200smart是不支持64位数据的直接应用的。
s7-1200的可以。
提问者对于答案的评价:
谢谢。 我的提问错了。 应该该40001 40002 40003 40004这几个刚好是一个电能数据,放入VD0到VD4中。 是不 是数据先放入了VD4中,VD4满了再从VD0中进位。
最佳答案作者回复:
首先你验证你的仪表电能数据是存放在VD0~VD4中的。
如果确实是,那么,你监控这些数据的存放方式,如果按西门子的数据格式,你理解的是对的,但是,作为与第三方的通讯(实际计算数据的交换),反倒变的不确定了。
监控实际数据的变化是最有效的办法。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345792.html