S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。

问题:CPU224CN与测微计MODBUS通信。探头通过232连接分集器,分集器485口连接PLC。通信协议如下图,PLC程序如下图。通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。但就是仪表对PLC数据上不来。站地址128,波特率19200,奇校验,1位停止位,数据地址40002,  PLC,仪表均是这套参数,仪表参数是通过命令写进去的,也读取确认了。数据线没检测没问题。
疑问:通过MODSACN32读仪表数据时,发现19200速率下奇校验偶校验,1位停止位2位停止位均可以正常读取数据,其他参数不行。
请老师帮分析下,看看怎么搞?哪里出问题了。
另200MODBUS RTU 必须1位停止位吗?

问题补充:
问题补充:1.探头和PLC就挨着,距离很近。
2.程序图奇偶校验是1的时候也不行。3.另外看到论坛里有人说MSG指令的EN和FIRST不能用SM0.0来做,我这个做法有问题吗?4.读多个设备不同地址的时候做一个轮询什么的,单个设备一个地址的时候程序怎么编写?谢谢

图片说明:

S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。    S7200 与仪表MODBUS通信,通过MODSACN32读仪表数据OK,通过MODSIM32仿真给PLC发送数据也OK,通讯参数一样,数据地址一样。   

最佳答案

1 、S7-200、S7-200 SMART指令库支持的MODBUS RTU协议必须是8位数据位、1位停止位,这两个参数是不可更改的,它是由其通讯芯片决定。
2、按你的描述,与MODSCAN32通讯正常了,说明仪表地址、通信参数、通讯线路连接没有问题。
3、主站的初始化指令MBUS_CTRL的Parity取值范围为(0、1、2), 0=无校验1=奇较验,2=偶较验),我认为是Parity应为1;
4、分配的库存储区要保证不要与程序中用到的V区有任何重叠,包括库存储区V区的位引用、字节引用、字引用及双字引用,这一点非常重要。

5、上电运行后,把PLC的模式小开关,拔到STOP位后,CPU通讯口变为了PPI口,这时退出所有占用通讯口的程序,比如MODSCAN32,将编程序软件在线,用状态表看看MBU_MSG指令的DONE位及Error,对应你的程序是M0.1、MB12的值,在程序中加一个网络,捕捉MBU_MSG指令的DONE位的上升沿,其上升沿触发记录MB12的错误代码并将DONE位为1的状态记录下来。比如将ERROR记录在你的程序没有用到的M区或V区的存储字节。
DONE:=0时,正常
Error:只有在 Done 位为1时,错误代码才有效
=0,时无错误
=1,1 = 响应校验错误
2 = 未用
3 = 接收超时(从站无响应)
4 = 请求参数错误(slave address, Modbus address, count, RW)
5 = Modbus/自由口未使能
6 = Modbus正在忙于其它请求
7 = 响应错误(响应不是请求的操作)
8 = 响应CRC校验和错误
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误
常见的错误:
如果多个 MBUS_MSG 指令同时使能会造成 6 号错误
从站 delay 参数设的时间过长会造成主站 3 号错误
从站掉电或不运行,网络故障都会造成主站 3 号错误
参见下面链接的Modbus RTU 主站部分
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/communication/modbus/modbus%20master/Modbus%20master.htm

补充回复:
看到论坛里有人说MSG指令的EN和FIRST不能用SM0.0来做,这个说法是对的。
MSG指令一般是利用CTRL指令的DONE位来做轮询。轮询的实列在我上面发的链接中去找。
就你现有的附图程序的基础上,你就将MSG指令的EN也改在SM0.5,其它参数不动。前提是只有这一个MSG指令。

提问者对于答案的评价:
谢谢,问题解决。

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

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

相关推荐

  • CP5711与S7-200的PLC连接

    CP5711与S7-200的PLC能连接上,但是双击刷新时识别不出CPU 图片说明:       最佳答案 看你使用什么连接方式,是直接连P…

    2017年11月2日
  • win7 64位,用USB转RS232串口,3CB30原装PPI电缆,但无法与200PLC连接

    win7 64位系统,SP9软件用USB转RS232串口,3CB30原装PPI电缆,但无法与200PLC连接,这个转接口可以和其他PLC通讯 问题补充:3CB30是一头是…

    2021年7月5日
  • S7-200 通讯不上

    我用SP4软件下载一次程序时,提示我波特率不一致,我改波特率再下载了,但是后来我无论怎么设置波特率再也找不到CPU了,请问怎么解决? 最佳答案 你是不是用PPI点缆下载,将PLC端…

    SIMATIC S7-200 2021年7月5日
  • 按鈕在Wincc flexible中的設置

    我在编程软件中编制了一个启动/停止的程序,如下: Network 1 // 网络标题 LD   &n…

    SIMATIC S7-200 2021年7月5日
  • EM231接线问题

    各位,关于EM231的接线问题,请各位指教。模块的模拟量4输入,是不是都可以接电压或者电流信号;RA,A+,a-分别对应什么,如何接线。谢谢。 最佳答案 无所谓电流输入和电压输入,…

    SIMATIC S7-200 2021年7月5日
  • npn如何加继电器转换为pnp

    不小心购买了一个npn的3线接近开关,现场需要连接西门子的plc,如何接线可以改为pnp的3线接近开关plc: 西门子 224xpcn接近开关:欧姆龙e2e-x…

    SIMATIC S7-200 2020年11月1日
  • PC ADAPTER USB电缆驱动程序

    求助PC ADAPTER USB电缆驱动程序下载地址. 最佳答案 1、电缆附带了光盘的  2、问问西门子技术支持 3、对于&nbs…

    SIMATIC S7-200 2021年7月5日
  • 就地、远程转换问题

    就地、远程转换问题 我现在用的是s7-200,EM277通讯模块,我把就地I/O点通过V存储区277模块传到远程DCS系统,我想问的是就地/远程转换按钮怎么设置?程序里面…

    SIMATIC S7-200 2021年7月5日
  • 求助西门子PID指令问题

    我在学到西门子模拟量PID控制的时候,其中一个水位恒定控制的案例我总看不懂:设给定量为满水位的75%,被控量水位值(为单极性信号)由液位计检测后经A/D转换后送入PLC,用于控制电…

    SIMATIC S7-200 2021年7月5日
  • s7-200与RS485设备通信

    各位老师:大家好!我需要有关S7-200用port0或port1与RS485设备通信的资料,最好有参考程序,请指点。谢谢! 最佳答案 通信__SIMATIC S7-200…

    2021年7月5日

发表回复

登录后才能评论