n廿Ⅱ 丽_【=_0斤【r0lINetWOrK 基子Madbus/TCP的工业以太网逼值 Ethernet CommunicatiOn Based on Modbus/TCP Protocol 金青 戴胜华 欧阳劲松。 (1.北京交通大学,北京市100044 2.机械工业仪器仪表综合技术经济研究所,北京市 1 00055) Jin Qing Dai Shenghua Ouyang Jinsong (1.Beijing Jiaotong University,Beijing 100044 2.Instrumentation Technology&Economy Institute,Beijing 100055) 【摘 要】Modbus/TCP协议是Modbus协议族在工业以太网上的解决方案。本文介绍了Modbus TCP协议的主要内容,同时介绍Ethernet的通信过程和特点。提出了采用Modbus协议、 TCP/IP协议和Ethernet的网络模型用于工业控制网络。 【关键词】以太网Modbus/TCP协议客户机/服务器 Abstract:Among Modbus Protocol Family,Modbus/TCP is the protocol applied in Ethemet.The paper presented themaincontents ofModbus/TCPprotocol,and introducedtheprocess andcharacteristic ofEthemetcommunication. At last,the Modbus protocol,TCP/IP protocols and Ethemet in the industrial control network was discussed. Key words:Ethemet Modbus/TCP Protocol Client and Server 引言 以太网是最, 泛使用的网络标准(IEEE 802.3), Modbus是一种通讯协议,于1 979年由Modicon 它采用介质访问控制协议(MA C)的通信标准,即 公司发明,并将其公开,推向市场,是基于主站从站/ (CSMA/CD)(载波监听多路访问冲突检测协议,当 客户机服务器方式连接智能设备,实现设备间的数 网络上任一站点在传送数据前,先检测是否已有数 据交换。 据在介质上传送,若有则等待对方送完后才能送出。 Modbus的通讯几乎可以通过任何物理介质实 数据送出后,在传送的过程中不断检测是否与其他 现,如:电线、光纤、红外、射频、扩频、微波、卫 站点送出的数据发生碰撞,若发生碰撞,须等待一段 星等。Modbus还可以通过不同的网络进行互连,如: 时间后再重新发送。当在两个或更多的节点间检测 以太网、ADSL、ISDN、PSTN、ATM、FR等。所 到冲突时,发送节点就会停止传送并等待一个随机 以它具有很强的扩展能力,可以说:连接的距离已不 的时间后重新尝试传送。由于介质访问负载轻,以太 是问题,它可以通过互联网,连接到世界的任何地 网使用一种简单的算法操作网络,在网络负载轻时 方。Modbus具有很高的速度性能:响应时间小于1O 几平没有时延。与令牌环或令牌总线协议比,以太网 毫秒,目前可以满足工业控制中90%应用的需求,它 访问信道不需要通信带宽。标准的以太网支持 的下一个实现目标是:响应时间小于1毫秒。由于 lOMbps的数据传输率,也支持1Gbps。 Modbus是制造业、基础设施环境下,真正的开放协 2 Modbus/TCP协议 议,故得到了工业界的广泛支持,是事实上的工业标 Modbus与TCP/IP结合成为Modbus/TCP,它 准。还由于它的协议简单、容易实施和高性价比,所 以一种非常简单的方式将Modbus帧嵌入到TCP帧 以全球有超过400个厂家支持,使用的设备节点超过 中,使其成为工业以太网应用层协议。 700万个。 Modbus中,设计工作一般采用面向连接的方 近几年来,随着Modbus协议不断扩展,已经将 法,即连网时要经过“建立连接、通信和释放连接” 串行链路、高速令牌传递网络、TCP/IP等关键技术 三个步骤。在简单的变量中可以通过唯一的“注册” 引入到M 0 d b U S应用协议解决方案中,形成了 令牌获得;在Modbus变量中可以通过明确的“编程 Modbus应用协议族,基于Modbus应用协议族的工 路径”性能获得,这种性能主张双方按照协议通信, 业以太网解决方案已经逐渐应用于各种现场级测控 直到连接终止。 领域。 Modbus/TCP处理两种情况。连接在协议层 1 Ethernet的通信过程与特点 很容易辨识,并且一个单一的连接可携带多个独立 收稿日期:2oo6一O1—12 的事务。此外,TCP允许相当大数量的并发连接,所 作者简介:佥青(1 982一),女,汉族,北京交通太学交通信息工程 以在大多数情况下,开发人员选择是根据需要重新 厦控制专业,在读硕士。 连接,还是重新选择长期存在的连接。 2 2 l厦墨厦爰蕾准化与计■ ■■■ 面 T_———一一 维普资讯 http://www.cqvip.com
Modbus使用面向连接的TCP,主要原因是通过 十连接至TCP/IP网络的Modbus/TCP客户机 将它封装到一个连接中来保持对单独的“事务”的控 和服务器设备。 制,这种连接能被辨识、监控、取消而不需要客户和 十互连设备,例如:在TCP/IP网络和串行链 服务器部分的特别动作。 路子网之间互联的网桥、路由器或网关,且该子网允 Modbus协议层位于TCP之上,如图I所示。它 许将Modbus串行链路客户机和服务器终端设备连接 主要完成的任务有:在客户端,负责把来自用户的 起来。 Message(包含用户要求执行的操作和被控制的对象 等信息)封装成Modbus帧,在服务器端,负责解释 来自客户端的Modbus帧,执行相应的请求。 M。c us客户机串行链路 … ~客 m啪 啪 I客户 ;P/IPM关 皿础蕊 盟瑚盈蕊 蕊蚀蕊涩戮嬖叠涩涩 { 墨: 】 图1 Modbus TCP/IP通讯栈 3 TCP/IP上的Modbus应用单元 (1)MBAP Header(Modbus应用协议报头,共 占用2字节)含有四个子域:事务处理标识符(占用 图3总体通信结构 2字节,用来标识Modbus帧的次序,每多发送一个 5 TCP/IP连接管理流程图 Modbus帧,该值加I),协议标识符(占用 2字节。用来确认应用层协议是不是 Modbus协议),长度(占用2字节。给出单 元标识符子域和数据域的共同长度),单元 标识符(占用1字节。它用来标识Modbus 串行线上的某个设备单元)。其中:单元标 识符用于串行链路或其他总线上连接远程从 站的识别。 (2)功能码,占用I字节,分为位操作 和16位字操作两大类。其中位操作主要用 于像PLC这类设备。 (3)数据域(占用字节的上限为248)的 具体格式与功能码密切相关,它是一个可变 长字段。总的说来,客户端发送请求数据 时,数据域给出要操作的寄存器的起始地址 (2字节)和个数(1字节)。而服务端发送 应答数据时,数据域给出被操作的寄存器个 数(1字节)以及 个寄存器的状态值。 图4 TCP/IP连接管理流程图 < > 6客户端和服务器端的实现 耍l报文头(她^P)l l 聒 l 匣 I姒。悄I 6.1客户端的实现 Modbus/TCP规范的设计使得客户机的实现 尽可能简单。基本的事务处理过程如下: PDU (I)用connect()建立对目标设备TCP502端口的 连接; 图2 TCP/IP上的Modbus的请求/响应 (2)准备Modbus报文,提交包括7个字节的 4总体通信结构 Modbus/TCP前缀在内的报文,并使用send()发选 Modbus/TCP的通信系统可以包括不同类型的 (3)在同一个连接等待应答,也可以使用定时的 设备: 方法并使用 ̄lect(),这样可以较快地查错; 维普资讯 http://www.cqvip.com
(4)用recvO读响应的前7个字节I然后用 recv()读完所有应答报文,完成一次数据交换过 程I (5)当没有通讯任务时,关闭TCP连接,以 使服务器的资源处于空闲状态可以被其它设备使 用。 在客户端使连接打开的最大间隔是1秒。如 果使用定时的方法等待应答,从一侧关闭连接, 打开一个新的连接并重新提交请求报文。该技术 允许客户机重新定时,这一点优于默认的南TCP 提供的方式。同时它也考虑了备用的方法,例如 提交请求到备用的IP地址,使用完全独立的通信 网络,用来防止因网络下部结构而造成连接失 败。如图5所示,Modbus客户端实现流程图 6.2单线服务器端的实现 一些嵌入式系统和诸如UNIX ̄H MS DOS 的老的操作系统,一般使用socket调用“select” 来处理多个连接。在这样一个系统中,不在一个 线程中处理多个独立的并发请求,而是在公共的 处理程序中用多状态机方式处理。如图6所示, 图5 Modbus客户端实现流程图 Modbus服务器实现流程图。 其事务处理流程为: 果报文头正确,读完所有报文,如果请求报文完整收 (1)初始化状态机并将其状态置为“空闲”; 到,将状态机置为“等待应答”,如果select()返回的 (2)使用listen()监听TCP 502端口的连接请求 信息为连接不再使用,关闭连接并将状态机状态置 (3)如果收到请求,用accept()接收并状态机从 为“空闲”; “空闲”设置到新请求; (5)如果状态为“等待应答”,检查客户端的信 (4)如果状态为“新请求”,用select()检查是否 息/服务是否存在,如果存在,增大应答分组,使用 有请求到达,如果select()返回有数据包的信息,用 send()返回正常应答报文或例外应答,将状态机从 recv(6)读取含有后续长度字节的前6个字节,如果发 “空闲”设置到“新请求”。在每个周期中通过将 生错误,关闭连接并将状态机状态置为“空闲”,如 eslect()调用连接成单个调用是可能的,而且并不影响 应用的功能结构。 7结束语 ModBus协议在工业控制系 统中已经应用十分广泛。但在多 数系统中使用的是由专业供应商 提供的组态软件。有时候使用组 态软件提供的数据格式并不能达 到要求 直接使用Modbus/TCP 协议进行数据通讯是十分有用 的。 功 参考文献 [11】 GB/Z 19582-2004.基于 Modbus协议的工业自动化网络 规范.中国国家标准化管理委员 会发布 【2】Comer Douglas E著. 用TCP/IP进行网际互联一第三 卷一客户/服务器编程与应用 图6 Modbus服务器实现流程图 【M】.北京:电子工业出版社口 2 4 I倥一位夏‘准 与计■ —●■ 而 —~——
因篇幅问题不能全部显示,请点此查看更多更全内容