首页 理论教育 Modbus RTU通信中的常见问题及解决方法

Modbus RTU通信中的常见问题及解决方法

更新时间:2025-01-10 工作计划 版权反馈
【摘要】:当使用模式104时,“Modbus_Master”指令的输入参数“DATA_ADDR”设置的是Modbus地址的偏移量,见表9-25。

1.S7-1200 PLC是否支持Modbus ASCII通信模式?

答:西门子公司不提供支持ModbusASCII通信模式的指令,需要用户按照协议格式自行编程。

2.在“指令>通信处理器”下有两类指令可用于串口通信,应该使用哪个?

答:在选项卡“通信>通信处理器”选项下的S7-1200PLC的串口通信指令分为两类,参考图9-9。

“PtP Communication”,“USS通信”,“Modbus(RTU)”可用于S7-1200PLC中央机架和分布式I/OPROFINET或PROFIBUSET200SP/ET200MP串口模块的通信,但要求CM1241V2.1以上且S7-1200 CPUV4.1以上。而“点到点”,“USS”,“Modbus”只能用于S7-1200PLC中央机架串口模块的通信。

3.“Modbus_Comm_Load”指令能否在启动组织块OB100中调用?

答:“Modbus_Comm_Load”指令调用读取数据记录和写入数据记录等指令来实现与分布式I/O机架上串口通信模块的ModbusRTU通信。该指令为异步读写指令,指令的执行需要多个扫描周期。因此,“Modbus_Comm_Load”指令不建议在启动组织块OB100中调用。

4.使用Modbus_Comm_Load指令对CM1241 RS422/485初始化不成功,报错“16#81AA”,为什么?

答:报错“16#81AA”(无效的工作模式),可能原因为未修改“Modbus_Comm_Load”指令背景数据块中的静态变量MODE的数值。该MODE变量默认为0,代表“全双工(RS232)”工作模式,而实际使用的模块为CM1241RS422/485。串口通信模块和信号板有效的工作模式见表9-18。

解决方法:根据实际的工作模式,在“Modbus_Comm_Load”指令背景数据块中对MODE进行修改。例如,使用RS485工作模式,需要设置MODE=4,如图9-57所示。或通过编程的方式对MODE进行赋值,参考图9-48。

5.S7-1200 PLC CM1241或CB1241Modbus RTU通信是否支持两位停止位?

答:支持。当ModbusRTU通信需要两位停止位时,可在“Modbus_Commload”指令的背景数据块中,修改参数“Static>STOP_BITS”停止位数值为2(默认STOP_BITS=1),如图9-58所示。(www.xing528.com)

978-7-111-58391-2-Chapter09-85.jpg

图9-57 设置工作模式

978-7-111-58391-2-Chapter09-86.jpg

图9-58 修改Modbus停止位

6.“Modbus_Master”指令如何实现对310000~365536地址区的读取?

答:当访问的Modbus地址超过39999时,可采用模式104对从站进行读取。当使用模式104时,“Modbus_Master”指令的输入参数“DATA_ADDR”设置的是Modbus地址的偏移量,见表9-25。

9-25 Modbus_Master输入参数MODEModbus地址及偏移量对应关系

978-7-111-58391-2-Chapter09-87.jpg

7.为什么执行“Modbus_Master”指令,“BUSY”位总是输出为TRUE?

答:当“Modbus_Master”正忙于处理读写请求时,BUSY总是输出为TRUE。出现该现象时请检查“Modbus_Master”指令输入“REQ”是否在Modbus请求完成或报错前被多次触发,或是否有其他多个“Modbus_Master”指令在同时执行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