[西门子] 西门子博图MODBUS TCP通讯指令(1)

[复制链接]
查看73332 | 回复0 | 2024-5-23 17:41:40 | 显示全部楼层 |阅读模式
新建一个项目,添加一个PLC,这里采用S7-1214C DC/DC/DC型号,然后在右侧“指令”-“通讯”-“其他”找到MODBUS TCP指令,并拖入编辑窗口,如下图所示:



MB_CLIENT 指令介绍

“MB_CLIENT”指令作为 Modbus TCP 客户端通过 PROFINET 连接进行通信。通过“MB_CLIENT”指令,可以在客户端和服务器之间建立连接、发送 Modbus 请求、接收响应并控制 Modbus TCP 客户端的连接终端。

Modbus TCP 客户端可以支持多个 TCP 连接,连接的最大数目取决于所使用的 CPU。一个 CPU 的总连接数,包括 Modbus TCP 客户端和服务器的连接数,不能超过所支持的最大连接数。

使用各客户端连接时,请记住以下规则:

·每个“MB_CLIENT”连接都必须使用唯一的背景数据块。

·对于每个“MB_CLIENT”连接,必须指定唯一的服务器 IP 地址。

·每个“MB_CLIENT”连接都需要一个唯一的连接 ID。

该指令的各背景数据块都必须使用各自相应的连接 ID。连接 ID 与背景数据块组合成对,对每个连接,组合对都必须唯一。

·根据服务器组态,可能需要或不需要 IP 端口的唯一编号。



下面针对指令的每个参数进行介绍:

REQ参数:

INPUT,数据类型为BOOL

参数说明:对 Modbus TCP 服务的 Modbus 查询

REQ 参数受到等级控制。这意味着只要设置了输入 (REQ=true),指令就会发送通信请求。

·Modbus 查询开始后,背景数据块将锁定,其它客户端无法使用。

·在服务器进行响应或输出错误消息之前,对输入参数的更改不会生效。

·如果在 Modbus 请求期间再次设置了参数 REQ,此后将不会进行任何其它传输。

也就是只有当REQ输入端为“1”时,指令才会执行。

DISCONNECT参数:

INPUT,数据类型BOOL

参数说明:通过该参数,可以控制与 Modbus 服务器建立和终止连接:

·0:与通过 CONNECT 参数组态的连接伙伴(请参见 CONNECT 参数)建立通信连接。

·1:断开通信连接。在终止连接的过程中,不执行任何其它功能。成功终止连接后,STATUS 参数将输出值 0003。

而如果在建立连接的过程中设置了参数 REQ,将立即发送 Modbus 请求。

可以简记为0就是一直保持链接,1为断开链接。

MB_MODE参数:

Input,数据类型:USINT

选择 Modbus 的请求模式(读取、写入或诊断)或直接选择 Modbus 功能

0表示读取,1表示写入,当然还有很多种模式,其他可查阅手册。

MB_DATA_ADDR参数:

Input,数据类型:UDINT

指要读写的数据地址,取决于MB_MODE

MB_DATA_LEN参数:

Input,数据类型:UINT

是指要读写数据长度:数据访问的位数或字数

MB_MODE、MB_DATA_ADDR、MB_DATA_LEN三个参数为组合使用。例如:

·MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=1 构成的组合设定的功能代码是 05。将从远程地址 0 开始写 1 个输出位。

·MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=2 构成的组合设定的功能代码是 15。将从远程地址 0 开始写 2 个输出位。

MB_DATA_PTR 参数:

参数 MB_DATA_PTR 是一个指针,指向将从 Modbus 服务器接收数据的数据缓冲区或指向待发送到 Modbus 服务器的数据所在数据缓冲区的指针。作为数据缓冲区,可使用全局数据块或存储区域 (M)。

对于存储区域 (M) 中的缓冲区,可通过以下方式使用 ANY 格式的指针:“P#位地址” “数据类型” “长度”(例如:P#M1000.0 WORD 500)

MB_DATA_PTR 可引用不同的数据结构,具体取决于数据缓冲区所在的存储区域:

可简记为就是读写数据的暂存区。可以建立一个数组来存储。如:



CONNECT 参数:

指向连接描述结构的指针,也就时通讯的相关设置,如:端口号、IP地址等。参数如下:



可以使用以下结构(系统数据类型):

·TCON_IP_v4:包括建立指定连接时所需的所有地址参数。使用TCON_IP_v4 时,可通过调用指令“MB_CLIENT”建立连接。

·TCON_Configured:包括所组态连接的地址参数。使用TCON_Configured 时,将使用下载硬件配置后由 CPU 创建的已有连接。

输出参数就比较简单,主要就是标示位。



DONE完成标志位,可以用于驱动下一步执行动作。

BUSY状态标志位。

后续以实际案例演示一下会比较直观。

本帖子中包含更多资源

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

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

本版积分规则