01-Modbus配置
本章节下载: 01-Modbus配置 (388.53 KB)
Modbus是一种公开标准化、易于使用和可靠的工业领域通信协议,它可以在连接至不同类型的总线或网络的设备之间提供客户机/服务器类型的通信,适用于自动化控制场景。目前,Modbus协议已经被广泛应用于自动化控制系统、仪表仪器、机器人控制、移动设备控制等各种控制设备之间的通信。尤其在智能制造、工业互联网等领域,Modbus协议具有重要地位。
Modbus被广泛应用,是因为具有如下技术优势:
· Modbus协议标准公开开放,允许不同厂家的设备之间交换数据。
· Modbus是应用层协议,仅定义了工业控制器能够认识和使用的消息结构,并未定义物理层,所以Modbus能够在各种网络体系结构内进行数据传输。Modbus不仅支持多种电气接口,包括RS485和TCP/IP,还可以在各种介质例如双绞线、光纤中传输。
· Modbus协议报文格式简单、通俗易懂,便于用户理解和使用,便于厂商在工业控制网络中开发和集成。
Modbus协议支持部署上串行链路上或以太网TCP/IP网络上,其在不同网络中通信时使用的网络层级如图1-1所示。
图1-1 Modbus通信层级
如图1-2所示,Modbus使用客户机/服务器结构,在Modbus通信中只有客户机发送请求,其他服务器接收来自客户机的数据来进行响应。客户机和服务器之间使用Modbus协议发送数据,在工业控制网络中,通常PLC设备作为客户机,外围的I/O传感器、阀门、网络驱动器或其他测量设备等作为服务器。
客户机也被称为上位机,服务器被称为下位机,下文均采用此描述。
目前,H3C工业交换机既不支持作为上位机,也不支持作为下位机,本章节仅用于帮助您理解Modbus通信的基本概念。
图1-2 Modbus网络模型
Modbus设计了两种传输报文,Modbus-RTU报文和Modbus-TCP报文。
在Modbus-RTU传输模式中,ADU的格式如图1-3所示。
各字段的含义为:
· Server地址:上位机发送Modbus请求的对象下位机的地址,长度为1字节。
· 功能码:上位机向下位机请求执行的指令,如读/写下位机的数据,长度为1字节。
· 数据:根据功能码的功能不同,用于辅助说明具体请求指令或应答指令的内容,长度可变。
· 差错校验:为了防止报文在传输的过程中发生错误,本字段用于检验接收的数据是否正确,长度为2字节。
在Modbus-TCP传输模式中,ADU的格式如图1-4所示。
与在串行链路中传输的Modbus报文不同的是,Modbus-TCP ADU不需要携带差错校验字段,因为传输层的TCP/UDP协议本身自带差错校验能力,且Modbus-TCP ADU不再需要地址域,在以太网中通过网络层和数据链路层的封装来寻址。且为了在以太网中识别Modbus报文,Modbus-TCP ADU在PDU上重新封装了一个MBAP(Modbus Application Header,Modbus应用头),其字段解释如下:
· 事务处理标识:用于识别Modbus请求或相应的事务,长2字节。
· 协议标识:取值为0,标识Modbus协议,长1字节。
· 长度标识:用于标识后续字段占用的长度,长度标识字段长2字节。
· 单元标识:用于系统内路由,标识串行链路或其他总线上连接的远程下位机,长1字节。
· 功能码:上位机向下位机请求执行的指令,如读/写下位机的数据,长度为1字节。
· 数据:根据功能码的功能不同,用于辅助说明具体请求指令或应答指令的内容,长度可变。
通常,上位机于以太网中,发布的报文为Modbus-TCP报文,而外围下位机通过串行链路进行连接,只能识别Modbus-RTU报文,这导致上位机和下位机不能直接进行互通。H3C工业交换机可以在上位机和下位机之间承担中继网关的角色,使得Modbus报文可以顺利在上位机和下位机之间交互,以实现上位机和下位机的Modbus通信,如图1-5所示。
图1-5 Modbus中继网关应用场景组网图
在Modbus网络中,H3C工业交换机使用以太网接口与上位机进行物理连接,使用RS485串口与下位机进行物理连接。由于需要在以太网TCP/IP网络中承载Modbus报文,H3C工业交换机需要与上位机建立TCP或UDP连接。并且,H3C工业交换机将RS485串口作为Modbus协议的应用载体,与上位机建立TCP/UDP连接及以太网通信、与下位机进行串行通信都通过RS485串口实现。
RS485串口支持两种转发模式,不同的转发模式会带来不同的Modbus功能效果。
· 透传模式:通常情况下,上位机发送的Modbus报文为Modbus-TCP报文。但上位机功能较强大时,其侦测到下位机仅支持Modbus-RTU报文,将直接产生Modbus-RTU格式的报文,将Modbus-RTU格式的报文通过TCP/IP以太网路径发送给H3C工业交换机。此时H3C工业交换机只需要透传Modbus-RTU格式的报文,就能实现上位机和下位机之间的Modbus通信。在透传模式下,H3C工业交换机的RS485串口会将从上位机收到Modbus-RTU报文透传给下位机,并将从下位机收到的Modbus-RTU报文透传给上位机,如图1-6所示。
· 代理模式:上位机发送Modbus-TCP格式的报文时,需要H3C工业交换机将报文转换为Modbus-RTU格式,将报文转发给下位机时下位机才能识别。在代理模式下,H3C工业交换机的RS485串口会将从上位机收到的Modbus-TCP报文转化为Modbus-RTU报文并发送给下位机,将从下位机收到的Modbus-RTU报文转化为Modbus-TCP报文并发送给上位机,如图1-7所示。
转发模式与RS485串口需要建立的传输层连接对应关系如所示。
表1-1 转发模式与RS485串口需要建立的传输层连接对应关系
转发模式 |
需要建立的传输层连接 |
透传模式 |
由于在以太网中传输Modbus-RTU报文对传输层协议无要求,RS485串口既可以和上位机建立TCP连接,也可以建立UDP连接;建立TCP/UDP连接时既可以作为客户端,也可以作为服务器 |
代理模式 |
由于Modbus-TCP协议仅支持TCP协议,RS485串口必须和上位机建立TCP连接,且必须作为TCP服务器 |
设备在IRF模式下不支持Modbus协议。
Modbus配置任务如下:
(1) 配置RS485串口的运行参数
(3) 配置RS485串口与上位机建立TCP或UDP连接
同一RS485串口只允许配置一种连接类型,可在多个RS485串口上重复执行以上配置建立多个连接。
(4) (可选)配置Modbus性能优化
(5) 恢复RS485串口的缺省配置
工业交换机作为上位机与下位机Modbus协议通信的中继设备通过RS485串口与下位机进行物理连接。为了确保RS485链路的连通性,需要保证工业交换机与下位机的RS485串口参数一致。
(1) 进入系统视图。
system-view
(2) 进入RS485串口的视图。
interface uart interface-number
(3) 配置接口的描述信息。
description text
缺省情况下,接口的描述信息为“该接口的接口名 Interface”,比如:UART1/0/1 Interface。
(4) 配置软件流量控制功能。
flow-control none
缺省情况下,RS485串口没有配置流量控制方式。
(5) 配置波特率。
baudrate baudrate-value
缺省情况下,波特率为9600bps。
(6) 配置数据位。
databits 8
缺省情况下,数据位8。
(7) 配置停止位。
stopbits 1
缺省情况下,停止位1。
(8) 配置校验位。
parity none
缺省情况下,校验位none。
配置RS485串口的转发模式后,该接口上的Modbus功能便处于开启状态。
不能通过重复执行modbus mode命令修改RS485串口的转发模式。如需修改转发模式,请先执行undo modbus mode命令取消配置RS485串口的转发模式,再通过modbus mode命令重新配置转发模式。需要注意的是,执行undo modbus mode命令会将Modbus配置恢复到出厂模式,可能造成Modbus通信中断,请谨慎配置。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) 开启Modbus功能、配置Modbus的转发模式,并进入对应的转发模式视图。
¡ 开启Modbus功能,配置代理转发模式,并进入Modbus代理模式视图。
modbus mode agent
¡ 开启Modbus功能,配置透传转发模式,并进入Modbus透传模式视图。
modbus mode raw
缺省情况下,未配置Modbus的转发模式,此时相当于RS485串口上的Modbus功能未开启,该RS485串口无法处理到Modbus报文。
在代理转发模式下,由于H3C工业交换机相当于上位机的服务器(下位机),需要接收来自上位机的Modbus-TCP报文,所以必须作为TCP服务器建立连接。在透传转发模式下,H3C工业交换机上的RS485串口可以作为TCP服务器或TCP客户端与上位机建立TCP连接,以对Modbus-RTU报文进行可靠透传。
可以通过modbus packet-size命令来修改RS485串口向上位机发送的TCP报文最小长度,以适应不同的网络环境。将最小报文长度调大,可以将多个消息封装为一个TCP报文,以减少多次TCP封包带来的系统资源开销。
多次配置本功能,作为TCP客户端的RS485串口可以与多个作为TCP服务器的上位机建立TCP连接,同一RS485串口最多可和4个作为TCP服务器的上位机建立TCP连接。需要注意的是,设备上不同的RS485串口不能指定相同IP地址的TCP或UDP服务器。
tcp client、tcp server、udp client和udp server命令互斥,请不要在同一视图下同时配置其中的两条或以上。
请合理规划指定的端口号,避免指定其他业务已经使用的端口号,否则可能导致Modbus功能或其他业务功能无法正常使用。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) (可选)配置RS485串口向上位机发送的TCP报文最小长度。
modbus packet-size size
缺省情况下,未配置RS485串口向上位机发送的TCP报文最小长度,TCP报文的长度由实际的数据大小决定。
(4) 进入Modbus透传模式视图或Modbus代理模式视图。
modbus mode { agent | raw }
(5) 配置RS485串口作为TCP服务器与上位机建立TCP连接。
tcp server [ server-port server-port ] [ vpn-instance vpn-instance-name ]
缺省情况下,未配置RS485串口在传输层建立连接的角色,即不会与上位机在传输层建立连接。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) (可选)配置RS485串口向上位机发送的TCP报文最小长度。
modbus packet-size size
缺省情况下,未配置RS485串口向上位机发送的TCP报文最小长度,TCP报文的长度由实际的数据大小决定。
(4) 进入Modbus透传模式视图。
modbus mode raw
(5) 配置RS485串口作为TCP客户端与上位机建立TCP连接。
tcp client server-ip server-ip server-port server-port [ vpn-instance vpn-instance-name ]
缺省情况下,未配置RS485串口在传输层建立连接的角色,即不会与上位机在传输层建立连接。
由于Modbus-TCP传输模式依赖TCP协议实现,在RS485串口与上位机建立UDP连接时,只能使用透传转发模式来透传Modbus-RTU报文,建立UDP连接的优点是可以高效传输报文。
多次配置本功能,作为UDP客户端的RS485串口可以与多个作为UDP服务器的上位机建立UDP连接,同一RS485串口最多和4个作为UDP服务器的上位机建立UDP连接。需要注意的是,设备上不同的RS485串口不能指定相同IP地址的TCP或UDP服务器。
tcp client、tcp server、udp client和udp server命令互斥,请不要在同一视图下同时配置其中的两条或以上。
请合理规划指定的端口号,避免指定其他业务已经使用的端口号,否则可能导致Modbus功能或其他业务功能无法正常使用。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) 进入Modbus透传模式视图。
modbus mode raw
(4) 配置RS485串口作为UDP服务器与上位机建立UDP连接。
udp server [ server-port server-port ] [ vpn-instance vpn-instance-name ]
缺省情况下,未配置RS485串口在传输层建立连接的角色,即不会与上位机在传输层建立连接。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) 进入Modbus透传模式视图。
modbus mode raw
(4) 配置RS485串口作为UDP客户端与上位机建立UDP连接。
udp client server-ip server-ip server-port server-port [ local-port local-port ] [ vpn-instance vpn-instance-name ]
缺省情况下,未配置RS485串口在传输层建立连接的角色,即不会与上位机在传输层建立连接。
下位机的设备种类多样,处理Modbus-RTU报文的能力也不尽相同。对于性能较差的下位机,可将发送Modbus-RTU报文的最小时间间隔配置为较大值,以避免下位机报文拥塞;对于性能较强的下位机,可将发送Modbus-RTU报文的最小时间间隔配置为较小值,以加快上位机获取应答的速度。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) 配置RS485串口向下位机发送Modbus-RTU报文的最小时间间隔。
modbus packet-time interval
缺省情况下,RS485串口向下位机发送Modbus-RTU报文的最小时间间隔为100毫秒。
接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行本配置前,完全了解其对网络产生的影响。
您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议Modbus命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。
(1) 进入系统视图。
system-view
(2) 进入RS485串口视图。
interface uart interface-number
(3) 恢复RS485串口的缺省配置。
default
在完成上述配置后,在任意视图下执行display命令可以显示配置后Modbus的运行情况,通过查看显示信息验证配置的效果。
表1-2 Modbus显示和维护
操作 |
命令 |
显示RS485接口的相关信息 |
display interface [ uart [ interface-number ] ] [ brief [ description ] ] |
查看RS485串口的TCP连接信息 |
display modbus session [ interface interface-type interface-number ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!