cpu224xp做modbus主站接收从站数据(数据范围0-100000),如何选择寄存器及编程

从站设备发送的是16进制数值,换成十进制是从0-10万的范围,如果选择字存储VW0,最多只能放0-32767,如果选择双字存储,容量是够了,不过比如说原来接收的数值是0AF0,,,换成VD0后,同样的数值,寄存器存储的样式变成了0AF00000,这就造成了错误,请问各位老师如何解决??直接用高低位转换指令吗?谢谢

最佳答案

请参考链接下面《S7-200 作为 Modbus 主站方接收上来的数据格式与第三方设备不一样怎么办?》
西门子PLC数据的存储格式为高位低存方式。举例:VD200中包含VW200和VW202,其中VW202是低字,VW200是高字。若第三方设备与西门子数据存储格式不同,是低位低存的方式,那么通信上来的数据就会存在错误,需要进行转换才能使用。编程的方式比较多样。
例如,针对单个字中高低字节的交换可以使用SWAP(字节交换)指令,若是双字中高低字的交换可以考虑循环移位指令。
比如双字循环右移16位就可以了。
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/communication/modbus/modbus%20master/Modbus%20master.htm

提问者对于答案的评价:
你好,当接收数值为1时,寄存器VD50就变成了16#01000000,分开显示,VB50显示的是1,VB51显示的是0,如果采用循环移位指令,请问怎么编程呢?应该需要沿触发吧,我采用sm0.0后面加沿触发好像不起作用,我把从从站接收的数据处理放在了子程序,如果需要循环,不知如何编程了

最佳答案作者回复:
sm0.0后面不能加沿,它是长时间接通的。
可以引入一个中间变量,比如 VD204,将原变量 VD200循环右移的数据不断地存入VD204,这样就不用沿触发了。
另外移位后的数据是不是对高字、低字还要进行交换,你得再看一下。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc370877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午4:33
下一篇 2021年7月5日 下午4:34

相关推荐

  • TD400C导致伺服电机定位有误差?

    请教:目前使用了3个cpu224组网,地址分别设定为2、3、4,还有一个TD400C,用于更改相关参数。现出现的问题是:每个CPU224控制2个伺服电机,用脉冲输出功能。如果将TD…

    SIMATIC S7-200 2020年11月1日
  • S7-200与EM231,EM232连接

    两者的连接是否需要软件编程实现,其模块故障也是这样么 最佳答案 不需要,模拟量模块自带有连接线。接上就行。 直接读写模拟量模块地址的值就可以了  提问者对于答案…

    SIMATIC S7-200 2021年7月5日
  • RS232/PPI线缆是什么线缆?

    如题,我想在S7-200通过自由口连接其他RS232串口打印机,但是不知道选哪种连接线缆。有两个问题帮忙解答下:谢谢!1.我在资料上查询需要使用RS232/PPI线缆, …

    SIMATIC S7-200 2017年6月3日
  • 十万火急!!!水处理过程编程问题

    需要控制的有.电磁阀,高压泵.冲洗阀. 流程走向:以水为准.水进设备依次通过低压保护压力表,电磁阀,高压泵,高压保护压力表,RO膜,之后分2路,一路是终端水箱,一路是冲洗…

    SIMATIC S7-200 2021年7月5日
  • s7-200与力控软件之间的modbus rtu通讯

    我现在用力控软件做一套监控 ,但是plc和力控之间的通讯不知道怎么写,我是指plc程序,还请各位大神施以援手,最好附上实例,感激不尽呢 最佳答案 力控组态软件有S7-20…

    SIMATIC S7-200 2021年7月5日
  • EM277和216和触摸屏通讯问题

    现场:2个216PLC软件版本都是1.23,一个EM277模块,一个10寸触摸屏TP270。PLC1的PORT0口和PORT1口都定义了自由口通讯,所以加了一个EM277模块。现场…

    2017年11月4日
  • 在安装USB/PPI驱动时出现如下情况,怎么办?

    在安装USB/PPI驱动时出现如下情况,怎么办? 图片说明:    最佳答案 安装包目录不能有中文!把文件夹名称改中文就好了! 提问者对于答案的评价:谢谢

    2021年7月5日
  • 变量的时基单位问题

    用TD400C给200的时间变量赋值单位是秒,而内部定时器的时基单位是毫秒,请问单位是自动换算吗?另外在数据块里写的初始值单位是毫秒吗? 最佳答案 时基单位是100毫秒的,你设置1…

    SIMATIC S7-200 2020年10月31日
  • vb0和v0.0,v0.1等都用了好像没有冲突吧?

    有冲突吗?vb0包括v0.0-v0.7 最佳答案 一个读一个写没有问题,如果多个写就有问题了,比如你用vb0做计数功能,用v0.0~v0.7做报警位就会有问题了。 提问者对于答案的…

    SIMATIC S7-200 2021年7月5日
  • 西门子原装rs232/ppi电缆通信问题

    该电缆直接接Plc可以通信,用DP线将plc端口port1延长后,在另一段却无法通信。DP延长线2芯,A-A,B-B的接法,两端都是DP头。是不是2芯只是信号,还需将port1的2…

    2021年7月5日

发表回复

登录后才能评论