modbus协议十篇

时间:2023-03-28 14:45:45

modbus协议

modbus协议篇1

modbus协议是一个公开的、被广泛应用的串行通信协议,最初由modicon公司为其可编程控制器和工业自动化系统而制定的http://,使用于控制设备间传输数字和模拟的i/o及寄存器数据时使用。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在一个modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用modbus协议发出。在其它网络上,包含了modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

1.modbus协议

1.1 modbus协议族

modbus协议中有ascii、rtu、tcp等,其中前二者规定了消息、数据的结构、命令和应答的方式,数据通信采用master/slave(主从)方式,主端发出数据请求消息,从端接收到正确消息后就可以发送数据到主端以响应请求;主端也可以直接发送消息修改从端的数据,实现双向读写。此外,在校验上,ascii模式采用lrc校验,rtu模式采用16位crc校验。而tcp模式除了有奇偶校验外,没有额外规定校验,其原因就是tcp协议是一个面向连接的可靠协议。WwW.133229.coM

1.2 modbus网络上的数据传输

modicon控制器上的标准modbus端口是使用一个rs232兼容的串行接口,定义了连接器,接线电缆,信号等级,传输波特率,和奇偶校验,控制器可直接或通过调制解调器接入总线(网络)。控制器通讯使用主从技术而其它设备(从机)应返回对查询作出的响应,或处理查询所要求的动作。典型的主机设备应包括主处理器和编程器,典型的从机包括可编程控制器。

主机可对各从机寻址,发出广播信息,从机返回信息作为对查询的响应。从机对于主机的广播查询,无响应返回modbus协议报据设备地址,请求功能代码,发送数据,错误校验码,建立了主机查询格式,从机的响应信息也用modbus协议组织,它包括确认动作的代码,返回数据和错误校验码。若在接收信息时出现一个错误或从机不能执行要求的动作时,从机会组织一个错误信息。并向主机发送作为响应。

1.3 在其它总线上传输数据

除标准的modbus功能外,有些modicon控制器内置端口或总线适配器,在modbus+总线上实现通讯或使用网络适配器,在map网络上通讯。

在这些总线上,控制器间采用对等的技术进行通讯,即任意一个控制器可向其它控制器启动数据传送。因此,一台控制器既可作为从机,也可作为主机,常提供多重的内部通道,允许并列处理主机和从机传输数据 在信息级,尽管网络通讯方法是对等的,但modbus协议仍采用主从方式,若一台控制器作为主机设备发送一个信息,则可从一台从机设备返回一个响应,类似,当一台控制器接受信息时,它就组织一个从机设备的响应信息,并返回至原发送信息的控制器。

1.4 查询响应周期

查询:查询中的功能代码为被寻址的从机设备应执行的动作类型。数据字节中包含从机须执行功能的各附加信息,如功能代码03将查询从机,并读保持寄存器。并用寄存器的内容作响应。该数据区必须含有告之从机读取寄存器的起始地址及数量,错误校验区的一些信息,为从机提供一种校验方法,以保证信息内容的完整性。

响应:从机正常响应时,响应功能码是查询功能码的应答,数据字节包含从机采集的数据,如寄存器值或状态。如出现错误,则修改功能码,指明为错误响应。并在数据字节中含有一个代码,来说明错误,错误检查区允许主机确认有效的信息内容。

1.5 modbus协议帧结构

modbus协议帧通常也被称作modbus信息包裹,一个协议帧由从前到后有以下四个部分组成:地址域:发送信息的目的地址,即主站请求时的从站地址或从站响应时的主站地址。从站地址域长度为一个字节,其中

转贴于 http://

包括信息包裹传送的从站地址。从站地址范围为“1”至“255”。 功能码域:信息包裹中功能域长度为一个字节,用以通知从站应当执行何种操作。数据域:域长度不定,依据其具体动能而定。校验域:两种不同模式下,计算而得的校验码。

2.通信接口模块开发 http://

modbus通信接口位于上位机和下位机之间,若要完成modbus通信,则上位机和下位机必须安装有能够实现modbus协议的硬件和软件。在系统集成工程中,如果出现通信双方任何一方不具备modbus接口的情况,则必须进行底层驱动模块的开发。

一般下位机一侧会出现不匹配,因为下位机系统中包括数据的采集和模数转换处理等等,那么下位机系统结构包括:数据采集处理模块、中央处理模块、通信模块。

3.modbus集成工程应用

modbus协议篇2

关键词: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一致性测试的有效性和客观性,证明了该方法的有效性和实用性。目前该方法的实现基于分类树方法,下一步将研究其他测试用例自动生成方法,使其进一步完善。

参考文献

[1]修为明.现场总线技术及发展[J].电力系统装备,2005(3):78-82.

[2]机械工业仪器仪表综合技术经济研究所.基于Modbus协议的工业自动化网络规范 第2部分:Modbus协议在串行链路上的实现指南(GB/Z1958.2-2004)[M].北京:中国标准化出版社,2004.

[3]Liu Qing,Li Yingmei.Modbus/TCP-based Network Control System for Water Process in the Firepower Plant[A].Proceedings of the World Congress on Intelligent Control and Automation[C].2006:432-435.

[4]Li Juan,Zhang Bo,Qiu Dongyuan.Multi-computer Communication Based on Modbus RTU in Power Quality Monitoring System[J].Electric Power Automation Equipment,2007,27(1):93-96.

[5]Chen Bin,Zhang Bo,An Changsi,et al.Electric Device Network Monitoring System Based on Modbus/TCP Protocol and Web[J].Chinese Journal of Scientific Instrument,2006,27(9):1 062-1 066.

[6]Liao Gen-Yih,Chen Yu-Jen,Lu Wen-Chun,et al.Toward Authenticating the Master in the Modbus Protocol[J].IEEE Trans.on Power Delivery,2008,23(4):2 628-2 629.

