本期内容使用1台s7-1500与Modbus Poll仿真软件进行Modbus TCP通讯,s7-1500作为服务端(提供数据的一侧,可以理解为从站)
软件测试环境:
TIA Portal V17Modbus Poll V10.9.0(文末附下载链接)硬件测试环境:
CPU 1515-2 PN注:Modbus TCP需要使用真实PLC或 PLCsim advance仿真(不支持1200)进行测试,小编手头没有1200用1500替代,两种PLC配置及调试方式一致
MB_Server配置步骤如下:
打开TIA Portal项目,新建FC块,并将MB_SERVER功能块拖入程序中,需要为该块指定背景数据块;
image-20240605164523869MB_SERVER指令参数如下:
参数
声明
数据类型
说明
DISCONNECT
Input
BOOL
“MB_SERVER”指令建立与一个伙伴模块的被动连接。服务器会响应在 CONNECT 参数的 SDT“TCON_IP_v4”中输入的 IP 地址的连接请求。
接受一个连接请求后,可以使用该参数进行控制:
MB_HOLD_REG
InOut
VARIANT
指向“MB_SERVER”指令中 Modbus 保持性寄存器的指针
MB_HOLD_REG 引用的存储区必须大于两个字节。
保持性寄存器中包含 Modbus 客户端通过 Modbus 功能 3(读取)、6(写入)、16(多次写入)和 23(在一个作业中读写)可访问的值。
作为保持性寄存器,可以使用具有优化访问权限的全局数据块,也可以使用位存储器的存储区。
CONNECT
InOut
VARIANT
指向连接描述结构的指针
可以使用下列结构 (SDT):
对于 V4.2 以上指令版本的 MB_SERVER,TCP 的以下连接描述也可用:
NDR
Output
BOOL
“New Data Ready”:
DR
Output
BOOL
“Data Read”:
ERROR
Output
BOOL
如果在调用“MB_SERVER”指令过程中出错,则将 ERROR 参数的输出设置为“1”。有关错误原因的详细信息,将由 STATUS 参数指定。
STATUS
Output
WORD
指令的详细状态信息。
0:未读取数据
1:从 Modbus 客户端读取的数据
0:无新数据
1:从 Modbus 客户端写入的新数据
TCON_IP_V4_SEC(S7-1200 CPU 固件版本 V4.3 及以上版本,或 S7-1500 CPU 固件版本 V2.5 及以上版本)
TCON_QDN(S7-1200 CPU 固件版本 V4.4 及以上版本,或 S7-1500 CPU 固件版本 V2.5 及以上版本)
TCON_QDN_SEC(S7-1200 CPU 固件版本 V4.4 及以上版本,或 S7-1500 CPU 固件版本 V2.5 及以上版本)
TCON_IP_v4:包括建立指定连接时所需的所有地址参数。默认地址为 0.0.0.0(任何 IP 地址),但也可输入具体 IP 地址,以便服务器仅响应来自该地址的请求。使用 TCON_IP_v4 时,可通过调用指令“MB_SERVER”建立连接。
TCON_Configured:包括所组态连接的地址参数。使用 TCON_Configured 时,会在下载硬件配置后由 CPU 建立连接。
0:在无通信连接时建立被动连接。
1:终止连接初始化。如果已置位该输入,那么不会执行其它操作。成功终止连接后,STATUS 参数将输出值 0003。
为MB_Server配置参数,注意CONNECT参数需要使用“TCON_IP_v4”类型数据;(按照小编习惯,通常先不管参数意义是什么,现在DB块中将接口参数建好,保证程序可以下载)
image-20240605165943907为MB_SERVER指定保持寄存器数据区域,以指针的形式体现,建议使用非优化DB块;
image-20240605170139174MB_SERVER配置完成,可对程序进行下载;由于CONNECT参数需要设置,因此MB_SERVER会产生错误代码;
image-20240605170400284对CONNECT参数进行配置,CONNECT参数说明,及配置说明如下:
字节
参数
数据类型
起始值
说明
0 … 1
InterfaceID
HW_ANY
-
本地接口的硬件标识符
2 … 3
ID
CONN_OUC
-
引用该连接(取值范围:1 到 4095)。
该参数将唯一确定 CPU 中的连接。指令“MB_SERVER”的每个实例必须使用唯一的 ID。该 ID 还不得被不同通信类型的其他指令同时使用。
注:对于固件版本为 V2.9 或更高版本的 S7-1500 CPU 和固件版本为 V4.5 或更高版本的 S7-1200 CPU,ID 也可能由指令“TCONSettings”提供。
4
ConnectionType
BYTE
11
连接类型
对于 TCP,选择 11(十进制)。不允许使用其它连接类型。如果使用了其它连接类型(如 UDP),该指令的 STATUS 参数将输出相应的错误消息。
5
ActiveEstablished
BOOL
FALSE
建立连接的方式所对应的 ID
对于被动连接建立,应选择 FALSE。
6 … 9
RemoteAddress
ARRAY [1..4] of BYTE
0.0.0.0
连接伙伴的 IP 地址,例如,192.168.0.1:
如果指令“MB_SERVER”要接受来自任何连接伙伴的连接请求,应将“0.0.0.0”用作 IP 地址。
10 … 11
RemotePort
UINT
0
远程连接伙伴的端口号(取值范围:1 - 49151)。
如果指令“MB_SERVER”要接受来自远程伙伴任何端口的连接请求,应将“0”用作端口号。
12 … 13
LocalPort
UINT
502
本地连接伙伴的端口号(取值范围:1 - 49151)。
此 IP 端口号定义 Modbus 客户端连接请求中要监视的 IP 端口。
默认值为 502。
注:InterfaceID,ID,ConnectionType,LocalPort参数必须设置,其它可以保持默认。
interfaceID通过硬件组态查看:
image-20240605172055991配置完成如下:
image-20240605172232237addr[1] = 192
addr[2] = 168
addr[3] = 0
addr[4] = 1
打开Mobdu Pol,设置连接参数,建立通讯连接
image-20240605172409611新建一个Modbus测试窗口(默认10个数据,功能码03)
image-20240605172502851监控数据如下:
image-20240605190610142MB_SERVER配置完成;