找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
你所说的数制问题,都要回到计算机的存储上来。例如,数10,若按BCD码存储(通常所说的10进制存储),则需以位序列2#00010000等同于16#10存在计算机,若不申明以BCD码存储,计算机上就是16#0A。换句话说,计算机上存储的都是二进制0、1组成的位序列。这一串位序列,代表什么意思是依靠人来定义的,它有可能是浮点数、整数、还有可能是字符的ASCAI码。16#80赋值给无符号变量,这个变量的值就是+128,若将其赋值给有符号数他就是-128。
从你的附图来看:VB205=16#0A,A的出现说明你的仪表是以16进制存储,而非BCD码。
要正确理解通信过来的数据(VB204VB205VB206),必须要弄清楚仪表上的地址空间高位在前,还是低位在前。仪表与S7-200PLC通信若是Modbus RTU通信,通常是以字为单位传递数据,那你可看说明书规定的映射关系4xxxx地址,数大的代表流量的高位(小端存储),还是数小的代表高位(大端存储)。若是自由口通信,也同样要观察是大端存储还是小端存储。
若是大端存储(高位值存在低地址内存空间),你可编程:VB100=0,VB101=VB204
VB102=VB205,VB103=VB206,然后引用VD100就可以了。你用STEP7 MicroWin观察时让它显示为10进制即可。至于你让它在PLC程序中参与计算,更是不用关注数制问题,而是应该关注赋值给什么类型变量(整数,还是实数)。
若是小端存储(高位值存在高地址内存空间),你可编程:VB100=0,VB101=VB206
VB102=VB205,VB103=VB204,然后引用VD100就可以了。
对流量仪表,常常是有小数的,通信时,往往是将实际流量除以某个单位流量得到整数存储再传送。例如:2.56L/min,在仪表上可能存储的时321=16#0100,默认有个单位是0.01L/min。若是这样,上述的VD100则需要用DI_R指令转换为实数,然后用DIV_R除以100.0才能得到真正的流量大小。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!