[7]杨宇慧.Modbus协议测试规范国家标准草案的制订及测试系统的开发[D].北京:北京交通大学,2007.

[8]贾文婷.Modbus串行链路协议符合性测试系统的研究和开发[D].北京:北京交通大学,2008.

[9]开普电器检测研究院.Modbus 规约检验[EB/OL]./intro1.asp?id=27 &cid=3& sid=7,2008.

modbus协议篇3

关键词:现场总线;流量计;Modbus;RS-485

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)20-4710-04

在工业生产过程中,流量是需经常测量和控制的参数之一,随着流量计功能的扩展,已经把温度、压力等变量的采集与流量整合成一个仪表,完成了原先需要采用流量计、温度计、压力计和二次仪表才能完成的功能。现场总线在仪表中的使用日益广泛起来。目前使用较多的现场总线有基金会现场总线(Foundation Fieldbus,简称FF),基于CAN通信的DeviceNet,以Siemens等为首的PROFIBUS,Rosemount的HART,三菱电机为主导推出的CC-Link等[1]。现需要在原有的流量仪表上加入Modbus现场总线通信的功能,搭建Modbus现场通信的平台,以及制作基于Modbus通信的样机。

1 需求分析

需求分析是一个项目的开端,也是项目建设的基石。在以往建设失败的项目中,80%是由于需求分析的不明确而造成的[2]。因此一个项目成功的关键因素之一,就是对需求分析的把握程度。涡轮流量计是运用最为广泛。目前正在进行开发的是智能涡轮流量计转换器,具备流量系数的分段修正、可选的温度压力补偿等功能,需要设置的参数和需要读取的过程变量比前几代都有明显的提高。因此亟需采用现场总线的方式对仪表进行访问。

根据之前的预研,确定采用RS-485总线加Modbus通信协议作为智能流量计转换器的通信方式。使程序实现最基本的Modbus通信功能:波特率固定为19200bps,校验为偶校验,能实现最基本的寄存器读写访问,如Modbus的03号功能Read Holding Register、04号功能Read Input Register和06号功能Write Single Register[3]。

2 概要设计

为了能与智能流量计转换器程序上无缝接轨,在选择单片机是使用了与转换器一致的ATmega168芯片。但是为了原型板的搭建方便,尽管在转换器设计中采用了贴片封装的芯片,此处还是选择了双列直插芯片。两者仅封装不同,在功能上对于实现通信功能是完全一致的[4]。对于通信部分RS-485的物理层接口芯片选择了目前广泛使用的MAX485芯片。该芯片为MAXIM公司出品,供电电压为5V[5]。为了配合5V芯片,采用78L05作为整机的供电。仪表输入电压为12V~24V通用。

在ISO/OSI网络模型中,将网络分为七层,从下至上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。Modbus在串行链路RS-485上的实现采用了其中的三层——物理层、数据链路层和应用层[6]。本仪表采用C语言进行开发,支持AVR系列单片机的C编译器主要有CodeVisionAVR、AVR-GCC、IAR、ICCAVR等。C语言编译器由于它具有功能强大、 运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。

3 详细设计

本仪表采用MAXIM公司的485接口芯片MAX485作为物理层芯片,并连接到ATmega168的通用串行口进行数据收发。下图为整个仪表原型机的电路图:

电路中使用78L05作为稳压芯片,由于设计仪表输入电压为12V~24V±20%,使用78L05即可满足需求。D1的作用是防止电源反接烧坏仪表。

物理层除了硬件部分,也包含部分的软件。这些软件的功能是将物理层接收到的数据发送给数据链路层,或是将数据链路层需要发送的数据写入物理层硬件设备。这部分软件的主要功能是操作ATmega168的特殊功能寄存器,将UART收到的数据存入特定的缓冲区,或将缓冲区的数据向UART写入并通过ATmega168发送。在本次设计中,UART的波特率固定为19200bps;数据位由于使用Modbus RTU模式,固定为8位,停止位1位;奇偶校验采用偶校验。

3.1数据链路层软件

根据MODBUS Application Protocol Specification V1.1b的描述,Modbus协议定义了一种简单的协议数据单元(Protocol Data Unit,PDU),它是与下层通讯协议(如RS485、以太网等)无关的。而下层特定的数据单元将Modbus PDU进行封装,并被命名为应用数据单元(Application Data Unit,ADU),如下图所示:

数据链路层在一个Modbus设备中的功能是在物理层和应用层间建立一个联系,将物理层接收到的数据经过地址域的比对和错误校验(此处使用的是CRC校验)后,去除地址域和错误校验部分后,将其中的Modbus PDU部分提供给应用层;或者将应用层需要发送的Modbus PDU经过打包,加入地址域和错误校验后,生成Modbus Serial Line PDU后,由物理层进行发送。由于Modbus是基于命令-响应的主-从机制,因此在从机(Modbus设备)中,不需要实现重发机制。

在MODBUS over Serial Line Specification and Implementation Guide中规定了两种传输模式——RTU模式和ASCII模式。本仪表采用了RTU模式。由于本仪表使用Modbus over RS-485的RTU模式,因此需要实现CRC校验。Modbus规定了CRC生成多项式为X16+X15+X2+1,CRC寄存器初始值为全1(0xFFFF)。

CRC校验的程序如图4所示。

该段程序的作用是计算从buf开始,长度为len的数据缓冲区的CRC校验。其中,函数 _crc16_update为AVRGCC的C语言运行库avr-libc自带的高效CRC计算代码,使用了内嵌汇编实现,具体代码在头文件util/crc16.h中。

4 调试与测试

