Modbus 指令 "MB_SERVER" V4.2 以及更高版本和 "Modbus_Slave" V3.0 及更高版本允许你参数化可用的输出点地址范围,来预防 Modbus master (通过功能码 5 或 15) 未授权的访问过程映像输出区.
描述 在 STEP 7 V14 SP1 你能够使用下列的 Modbus 指令来定义 SIMATIC S7-1500, S7-1200 和 ET200SP 支持的接口作为 Modbus 从站或者 Modbus TCP 服务器:
Modbus TCP 指令 "MB_SERVER" V4.2 在 STEP 7 V14 SP1 库 "MODBUS TCP" V4.2 下. 库 "MODBUS TCP" 在 "Instructions > Communication > Other" 下.
Modbus (RTU) 指令 "Modbus_Slave" V3.0 在 STEP 7 V14 SP1 库 "MODBUS (RTU)" V3.1下. 库 "MODBUS (RTU)" 在 "Instructions > Communication > Communications Processor" 下.
图. 01 注意 你的项目必须升级到至少 TIA Portal V14 SP1.
在你的项目中调用这些块并且定义实例,在打开 "MB_SERVER" V4.2 和更高及 "Modbus_Slave" V3.0 和更高的实例数据前。
图. 02 通过下面静态变量的 start values 你可以为输出地址定义允许的写操作地址范围
Variable | Data type | Default value | Description |
---|---|---|---|
QB_Start | Word | 0 | 有效输出地址的起始地址(字节 0 到 65535) |
QB_Count | Word | 0xFFFF | 能被 Modbus 主站或 Modbus TCP 客户端写操作的输出字节数量 |
举例 使 "QB_Start" = 0 "QB_Count" = 10, 输出字节地址0-9 可以被 Modbus 主站或 Modbus TCP 客户端写操作. 选择 "QB_Count" = 0 会阻止所有的输出被 Modbus 主站或 Modbus TCP 客户端写操作。
注意 如果写操作访问的是被禁止的输出地址, the指令 "Modbus_Slave" 和 "MB_SERVER" 返回错误代码 ("STATUS") 16#8383: "请求数据帧包含无效的数据地址". 指令 "Modbus_Master" 和 "MB_CLIENT" 也会在主站侧返回错误代码.
更多信息 关于以下指令的详细信息可见 manual "STEP 7 Professional V14 SP1":
创建环境 FAQ 截图在 STEP 7 V14 SP1 (TIA Portal) 下创建.
补充知识:
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。
MODBUS/TCP 使MODBUS_RTU协议运行于以太网,MODBUS TCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUS TCP结合了以太网物理网络和网络标准TCP/IP以及以MODBUS作为应用协议标准的数据表示方法。MODBUS TCP通信报文被封装于以太网TCP/IP数据包中。与传统的串口方式,MODBUS TCP插入一个标准的MODBUS报文到TCP报文中,不再带有数据校验和地址。
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:
第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容
第二层:数据链路层,格式化信号到源/目硬件址数据帧
第三层:网络层,实现带有32位IP址IP报文包
第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度
第五层:应用层,Modbus协议报文
Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如图1所示:
图1: MODBUS TCP报文
由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。