西门子PLC(S7-1200、1500)通讯程序报16#80C8错误的解决方法
近期,我在基于S71200平台进行通信实验时面临了多个并行通信任务的挑战。最初,配置单个通信任务如TCP、UDP或MODBUS TCP SERVER,各个系统均能有效运作。然而,当尝试合并三个通信模块到同一程序时,却发现TCP通讯与MODBUS TCP SERVER不能同时启用,只会成功运行其中一个。
出错情况:
使用在线调试工具预先分析程序状态,发现无法协同工作的模块显示出错误码 `1680C8`,不同于预期的正常茵码 `167abc`。从帮助文档中,找不到与代码 `1680C8` 相关的故障描述。
解决方法:
研究显示,MODBUS TCP与TCP通讯所用的本地ID都是设置为`1`,怀疑是这一潜在冲突导致了问题。尝试将MODBUS TCP的本地ID从`1`改为`10`,但更新后这一更改未见效力。
重启PLC后,观察内置于PLC的连接状态发现,本地ID已经更新至新的设置值。表明`下载后无效`的原因可能在于程序内部值的瞬时变化问题,重启有助于确保所更改设置的应用。
改进措施:
修改MODBUS TCP ID:通过MB_SERVER块`CONNECT`对应的变量,定位并更改ID值为`10`,确保在将其保存并下载至PLC之前引用的是新的配置。
修改TCP和UDP ID:运用对应通讯块的工具属性菜单调整ID值,执行保存与下载至PLC的操作。在检查更改并未立即生效时,应直接进入数据块和选择“加载初始值”以有效应用设置。
额外发现:
当本地端口配置重复时,也会遇到类似的通信错误,并需要重启PLC以应用更新的设置。
持续优化:
通过调整通信模块的初始化值并且确保在下载与系统重启时生效实现功能配置的一致性和稳定性。执行过程包括直接修改数据块中的属性值,而非仅通过程序编译更新,确保配置在实际运行环境中的正常化。