在开发过程中,调试与测试是两个既有区别又有联系的概念。在一般的情况下,当开发过程进入编码阶段后,就需要不断的进行调试,来确保每个功能块的错误是最少的。而当整个系统基本完成或可运行后,就可以对系统进行测试。可以说,测试是偏向于系统级的,而调试是基于模块或更低的层次(从硬件上说是芯片或电路,从软件上说是代码)来说的。在测试中发现了问题,又需要采用调试来对错误进行定位和修正。

4.1 测试平台简介

本设计主要是基于单片机的,但是为了实现通讯功能,还需要与上位机进行配合。上位机可以是个人电脑、工业控制计算机或PLC(Programmable Logic Controller,可编程控制器)等,通过RS-485总线与仪表进行通信。

在物理连接上,通过PC机的串行口连接一个RS-232转RS-485的无源转换器,通过约2米的电缆连接两台仪表。为了模拟比较恶劣的环境,没有使用双绞线,而直接采用两根电线进行连接。并在导线两头分别接上120Ω的终端电阻。使用两台仪表的目的是试验Modbus下的多机通信。

4.2 硬件电路调试

本系统硬件结构较为简单,单纯从硬件上来划分,可以分为3块:供电,控制和通信接口。首先不插入ATmega168和MAX485芯片,给表头分别加12V和24V供电,测试供电电流和78L05的输出电压,确认正常后,插入ATmega168和MAX485芯片再进行供电电流和电压的测量,结果如下:

4.3 系统测试

在Modbus应用层协议处理的代码编写完成后,整个系统就初具雏形了,能进入系统测试阶段了。系统测试将从正常数据处理、异常数据处理和大数据量处理这三个方面来进行。

本测试主要依靠Modbus Tester软件,通过读、写不同的寄存器来实现验证。首先进行Input Register的读操作,对总线上的两台仪表分别进行,查看读取的数据是否正确。然后进行Holding Register的读操作,验证数据是否被正常读取。最后进行Holding Register的写操作,验证数据写入正确,再通过读操作读回寄存器的值,看是否与写入的一致。

4.4 异常情况处理

作为一个健壮的系统,除了需要对正确的请求作出响应,在各种异常情况下,也需要能够有正确的反应,至少不能造成程序跑飞等不可逆转的情况发生。对于工业控制领域来说,这是尤为重要的。

以本系统为例,可能出现的异常情况有:

1)Modbus发送了错误的数据包,如错误的功能码或寄存器地址等;

2)数据包奇偶校验错或CRC出错。

第一项可以通过Modbus Tester软件来完成,通过设置无效的功能码(如读线圈的功能本系统没有实现,可以作为无效的功能码来进行测试)和错误的寄存器地址或长度,应当能看到仪表返回Modbus的异常响应数据包。

第二项的奇偶校验部分,也是通过Modbus Tester来实现的。通过设置通信参数,将校验位设为“奇校验”与“无校验”后,仪表不应再有返回数据包。CRC出错部分,通过串口调试软件进行。先通过串口调试软件发送一个正常的数据包请求,此时仪表应能有响应。然后修改其中某一个数据,使得CRC校验失效,此时再发送数据包,仪表应不响应。再将数据改回原值后,仪表应能继续正常响应。

5 结束语

经过几个月的开发,从测试结果来看,目前基本达到了设计要求,实现了仪表以Modbus通信协议进行数据的传输,而不足之处在于目前仅实现了固定的波特率和校验位,而以后应该改成可设置;目前也没有考虑程序占用CPU时间,而最终的流量计转换器实现中,需要考虑整个系统的中断响应时间和执行效率等,从而真正实现智能流量计在工业生产过程中的通信应用。

参考文献:

[1] 阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999.

[2] 张海藩.软件工程导论[M]. 4版.北京:清华大学出版社,2003.

[3] Modbus-IDA.MODBUS Application Protocol Specification V1.1b.Dec 28, 2006.http:///docs/Modbus_Application_Protocol_V1_1b.pdf.

[4] ATMEL Corporation.ATmega48/88/168 Datasheet (revision M).09/2007.http:///dyn/resources/prod_documents/doc2545.pdf.

[5] Maxim Integrated Products, Inc..低功耗、限摆率、RS-485/RS-422收发器MAX481/MAX483/MAX485/MAX487–MAX491/MAX1487.Rev 8; 10/03.http://.cn/pdfserv/cn/ds/MAX1487-MAX491_cn.pdf

modbus协议篇4

关键词 MODBUS模拟测试;MCM模块配置;泵站集约化

中图分类号 TP39 文献标识码A 文章编号 1674-6708(2013)101-0198-02

1概述

Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。在我国,Modbus已经成为国家标准GB/T19582-2008。据不完全统计:截止到2007年,Modbus的节点安装数量已经超过了1000万个。

Intouch软件是由美国wonderware公司开发的过程可视化组态软件,其功能强大、易用性好,市场占有率高,结合其他的软件,如IO Server和D/A Server,可以完成许多工业项目。

通过水厂泵站案例:一种基于Intouch和Modbus协议的监控系统,上位机采用安装有Intouch软件的工控机,下位机采用AB系列LOGIX5000的PLC系统,并通过MVI56-MCM通讯模块,和现场仪表构架了完整的通讯链路,系统开发方便,扩展性和稳定性好。

2 Modbus协议概述

当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。

Modbus协议测试软件:

Modbus协议测试软件有很多,比较典型的有Modscan和Modsim,这两款软件联合使用,可以使获得完整的仪表通讯连接情况。其中Modscan软件用于电脑模仿上位机环境和仪表进行连接,Modsim软件用于电脑模拟仪表环境和PLC系统进行连接。

2.1 Modscan软件及设置

