[西门子] S 7-1200-Modbus RTU 和 Modbus TCP 通信概

[复制链接]
查看51112 | 回复0 | 2024-5-17 08:46:06 | 显示全部楼层 |阅读模式
Modbus RTU 和 Modbus TCP 通信概

Modbus 功能代码

● CPU 作为 Modbus RTU 主站(或 Modbus TCP 客户端)运行时,可在远程 Modbus RTU 从站(或 Modbus TCP 服务器)中读/写数据和 I/O 状态。可在程序逻辑中读取并处理远程数据。

● CPU 作为 Modbus RTU 从站(或 Modbus TCP 服务器)运行时,监控设备可在 CPU 存储器中读/写数据和 I/O 状态。RTU 主站(或 Modbus TCP 客户端)可以将新值写入从站/服务器 CPU 存储器,以供用户程序逻辑使用。

RTU 站  :标准站地址 1 到 247扩展站地址 1 到 65535

TCP 站  :站地址 IP 地址和端口号

实际可用的 Modbus 存储区地址数取决于 CPU 型号、存在多少工作存储器以及其他程序数据占用多少 CPU 存储区。下表给出地址范围的额定值。



Modbus RTU 通信

Modbus RTU(远程终端单元)是一个标准的网络通信协议,它使用 RS232 或 RS485 电气连接在 Modbus 网络设备之间传输串行数据。可在带有一个 RS232 或 RS485 CM 或一个 RS485 CB 的 CPU 上添加 PtP(点对点)网络端口。Modbus RTU 使用主/从网络,单个主设备启动所有通信,而从设备只能响应主设备的请求。主设备向从一个从设备地址发送请求,然后该从设备地址对命令做出响应。

Modbus TCP 通信

Modbus TCP(传输控制协议)是一个标准的网络通信协议,它使用 CPU 上的 PROFINET 连接器进行 TCP/IP 通信。不需要额外的通信硬件模块。

我们主要以Modbus TCP为主介绍:



在指令任务卡中,在“通信”(Communication) 组中的“其它”(Others) 下显示 MODBUS TCP 指令。

要更改 Modbus TCP 指令的版本,请从下拉列表中选择相应版本。可以选择一组指令或分别选择各个指令。

使用指令树将 Modbus TCP 指令放入程序时,将在项目树中创建新的 FB 实例。在项目树的“PLC_x > 程序块 > 系统块 > 程序资源”(PLC_x > Program blocks > System blocks > Program resources) 下可看到新的 FB 实例。



要确认程序中 Modbus TCP 指令的版本,必须检查项目树的属性而不是程序编辑器中显示的框的属性。选择项目树的 Modbus TCP FB 实例,单击右键,选择“属性”(Properties),然后选择“信息”(Information) 页查看 Modbus TCP 指令的版本号。

Modbus TCP 指令

MB_CLIENT(作为 Modbus TCP 客户端使用 PROFINET 进行通信)指令



"MB_CLIENT_DB"(

    REQ:=_bool_in_,

    DISCONNECT:=_bool_in_,

    MB_MODE:=_usint_in_,

    MB_DATA_ADDR:=_udint_in_,

    MB_DATA_LEN:=_uint_in_,

    DONE=>_bool_out_,

    BUSY=>_bool_out_,

    ERROR=>_bool_out_,

    STATUS=>_word_out_,

    MB_DATA_PTR:=_variant_inout_,

CONNECT:=_variant_inout_);

MB_CLIENT 作为 Modbus TCP 客户端,通过 S7-1200 CPU 上的 PROFINET 端口进行通信。不需要额外的通信硬件模块。MB_CLIENT 可进行客户端-服务器连接、发送 Modbus 功能请求、接收响应,以及控制 Modbus TCP 服务器的断开。

REQ   In    Bool

FALSE = 无 Modbus 通信请求TRUE = 请求与 Modbus TCP 服务器通信

DISCONNECT   IN   Bool

DISCONNECT 参数允许程序控制与 Modbus 服务器设备的连接和断开。如果 DISCONNECT = 0 且不存在连接,则 MB_CLIENT 尝试连接到分配的 IP 地址和端口号。如果 DISCONNECT = 1 且存在连接,则尝试断开连接操作。每当启用此输入时,无法尝试其它操作。

MB_MODE   IN    USInt

模式选择:分配请求类型(读、写或诊断)。

MB_DATA_ADDR   IN   UDInt

Modbus 起始地址:分配 MB_CLIENT 访问的数据的起始地址。有效地址的相关信息,请参见下面的 Modbus 功能表。

MB_DATA_LEN   IN  UInt

Modbus 数据长度:分配此请求中要访问的位数或字数。有效长度的相关信息,请参见下面的 Modbus 功能表。

MB_DATA_PTR   IN_OUT  Variant

指向 Modbus 数据寄存器的指针:寄存器缓冲进出 Modbus 服务器的数据。指针必须分配一个未进行优化的全局 DB 或 M 存储器地址。

CONNECT  IN_OUT  Variant

引用包含系统数据类型为“TCON_IP_v4”的连接参数的数据块结构。

DONE  OUT   Bool

上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。

BUSY  OUT   Bool

● 0 - 无 MB_CLIENT 操作正在进行

● 1 - MB_CLIENT 操作正在进行

ERROR   OUT  Bool

MB_CLIENT 执行因错误而结束后,ERROR 位将在一个扫描周期时间内保持为 TRUE。STATUS 参数中的错误代码仅在 ERROR = TRUE 的一个循环周期内有效。

STATUS   OUT   Word

执行条件代码

-------------------------------END-------------------------



每天进步一点点

Make small but daily progress

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则