S7-1517H 的 Modbus RTU 从站常见问题

摘要:1程序下载到 CPU,运行后,CM PtP TX, RX 都不亮,程 序没有输出错误?系统断电再上电也一样?

1.1程序下载到 CPU,运行后,CM PtP TX, RX 都不亮,程 序没有输出错误?系统断电再上电也一样?

1.1.1ModbusSlave 没有初始化 检查 ModbusSlave 属性,如果去掉了优化块访问,那么要确保其背景 DB 中, Init_Done 变量设置为非保持,否则 Init_Done 上电保持为 True 值,程序不触发 Modbus_Comm_Load 初始化。

图1

图2

可以通过 TIA Portal 将 Init_Done 手动复位一次,或者点按钮“将起始值作为实际值 装载”,看看是否 TX/RX 灯能够亮起来.

1.1.2 收不到主站报文

Modbus_CommLoad 正常初始化,但 TX/RX 仍不亮:

检查主站是否正常工作;

检查通信电缆是否断线。

1.1.3 其他原因 前 2 项都没有问题, 可以考虑更换 CM PtP 模块。

1.2 CM PtP RX 闪/亮,但 TX 不亮,主站访问不到数据?

1.2.1 监控程序错误状态字

先监控 ModbusSlave 背景 DB,ERROR_Modbus_comm_load 及 ERROR_Modbus_slave 是否有非 0 值,如有在 TIA Portal 中查找错误码,获取错误 信息进行针对性解决。

图3

1.2.2 排查是否有干扰

图4

监控 ModbusSlave 背景 DB,多重实例 modbus_slave 的静态变量 Bad_CRC_Count:

收到的有 CRC 校验错误的主站消息计数。

如果该变量数值非 0,且不断增加,考虑:

• 主站、各从站需要可靠接地;

• 各段通信电缆屏蔽层需要可靠接地;

• 长电缆两端增加终端电阻(330 欧姆);

• 增加 RS485 隔离放大器(中继器,西门子 RS485 中继器仅用于 MPI/PROFIBUS,不能用于自由协议及 Modbus )。

1.2.3 Modbus 从站地址不正确

监控 ModbusSlave 背景 DB,多重实例 modbus_slave 的静态变量(图4)

• Slave_Message_Count:收到的主站寻址本从站的消息计数。

• Request_Count:收到的所有主站消息计数。

如果变量 Request_Count 数值不断增加,然而变量 Slave_Message_Count 一直为 0,可能是 Modbus 从站地址设置错误,或者主站寻址错误:

图5

1.3 冗余 CPU 切换后,Modbus RTU 从站不工作

1.3.1 CPU 及 CM PtP 固件

本例测试时,反复切换 CPU,及 CPU 断电上电,未出现从站在冗余 CPU 切换后不 工作的问题。如果出现冗余 CPU 切换后,Modbus 不工作,建议:

• 将 CPU 固件升级到 V2.8.3 或更新版本( 下载 );

• 将 CM PtP 模块固件升级到最新: 6ES7541-1AB00-0AB0 为 V1.0.3 或更高 ( 下载 ) 6ES7137-6AA00-0BA0 为 V1.0.5 或更高 ( 下载 )

1.3.2 冗余切换 CPU 后,从站不响应,TX/RX 不亮

如果 Modbus_Slave 的静态变量 MB_State 一直保持数值 3,可以考虑使用 MB_State 计数,若干秒后(图 6 设为 5 秒),将 MB_State 及 Init_Done 复位,或 执行 Modbus_Comm_Load 重新初始化模块

来源:巨控王工

相关推荐