Device Id为仪表设定的通讯地址,一条线路中,每个仪表地址必须指定(1-256之间)并且唯一;Address为读取仪表的首地址,一般仪表读取地址为40001开始,而软件设置中,定义为00001开始;Length为连续读取的位数;MODBUS Point Type选择03 HOLDING REGISTER锁定寄存器地址,接下来设置如下图:

点击Connection,下拉菜单,选择Connect,出现如图对话框。其中Connect Using下拉菜单,选择电脑用哪个COM口和现场仪表通讯;Baud Rate选择仪表波特率,通常有2400,4800,9600,19200这几个选项;Word Length默认8位;Parity奇偶校验,根据仪表,通常为NONE;Stop Bits停止位,通常为 1;RTS Control为请求允许发送,相当于一种握手协议,通过COM口测试时通常为ENABLE,高电平触发,在和PLC直连中,默认DISABLE也可通讯。然后点击OK按钮,一切正常情况下,即可实现通讯,会有回码显示从00001开始,到指定Length长度下,读取出仪表地址读数。

2.2 Modsim软件及设置

Modsim的界面和设置基本上和Modscan相同,所不同的是Modscan软件用于电脑模仿上位机环境和仪表进行连接,Modsim软件用于电脑模拟仪表环境和PLC系统进行连接,具体的设置就不再一一叙说了。

3 MVI56-MCM模块的配置

3.1 硬件配置

MVI56-MCM模块属于基于AB公司LOGIX5000系列PLC的第三方通讯模块,主要功能是可以支持LOGIX5000系列PLC读写基于标准MODBUS协议下的仪表通讯。通讯模块MVI56-MCM是Modbus网络和AB PLC之间的一个网关。处理器的数据传送异步于Modbus网络上的数据活动。模块内部具有5000个字的寄存器,用于处理器和Modbus网络之间的数据交换,MVI56-MCM模块共有3个端口P1、P2、P3:

其中SETUP区域插口默认不用改,PRT2和PRT3分别对应P2端口和P3端口,该端口设置MVI56-MCM模块以何种端口读取现场仪表的MODBUS协议,第一排表示以RS-232端口读取,第二排表示以RS-422端口读取,第三排表示以RS485端口读取,现在通常以RS232端口读取。

前端P2,P3端口由该模块专用转接头,接出一个9针接口的端口,该端口可以配置成232,422,485接口的任意一个。注意这三种接口的接线方式不一样。

3.2 MCM模块工作方式

MODBUS从站端口驱动,从ControlLogix处理器接收设置信息,用这些信息设置串口,并且定义从站节点特征。然后主站设备向模块节点地址发送读或写的命令,端口驱动在接收前进行验证。一旦命令被接收,数据立即传输到从模块的内部数据库;如果是读命令,数据从数据库中读出并创建相应信息;如果是写命令,数据直接写入到数据库中并创建相应信息。当处理过程结束后,模块相应信息到主站。在状态数据库中计数器使梯形逻辑图对从站的状态进行判断。

3.3软件配置

MVI56-MCM模块随机附带了一张光盘,上面会有样例程序,分别对应LOGIX5000软件不同版本,目前从13.0-21.0都有,以样例程序为蓝本编程将较为简易,内部通讯均有程序,只需在Controller Tags里定义相应的参数,即可在LOGIX5000的PLC中读写仪表地址,不同版本的样例程序,在Controller Tags的定义以及内部通讯程序上均有不同,因此样例程序版本和PLC版本必须严格一致,以确保可以正常通讯。目前泵站管理所对仪表为只读不写。

1)以17.0版本样例程序为例,在Monitor Tags模式下,点击MCM,MCM.CONFIG.ModDef中,分别设置MCM.CONFIG.ModDef.WriteStartReg(写仪表的首地址),MCM.CONFIG.ModDef.WriteRegCnt(写仪表的连续位数),MCM.CONFIG.ModDef.ReadStartReg(读仪表的首地址),MCM.CONFIG.ModDef.ReadRegCnt(读仪表的连续位数),注意地址不能重复。

2)然后在MCM.CONFIG.Port1和MCM.CONFIG.Port2中分别设置两个端口的参数,PORT1和PORT2分别对应于硬件的P2和P3端口。以下为需要设置的一些参数:

1)然后是MCM.CONFIG.Port1MasterCmd参数的设置,该参数下有100个数组,每个数组可以读写一次仪表数据段;

2)如果仪表设置和MCM设置均正确,且硬件连接均正常,通过MCM.DATA目录下,相应的MCM.DATA.ReadData[X]就会有相应的仪表地址的读取显示,表明数据连接正常。然后数据就可以正常在LOGIX5000里编程,并通过INTOUCH对应相应的OPC SERVER读取数据了。

4 应用实例

上海市自来水市南泵站管理所从2000年开始采用PLC系统,PLC系统采用AB公司的LOGIX5000系列,CPU采用L61系列,工控机的通讯采用ENBT以太网通信模块,涉及到和现场的仪表通讯,大多数采用了MODBUS通讯,用了MVI56-MCM通讯模块,该模块的优点如前文所述有集成化的软件,只要软件参数做修改调整即可对现场仪表进行读写,操作很方便,涉及到的仪表通讯,包括变压器温度控制仪、高压系统综合保护器和LOGIX5000的PLC通讯,均通过这些方法得到了实现。其中综合保护器读取了电机绕组及轴承7个温度、电压、电流、功率、电量参数、电机电能参数等多个信号,通讯规约为 MODBUS协议下RTU半双工方式,RS-485通讯接口频率采用9.6kbps。

要注意的是,MVI56-MCM光盘自带软件,要结合LOGIX5000版本的不同,采用相应版本的样本程序,这样能保证和PLC的通讯正常。另外MVI56-MCM模块的接口为232接口或485接口,如果通讯电缆有室外,最好室外部分通过光纤连接,室内通过光模转换成为相应的232或485信号,这样可以去除雷击对信号线路的影响,甚至会导致MVI56-MCM模块故障。

