前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的modbus协议主题范文,仅供参考,欢迎阅读并收藏。
关键词:modbus 数据读取 工业控制 网络通信
中图分类号:TP274.2 文献标识码:A 文章编号:1007-9416(2012)11-0049-02
Modbus是一种工业上开放的现场总线协议,是目前通用的工业标准之一。该协议能够使得各个厂家之间的控制设备能够相互通信和进行数据传输,在工业过程控制中具有广泛地应用[1]。Modbus协议包含三种模式,即Modbus TCP、Modbus RTU和Modbus ASCII模式[2]。本文在研究Modbus TCP协议模式的基础上,设计了一种基于TCP/IP的Modbus的数据读取功能。通过该读取功能,用户可以在PC机上可以读取PLC控制器上的数据。
1、Modbus TCP/IP协议数据帧的格式
由于Modbus TCP/IP协议运行于TCP/IP协议上,因此Modbus TCP/IP协议的数据帧被封装于TCP/IP协议数据帧中的数据单元中,作为TCP/IP协议中的数据部分发送给各种控制设备;支持Modbus协议的控制设备收到Modbus请求之后,根据请求的内容将结果返回给客户端。本文所设计基于Modbus TCP/IP的数据请求和响应帧格式如下图所示。
事务元标识符:该标识符用于事务处理的配对,该域中的内容为用户自行设定,如可以将每一帧的编号放在该域中。
协议标识符:该标识符用于系统内的多路复用,当使用的Modbus协议时,该值为0。
长度:该域中的数值表示后继域内容的字节数,包括单元标识符和协议数据单元。
单元标识符:为了系统内路由,使用这个域。在服务器的响应帧内容中服务器必须使用相同的值返回该域的内容。
本文设计的读写功能所用到的Modbus功能码的定义如下表所示。
表 Modbus功能码
协议的数据单元包括功能码和数据两部分。本文以读取2个寄存器的数据为例来说明该部分帧格式的设置。
功能码:读写多个寄存器的功能码为03,该域大小为1字节。
数据:数据部分包含读起始地址和读的数量。本文从起始地址开始连续读取2个寄存器的内容,因此读起始地址为0,该域大小为2字节;读的数量为2,该域大小为2字节。
2、数据读取功能的实现
本文在上一节设计的数据帧格式的基础上,使用VC++ 2010实现了基于Modbus TCP/IP的数据读取功能,并使用MODBUS Simulator作为Modbus的TCP服务器。
数据请求的主要代码如下:
MODBUS Simulator的地址0000-0001写入了67.5。如图2-2所示。
在数据读取客户端中,首先点击“连接服务器”按钮,客户端提示连接服务器成功后,点击“启动定时器”按钮,则客户端开始周期性地从Modbus服务器中读取数据,并显示在客户端上。
3、结语
本文在研究Modbus TCP/IP协议的基础上设计基于Modbus协议的数据读取的数据帧格式,并使用VC++ 2010实现了该数据帧的数据读取功能。通过该读取功能,用户可以在PC机上可以读取PLC控制器上的数据。
参考文献
关键词:modbus;一致性测试;自动化;用例生成器
中图分类号:tp393.09文献标识码:a
文章编号:1004-373x(2010)01-171-03
automation of modbus conformance testing
zhao jian
(northwest airtraffic management bureau,xi′an,710082,china)
abstract:the existing modbus protocol conformance testing method has following problem: there is not automatictesting method for it,and this brings negative impact on the effectiveness of test.in order to solve this problem,the architecture of automation method for modbus protocol conformance testing,the architecture includes test case generation and test result analyzer.the automatic conformance testing system based on the architecture is realized.in practice,the system found a number of hidden modbus conformance errors,this proves that the availability and effectiveness of the method.
keywords:modbus;conformance testing;automation;test case generation
0 引 言
modbus协议已经成为一种事实的工业标准,但modbus设备间的一致性、互操作性较差,是制约modbus发展的瓶颈。为了解决modbus协议的一致性和互操作性问题,国内外的研究机构展开了深入的研究并取得了一些成果。
在modbus-ida国际组织的支持下,进行modbus一致性测试的实验室陆续建立。目前,在国外得到modbus-ida国际组织授权的modbus一致性测试实验室仅有两处:一处是位于美国密歇根大学的modbus tcp一致性测试实验室;另一处为设在该课题所在机械工业仪器仪表综合技术经济研究所的modbus serial line/tcp一致性测试实验室,它是独立于产品制造商的第三方测试机构[1,2]。国外其他研究机构对modbus测试系统的研究处于发展阶段,modbus测试系统被应用到火电厂、电力监控系统、控制系统安全认证中,但都未形成一致性和互操作测试标准和自动化方法[3-6]。
在国内对进行modbus一致性和互操作性测试研究的机构主要有:北京交通大学的研究人员开展了modbus串行链路协议一致性测试系统的研发工作[7,8];开普电器检测研究院在modbus协议一致性测试方面有多年的经验,已加入modbus-ida协会[9]。
总得来说,国外在modbus协议的一致性和互操作性测试的研究已经取得了一定的成果,并形成了一些测试系统,但国内用户分享成果的代价较大,并且无法进行modbus设备的互操作性测试,并且尚未形成测试自动化方法;国内的研究已经起步并取得了一些初步研究成果,但在国内尚未形成测试标准和测试自动化方法。
为了克服目前研究中所存在的问题,本文主要研究modbus协议的一致性测试的自动化方法,测试的自动化方法主要包括测试用例的自动生成和测试结果的自动分析两方面,限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
1 一致性测试的基本原理
协议测试理论经过几十年的发展,在许多方面都取得了很大的进展,其中最成熟的是协议一致性测试的理论,主要代表是iso制定的国际标准iso/iec-9646:协议一致性测试的方法和框架。图1是一致性测试的基本示意图。iut(implementation under test)是根据规范的具体实现,是一个内部不可见的实体;规范(speciflcation)以某种形式化语言或者自然语言描述,但不管怎样的描述形式,其根本都是一个扩展自动机模型;测试仪(tester)根据规范为iut产生一组测试序列 (test sequence),然后观察iut的外部行为是否符合规范的描述[7,8]。
图1 一致性测试原理示意图
目前的实际工程测试中,测试序列主要是由少数专家凭借经验制定的。因为原始的规范通常都是自然语言描述的,不同的实现者在使用形式化语言建模的过程中,就可能产生了一个一致性问题:原始规范和形式化规范之间可能在语义上产生偏差。根据这样衍生的形式化描述产生的测试序列不能作为判断是否通过一致性测试的依据。
对于一致性测试的过程,大约需要分五个步骤来完成[8],图2是一致性测试的过程。
图2 一致性测试的过程
第一步,分析测试需求。也就是说,分析相应的标准或规范,从中找出一组测试标准,建立用于实现的一致性描述pics(protocol implement conformance statement)。每个pics应该尽可能的简单并且仅仅集中在一个原子功能上,测试标准之间要做到不相抵触。
第二步,在pics上增加一些用于测试实现的协议实现额外信息pixit(protocol implementation extra information statement),pics和pixit就组成用于测试实现的一致性信息citi(conformanee information for testing the implementation)。
第三步,基于citi,生成一组抽象的测试用例atc(abstract test case)的集合——抽象测试套件ats(abstract test suite)。
第四步,对各atc中的参数选择合适的输入值以及相应的“预测结果”,得到可执行的测试用例etc(executable test case)的集合——可执行的测试套件ets(executable test suite)。当然,生成的可执行测试套件是与所处的测试平台是密切相关的。
第五步,对被测单元uut(unit under test)执行etc的时候,被测单元的测试过程将会产生一个“通过”或“失败”的报告。报告“失败”即未能通过测试则意味着与规范不一致。
2 一致性自动化测试方法
目前测试过程中的“生成ets”、“测试uut”等工作步骤中实现了简单的测试系统,能够对一些工作实现自动化,如根据手工输入的modbus协议的从站号、功能号、地址等参数生成测试用例,能够自动执行测试用例并生成简要测试报告。但这些测试过程存在以下问题:测试用例的生成需要大量的人为干预;另外,测试结果只是简要的测试报告,没有更进一步的分析报告,以帮助用户更容易地确定问题所在。
如图2虚线框部分所示,“生成ets”、“测试uut”等工作步骤可以实现测试自动化。自动化后的体系结构如图3所示。其中可视化用例设计器、测试用例生成器完成测试用例的自动生成工作;测试结果分析器完成测试结果的自动分析工作。限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
图3 一致性测试过程的自动化示意图
通常在一致性测试过程中,测试用例的设计和生成是软件测试的关键任务和难点,据统计,约有40%一致性测试开销用于设计和生成测试用例上。长期以来,测试用例的设计和生成主要依靠手工完成,这意味着要求测试人员具有相当的经验和较高的专业水平。因此,实际工程中的测试用例生成往往带有很大的盲目性,主要依靠直觉经验产生测试用例,这导致测试用例数量多,测试效果差,测试成本居高不下。另外,如何生成最能发现被测系统(或程序)存在问题的测试用例,如何能用最少的测试用例实现足够大的覆盖率,也是测试人员一直追求的目标。这些问题的解决方案就是测试用例的自动生成[10]。
2.1 测试用例的自动生成方法的体系结构
图3中的测试用例自动生成器是测试用例自动生成工作的核心。其体系结构如图4所示。
其中用例设计描述是描述用例特性的文本,根据所选择的算法不同而描述方式也不同:如采用“基于形式规格说明的方法”则用z,vdm,obj,larch [11]等语言来描述,如采用“组合覆盖方法”则用xml脚本来描述。
图4 测试用例自动生成器的体系结构
算法适配器为各种算法提供接口,它向上为描述解析器提供算法支持服务,向下解释各种算法,使得体系结构能够兼容多种算法而增强体系结构的扩展性和适用范围。
描述解析器基于算法适配器来分析用例设计描述,将描述统一转换成用例生成器可识别的内部描述形式,然后传递给用例生成器。
用例生成器获得来自描述解析器的内部描述,并根据描述自动生成可执行测试用例。可执行的测试用例支持多种形式存储,如内存存储、文件存储、数据库存储等,具体的存储格式随用例执行器的需求而变。
2.2 测试用例的自动生成方法的实现
为了验证体系结构的合理性和有效性,基于microsoft vc 6.0 sp6、modbus activex控件、“分类树方法”、cte xl(classification tree editor extended logics)实现了modbus协议一致性测试的自动化系统。
其中cte xl是我们系统中的可视化用例设计器,它是一个语法控制的、可视化、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。
分类树方法是黑盒测试中的一种部分测试方法,由grochtmann 和grinun 提出,后又由chen 和poon 改进[11],它是一种有效的功能测试方法。分类树方法的基本思想是: 首先逐层划分测试对象的输入域,然后将划分的独立的类结合为无冗余的测试用例,这些测试用例覆盖了整个输入数据域。
算法适配器、描述解析器、用例生成器、分类树方法均使用microsoft vc 6.0 sp6实现。
modbus activex控件用来执行用例并生成测试报告。该控件具有多线程、多任务、多优先级等特性,支持modbus serial line/tcp通信协议,支持rtu和ascii两种通信模式,具有良好的性能。
系统实际使用时,首先用cte xl构建用例设计,也就是生成z语言描述的规格说明,然后描述解析器解析该规格说明并生成测试用例模板(系统内部格式),交由用例生成器生成可执行的测试用例,最后由modbus activex控件用来执行用例并生成测试报告。人工参与的部分只是在第一步,即用cte xl构建用例设计,其余部分均自动完成,大大降低测试人员的工作量,提高了测试工作的效率和客观性。
该实现已经被应用到“山东石油化工厂装车管理系统”中用来测试管理系统和油气批量控制仪之间modbus通信,也被应用到“长庆单井计量信息系统”中用来测试信息系统和plc之间的modbus通信,限于篇幅测试过程不赘述,经过测试发现了一些隐藏的modbus一致性问题并且便于使用,提高了一致性测试有效性和客观性,同时增强了产品的可靠性和可用性,也证明了本文所论述的一致性测试自动化方法的有效性和实用性。
3 结 语
在分析了现有modbus协议一致性测试中存在的问题后,本文提出了一致性测试的自动化方法,基于这个方法设计并实现了一致性测试系统,在实际应用中该系统发现一些隐藏的modbus一致性问题,提高了modbus一致性测试的有效性和客观性,证明了该方法的有效性和实用性。目前该方法的实现基于分类树方法,下一步将研究其他测试用例自动生成方法,使其进一步完善。
编辑整理
参考文献
【关键词】Modbus 协议;Honeywell pks;S7-300 PLC;串口通讯
随着计算机、通信及自动控制等技术的发展,对企业自动化设备工作状况进行远程监测和控制,不仅可随时了解设备工作状态,设备出现异常时报警,便于及时发现,提高工作性能,在实际现场应用中,需要把不同厂家控制系统的数据进行共享互联。某甲醇厂60万吨/年甲醇项目的主控制系统采用了美国先进的控制系统Honeywell pks,而现场低压煤浆泵、氮压机、磨煤机的装置系统的控制系统为各自独立配置SIEMENS S7-300 PLC控制系统。为了有效的监控这些设备的运行参数,采用Modbus协议来实现控制系统与SIEMENS S7-300控制系统之间的串口通讯。
一、Modbus协议简介
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议可使控制器相互之间、控制器经由网络和其它设备之间进行通信。它已经成为一通用工业标准。可以把不同厂商生产的控制设备连成工业网络,进行集中监控。Modbus协议是一种适用于工业控制领域的主从式串口通讯协议,它采用查询通讯方式进行主从设备的信息传输,可寻址1-247个设备地址范围。协议包括广播查询和单独设备查询两种方式,二者区别就是广播查询不需要从设备回应信息。
标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由 Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码所有要发送的数据、一错误检测域。从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
二、PKS 系统的通讯功能
PKS 系统是Honeywell公司推出得基于批处理、过程控制、 SCADA应用的开放的混合控制系统。它通过串行口(Serial)和第三方控制器或PLC通讯。它支持多种类型的控制器通讯,并可以灵活的采用多种连接方式。控制器带网络接口控制工程网权,可以直接接入到网络上,如果控制器带串口控制工程网权,可以通过modbus协议终端服务连接到网络上来。一个modbus协议终端服务允许多个控制器同时连接到网路上来,并提供多种连接接口RS-232、RS-422、RS-485。利用Modbus 协议配置方式实现兖州煤业榆林能化甲醇厂60万吨/年甲醇项目Honeywell PKS 控制系统与SIEMENS S7-300 PLC控制系统控制器之间的串口通讯。
1.硬件介绍
串行接口卡件(SIM)是安装在PKS系统标准卡槽上的双宽度I/O卡件,它的功能是实现通过现场端子板FTA连接串行接口卡件的现场设备与PKS控制器之间的通讯桥梁。串行接口卡件可以提供与单FTA 电源适配器连接的两个FTA 通讯的两个串口的双向通讯接口控制工程网权,它不存储和保持任何现场I/O设备的组态数据和实时数据,它只在与它相连的现场设备与控制器之间传输数据参数。
FTA采用插接卡件根据现场设备的需要选用指定的串行接口控制工程网权,共有两种标准的FTA 产品。一种是MU-TSIMI2 Modbus型FTA提供点对点RTU EIA-232(RS-232)或EIA-422/485(RS-422、485)多点通讯接口。另一种是MU-TSIAI2 Allen-Bradley(A-B)型FTA提供一个EIA-232(RS-232)通讯接口用于DF1通讯协议的A-BPLC-2等现场设备。
某甲醇厂60万吨/年甲醇项目采用了第一种FTA标准。一个SIM卡带两个FTA接线端子板(FTA A,FTA B),由单独电源模块供电,每个FTA 接线端子板通过屏蔽双绞通讯线与第三方设备连接。各通讯设备以总线方式接入,当通讯距离超过100米或者干扰很强时两端均加上120欧姆电阻,连接第三方通讯设备到FTA端子的最大接线长度不超过300米,如果超过300米采用信号信号中继器或者放大器,每个FTA接线端子板最多可接的设备15个。
某甲醇厂60万吨/年甲醇项目的低压煤浆泵、磨煤机S7-300控制装置离主控室Honeywell PKS控制装置有600多米,采用了S7-300 的Modbus 485转换成光信号,通过光纤送至PKS控制装置控制室通讯柜内,然后通过光电转换成Modbus 485 信号接入PKS 通讯网中,实现数据通讯。而合成压缩机、丙烯压缩机采用ITCC控制系统与Honeywell PKS控制装置距离只有30米,直接采用Modbus 485屏蔽双绞通讯线进行连接通讯,进行数据共享。
2.组态介绍:(以SINUMARRCH功能块为例)
每个SIM卡有32个通道,其中0-15通道与连接在FTA A板上的第三方设备的进行通讯,而16-31通道与连接在FTA B板上的第三方设备进行通讯。当只有1个FTA板时,那么这块FTA板必须配置成FTA A使用,即将FTA 接到Power Adapter的Channel A上,而且只能使用0-15通道。
Control Builder中SI通讯功能块有三种:对于一个软通道SINUMARR CH功能块可以接收/发放最多16个32位浮点数或整型数。
组态画面中:
Serial Link Device Address:为设备地址,即Modbus ID;
Starting Element lndex:为接收/发送数据的起始地址。此为第三方厂家提供的,是Modbus通讯寄存器首地址,1个寄存器地址存储一个16位二进制数;
Number of Numeric Value:接收/发送数据的个数。
一个SINUMARR CH功能块只能设置为一个数据类型,而且接收/发送数据的地址必须是连续的。Number of Numeric Value项中设置的值是从起始地址开始存储数据的个数;如果第三方设备发送/接收数据的Modbus 存储地址是放在不连续的几个地址段上,那么就必须用多个SINUMARR CH功能块来接收不同地址段的数据。
三、结束语
目前甲醇等煤化工项目装置中,DCS、PLC等多个控制系统同时使用的情况很普遍,把多个控制系统融合为一个整体,能在中央控制室中的DCS中监视、控制。就涉及控制系统之间的通讯问题。而Modbus串行通讯技术有着实现简便、系统集成费用低以及通讯距离远(RS485/422)等特点,所以Modbus串行通讯技术的运用在DCS与PLC之间通讯将会保持广泛的应用。
参考文献
[1]Honeywell.Experion PKS Serial interface Module implementation Guide.EP-DCXI43,R210,2004,10:18-45.
【关键词】火电厂 MODBUS通讯协议 应用
近年来,火电厂在建设过程中逐将较多先进的控制系统与仪表引入,如智能仪表、数据采集器以及PLC控制系统等。尽管这些先进系统引入下,对提升火电厂发电机组综合性能可起到突出作用,但由于系统与仪表过多,要求借助DCS完成一系列控制与监视操作,而这些操作的实现关键在于DCS与所有系统间保持通讯,此时便可考虑以MODBUS通讯协议为依托,对通讯目标的实现将发挥重要作用。因此,本文对火电厂自动化改造中MODBUS通讯协议的应用研究,具有十分重要的意义。
1 MODBUS通讯协议的相关概述
关于MODBUS通讯协议,其可应用的方式集中表现在RTU与ASC II两种方式上。其中前者强调所选用的二进制数据为8位字节,并通过CRC检验方式的应用,对二进制数据进行校验,具有较快的通讯速度。而ASC II方式下,其利用的为ASC II码,为7位字节,且在冗余校验中采用的方式为LRC,通讯速率上相比RTU要低处许多。所以在通讯方式选择中,可考虑引入RTU通讯方式。另外,MODBUS通讯协议应用下,通讯的双方分别为的主机与从机,通讯指令字符串将由主机向从机进行发送,而从机会判断其中是否有与地址不相同的指令,通过筛选后给出相应的回答。对于MODBUS通讯协议中的指令字符串,一般也可具体细化到功能码、数据起始地址、数据量等方面。保证这些内容合理的情况下,便可引入CRC冗余校验方式,若字符串校验结果达到相应标准,可判断字符串正确,而在结果不一致的情况下,将禁止数据被投入使用[1]。
2 MODBUS通讯下的数据寄存与通讯过程
2.1数据寄存
数据寄存是MODBUS通讯协议应用下需考虑的主要问题,通常需依托于寄存器地址,使通讯双方数据保持对应。从其中寄存器地址类型看,集中表现为:第一,内部数字量线圈。该地址一般可通过1XXXX进行表示,对于逻辑运算结果,都可通过寄存器的利用实现,无需考虑到设备I/O通道问题。第二,外部输入线圈。该部分寄存器地址通常可用2XXXX表示,其中寄存器的运用与具体I/O通道保持对应,数字量状态可直接通过读取寄存器状态实现。第三,外部输入模拟量。对于该寄存地址,可用3XXXX进行表示,其中的I/O通道也与寄存器保持对应,模拟量数值可通过寄存器数值被掌握。第四,内部模拟量。其可用4XXXX对寄存地址进行描述,寄存器在作用上表现为中间寄存器,数值运算结果都可被存放于寄存器中。
2.2通讯过程
MODBUS通讯协议实现中,所采用的主要以主从式通讯为主,其中的主机为一台,而从机数量有多个。当从机对主机指令字符串接收后,会给予相应的应答,此时便意味整个通讯过程实现。例如,通讯时主机发出的指令中,要求由01从机将内部线圈状态返回,以0001-0008作为返回地址。此时若线圈状态正常,其将返回对应的字符串,且在功能码、从机地址等各方面都与主机命令字符串一样。这样整个通讯过程便得以实现[2]。
3火电厂自动化改造中的MODBUS通讯协议应用
火电厂自动化改造是当前火电厂建设需考虑的主要问题。本文在研究中主要以WT300数据采集器作为实例,其本身具有免维护、通讯距离远、通讯速率快且价格较低等优势,在火电厂中应用极为广泛。为使该采集器应用中,可与DCS系统保持通讯,使整个控制系统更为完整,便需将MODBUS通讯协议引入其中。具体应用中,首先需做好CA总线分析。CAN总线通讯协议本身在数据采集器中有所体现,可保持10km的通讯距离与1Mbps的通讯速率,并将双绞线作为通讯介质。此时采集器装设中,可考虑与工业现场设备相近位置,使信号采集更为便利,在此基础上通过一根双绞线的应用使网络连接通畅,可满足信号电缆节约的目标。
其次,需在WT300上做好设计。可考虑将一定数量的输入通道设置于采集器中,由其负责完成数字量信号、电流、电压、热电阻与热电偶采集过程,并在CAN总线应用下,使采集后的数据向MOD-CAN接口处传送。需注意的是,在CAN网络中,数据采集器在分布数量上有一定的限制,应做好控制工作。
最后,MOD-CAN接口部分。由于设计过程中需考虑到通讯接口问题,如CAN接口方面,其主要负责来自数据采集器中的数据,这就要求引入MODBUS通讯协议使DCS系统能够对CAN缓存的数据读取。而对于MOD-BUS接口,也负责向DCS系统中传送数据,其中主机部分为DCS,从机为MOD-CAN接口。通过MODBUS通讯协议的引入,最终设计的机组在整体性能上都将得到提高,有利于改造目标的实现[3]。
4 结语
MODBUS通讯协议的引入为火电厂自动化改造提供坚实的技术支撑。实际应用该通讯协议中,应正确认识其基本内涵与实现的原理,明确MODBUS通讯协议应用下的通讯过程、数据寄存等问题,在此基础上结合火电厂发电机组实际情况,利用MODBUS通讯协议,使所有采集器、控制系统能够重新构成一个新的系统,以此提升系统综合性能,且节约系统控制成本,对提高火电厂综合效益将发挥重要作用。
参考文献:
[1]翁献进. RS232、RS422/RS485串行通讯标准及其在火力发电厂热工自动化系统中的应用实践[J].科技信息,2010,10:241-242.
关键词:MODBUS;信捷PLC;VB
引言
目前石化公司引进的芳烃联合装置,其中的化工吸附分离过程是一个比较复杂的过程,一旦过程发生故障,会引起产品质量问题。为保证生产过程的安全稳定、必须实现生产过程的实时监控。本控制系统底层系统下位机采用信捷XD3 PLC,上位机采用工控机,上下位机通过MODBUS协议实现通信[1],在PC端能在用户界面上采集数据、数据处理及控制信号的产生与传输。
1 控制装置构成
化工吸附分离底层控制装置中的下位机采用XD3-60RT-E,其任务是对化工吸附分离设备的进料出料进行控制,对过程进行监督,发生故障时上位机可以观察到,并且及时的进行报警工作。上位机采用PC,利用VB开发的界面与PLC实时通信,对对化工吸附分离设备进行实时监控。XD3通过编程电缆与工业PC进行通信。
2 通信协议
PC与XD3 PLC的MODBUS通信,采用主从应答方式, PC为主机,PLC为从机[2]。PC根据化工过程中的需要向PLC发出读写命令,PLC在接收到PC的指令后,回应PC的指令。在PC中,必须根据MODBUS协议编写通信程序。
2.1 RTU模式
通信格式采用MODBUS-RTU通信数据格式,当设备使用RTU模式在MODBUS串行链路通信,报文中每个8位字节含有两个4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU模式帧检验域采用循环冗余校验(CRC)[3]。
4 结束语
通过PC与XD3 PLC的MODBUS通信程序的设计方法,一台PC可以和很多台PLC进行通信,采集到不同PLC的数据,监控到不同PLC的运行情况。使用该方法可以降低控制设备的成本,在实际的应用中,该通信稳定可靠、经济实用,可以很方便的对化工吸附分离进行监控和管理。
参考文献
[1]汪正果.MODBUS协议在S7-200PLC与PC机通信中的应用[J].煤矿机械,2010.
[2]陈铭.基于MODBUS协议的设备和PLC实现通信的研究[J].湖南科技学院学报,2009.
[3]潘洪跃.基于MODBUS协议通信的设计与实现[J].计量技术,2002.
[4]信捷电气股份有限公司.XD系列可编程控制器用户手册[指令篇](XD/XDM)[Z].信捷电气股份有限公司,2013.
[5]范逸之,等.Visual Basic 与RS232串行通信控制[M].北京:清华大学出版社,2002.
关键词: DeviceNet; ModBus; 嵌入式I/O模块; LPC2129
中图分类号: TN711?34 文献标识码: A 文章编号: 1004?373X(2013)11?0134?05
0 引 言
DeviceNet是一种基于CAN总线技术的符合全球工业标准的开放型现场总线通信网络,它用于控制,配置和数据采集等方面。CAN总线具有布线简单、典型的总线型结构、稳定可靠、实时、抗干扰能力强、传输距离远、布线成本低等特点。由于具备了这些特点,DeviceNet总线被广泛应用于工业自动化控制,它不仅可以接入更多,更复杂的设备,还可以为上层提供更多的信息和服务。在很多欧美国家,越来越多的系统方案设计采用DeviceNet来实现。
ModBus协议是应用于电子控制器上的一种通用语言,是全球第一个真正用于工业现场的总线协议,由于该协议的产生,使控制器之间、控制器经由网络和其他设备之间实现相互通信。ModBus协议现在已经成为一种通用的工业标准,应用该协议技术可以使不同厂商生产的控制设备连成一个工业网络,进行集中监控管理。此协议定义了一个控制器能认识使用的消息结构体,从而使用户不需要关心它们使用哪种网络进行通信。它描述了一个控制器请求访问其他设备的过程,如何回应来自其他设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
本文主要解决DeviceNet与ModBus之间的协议转换问题。标准的ModBus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。基于DeviceNet的嵌入式I/O模块通过I/O口发送和接收数据,ModBus通过串口与嵌入式I/O模块进行通信。通过此过程完成DeviceNet与ModBus之间的协议转换问题。
1 嵌入式I/O模块的设计与实现
DeviceNet是一种上层的应用层协议,其物理层和数据链路层采用CAN总线技术,ModBus协议只是用于数据链路层上的协议[1]。这两种现场总线是异构的,因此要实现两种协议之间的通信,必须要进行协议转换。协议转换的转换过程是分层次进行的。首先把总线设备发送过来的设备逐层解包,得到需要的数据,然后再把数据按另一协议所需的方式打包,发送到相应的设备上。
DeviceNet与ModBus协议都采用主从通信模式,所以它们之间的通信只能是单向的,主站发送命令报文而从站被动接收命令报文。本设计中的嵌入式I/O模块既是DeviceNet从站,又是ModBus的主站。通过该模块可以实现DeviceNet主站的数据与ModBus从站的数据进行传输。
嵌入式I/O模块的功能是把DeviceNet格式的报文转换为ModBus的报文命令,再传给底层的ModBus设备,设备在接收到ModBus命令之后,会向报文转换模块发送ModBus格式的响应报文,最后经协议转换模块将报文转换为DeviceNet格式的报文传输给DeviceNet主站。本嵌入式I/O模块既是DeviceNet的从站实现接收主站报文并做出响应的功能,同时又可以作为ModBus的主站向其他ModBus设备发送报文并接收响应报文。
本设计采用的处理器为LPC2129,硬件结构如图1所示。它是NXP公司的32位工业级ARM7处理器,其内部集成了两个CAN控制器,在一片处理器内首先将主站端的DeviceNet协议数据转换成中间协议数据,之后转换成ModBus可以识别的协议数据。
关键词: STM32; Modbus RTU; Modbus TCP; 组态软件
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2013)20?0102?05
0 引 言
随着信息化进程的加快,工厂、企业及现代化楼宇都要求其现场设备接入信息网络进行统一管理。现有工厂企业控制网络中的设备大多只支持RS 232,RS 485串行链路形式的通讯。串行链路应用广泛,但由于传输距离的限制,只能应用在小型局域控制网络。要将现场设备接入信息网络必须解决不同网络通讯协议转接问题。要构建大型信息控制网络必须要采用分层次管理的形式,将一个局域网分为若干子局域网,子局域网内部采用串行链路方式进行连接,对子局域网配置一个信息中转装置,不同局域网信息通过转换装置最终连接到控制中心PC,利用网络技术将控制中心信息到互联网,实现控制网络每个节点信息连入互联网。
本文根据组建大型控制网络方案,实现一种支持远程访问的智能温湿度控制系统,系统可实现对分区域、分层多点温湿度信息的采集,并通过每一处放置的风机设备对温湿度情况进行实时控制,支持远程用户对控制系统的访问,远程用户同步对整个控制系统进行监控。智能温湿度控制系统由智能温湿度控制模块、嵌入式桥接网关及上位计算机组成,其中智能温湿度控制模块及嵌入式网关都是基于STM32平台的嵌入式系统,支持Modbus RTU串行方式数据传输,嵌入式桥接网关支持Modbus RTU与Modbus TCP转接功能,上位机利用组态软件的组态功能与控制系统进行无缝连接。本系统的实现为工厂企业控制网路的智能化、网络化、集中化提供了一种切实可行的技术路径。
1 系统组网结构设计
智能温湿度控制系统分为4层,分别从底层传感层、网关层、上位机到最上层的互联网层,分层原则按物理链路传输路径划分。传感层由智能温湿度控制模块及其控制的温湿度传感器和继电器组成,负责实时环境温湿度信息采集及风机设备控制。网关层为连接传感层与上位机的中转层,实现链路协议转换,它相对于智能温湿度控制模块作为Modbus主机节点,相对于PC是服务器端。上位机实现计算机监控软件设计,实时监控环境温湿度信息及风机状态监控,并将监控软件的实时画面通过Web到远程客户端。互联网层通过Web浏览器对监控系统画面同步监控。系统结构如图1所示。
每个嵌入式网关与其相连的智能温湿度控制模块分布在同一范围内,组成一个子局域网,负责在局域网内的数据采集、风机设备控制。不同的子局域网之间不会产生干扰,有利于整个控制网络的模块化管理。在整个控制系统中,嵌入式桥接网关只起到协议桥接作用,并不对数据进行处理,所以上位机挂载智能模块数量需要根据Modbus RTU模式规定有所限制,同时,挂载过多的子节点也会影响系统实时性。本文智能温控系统使用5个嵌入式网关,每个网关搭载10个智能温湿度控制模块节点,保证了传输可靠性及实时性。
2 系统硬件系统设计
2.1 智能温湿度控制模块硬件结构设计
智能温湿度控制模块通过温湿度传感器的信息采集,将系统所需要的环境信息转化为可识别的数字信号,针对这些数字信号的值及状态来决定智能温湿度控制模块的继电器动作,继电器可控制风机、阀门等设备的状态。智能温湿度控制模块的结构框图如图2所示。
在智能温湿度控制模块中,处理器采用ARM公司低功耗、高性价比32位Cotex?M3内核处理器STM32F103VET6,可搭载UCOS,Linux等嵌入式操作系统,F103是属于“增强型”系列,最高工作频率可达72 MHz,512 KB的FLASH存储器,其丰富的时钟系统为外设提供多种时钟选择,温湿度控制模块扩展外设包括温湿度采集、继电器驱动、RS 485接口模块及其他电路。温度采集模块采用SHT10温湿度传感器,通讯采用I2C协议,即单片机I/O引脚模拟I2C总线协议方式与传感器通讯。
利用STM32的I/O管脚通过控制三极管的开关来驱动继电器模块作为风机、阀门控制开关。温湿度控制模块除温湿度模块与继电器模块外,还包括BOOT电路、时钟电路、电源电路及串行接口电路,保证系统正常运转。
2.2 嵌入式网关硬件结构设计
嵌入式网关与智能温湿度控制模块类似,都是采用STM32处理器作为处理核心,外设要增加LCD模块及网络接口模块,但不需要传感器及继电器控制模块。其中,LCD模块为用户提供人机交换接口,LCD采用触摸屏方式,提供比按键更加灵活的操作方式。LCD由STM32的FSMC接口、液晶驱动芯片及触屏驱动芯片进行驱动。以太网模块提供RJ45接口与计算机通讯,RJ45接口接到10 Mb/s的以太网是通过网络变压器HR911105+SPI接口的独立以太网控制器ENC28J60完成。
3 系统软件设计
3.1 智能温湿度控制模块程序设计
3.1.1 智能温湿度控制程序流程
智能温湿度控制模块主要实现两个功能:环境温湿度监测和数据上传。智能温湿度控制模块的程序设计是在STM32函数库支撑下实现的,调用库函数实现系统初始化及其外设接口的程序编写。温湿度控制模块程序流程见图4。
温湿度数值及风机的状态是在每一次While()主循环都会进行读取,这种方式可以保证系统的实时性,在上位机发来读取命令时可以直接将温湿度及风机状态取走,而不必等待温湿度传感器相对漫长的读取过程。
风机的状态由智能温湿度控制模块自身进行控制,当检测其温湿度数值超标时自动打开风机设备,当温湿度达到要求标准时自动关闭。
在数据传输中ModbusInput()与ModbusOutput()实现Modbus协议的解码与编码。
3.1.2 基于Modbus RTU实现数据传输
Modbus是Modicon(现为施耐德电气公司的一个品牌)开发的报文传输协议,Modbus通信协议在OSI模型中属于数据链路层[1]。Modbus串行通讯有RTU和ASCII两种模式,相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据流量[2],RTU模式的具体每个字节的格式[3]:编码系统:8位二进制,16进制0~9,A~F;数据位:1起始位;8数据位,低位先送;奇/偶校验时1位,无奇/偶校验时0位;带校验时1位停止位,无校验时2位停止位;错误校验区:循环冗余校验(CRC)。
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。图5为Modbus RTU下的ADU格式。
ModbusInput()与ModbusOutput()函数实现数据包解析与打包工作,全部要遵循ADU的格式进行编写。功能码与数据组成了基本的PDU单元,Modbus支持15个功能码,用户可以根据实际需要进行删减,设计中只应用到3个相应功能码如表1所示。
表1 系统Modbus功能码及地址对应关系
Modbus协议除了规定其数据帧格式外,还需要满足其时序要求,在RTU模式下信息帧开始前必须有至少3.5个字符的静止时间t3.5,发送完毕后也需要t3.5时间间隔,即两个帧之间要有3.5个字符的静止时间来保证一帧的信息已发送完成。
在一帧发送期间,如果出现1.5字符时间以上的间隔,则会认为该信息帧不完整,系统会刷新不完整的帧,并认为下一个接收为下一帧的器件地址,这个时间一般由串口的波特率来保证。
当系统波特率大于19 200 b/s时用1.75 ms代替3.5字符静止时间,通过对定时器计数值及预分频的设定达到定时时间=1.75 ms,程序如下:
TIM_TimeBaseStructure.TIM_Period =175;
//计数值:175 定时1.75 ms
TIM_TimeBaseStructure.TIM_Prescaler=720;
//预分频,除数:720 100 kHz
3.2 嵌入式网关程序设计
3.2.1 网关程序实现流程
嵌入式网关相对于智能温湿度控制模块是Modbus的主机,相对于上位机PC是服务器端,所以嵌入式网关不但要支持两种模式下的数据传输,还要解决协议转换的任务,即Modbus RTU到Modbus TCP/IP之间的相互转换。图6为一次转换流程图。
3.2.2 Lwip在STM32上的移植
Modbus/TCP是运行在TCP/IP协议之上的协议,所以移植了一轻量级的TCP/IP协议栈:Lwip。Lwip是一开放源码的TCP/IP协议栈,相较于现流行的Uip协议栈,更加适合在32位嵌入式平台上应用。
在使用Lwip之前,需要对协议栈的相关文件进行修改,以便其可以支持STM32平台,移植主要在以下几个方面:
(1)数据类型的定义,这与移植的硬件平台及编译环境紧密相关。
(2)协议栈底层函数的修改,这里主要是底层的数据接收和发送,主要与使用的网卡芯片有关。
(3)需要编写网卡的相关驱动,需要在数据收发过程中由Lwip协议栈进行调用。
要实现与上位机TCP通讯,还需要编写相关的用户应用程序,主要包括初始化及服务端程序的编写,其中初始化程序负责初始化网络硬件MAC地址、选定通讯方式等;服务端程序负责完成与上位机通讯,包括指定主机IP及监听端口等任务。
3.2.3 Modbus RTU到Modbus TCP转换
Modbus已实现应用TCP在通讯层进行通讯[4],即Modbus协议的网络版:Modbus TCP,它的基本PDU单元与RTU模式相同,其数据帧的格式与RTU稍有不同。
字节0:事务处理标识符,通常设为0;
字节1:事务处理标识符,通常设为0;
字节2:协议标识符等于0;
字节3:协议标识符等于0;
字节4:长度字段(上半部分字节)等于0(所有的消息长度小于256);
字节5:长度字段(下半部分字节)等于后面字节的数量;
字节6:单元标识符;
字节7:MODBUS功能代码;
字节8:寄存器数据。
其中Byte 0~Byte 4一般取0x00即可,Byte 5为Byte 6~Byte 8的字节数,Byte 6单元标识符及RTU模式下的设备地址,所以Byte 6~Byte 8与RTU模式下的ADU相同,去除了CRC校验,TCP帧的校验通过TCP/IP校验实现。Modbus RTU转为Modbus TCP只需将帧前加上请求响应列,去除末尾的CRC校验字节。如RTU帧01 03 00 01 00 02 95 F8转换为Modbus TCP数据包为00 00 00 00 00 06 01 03 00 01 02即可,然后通过lwip协议栈打包为tcp传输包在网络链路进行传输通讯,响应帧采取同样策略。其中Modbus TCP数据包管理是通过结构体pbuf实现的,其结构如下:
struct pbuf {
struct pbuf *next;
void *payload;
u16_t tot_len;
u16_t len;
u8_t
u8_t flags;
u16_t ref;
};
其中payload为指向Modbus TCP数据包的指针,len表示数据包的长度,通过改写pbuf指针指向管理数据流向,将接收到数据包交给处理器处理,由嵌入式网关处理器实现链路协议的转换。
3.3 上位机软件
上位机PC是温控系统人机交换核心:一方面利用上位机组态软件对局域网络设备进行现场监控,在工厂或企业的工作人员可以对温湿度信息进行监控,同时自动调节风机设备的运转。在系统没有连入互联网络的情况下,在工业现场进行操作;另一方面PC作为外网访问的服务器端,通过组态软件的Web功能,使得远端监控PC通过IE客户端可以与Web服务端保持高度的数据同步,使得远程用户可以获得组态王运行系统相同的控制画面,通过网络用户可以与Web服务器上获得工厂及企业现场相同的数据显示、报表显示、报警显示、趋势曲线显示以及方便快捷的控制功能。
4 试验与结果分析
取两个温湿度控制节点进行测试。图7(a)为未加装风机设备,不能自动调节节点温湿度;图7(b)为加装风机,能自动调节的节点温湿度。在连续72 h采样过程中,系统运行稳定,并且加装调节设备后可以获得较好的调节效果,温湿度曲线在规定值范围内波动,可以获得稳定的温湿度环境,满足现场对温湿度环境控制的要求。
5 结 语
设计实现了一种支持远程监控的智能温湿度控制系统,具备温湿度监控、自动调节及分布式多节点控制功能。利用STM32处理器设计了智能温湿度控制模块及嵌入式桥接网关,支持Modbus RTU协议传输及Modbus RTU与Modbus TCP之间的转换功能。在嵌入式网关上实现了Lwip协议的移植,使其支持Modbus TCP协议的传输,并通过Modbus TCP与组态王软件实现无缝连接。本系统可以解决大型分布式控制系统链路转化问题,支持远程访问操作,实现了系统的集中化、智能化及网络化管理。
参考文献
[1] RAMIREZ LEYVA F H, CUELLAR J P A, BASILIO R G M, et al. Wireless system for electrical networks testing based on MODBUS protocol [C]// Proceedings of 14th International Conference on Electronics, Communications and Computers. Veracruz, Mexico: ICECC, 2004: 58?62.
[2] 李英奇,吴桂初. Modbus?Modbus TCP/IP的网关设计[J].微型机与应用,2013,32(10):48?50,53.
[3] Modicon Inc. Modicon modbus protocol reference guide [R]. USA: Modicon Inc., 1996.
[4] GOLDENBERG Niv, WOOL Avishai. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems [J]. International Journal of Critical Infrastructure Protection,2013, 6(2): 63?75.
关键词:ModBus;通信;仪器仪表;应用
1ModBus及其特点
ModBus是由原Modicon公司(现Shneider公司)推出的一种开放式串行通信总线协议,由于得到众多仪表厂家的支持,正在成为智能化仪器仪表的现实工业标准。目前,多数智能化仪器仪表已利用该协议向用户提供通信接口。随着仪表和通信技术的发展,ModBus总线技术也由标准型(StandardModBus)发展到增强型(ModBusPlus,即MB+)。Modbus总线不需要特别的物理接口,支持传统的RS-232C、RS-422A、RS-485和Ethernet标准接口,在智能化仪器仪表中使用的典型物理接口是RS-485。ModBus总线具有以下特点:(1)标准、开放、免费:ModBus串行总线协议是一个标准和开放的总线协议,用户可以免费、放心地使用,不用缴纳许可证费用,也不会侵犯知识产权。(2)面向报文式结构,支持多种电气接口:ModBus协议可以在各种通信介质上传送,如双绞线、光缆、无线射频等。与其它很多现场总线相比较,ModBus的传输不需要专用的芯片和硬件,完全可以采用市售的标准器件实现,可以有效的降低产品成本,是智能化仪器仪表组网的首选总线形式。(3)ModBus的信息帧格式简单、紧凑:标准ModBus采用多节点主从式通信方式,信息帧结构简单紧凑,通俗易懂,用户使用容易。(4)采用ModBus与PLC通信灵活方便:由于ModBus本身是PLC制造商Modicon公司推出的,协议本身具有PLC化的倾向,采用ModBus与PLC通信具有方便灵活的特点。
2ModBus信息传输方式
ModBus定义了两种串行传输模式:RTU模式和ASCII模式。各互连的ModBus设备只有处于同一通信模式下才能进行互操作。RTU模式在支持ModBus的智能化仪器仪表和PLC等设备中得到了广泛的应用,这里重点以RTU模式为主加以说明。
2.1ModBusRTU传输模式
ModBus以报文的形式传输信息。报文是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息,也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,这些字段就是报文头。
2.2ModBusASCII传输模式
当使用ASCII模式进行ModBus串行通信时,用两个ASCII字符发送报文中的一个8位字节。这种通信方式一般只有在设备不支持ModBusRTU模式时才采用。
3ModBus差错校验方法标准
ModBus通信采用了字符校验和帧校验两种数据校验方法来保证串行通信的可靠性。字符校验采用奇偶校验方式,帧校验采用CRC和LRC校验方式,本文仅讨论CRC校验的实现方法。下面的程序段是根据CRC生成原理编写的CRC生成函数,这里使用了全局变量crcr、crcrL和crcrH,其中crcr为16位的预装载CRC寄存器,crcrL和crcrH分别为生成的CRC的低8位和高8位。程序中的commseg数组用于存放接收到的报文数据,其数组元素个数需要根据报文长度来确定,commseg[0]为数据字节数。0xa001是智能化仪器仪表ModBus通信中常用的固定预置码。
4结语
ModBus网络是工业通信系统,由可编程序控制器、计算机或其它智能化仪器仪表通过公用线路或局部专用线路连接而成,其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。在笔者研发的变压器风冷智能变频控制装置中,采用ModBus协议成功地实现了PLC与变频器、变压器油面温度表和凝露控制器之间可靠通信。
参考文献:
[1]贾振国,许琳.智能化仪器仪表原理及应用[M].北京:中国水利水电出版社,2011.
[2]华镕.从Modbus到透明就绪[M].北京:机械工业出版社,2009.
关健词:信号采集;现场控制;RTU;μC/OS_II;Modbus
中图分类号:TP315 文献标识码:A 文章编号:2095-1302(2012)03-0054-05
Design of RTU based on ARM9
CHEN Zi-fu, SUN Wan-rong, DONG Ming-ming, YANG Bo, YANG Zi-feng, JIA Hai-long
(Institute of IOT and information Technology , Xidian University, Xi’an 710071, China)
Abstract: A newly universal design scheme of RTU is introduced, which is applied to signal acquisition and equipment control on industrial scene. It introduces the design of RTU which is based on ARM9 processor and with real-time operating system μC/OS_II inside. The Modbus communication protocol in data transmitting and hardware function modules are also described. The hardware function modules mainly consist of eight digital input, eight digital output, eight analog input, RS232 communication, RS485 communication and Ethernet interface modules, etc. The design of slave RTU is also mentioned, which has much advantages in the capacity of storage, computing, programming, developing and networking over the ordinary ones.
Keywords: signal acquisition; field control; RTU; μC/OS_II; Modbus
0 引 言
RTU(Remote Tenninal Unit)是一种远端测控单元装置,负责对现场信号、工业设备的监测和控制。与常用的可编程控制器PLC相比,RTU通常具有优良的通讯能力和更大的功能,使得RTU产品在SCADA系统中得到了大量的应用。RTU应用领域宽广,包括电力系统、给水系统、石油、化工等诸多领域。基于ARM处理器设计的RTU,硬件上具有成本低、体积小、耗电省、处理能力强等优点,软件上采用μC/OS_II操作系统,有许多优秀的应用程序可以利用。本文将介绍一种基于ARM9和μC/OS_II的RTU硬件、软件设计方法[1]。
1 RTU系统设计
基于ARM9的新型RTU系统结构如图1所示。该系统以S3C2440A为主控制器,主要包括数字量输入模块、数字量输出模块、模拟量输入模块、RS232通信模块、RS485通信模块、以太网通信模块、存储器模块、E2PROM和测温模块等等。软件采用μC/OS_II实时多任务操作系统,数据传输采用Modbus通信协议,设计了TCP\IP、RS232、RS485等多种通信方式。
图1 RTU系统结构图
为使该RTU适用于复杂苛刻的环境、满足工业控制的指标和需求,在各个模块与MCU之间加上适当的隔离保护器件,同时给各个模块和MCU供电的部分电源模块也要选取隔离型的DC-DC电源,还有在主电源端口和通信端口处加上适当的防雷保护电路和ESD保护电路,使得该RTU各个模块之间基本上互不干扰,更能适用于恶劣的环境。
1.1 主控制器的选择
RTU的处理芯片采用S3C2440A,S3C2440A的内核为ARM920T,并且片内集成了RS232、RS485、SPI、IIC、通用I/O口等设备接口,并具有低价格、低功耗、高性能等特点,能够满足多种通信协议,如Modbus等通信协议。
1.2 数字量输入输出模块设计
该RTU具有8路数字量输入和8路数字量输出。单路数字量输入和数字量输出原理图如图2所示。数字量输入的直流有效电压为10~48 V,具有光耦隔离,隔离电压的有效值为2 500 V。数字量输出的直流有效电压为10~36V,也具有光耦隔离,隔离电压的有效值为2 500 V。
对于数字量输入,可在输入端加入适当的滤波电容、自恢复保险丝、压敏电阻、整流二极管和电阻等元件组成的电路,然后和光耦隔离器PS2801串联。值得注意的是,和光耦隔离器串联的电阻R3、并联的电阻R4选取要恰当,通过调整其电阻值,可以得到合适的输入电压阈值。数字量输入电压通过光耦隔离之后,转换为合适的电压信号至MCU。考虑到数字量输入可为开关量输入和脉冲信号输入,应选用MCU的外部中断功能引脚作为数字量输入管脚,这样MCU才能及时响应数字量输入。
对于数字量输出(电压输出),MCU通过光耦隔离器PS2801控制固态继电器VN340ISP的输出。数字量输出可分为开关量输出和脉冲输出。对于开关量输出,可以通过MCU的普通GPIO引脚来实现控制;对于脉冲输出,可以使用MCU的PWM引脚来实现控制。
图2 数字量输入输出电路原理图
1.3 模拟量输入模块
当MCU内部集成的ADC不能满足系统设计要求时,需要外加一个满足系统设计要求的ADC,外部ADC采集的数据可以通过多种总线传输到MCU(如IIC、SPI等)。
该RTU具有8路模拟量输入,模拟量输入原理图如图3所示。模拟量输入范围为直流4~20 mA或0~5 V,采用TI公司的ADS7952(采样频率为1 MHz,12位分辨率,20 MHz的SPI串行接口),在模拟量输入前端加入适当的调理电路(由滤波电容、自恢复保险丝、TVS管、精密电阻、高速运放、稳压管等元件组成的电路),ADS7952的数据传输采用SPI总线传输,在ADC和MCU的SPI总线上加上一个磁耦隔离器ADuM1401,注意磁耦隔离器的数据转换速率要大于SPI的传输波特率。
图 3 模拟量输入原理图
1.4 通信模块
新型RTU具有强大的通信组网能力,并且兼容多种通信方式,如TCP/IP、RS232、RS485通信等等。该RTU有1个RS232通信接口、1个RS485通信接口和1个以太网接口。其中,RS232通信接口还可以外接一个ZigBee模块,实现无线数据传输。
MCU的UART端口通过磁耦隔离器ADuM1402分别与RS232收发器MAX3232E和RS485收发器SN65HVD-1176D相连。由于RS232/RS485通信均为有线通信,在恶劣的环境下,例如通信电缆受到雷击干扰,收发器可能由于过压而烧坏,甚至会影响MCU的正常工作,所以应该在收发器接线端子上加上合适的防雷保护电路。防雷保护电路可以分为三层保护:第一层用三个玻璃放电管组成一个三角形电路作为一级保护,可以把雷击电压降到数百伏;第二层用耐高压的TVS管,可以把传输线上的电压降到数十伏;第三层加上适当的电感或保险丝,用于进一步保护收发器。RS232/RS485通信模块的结构原理图如图4所示。
图 4 RS232/RS485通信模块结构原理图
MCU通过数据总线、地址总线、若干控制信号线与以太网控制器DM9000相连,以太网控制器的两对差分信号线接到合适的网络变压器上,同时为了保护以太网控制器,在网络变压器跟RJ45网口之间加入一个合适的ESD保护电路,可以消除外部环境的影响。以太网通信模块图工作原理如图5所示。
图5 以太网通信模块工作原理框图
1.5 存储器模块和温度测量模块
存储器包括SDRAM、Norflash和Nandflash。SDRAM用来临时存放数据,确保程序能正常运行; Norflash用于存储程序; Nandflash用于存储数据,在RTU突然掉电或通信网络故障的情况下,Nandflash能把重要的数据信息保存起来,待到RTU再次上电并且网络通畅时,再把数据提取出来发送出去。
E2PROM可以用来存储RTU的初始配置信息,包括RTU设备基本属性、IP地址信息、网络参数、串口参数、主从模式选择和AD采样配置等信息。RTU上电运行时,先从E2PROM中读取配置信息,RTU初始化各个模块之后才能正常工作。
测温模块可以用来测量RTU的工作温度,并实时地或定时地向上传输其温度值,实现温度监控。
2 RTU软件设计
该新型RTU内嵌μC/OS_II实时操作系统,数据传输协议采用Modbus协议。μC/OS_II 是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核,适用于工业控制中的实时监控[2]。Modbus协议包括ASCII、RTU、TCP。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通信采用主-从方式[3]。Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。 Modbus/TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。在本文中,作为主站的RTU,内嵌的实时操作系统μC/OS_II实现上层 Modbus/TCP协议与Modbus/RTU协议之间的通信(即上位机与计算机、上位机与下位机之间的通信)。而作为从站的RTU,内嵌的实时操作系统μC/OS_II实现Modbus/RTU协议通信(即上位机与下位机之间的通信),对所连接的被测设备进行控制信息的输入输出以及RTU采集和输出模块的控制。以下主要介绍作为从站的RTU软件设计。
2.1 Modbus/RTU协议
Modbus串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。当设备使用RTU模式在Modbus串行链路通信时,报文中每个8位字节含有两个4位十六进制字符[4]。这种模式的主要优点具有是较高的数据密度,而且在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。在RTU模式,报文帧由时长至少为3.5个字符时间的空闲间隔区分。如果两个字符之间的空闲间隔大于1.5个字符时间,则报文帧被认为不完整应该被接收节点丢弃。RTU接收驱动程序的实现,由于1.5个字符时间(t1.5)和3.5个字符时间(t3.5)的定时,隐含着大量的对中断的管理。在高通信速率下,这导致CPU负担加重。因此,在通信速率等于或低于19 200 b/s时,这两个定时必须严格遵守;对于波特率大于19 200 b/s的情形,应该使用2个定时的固定值:建议的字符间超时时间(t1.5)为750 µs,帧间的超时时间(t3.5)为1.750 ms[5]。
2.2 Modbus数据模型
在一系列不同平台上,Modbus数据模式有不同的特性,基本平台有离散输入、线圈、输入寄存器和保持寄存器。在该新型RTU系统中,事先要与主站RTU协商定义好一个离散输入对应表、线圈对应表、输入寄存器对应表、保持寄存器对应表。主站RTU和从站RTU根据对应表中的数据位执行相应的操作。主站RTU读离散输入即读取从站RTU数字量输入状态;主站RTU写线圈即控制从站RTU数字量输出(继电器输出);从站RTU模拟量输入(AD采集的数据)存储于输入寄存器中,供主站RTU读取;主站RTU通过写保持寄存器可以给从站RTU发送配置信息,从站RTU读保持寄存器执行相应操作。用来存储从站RTU的初始配置信息的E2PROM,就是通过读取相应的保持寄存器中数据,写入到E2PROM中,再对RTU重新配置。
2.3 Modbus从站
Modbus主站和Modbus从站是两个独立的模块,主站为上位机(客户机),而从站为下位机(服务机)。主站和从站都有相同的数据链路层,并且它们的帧报文数据结构都是相同的。Modbus从站服务任务是从站协议的核心组成部分,它的主要工作是处理Modbus主站点功能请求,返回主站请求的保持寄存器、输入寄存器、线圈和离散量输入等值,或接收并保存主站写入的保持寄存器和线圈等值;另外,Modbus从站的应用程序也会读取或写入相关的寄存器。从站RTU程序流程:首先,初始化目标板、μC/OS_II、系统时基等等;接着,创建一个系统初始任务(优先级最高)和Modbus从站服务程序;再接着开始运行任务。基于μC/OS_II的从站RTU程序流程图如图6所示。
图 6 从站RTU程序流程图
2.4 系统初始任务Task0
从站RTU经过系统基本初始化之后,还需要进一步的配置才能正常工作,而这部分的工作就在系统初始任务Task0中实现。Task0主要完成的工作有:读取E2PROM中的数据,获取各种配置信息;根据配置信息初始化各种硬件驱动(如Modbus传输波特率、RS232/RS485通信选择、外部中断功能引脚选择、SPI和IIC总线初始化等等);根据配置需求有选择地创建模拟量输入量任务Task2(AD采集任务)、数字量输入任务Task3、数字量输出任务Task4、读保持寄存器配置任务Task5和测温任务Task6;最后让一个LED指示灯定时闪烁表示RTU工作正常;接着进行任务调度,切换到已创建的、优先级高的其它就绪任务中运行并且实时响应外部中断(数字量输入)。系统初始任务Task0程序流程图如图7所示。
图 7 系统初始任务Task0程序流程图
系统中的Task2主要完成AD采集任务Task2,本系统采用TI公司的ADS7952。ADS7952的AD采样率是根据其SPI传输波特率来换算的,改变MCU(S3C2440A)的SPI底层驱动程序中的SPI分频值就能实现不同AD采样率的选择。ADS7952可以根据E2PROM中的配置信息(采样率、通道数、采样点数)工作,也可以根据Task5中读取保持寄存器对应表中的数据位来实时更新配置。
Task3执行数字量输入任务,数字量输入包括开关量输入和脉冲信号量输入,可以把这两种功能的端口分开,也可以把这两种功能复用合并。功能复用合并实现方法:数字量输入口对应的MCU管脚先作为普通GPIO引脚,读取其GPIO状态寄存器获取高低电平状态(即开关状态),把开关状态写入Modbus离散输入寄存器中,接着把管脚功能从GPIO引脚切换到外部中断引脚,用于随时获取脉冲信号的输入,在外部中断函数中可以实现计数并且把计数值写入Modbus输入寄存器中。该任务执行时间必须短,代码必须简练,不能在其中加入延时之类的函数,任务挂起的时间也不能太长,不然会导致脉冲信号输入数据出现误码。
Task4主要完成数字量输出任务。主站RTU可以通过写线圈寄存器来控制从站RTU固态继电器的输出,也可以根据要求让从站RTU定时中断控制继电器输出PWM信号。同时主站RTU可以通过读线圈寄存器来获取从站RTU当前继电器的电平输出状态。
Task5可执行读保持寄存器配置任务。当Modbus保持寄存器中的数据发生变化时,根据保持寄存器对应表(与主站协商定义的一个从站配置表)对从站RTU进行相应配置,包括从站基本信息、AD采样率、AD通道数、AD采样点数、有线无线传输选择、UART波特率等等,同时把新的配置信息写入E2PROM中。配置代码应该放在µC/OS-II临界区中,临界区中不响应中断,这样才能保证新配置的程序能正常地运行。
Task6执行测温任务。当RTU工作环境温度过高时,可能会影响RTU的正常工作,测温任务可以实时或定时把从站RTU工作温度值写入Modbus输入寄存器中,供主站RTU读取。
3 结 语
本文主要介绍了一种基于ARM9的RTU设计实现方法,对RTU硬件系统中的各个模块设计过程进行了详细的介绍,包括数字量输入模块、数字量输出模块、模拟量输入模块、RS232通信模块、RS485通信模块、以太网通信模块、存储器模块、E2PROM和测温模块等等,同时提出了基于此硬件系统的RTU从站软件设计方法。RTU从站采用μC/OS_II实时操作系统,数据传输采用Modbus/RTU通信协议。该RTU可以应用于市政、能源、交通设施、环境、气象、地质、农业等有远程终端测控站点需求的行业 [6]。
参 考 文 献
[1]钟德生,付立思,刘晶星.基于ARM的分布式RTU系统的研制[J].自动化技术与应用,2008,27(1):127-128.
[2] 周军,陈伟峰.基于ARM9和μC/OS_II的Modbus通信协议的实现[J]. 自动化仪表,2009,30(2):24-26.
[3]王书根,王振松,刘晓云.Modbus协议的RS485总线通讯机的设计及应用[J].自动化与仪表, 2011,26(5):25-28.
[4]周立功. ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2006.