两台S7-200PLC实现MODBUS RTU通讯

本文详细介绍了如何通过MODBUS RTU协议实现两台S7-200PLC之间的通讯。内容涵盖从站和主站的设置,包括MBUS_INIT和MBUS_SLAVE指令的使用,以及波特率、校验位和超时时间的配置。还提供了常见错误及解决方法。
摘要由CSDN通过智能技术生成

两台S7-200通过Modbus实现通讯

从站设置:   

需要使用MBUS_INIT、MBUS_SLAVE即可;

MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。(这一步在程序的前面,配置类的程序基本都放在程序前面)。在S7-200中,通讯的程序块调用都需要设定完成为,确保通讯的完整性,只有把完整的数据格式发送或接收,才可以实现通讯,因此完成位是必须要有的。在每次扫描且EN输入打开时执行该指令。应当在每次通讯状态改变时执行 MBUS_INIT指令。一般程序设计仅在首次扫描时执行。功能块图如下:

MODE:模式选择位,1表示将port0指定给Modbus协议并启用协议;0表示将port0指定给PPI;

!!!注意:指定给Modbus后,该端口不可以下载上传程序,因此在程序设计中,可以加入控制位,串联给I点即可,例程中未加入,可以自己尝试;

Addr:从站地址1~247;

Baud:波特率设置1200、2400、4800、9600、19200、38400、57600或 115200;

Parity:校验位0- 无校验,1- 奇数校验,2- 偶数校验;

Delay:时延,通过将指定的毫秒数增加至标准 Modbus信息超时的方法延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为 0。如果您在使用带有纠错功能的调制解调器,将时延设为50至100毫秒的数值。如果您在使用扩展频谱无线电,将时延设为10至100毫秒的数值。数值可以是0至32767毫秒。

MaxIQ:参数将供 Modbus地址 00xxxx 和 01xxxx 使用的I和Q点数设为0至128之间的数值。数值0禁止所有向输入和输出的读取。建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。

MaxAI:参数将供 Modbus地址 03xxx 使用的字输入(AI)寄存器数目设为0至32之间的数值。数值0禁止模拟输入的读数。建议使用的 MaxAI数值如下,这些数值可允许存取所有的S7-200模拟输入。0 用于 CPU 221,16 用于 CPU 222,32 用于 CPU 224、 226 和 226XM;

MaxHold:参数设定供 Modbus地址04xxx使用的V内存中的字保持寄存器数目。例如,为了允许主设备存取200字节的V内存,将MaxHold设为100个字的数值(保持寄存器);

HoldStart: 参数是V内存中保持寄存器的起始地址。该数值一般被设为VB0,因此 HoldStart 参数被设为&VB0(VB0地址)。其他V内存地址可指定为保持寄存器的起始地址,以便在项目的其他地方使用VB0。Modbus主设备可存取V内存MaxHold个字数,从 HoldStart开始。

Done:完成标志位;

Error:错误代码,字节;

MBUS_SLAVE 指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。在每次扫描且EN输入开启时执行该指令。MBUS_SLAVE指令无输入参数。当MBUS_SLAVE指令对Modbus请求作出应答时, " 完成"输出打开。如果没有需要服务的请求时, "完成"输出关闭。"错误"输出包含执行该指令的结果。该输出只有在"完成"打开时才有效。如果"完成"关闭,错误参数不会改变。

通俗讲法:将程序写在这个地方就可以了。

测试Network程序:

主站设置:

主站的设置通过MBUS_CTRL和MBUS_MSG子程序实现通讯;

MBUS_CTRL如下

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值