西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据

我手头上有一个西门子200以及一个使用modbus-rtu通讯协议的温湿度的传感器。然后我用485转USB把传感器接在电脑上,然后用串口助手发送询问桢,串口助手自动自动接收到应答桢,并且数据无误,然后把传感器与西门子串口连接起来,写程序进行读取,怎么也读不出来。总体疑问有以下几点:
1.经过初始化后,西门子的mbus_MSG程序有两个功能,一个是读一个是写,先说读功能,我如果直接读温湿度所在的寄存器,那么会一直显示错误3,即接受超时。
2.再来说写功能,我如果用写功能,那么我有三个疑惑的地方,我的询问桢是不是先得放在寄存器里,然后发送过去?
第二个疑惑的地方,我写的地址是不是文档里面给出的40001,如果不是,应该往哪里写?
第三个疑惑的地方,我的技术文件里面写着说,这是只读寄存器,那我怎么写进去?
第四个疑惑的地方,如果上面的全对,那我写进去了,他的应答桢放在哪里给我,我放询问桢的地方吗?
第五个疑惑的地方,我每次用写程序后,我原来放询问桢的寄存器的数据都会被改变,但是这些数据是固定的,就是不管我有没有连接传感器,只要执行了写程序,里面的都会被改变成固定值。

图片说明:

西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据    西门子200通过MODBUS-RTU协议与一个传感器通信,发现一直读不出数据   

最佳答案

从你的提问,以及你所附程序来看,你根本没有理解PLC的MBUS_MSG指令。使用这条指令实际上已经指明:地址码(slave),功能码(WR和Addr共同决定),起始地址Addr,字节数(2xcount个)。换句话说,就是PLC系统会自动把这些打包生成一个数据帧。而你编程时还去定义VB100=1(地址码),VB101=3(功能码)(你所附程序网络5/6)这是错误的。你真正要定义的是,你把什么数据发出去(以&VB**开始的2xcount个字节),或把接收到数据存储在哪里(以&VB**开始的2xcount个字节)。
接下来回答你的疑惑:
1、你的程序网络14中:写40001开始的4个字空间,这是错误的。40001只可读,无法写,可能你的传感器无法响应你的写请求。因此出现错误代码3也不奇怪。
2、根据你的附图:寄存器地址。你可写有40100(Modbus站地址),40101(通信速率).
疑惑一:询问帧(读)是不是先得放在寄存器里,然后发送过去?
回答:不需要。指令自动生成询问帧。参见我的最上面一段话的描述。
疑惑二:我写的地址是不是文档里面给出的40001,如果不是,应该往哪里写?
第三个:我的技术文件里面写着说,这是只读寄存器,那我怎么写进去?
第四个:如果上面的全对,那我写进去了,他的应答桢放在哪里给我,我放询问桢的地方吗?
回答:对40001进行写操作,这是错误的。
疑惑五:我每次用写程序后,我原来放询问桢的寄存器的数据都会被改变,但是这些数据是固定的,就是不管我有没有连接传感器,只要执行了写程序,里面的都会被改变成固定值。
回答:你的附图程序中,对40001进行了读操作,你定义的所谓“询问帧”的首地址给了真正的应答帧指明了存储的首地址。当然PLC会把接受的数据存在这个位置。数据改变是理所当然。

提问者对于答案的评价:

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

  • plc在变频恒压供水中的应用

    实际中是采用压力传感器将采集的信号送给plc进行比较。但是编程时如何体现这个采集的数据呢?编程时我用的是PID子程序,有没有相关的程序呢?谢了 最佳答案 <>基于S7-…

    SIMATIC S7-200 2017年10月29日
  • 加注机梯形图学习

    图中标出部分应该如何理解 图片说明:    最佳答案 你这是s-200里的程序调用块,可以按照说明使用,具体看帮助啊!参考链接:http://www.ad.si…

    2017年11月6日
  • 两台S7-200之间的通讯线怎么做

    我想用一台226CN和一台222CN互相通讯,但是不知道两个PORT口之间的通讯线怎么做?希望各位大侠多多指点,在此先行谢过 最佳答案 两个DP接头,一段屏蔽双绞线,3-3,8-8…

    SIMATIC S7-200 2020年11月5日
  • Map往返运动的实现

    我是新手请问下,我想实现一个伺服单轴的往返运动,因为要用人机修改速度,所以用Map做运动,请问怎么实现绝对运动的往返动作呢?一直循环的。多谢 问题补充:请问下用什么方法将目标位置取…

    SIMATIC S7-200 2018年1月1日
  • 4个200PLC集中到一个触摸屏控制

    我这边有下面有4个224XPCN的PLC想用一个触摸屏来控制这四个PLC,不知道用什么方案最经济实用,希望大家给个建议。 问题补充:4个PLC之间是不需要进行读写的,主要目的就是为…

    SIMATIC S7-200 2020年11月1日
  • 新手请教程序问题。200CN

    比如一台机器在自动运行,这时候突然有故障或者我要用手动模式做某个动作,打回自动的时候,怎么让他继续执行自动下一步的程序?采用中断吗?我自动是用步进写的程序。 最佳答案 写程序有个原…

    SIMATIC S7-200 2018年1月1日
  • 使用不了Mbus_INIt

    打开S7-Micro/Win  SP9打开后库存储区为灰色,想使用s7-200与MOXA通信,打不开库存储区就不能为modbus指令库分配V存储区。 最佳答案 …

    SIMATIC S7-200 2017年8月18日
  • 200中变量in out与out区别

    就拿一个起保停来说in out可以一控多out只可以一控一 钻石用户推荐最佳答案 1、转帖:、in为主程序调用子程序是需要对子程序的某些参数赋值或者设定时使用,这样的好处…

    SIMATIC S7-200 2021年7月5日
  • S7-200编程1

    请问S7-200编程软件,有数据寄存器吗?要想进行赋值,用什么存储变量,设置参数,进行复制? 问题补充:模拟量输出AQW10在程序中不能作为MOV_W指令的IN,如何使用AQW为A…

    SIMATIC S7-200 2021年7月5日
  • PTO控制伺服遇到点问题请高手伺教

    用包络的方式控制伺服电机做往复运动,每次发的都是固定的脉冲数,我用高速计数器HC0的12号模式记录PLC所发的脉冲数。HC0记录的数值等于包络设定的脉冲数时设备才能执行正转或反转,…

    SIMATIC S7-200 2020年10月31日

发表回复

登录后才能评论