由于PLC系统的成功引入,基于MODBUS协议下仪表通讯连接的成熟稳定,水厂泵站的控制由离散的人工操作方式,逐步转型为远程集约化操作的模式,上海市自来水市南有限公司泵站管理所下属十几个泵站目前均实现了远程集约化监控,绝大多数泵站实现了无人值守模式的运行,在极大程度提高了设备监控水平的同时,节约了可观的人力成本,为企业的可持续发展打下良好基础。

参考文献

[1]任胜杰.电气控制与PLC系统. 机械工业出版社, 2013.

[2]黄海燕.PLC现场工程师工作指南. 化学工业出版社,2012.

modbus协议篇5

关键词:触摸屏;单片机控制系统;MODBUS协议

中图分类号:TP393 文献标识码:A

自动控制系统经常需要观察运行状态或输入输出相关的参数,触摸屏能直观生动地显示运行参数和状态,具有良好的人机交互性。单片机广泛应用于工业控制中,与触摸屏配合使用可以构成良好的人机交互界面。但现有工控触摸屏都只支持与PLC的接口通信,没有支持与单片机的接口通信的工控触摸屏,故给单片机和工控触摸屏组成控制系统带来了很大的障碍。本文以自动温控鼓风机项目为例,以MODBUS协议为载体,搭建单片机与工控触摸屏通信的通用平台。

一、MODBUS通信协议介绍

1. MODBUS协议简述

Modbus协议是广泛应用于电子控制器上开放性通用语言。MODBUS协议在一根通信线上使用主从应答式连接,在一根单独的通信线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备,然后,终端设备发出的应答信号以相反的方向传输给主机。MODBUS协议只允许在主机和终端设备之间通信,而不允许独立的终端设备之间的数据交换,这样终端设备不会在它们初始化时占据通信线路,而仅限于响应到达本机的查询信号。

2.查询

查询消息中的功能代码告之被选中的从设备要执行何种功能。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量及错误检测。

3.回应

如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如有错误,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。

4.传输方式

传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS协议CRTU方式相兼容的传输方式。

每个字节的位:

・1个起始位 ・8个数据位,最小的有效位先发送

・无奇偶校验位 ・1个停止位

错误检测(Error checking):CRC(循环冗余校验)

Modbus消息帧的组成

错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。正常的通信过程中由于涉及了CRC校验问题,而这个校验过程是需要占用软件时间的,它将影响终端的应答速度。本设计采用了查表法计算CRC,速度非常快,能够满足高速通信的需要。

5.触摸屏系统的设定

本系统触摸屏采用Easy Builder Pro组态软件实现人机界面的设计,单片机作为从机,触摸屏作为主机。触摸屏设置为:PLC类型为MODBUS_RTU Server,通信口型设置为RS-232,站号为0,将波特率9600bit/s,数据位个数8,校验位0,停止1位。

二、系统构成

系统以自动温控鼓风机项目为例,用触摸屏与单片机控制系统组成人机交换界面。通过MODBUS RTU协议实现触摸屏与单片机系统的通信,使用触摸屏作为单片机系统的输入输出设备,实现在触摸屏上控制单片机系统并可以随意修改系统运行参数,在实践中取得非常令人满意的效果。

三、实例分析

1.系统介绍

以自动温控鼓风机项目为例,以单片机为控制核心,以工控触摸屏作为输入输出设备,以八路开关及鼓风机电机作为控制对象组成自动温控鼓风机。功能主要为:(1)通过触摸屏控制八路独立开关。(2)系统温度由单总线数字温度传感器DS18B20读取,并经触摸屏显示。(3)可以在触摸屏上设定鼓风机工作的温度,当系统温度高于设定温度时鼓风机自动开始工作,当温度低于设定温度10C时,鼓风机自动停止工作,以实现温度自动控制。实践证明,本系统运行稳定,取得非常好的应用效果。

2.工控触摸屏的介绍

采用威纶通MT8000系列工控触摸屏设计,威纶通MT8000工控触摸屏支持通用、台达、西门子、欧姆龙、三菱、富士等多种PLC及MODBUS协议,具有较强的通用性和扩展性。

3.单片机系统的介绍

系统采用IAP15W1K29S系列51单片机,是性能强大的51单片机,设计中单片机作为下位机完成数据采集和基本数据处理及控制功能,触摸屏作为主机完成数据显示与参数设定以及报警功能。采用RS-232通信方式,此接口电路可以实现RS-232在各种波特率下的稳定通信功能。

4.通用平台介绍

为了提高程序的通用性、扩展性、和可移植性,通过指针与数组在单片机内部寄存器与触摸屏软元件之间建立对应的映射关系。以方便日后对系统进行改造与升级,同时也大大加强本系统的可移植性。

4.1 有关数据宏定义

本系统通信程序所使用数据量较大,而且数据之问关系较为复杂,为了能够方便读懂数据之间的联系,采用较多的宏定义,主要包括以下内容:功能码宏定义。由于MODBUS协议功能码有几十种,在本系统只定义最常用的几功能码如:01、05、03、06其他则不列出。

(1)通信数据排列意义宏定义。

(2)各种功能指令对应数据长度宏定义。

(3)CRC校验查表数据定义。

4.2 系统初始化

本系统程序由多个子程序构成,每个子程序完成不同的功能,主要由两大类组成,通信子程序及功能子程序,不同的子程序完成不同的功能。

(1)串口通信中断子程序如下:

本系统由于功能子程序较多,故在通信中断程序中只实现数据的收发,其他功能都在功能程序中实现,以提高效率。

(2)功能子程序

