西南科技大学信息工程学院 徐 勇
基于Modbus的通信驱动设计
西南科技大学信息工程学院徐勇
【摘要】随着工业控制领域的快速发展,集成监控系统的应用也越来越广泛。本文根据集成监控的开发需求,设计一套服务于集成监控系统的Modbus通信驱动组件。该组件以动态链接库的形式设计和开发。旨在设计和开发一套能够支持二次开发,并适用于集成监控系统开发的工具。该通信驱动程序根据XAML标记语言特性,设置和保存通信驱动的相关配置。并采用多线程的方式管理Modbus通信的多个主从连接。实现集成监控系统对多个Modbus从站设备的数据采集和逻辑控制。
【关键词】集成监控系统;Modbus;通信驱动;XAML
Modbus协议是一种用于电子控制器进行通讯和控制的通信协议,是全球第一个真正用于工业现场的总线协议。通过此协议,控制器相互之间经由网络和其他设备就可以直接进行通信,完成信息和数据的交换和传递。Modbus协议具有标准、开放、可以支持多种通信接口、数据帧格式简单紧凑、数据传输量大、实时性好等特点。在工业控制系统中得到了非常广泛的应用。已经成为了当前工业控制领域的通用工业通信协议标准。
Modbus协议采用主-从式的通信结构,提供连接到不同类型总线或者网络设备之间的客户机/服务器进行通信。主站程序使用不同的功能码请求从站程序执行不同的操作;从站程序执行功能码定义的操作并向主站程序发送响应,或者在操作中检测到差错时发送异常响应。
Modbus协议在串行链路上的实现模型和ISO/ OSI参考模型对比如图1所示。由于Modbus现场总线的实时性特点,所以Modbus通讯协议模型中的网络层、传输层、会话层和表示层都没有定义,这也是现场总线协议的一个共性特点。在应用层规定了Modbus应用层的协议模型包括消息帧格式,功能码、校验、通讯时序控制等内容。
图1 Modbus模型与ISO/OSI模型的对比
Modbus协议定义了一个控制器能够认识并使用的消息结构,而不管他们是经过何种网络进行通信的,它描述了一个控制器请求访问其他下位机或者PC设备的过程。Modbus制定了消息域的格局和内容的公共格式。
控制器通信使用主-从技术,也就是一台设备作为主设备能够初始化传输(查询)。其他设备作为从设备根据主设备查询提供的数据做出相应的反应。
主设备可以单独和从设备进行通信。从设备按照协议返回消息给主设备作为回应。
Modbus传输方式:
Modbus协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。协议本身是没有定义物理层的,只是定义了控制器能够认识和使用的消息结构。
Modbus协议使用串口传输时可以选择RTU或者ASCII模式,并规定了消息、数据结构、命令和应答方式,并对数据进行校验。ASCII模式采用LRC校验、RTU模式采用16位CRC校验。如果传输时使用TCP协议通信时不需要使用校验,因为TCP协议本身就是一个面向连接且可靠的通信协议。
3.1通信驱动运行模块
Modbus通信驱动的运行采用多线程的方式运行。每一个Modbus主站都是一个IModbusStation实例化的对象,每个对象中都设定了Starp()方法和Stop()方法来管理Modbus主站的启停。在每一个Modbus主站实例中,主线程用于监控Modbus主站的运行状态,并产生和监视逻辑处理线程,用于与该Modbus主站下的所有从站进行数据的交互和处理,而对于控制消息的下发,Modbus通信驱动采用消息队列的方式跟从站进行控制消息指令的发出。Modbus通信驱动运行流程图如图2所示:
图2 Modbus通信驱动程序运行流程图
3.2多线程并行处理模型
通信驱动组态模块作为集成监控系统的核心,能够支持一定数量的稳定并发是最基本的要求。多线程的运行模型,不仅能够让多个Modbus主站并行的执行,还能减少系统的开销。同时,由于同一个进程里的线程间的通信比较方便,开销很小,所以,在每一个Modbus主站实例中,将不同的任务分配到多个线程中并行执行,提高通信驱动的执行效率、实时性和稳定性。本课题研究的通信驱动组态根据集成监控系统的需求设计了一套基于多线程通信和数据处理的运行模型。
该模型通过线程的优先级来调度线程,集成监控系统通过通信驱动内的配置,为每一个Modbus主站实例化一个Modbus驱动类的对象,并启动该对象的主线程。Modbus主站实例在主线程的驱动下,完成下位机的实时数据采集、数据处理和控制指令的下发。多线程的并行处理模型如图3所示:
图3 多线程并行处理模型
本文多设计和开发的基于Modbus的通信驱动,依赖XAMl标记语言完成对集成监控系统中通信驱动的配置和具体通信协议的二次开发,采用多线程的方式并行访问多个从站,实现对工业现场设备实时数据的采集,并通过共享消息队列对现场设备进行控制。性能完整且稳定。现已长期运行于多个集成监控系统的生产环境中。
参考文献
[1]史运涛,孙德辉,等.基于Modbus协议的通讯集成技术研究[J].研究与应用,2010,04(1).
[2]宋文娟,赵强,等.基于MODBUS网络的液位测量系统设置[J].仪表仪器雪豹,2005,26(8).
[3]李娜.基于MODBUS协议的智能仪表的设计[D].北京:北京邮电大学,2003.
[4]徐宁,赵冬梅.对基于XAML的新一代可拓展应用程序标记语言的研究[J].计算机时代,2004,11:68-71.
徐勇(1990—),四川眉山人,硕士,现就读于西南科技大学。
作者简介: