Modbus TCP
Mech-MSR 可与外部设备进行 Modbus TCP 通信。阅读以下内容前,请确保已在 Mech-MSR 中完成通信配置。
关于 Modbus TCP
Mech-MSR 支持通过 Modbus TCP 协议与 PLC 通信。在此通信方式下,Mech-MSR 是服务端(从站),PLC 是客户端(主站)。所有请求由 PLC 发起,Mech-MSR 响应。
在 Mech-MSR 中启用 Modbus TCP 通信服务后,软件会开始监听在端口 502 (默认)上的一个或多个 Modbus 客户端。
输入输出信号表
|
Mech-MSR 支持以下标准 Modbus 功能码,用于访问保持寄存器(Holding Registers)。
|
|
保持寄存器地址为逻辑地址(即显示地址),如 实际通信时采用的基地址为1(即保持寄存器地址从 |
| 输入(从 PLC 到 Mech-MSR) | 输出(从 Mech-MSR 到 PLC) | ||||||
|---|---|---|---|---|---|---|---|
模块 |
名称 |
所占字节 |
保持寄存器地址(4x) |
模块 |
名称 |
所占字节 |
保持寄存器地址(4x) |
使能 |
1 byte |
40001 |
心跳 |
1 byte |
40065 |
||
指令触发 |
指令触发ACK |
||||||
数据读取完成 |
数据就绪 |
||||||
复位输出数据 |
指令执行完成 |
||||||
预留 |
预留 |
||||||
预留 |
预留 |
||||||
预留 |
预留 |
||||||
预留 |
错误 |
||||||
预留 |
3 bytes |
前1 byte:40001;后2 bytes:40002 |
综合判定结果 |
1 byte |
40065 |
||
预留 |
|||||||
预留 |
|||||||
预留 |
|||||||
预留 |
|||||||
预留 |
|||||||
预留 |
|||||||
预留 |
|||||||
预留 |
2 bytes |
40066 |
|||||
指令码 |
2 bytes |
40003 |
状态码 |
2 bytes |
40067 |
||
指令参数1 |
2 bytes |
40004 |
RESERVED |
预留 |
2 bytes |
40068 |
|
指令参数2 |
2 bytes |
40005 |
ID 1 的判定结果 ID 2 的判定结果 ID 3 的判定结果 ... |
8 bytes |
40069~40072 |
||
指令参数3 |
2 bytes |
40006 |
|||||
指令参数4 |
2 bytes |
40007 |
|||||
指令参数5 |
2 bytes |
40008 |
|||||
指令参数6 |
2 bytes |
40009 |
ID 1 的测量结果 ID 2 的测量结果 ID 3 的测量结果 ... |
256 bytes (4 bytes × 64) |
40073~40200 |
||
指令参数7 |
2 bytes |
40010 |
|||||
指令参数8 |
2 bytes |
40011 |
|||||
指令参数9 |
2 bytes |
40012 |
|||||
指令参数10 |
2 bytes |
40013 |
|||||
变量1 |
4 bytes |
40014~40015 |
|||||
变量2 |
4 bytes |
40016~40017 |
|||||
变量3 |
4 bytes |
40018~40019 |
|||||
变量4 |
4 bytes |
40020~40021 |
|||||
变量5 |
4 bytes |
40022~40023 |
|||||
变量6 |
4 bytes |
40024~40025 |
|||||
变量7 |
4 bytes |
40026~40027 |
|||||
变量8 |
4 bytes |
40028~40029 |
|||||
变量9 |
4 bytes |
40030~40031 |
|||||
变量10 |
4 bytes |
40032~40033 |
|||||
RESERVED |
预留 |
62 bytes |
40034~40064 |
||||
输入(从 PLC 到 Mech-MSR)
CONTROL_INPUT(控制输入)
| 地址 | 数据 | 说明 |
|---|---|---|
0.0 |
使能(布尔值) |
仅当“使能”信号置为 1 时,其他输入信号才会被认为有效。 |
0.1 |
指令触发(布尔值) |
当指令触发信号由 0 变为 1(上升沿)时,Mech-MSR 才会读取指令码和指令参数。当 Mech-MSR 返回指令触发ACK信号时,可将指令触发信号置为 0。 |
0.2 |
数据读取完成(布尔值) |
PLC 完成数据读取后,将该信号置为 1。当 PLC 收到数据就绪信号变为 0 后,才可将该信号置为 0。 |
0.3 |
复位输出数据(布尔值) |
当该信号置为 1 时,表示将 PLC 收到的判定结果和测量结果(输出)清空。此时,PLC 可发送新的指令,相关状态码信号也将复位。 |
0.4 |
预留(布尔值) |
预留字段。 |
0.5 |
预留(布尔值) |
预留字段。 |
0.6 |
预留(布尔值) |
预留字段。 |
0.7 |
预留(布尔值) |
预留字段。 |
1.0~3.7 |
预留(字节) |
预留字段。 |
COMMAND & COMMAND_PARAM(指令码及指令参数)
当前协议下,支持的指令及对应的指令码(COMMAND)、指令参数(COMMAND_PARAM)、说明如下表:
| 指令 | COMMAND | COMMAND_PARAM | 说明 |
|---|---|---|---|
execute |
1 |
工程编号,一次只能设置 1 个。 |
用于触发工程并获取工程的判定结果和测量结果。 |
trigger |
2 |
工程编号,可一次性设置 1~4 个。 |
用于触发工程运行。 |
return |
3 |
工程编号,一次只能设置 1 个。 |
用于获取指定工程的判定结果和测量结果。 |
judge |
4 |
用于获取指定工程的整体质量判定结果或单个测量项的质量判定结果。 |
|
value |
5 |
主要用于获取指定工程的测量值。 |
|
recipe |
6 |
工程编号、参数配方编号。 |
用于切换工程使用的参数配方。 |
solution |
7 |
方案ID。 |
用于切换方案。 |
SetNumVar |
8 |
全局变量的编号,一次只能设置 1 个。 |
用于给数值类型的全局变量设置值,其中变量值通过VAR_INPUT传入。 |
GetNumVar |
9 |
全局变量的编号,一次只能设置 1 个。 |
用于读取数值类型全局变量的值,读取结果通过VALUE返回。 |
VAR_INPUT(变量输入)
执行SetNumVar指令时,设置的值写入VAR_INPUT。
| 保持寄存器地址(4x) | 数据 | 说明 |
|---|---|---|
40014~40015 |
变量1(浮点数) |
数值型输入参数1。 |
40016~40017 |
变量2(浮点数) |
数值型输入参数2。 |
40018~40019 |
变量3(浮点数) |
数值型输入参数3。 |
40020~40021 |
变量4(浮点数) |
数值型输入参数4。 |
40022~40023 |
变量5(浮点数) |
数值型输入参数5。 |
40024~40025 |
变量6(浮点数) |
数值型输入参数6。 |
40026~40027 |
变量7(浮点数) |
数值型输入参数7。 |
40028~40029 |
变量8(浮点数) |
数值型输入参数8。 |
40030~40031 |
变量9(浮点数) |
数值型输入参数9。 |
40032~40033 |
变量10(浮点数) |
数值型输入参数10。 |
输出(从 Mech-MSR 到 PLC)
CONTROL_OUTPUT(控制输出)
| 地址 | 数据 | 说明 |
|---|---|---|
0.0 |
心跳信号(布尔值) |
系统心跳,1 秒反转一次。可用于判断 PLC 与 Mech-MSR 之间的通信连接处于正常状态还是中断状态。 |
0.1 |
指令触发ACK(布尔值) |
当 Mech-MSR 收到指令触发信号的上升沿时,此信号将被置为 1。当指令触发信号为下降沿时,将此信号置为 0。 |
0.2 |
数据就绪(布尔值) |
Mech-MSR 向输出端口写入数据,等待 PLC 读取。当数据读取完成信号为 1 时,将此信号置为 0。 |
0.3 |
指令执行完成(布尔值) |
当指令执行结束时,将此信号置为 1,表示指令已完成处理。 |
0.4 |
预留(布尔值) |
预留字段。 |
0.5 |
预留(布尔值) |
预留字段。 |
0.6 |
预留(布尔值) |
预留字段。 |
0.7 |
错误(布尔值) |
当 Mech-MSR 返回的状态码不为 1 时,表示存在错误,此信号置为 1。 |
1.0 |
综合判定结果(布尔值) |
工程的综合判定结果,1 表示合格(OK),0 表示不合格(NG)。 |
1.1~1.7 |
预留(布尔值) |
预留字段。 |
2.0~3.7 |
预留(字节) |
预留字段。 |
VALUE(测量结果)
VALUE 模块可返回以下数据:
-
输出管理窗口通信输出选项卡下,已添加测量项的测量结果。
-
执行
GetNumVar指令时,读取到的数值类型全局变量的值。
| 对于单个工程,支持一次性输出至多 64 个测量值。 |