MODBUS协议支持的功能码有以下几种,本系统所取用威纶通MT8000系列触摸屏支持功能码及对应元件读写列表如下:

地址类型:0X、4X、4X-BIT、5X、6X(读/写);1X、3X、3X-BIT(只读)。

功能码:01/05输入位寄存器、02输出位寄存器、04输入寄存器(字)、03/16输出寄存器(字)。

对MODBUS RTU设备进行读写,触摸屏上的元件中使用什么样的地址类型,取决于RTU设备所支持的功能码、目标对象是位地址还是字地址控制、以及是否要进行写入。如:功能码05:强制(写)单线圈(输出)状态强制(写)一个逻辑线圈通断状态(ON/OFF)。

结语

系统用单片机通过Modbus协议实现与触摸屏通信实现自动温控鼓风机控制,当波特率达到115200bit/s时本系统通信仍然稳定可靠。本系统连接电路简单、组态灵活、通信可靠性高等特点。降低了系统设计成本,并提高了设备的通用性。触摸屏可实时显示系统动行中所需要的信息,通过触摸屏界面可以方便地进行各种工作状态设置,目前该系统已通过用户的验收并投入使用。由于Modbus协议的开放性,国内外的串行通信控制器绝大部份都支持该协议,因此通过Modbus协议实现通信控制有非常广泛的应用价值。

参考文献

[1]潘永雄.单片机原理与应用[M].北京:电子工业出版社,2005.

modbus协议篇6

关键词: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.

modbus协议篇7

【关键词】 MCGS触摸屏;RTU;MODBUS 通讯;软件组态;HMI

1 Modbus协议

Modbus 协议是MODICOM公司开发的一个为很多厂商支持的开放协议,该协议是应用于电子控制器上的一种通用语言。它已经成为一种通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。 MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。

2 通信系统硬件组成及连接

此ModBus网络通信系统,由RTU和触摸屏采用三芯线的连接方式而成,它可应用于显示触屏近距离数据采集和过程监控。MCGS与RTU的RS232通讯的连接,采用 RS232通讯电缆,两端均采用9针通讯接头,RTU通讯接口Port1和触屏port1接线见图1所示,

RTU将通过MODBUS协议将下列参数传至触摸屏:电磁阀开关信号(开关量)、电磁阀的开关次数(模拟量)、压力、调节阀开度、阀门开度反馈值、不同状态下的开度值、流量数据(4~20mA)。

3 通信系统软件组态及编程

通常Modbus地址由5位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master协议库把标准的Modbus地址映射为所谓Modbus功能号,读写从站的数据。Modbus协议库支持如下地址,详见表1。

4 系统组态

4.1 RTU完成对关键监测点的采集,并完成对其控制及连锁保护措施,具体的监控点见图2所示。

4.2 RTU的通讯组态采用OpenPCS软件工具包,进入组态画面,

主要设置通讯的主从方式、端口、通讯采集的数据类型、数据的起始地址、采集数据的个数、数据的长度等。其中有以下几个重要参数需要设置:(如图2)

4.3 MCGS组态环境

5 系统功能

本系统是对设备信息进行采集,并在触屏上显示并控制流程。

5.1 显示以下信息:阀门开度,流量,压力,电磁阀开关次数等

5.2 控制以下设备:A调节阀从10%并以10%为间隔开到100%为一个行程,并在每个10%处停留10秒钟采集相关压力流量数据并记录。B控制电磁阀开关30000次,以检验电磁阀的耐久性。

6 结束语

通过 RTU与mcgs之间的数据通讯,实现了对RTU监控的目的。该系统投入运行后、稳定可靠、经济耐用、方便生产,具有良好的应用和推广价值。

参考文献:

[1]卢文俊 ,冷杉 ,杨建军. 基于 Modbus 协议的控制器远程监控系统. 电力自动化设备 ,2003(6)

modbus协议篇8

关键词:MODBUS通信协议;IEC 61131-3标准;CRC校验

中图分类号:TP273+.5;TP39文献标识码:A

1引言[1]

近年来随着工业控制领域自动化水平的不断提高,许多厂、矿企业原有的控制系统陆续开始各种软硬件的升级和改造。其中,数据通信的可靠关系到了整个系统的安全。由于整个工程往往是由不同的单位分别完成的,各部分之间数据的交换就成了一个十分关键的问题。因此工业控制系统中常使用标准的通信协议进行通信。

MODBUS协议是MODICON公司推出的一个开放式现场总线的通信协议,现得到了众多仪表厂家的支持并广泛应用于工业控制领域。IEC61131是IEC(国际电工委员会)制定的有关可编程控制器(PLC)的相关标准,IEC 61131-3是其中的编程语言部分。该标准针对的工业控制系统所阐述的软件设计的概念和软件模型,适应了当今世界软件、工业控制系统的发展方向, 并且还广泛地应用于集散型控制系统、工业控制计算机、数控系统、远程终端单元等产品。

在我们设计的ARM控制器中使用了MODBUS通信协议,在软件设计部分使用了IEC 61131-3标准。我们通过MODBUS通信协议实现了用“力控”组态软件对基于IEC 61131-3标准的ARM控制器的监控。

2控制系统的组成[2][3][4]

首先利用底层编程系统ADS(由ARM公司推出的ARM核微处理器集成开发工具,全称为ARM Developer Suite,并支持JTAG硬件仿真调试),通过JTAG把底层运行程序烧写到ARM控制器中构建运行系统。

然后利用所选用的基于IEC 61131-3标准的软件编写用户程序,并通过其自带的通信协议把符合IEC 61131-3标准的应用程序下载到运行系统(ARM控制器)里面去。

