smart PLC 做Modbus-TCP通讯遇到的问题与解决方法2021.8.9

已锁定

ayang99

  • 帖子

    107
  • 精华

    1
  • 被关注

    25

论坛等级:侠客

注册时间:2012-11-05

普通 普通 如何晋级?

smart PLC 做Modbus-TCP通讯遇到的问题与解决方法2021.8.9

8636

9

2021-08-10 10:46:47

smart PLC 做Modbus-TCP通讯遇到的问题与解决方法2021.8.9

一、问题现象:PLC做客户端进行Modbus TCP通讯时,无法获取数据--通讯异常。

二、通讯测试环境:

1. smart PLC --SR60(做客户端) 和 V2.5版本编程软件(Modbus TCP client 库 版本V1.4)

Modbus TCP测试工具软件 (做服务器)


三、通讯状态监视情况:

1. PLC编程软件的状态图中--监控--通讯错误代码--出现过173、174 。

173连接伙伴拒绝或主动断开连接(伙伴将断开与此 CPU 的连接)。

174 无法与连接伙伴建立连接(连接请求无应答)。

2. 在Modbus TCP服务器端始终无法收到任何数据。

四、问题排查处理过程:

根据以上情况,判断PLC与服务端没有正常建立连接。

1. 本人所使用V2.5 版本的编程软件中没有V1.0 版本的Modbus TCP client 库 文件,

不能使用原来含有V1.0的库文件的通讯程序。(这个相当重要)

更改程序,使用V2.5 版本的编程软件中V1.4 版本的Modbus TCP client 库。

2. 更新 PLC的固件版本 为 V2.5版本-最新版本(此步骤,可能不是必须的) 。

经过这个两个步骤后,状态图中--监控--通讯错误代码已经不再出现173、174 ,

但是,仍然没有数据。

 

使用两个通讯工具(客户端和服务器端)模拟的时候,通讯正常,

客户端 和 服务器 的站地址 默认都 1。

使用通讯测试工具记录--数据日志,进行对比,发现smart PLC通讯时,发送的数据里--站地址为FF ( 255),而 TCP server slave软件的站地址 默认 设置的为 1。

更改 服务器端(通讯模拟软件)的 站地址为 255,

PLC 可以 接收到数据了。(果然是站地址的问题)

站地址的问题

五、后续优化思考

思考1:编程软件 V2.5 无法正常使用--原来老的1.0版本的Modbus TCP client 库,

那就用新的V1.4 版本的Modbus TCP client 库就行,

要么,

估计就得把老的1.0版本的Modbus TCP client库 添加到库文件中。

 

思考2:PLC程序更改--站地址

监视状态--已经看到了,就是这个 mModbusUnitID  -- 站地址

但是这个值被固定了,每个周期 被重新赋值为 255 。

已实测 ,

增加 传送指令给 这个 寄存器,

即可 更改这个  默认的站地址 。

具体步骤:

1.   在数据块 加入 赋值 为1 ;

2.   在 程序中加入传送指令,每个周期都送 1给这个 mModbusUnitID --对应的寄存器,

即可更改 这个 通讯的 站地址 。


关于通讯库的优化:

西门子这个 Modbus TCP库 ,还有待优化,

比如 字节交换的问题

假如:通讯读取原数据为16进制数的 16# 41F8CCCD(对应 31.1),

而在 PLC中是 16# CCCD41F8,

这就必须进行“字交换”,处理后--才是 正确的数据 。

 

假设,Modbus TCP库的子程序中 ,增加 设置项 ,

通过 一个寄存器设置 0-3 ,

对应 4种 字节排列组合 ,

这样, 使用 起来就更简单了。


直接配置 一个 寄存器值,

接收数据的寄存器 即可得到正确值,

这样,最方便。

希望,西门子的工程师不断的优化编程软件和库文件,谢谢。


smart PLC 做Modbus-TCP通讯遇到的问题与解决方法2021.8.9 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7477条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。