S7-200SMART/S7-1200/1500与MODBUS_TCP转RS485 RTU网关的通信

已锁定

如是

西门子1847工业学习平台

  • 帖子

    145
  • 精华

    0
  • 被关注

    77

论坛等级:侠圣

注册时间:2007-12-15

钻石 钻石 如何晋级?

S7-200SMART/S7-1200/1500与MODBUS_TCP转RS485 RTU网关的通信

7613

2

2019-04-08 12:12:00

    S7-200Smart有MODBUS TCP库指令:

MBUS_CLIENT客户端(MODBUS主站,通信请求的发起者)

MBUS_SERVER服务器(MODBUS主站,通信请求的被动接收方,接受信息后的响应者)

    S7-1200/1500也有MODBUS TCP库指令

基本指令:

MB_CLIENT 客户端(MODBUS主站,通信请求的发起者)

MB_SERVER服务器(MODBUS主站,通信请求的被动接收方,接受信息后的响应者)

冗余通信指令:

MB_RED_CLIENT(MODBUS主站,通信请求的发起者)

MB_RED_SERVER(MODBUS主站,通信请求的被动接收方,接受信息后的响应者)

    但它们3者是不是都支持通过网关访问RS485网络下的RTU设备呢?

通常,这些RS485网络下的RTU属于从站,那MODBUS_TCP转RS485 RTU网关设备就是MODBUS的主站,那自然PLC就成了通信的发起者,也就是CLIENT 客户端。

    S7-200Smart支持的Modbus TCP 客户端可支持多个连接,最多可达 PLC 允许的开放式用户通信连接的最大数。PLC 的连接总数(包括 Modbus TCP 客户端和服务器)不得超过支持的开放式用户通信连接的最大数。多个客户端连接必须具有不同的 IPAddr 或 IP_Port 输入参数。但网关往往只有一个网口,一个IP地址,没有办法和RTU从站一一对应。要解决这种通信问题,那只有把RTU从站在网关上统一映射了,例如网关的离散输出1-1000指向RTU1的离散输出1-1000;1001-2000映射RTU2的离散输出1-1000,2001-3000映射TRU3的离散输出,等等。这样的网关我没有用过,这样的网关是否存在不知道。

    S7-1200/1500的MB_CLIENT指令背景数据块中的 "MB_UNIT_ID''恰好可以用来映射不同的RTU站地址,很好的解决了问题。尽管Modbus TCP 服务器使用其 IP 地址寻址,寻址 Modbus TCP 时不会使用 MB_UNIT_ID 参数,但Modbus TCP 服务器作为 Modbus RTU 协议的网关,恰可用MB_UNIT_ID标识串行网络中的从站设备。这时候:多个Modbus TCP 客户端请求(不是多个客户端连接)使用不同的MB_UNIT_ID,就可建立PLC与不同RTU从站的访问。需要注意:在任意给定时间,只能有一个客户端处于激活状态。一个客户端完成执行后,下一个客户端再开始执行。执行顺序由您的程序负责指定。

     为什么不是多个客户端连接而是请求?因为网关只有一个IP地址。每个 MB_CLIENT 连接必须指定一个唯一的服务器 IP 地址,必须使用一个不同的背景数据块,必须指定一个唯一的连接 ID。而上面与网关通信所采用的多个Modbus TCP 客户端请求使用相同的背景数据块、连接ID 和端口号。

    参考:

Modbus 块 "MB_CLIENT" 的背景数据块中的 "MB_UNIT_ID" 有什么功能?

https://support.industry.siemens.com/cs/ww/de/view/102420337/zh

在SIMATIC S7-1500 / S7-1200和SENTRON PAC设备之间的Modbus TCP连接时,如何清除错误状态16 # 8382?

https://support.industry.siemens.com/cs/ww/de/view/109736516/zh


S7-200SMART/S7-1200/1500与MODBUS_TCP转RS485 RTU网关的通信 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

谈天说地

共有13245条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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