最后通过MODBUS通信协议实现“力控”组态软件对ARM控制器运行状态的监测和控制。选用的是MODBUS的RTU方式,波特率设置为9600Bit/s;ARM控制器是ATMEL公司基于ARMTTDMI微处理核的32位嵌入式RISC处理器AT91M55800A。

图1ARM控制系统的实现原理图

基于IEC标准的嵌入式控制器的MODBUS通信

3MODBUS通信的实现

3.1过程映像

所选用的基于IEC 61131-3标准的软件中,I/O变量访问是通过对过程映像的访问来实现的。所谓过程映像其实是运行系统自动定义的一个段。I/O接口通过对过程映像的访问来实现I/O变量的访问。而上位机就是通过过程映像来与物理硬件设备通信,读写I/O变量的信息。过程映像内存单元和编程系统I/O变量的物理定义地址是一一对应的。

过程映像有一个段表头,段表头后面跟着用于物理输入(%I)的内存空间,接着是物理输出(%Q)和用于标志(%M)的内存空间。在输入和输出之间,输出和标志之间,以及在标志之后,都有可能有一些不用的内存空隙。对过程映像的访问是通过指针pProcImgSeg-l来实现的,让其总指向物理输入的起始偏移地址,pProcImgSeg-l加上相对偏移量,就可以访问不同I/O变量和标志的存储单元。

过程映像的布局如图2所示。

图2过程映像布局

3.2ARM控制器中MODBUS通信的实现

在该基于MODBUS通信协议的ARM控制器中,“力控”组态软件是主设备(master),而ARM控制器是从设备(slave)。因此我需要编写的MODBUS通信协议部分就是MODBUS通信的slave部分,而所用的编程环境也是专门针对ARM的ADS(ARM Developer Suite V1.2)开发环境。为了便于说明问题,本文主要通过对功能代码03H的使用来演示程序的运行。

3.3从设备部分MODBUS通信的实现

图3说明了在从设备ARM控制器上接收、处理、发送的流程图。 首先是main函数里面的循环检查标志位是否置1。当标志位置1的时候表示接收缓冲区里面有数据了,则读出地址码,并清0标志位,等待下一次数据的到来;假如标志位为0,则表示接收缓冲区内没有数据,就继续循环等待数据到来。然后判断地址码是否相符,若相符则读取数据中的CRC校验位,若不相符合则退出继续循环等待。

在地址码正确的情况下,把得到的数据重新进行CRC运算,并把运算得到的CRC码与接收到的CRC校验码进行比较,相符说明接收无误,不符说明接收错误,回发错误代码要求主设备重发数据。

在判断了CRC校验无误的情况下,就调用modbus-unfasten函数进行数据的处理和回发。我们以功能代码03H为例进行说明。当调用了modbus-unfasten函数以后,首先是读取数据中的功能代码,通过多路选择结构swith语句进行处理。如当读取的功能代码为03H时,执行如下代码:

在判断了功能代码以后先分别读取寄存器地址的高位和低位,然后组合成完整的地址;同样又读取数据数目的高低位,再组合成完整的数据数目。过程映像的指针加上偏移量以后就指向了需要读取的数据。然后调用modbus-encapsulation-read,把设备地址、功能代码、数据个数以及新读取的数据进行封装,并返回封装后数据的地址。最后调用AT91M55800A中提供的串口发送程序at91-usart-send-frame,将数据从串口发送给主设备――“力控”组态软件。

使用RTU模式,消息中所使用的是CRC循环冗余检测。CRC校验码是两个字节,包含一个16位的二进制值,它由传输设备计算后加入消息中,接收设备重新计算收到的数据的CRC,并与接收到的CRC校验码进行比较。CRC校验需要对位进行操作,根据MODBUS的相关介绍,在ADS环境下制作了一个CRC校验码计算函数crc16。该程序中使用的是查表法,这种方法不需要大量烦琐的计算,只需要在CRC高位字节值表(auchCRCHi[])和CRC低位字节值表(auchCRCLo)中进行查询就可以了。

3.4主设备部分MODBUS通信的实现

主设备,也就是PC机上的MODBUS通信是靠“力控”组态软件来实现的。在“力控”中建立MODBUS通信需要三个步骤:

(1)在I/O设备驱动中建立一个MODBUS(RTU串行口)的连接,配置好其中的设备名称、设备地址、通信方式以及串口号等参数; (2)在实时数据库中的数据库组态界面添加新变量,包括变量名、定义I/O设备(选择第一步定义的MODBUS RTU串行口),并选择所要实现的功能,即选择功能代码;

(3)在窗口界面里面添加一个文本,然后对文本的对象类型进行配置,选择好数值输入和数值输出的类型,并选择好所要显示的变量(即刚才在第二步里面定义的变量名)。

4结束语[5]

modbus协议篇9

【关键词】智能家居;通信系统;LabVIEW

1.方案简述

本系统具备与多种类型终端通信功能,按照通信终端类型可分为RS232串口设备、USB采集卡终端、PC终端、手机或平板终端。欲实现不同设备正常通信,必须使用不同的通信技术及其协议。与串口设备通信时采用基于RS232串口的Modbus协议[6],通信数据格式遵循Modbus规范;与6009数据采集卡和USB摄像头通信时,使用USB通信协议;与GSM模块通信时采用基于RS232串口[7]的AT通信协议[2][3],即数据格式遵循AT指令规范;与PC客户端通信时采用基于以太网的NI Data socket通信协议,遵循DSTP通信规范;与手机或平板客户端通信时采用基于WIFI协议的Web service通信协议,遵循web Service相关规范。

2.基于Modbus协议的设计

2.1 Modbus协议简介

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

2.2 Modbus特点

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

本章将在该协议的基础之上完成通信格式的设计。将在RS-232串口实现通信。

2.3 Modbus通信消息帧

表1 Modbus通信消息帧

地址码 功能码 数据区 CRC校验码

1字节 4字节 1-252字节 2字节

数据区:从机发给主机的数据需将各种类型数据转换为ASCII码,包含如表3所示数据。

CRC校验码:用于校验数据传输过程中是否收到干扰。取数据区最前两个字节,结果计算后将结果与收到的数据区前两个字节进行对比,若相同,则表示数据传输过程中没有收到干扰。校验算法请参加参考文献《CRC校验码在单片机中的程序实现及其冗余码表的求取[4] 》。

3.基于Datasocket 技术通信设计

3.1 Datasocket 技术简介

Datasocket[5]技术是由NI公司开发,主要面向测控计算机网络间通信领域,用于共享和实时数据,是一种易用的高性能数据交换编程接口。它能有效地支持本地计算机上不同应用程序对特定数据地同时应用,以及网络上不同计算机地多个应用程序之间的数据交互,实现跨机器、跨语言、跨进程的实时数据共享。用户只需要知道数据源和数据宿及需要交换的数据就可以直接进行高层应用程序的开发,实现高速数据传输,而不必关心底层的实现细节,从而简化通信程序的编写过程,提高编程效率。

在本系统中,主要利用它在以太网上实现远程控制功能。用户可以通过远程计算机客户端对家居的实时控制。采用一对多通信架构,在软件实现上需要编写一个受于服务器运行的服务器软件和受于PC客户端运行的客户端软件。

3.2 服务器与PC客户端通信消息帧(如表4、5所示)

4.基于Web Service通信设计

4.1 Web Service 简介

Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块,可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

在本系统内中主要利用它来实现手机客户端与服务器的通信,主要基于wifi网络。用户可通过手机实时查看家里检测到的各种数据,并且可以通过面板远程控制家里的电器。其原理就是在PC服务器端基于Web Service 的标准XML数据,然后通过编写的手机App 订阅该服务,可支持安卓、IOS和WP平台。

4.2 服务器与手机客户端通信消息帧(如表6、7所示)

4.3 MOBUS、Datasocket和Web服务通信流程

图1 通信流程

图2 PC客户端基于以太网的通信效果图

如图1、2所示,在本系统中,MODBUS、Datasocket和Web Services通信流程都一样,尽是所占资源不一样而已。具体请见参考相关文献。

参考文献

[1]杨利平.基于网络技术的远程智能家居系统[J].仪器仪表学报,2009,25(4):309-311.

[2]刘松,赵忠,孙学磊.基于GSM 的远程家庭智能监控系统设计[J].电子测量技术,2009,32(1):89-91.

[3]张俊. SMS 短消息传输的远端控制技术及其实现[J].仪器仪表学报,2003,24(4):610-611.

[4]唐鹏程,邹久明.CRC 校验码在单片机中的程序实现及其冗余码表的求取[J].工业自动化与装置报,2004(3):56-57.

[5]阮奇珍.我和LabVIEW:一个NI工程师十年编程经验[M].北京航空航天大学出版社,2009:210-230.

[6]施耐德电气有限公司.MODBUS通信协议技术规范.2000.

modbus协议篇10

关键词: RS485;PLC;变频器;串行通信

中图分类号: TN773 文献标识码:A

1 引言

在工业自动化控制领域中,RS485总线通信接口允许在简单的一对双绞线上进行多点、双向通信。本文主要以西门子S7-300PLC与PowerFlex 400P变频器的通信为例,来阐述采用Modbus协议实现串行通信的方法。

2 Modbus协议简介

Modbus协议传输模式主要有ASCII模式和RTU模式两种。其中RTU模式直接按十六进制符号发送,无需转换成ASCII码,现如今智能仪表、变频器以及PLC等工控设备大多支持Modbus RTU格式。

Modbus通信协议是一种主从式、半双工通信协议,即仅主站能初始化查询,从站根据主站查询提供的数据做出相应的反应。此控制系统中主站是S7-300PLC,从站是PowerFlex 400P变频器(如图1所示),理论上一个Modbus系统中可以有一台主站和多至247台从站。

3 PowerFlex 400P变频器中Modbus的应用

3.1 硬件连接

PowerFlex 400P变频器采用内置RS485作为Modbus的物理接口,支持RTU的传输模式。硬件上,变频器的DSI接口用于RS485通信,网络连线由屏蔽的双绞线组成,节点到节点之间成链连接,方式如图2所示。

3.2 通信设置

硬件连接好后,要激活变频器与外部设备之间的Modbus通信,需要设置如下参数(见表1)。

3.3 技术参数

4 S7-300 PLC中Modbus的应用

S7-300PLC本身不支持RS485通信,需要通过串行通讯模板CP341来实现。

4.1 Step7组态设置

进入硬件配置画面,双击CP341模板,点击Parameter…配置参数,在Protocol选型中选择MODBUS Master,参照变频器设置波特率、数据位、停止位、奇偶校验等内容,设置好后需要通过Load Drivers装载到PLC中。

4.2 程序设计

本文主要采用Modbus主站轮询方式通过FB7/FB8功能块进行读取/发送数据。其中轮询方式采用如图3所示。在系统初始化完成后,手动启动第一次轮询作业,先轮询1#从站。给1#从站发送查询请求后,等待1#从站的响应,如果在指定的延时时间内接收到1#从站返回的数据,则执行2#从站。如果在指定时间内不能接收到从站的返回数据或接收错误,则跳过本站,执行下一个从站。

结语

利用RS485总线实现了软水站的自动化控制,同时减少了大量的I/O卡件,节省配线,提高了控制系统的抗干扰能力,为实现生产过程的自动化、智能化创造了条件,应用前景十分广泛。

参考文献

[1]廖常初.西门子S7-300/400 PLC应用技术[M].北京:机械工业出版社,2011.