您的位置 首页 制造

使用MODBUS进步多CPU体系协同开发的功率

摘要:提出利用MODBUS协议实现多CPU系统中信息交互的方案,分析了软硬件通信机制的设计和系统协同开发的方法,以及各种提高通信效率的措施。关键词:M

摘要:提出运用MODBUS协议完结多CPU体系中信息交互的计划,剖析了软硬件通讯机制的规划和体系协同开发的办法,以及各种进步通讯功率的办法。

要害词:MODBUS通讯协议,多CPU体系,通讯

在电力体系微机归纳维护和自控设备以及其它工业自动化操控范畴,微操控器的运用越来越广泛,其设备的杂乱性也越来越高。为了处理其开发目标实时多使命性的要求,单CPU、单入开发的形式下在被多个、多类型  CPU和多人协同开发的形式所替代。在这新的开发形式中,面对一个新问题——在施行信息交互的进程中怎么将完结CPU之间信息交互的软硬件规范化,这是关系到该形式能否成功施行的要害。在许多的通讯办法中,依据UART的RS-485串行通讯形式以其连线简捷、牢靠性高和可带动多CPU、多设备级连的才能而被广泛选用。在软件通讯协议的挑选上,MODBUS协议因为其通用、老练的第三方规范测验软件,为用户运用供给了许多优势。因而,在开发新式电动机归纳维护设备TH21-4M的进程中,选用RS-485串行通讯办法和MODBUS通讯协议,完结了多CPU之间的数据和操控指令的信息交互。为了增强串行通讯的高效、和谐性,笔者在通讯机制的软硬件结构上采纳了许多办法,并取得了很好的作用。在调试体系通讯阶段,运用了各CPU模块先与MODBUS规范测验软件通讯,之后再互相联调的办法,大大进步了协同开发的功率。实践证明,该规划思维简化了体系的结构,大大进步了设备的运转功率和牢靠性。本文将结合  TH21-4M的规划思路,从硬件规划和软件规划两方面,介绍怎么运用MODBUS通讯协议,完结多CPU结构的协同开发。

1 TH21-4M电动机归纳维护设备的特色

TH21-4M电动机归纳维护设备归纳维护功用以外,兼有丈量、远动和通讯的功用;大屏幕的汉字液晶显示,能够完结友爱的人机界面;运用CAN总线,与监控主机进行通讯,然后构成分级涣散式的变电站归纳自动化体系的子体系。

在规划上,因为设备需求完结多使命,为了优化体系功用,选用了多CPU的体系结构。其间一个CPU担任守时采样脉冲发送;主CPU模块担任数据处理、电量核算、毛病判别和开关操作;而板模块上CPU担任人机交互,并完结与主维护模块和监控主机的通讯使命。各个CPU模块有明晰的使命分工,研制时也简略完结多人协同开发。在整个构成中,串行通讯沟通了主CPU和面板CPU,使人机交互成为或许,因而点有重要的位置。树立合理的通讯机制则是串行通讯部分的中心的地点,它决议着通讯的和谐性和体系开发后期调试的功率。

2 通讯机制介绍

2.1 通讯机制硬件规划原理

本体系通讯机制的提出以高效、牢靠为意图。RS-485为半双工结构,现场中比全双工往往更接近于有用,在此选用只要2条信号线的最简型衔接。体系接口电路图由图1所示。主维护模块上的80C196单片机输出的TTL逻辑电平经过光电阻隔后,由MAX485芯片转化为RS-495电平,再由面板模块上的MAX485芯片转化为TTL逻辑电平,由80C31单片机读取;以之亦然。在  80C196单片机一侧,运用并行输入输出口2(IO_PORT2)的一位P2.7对MAX输入使能端RE、输出使能端DE进行操控。由图1可知,当  P2.7输出高电平时,RE使能,单片机一侧接纳数据;当P2.7输出低电平时,DE使能,单片机一侧发送数据。这样,避免了盲目发送形成的数据叠加丢掉现象,通讯质量高,通讯速度也能得到确保。

2.2 通讯协议介绍

为了确保维护设备中两个模块之间能够正确地传递数据,有必要有一套关于信息传输的形式、数据格式和内容等的规则,即规约[1]或通讯协议。尽管维护设备内部的通讯相对简略,两具模块之间传递的数据也不是许多,可是自界说内部通讯协议的坏处是很明显的。首要,自界说通讯协议很难在时序、使命的和谐上合作得很好,数据传送的牢靠性也难以确保;初次,因为没有现成的较老练的调试软件,主  CPU模块基本是黑匣子,体系联调时的困难较多且难以克服。因而,选用了当时盛行的MODBUS通讯协议,并结合本设备的特色加以简化,然后完结了模块间的通讯,事实证明作用很好。

MODBUS的通讯办法为主从办法[2]。主方首要向从方发送通讯恳求指令,从方依据恳求指令中的功用码向主方发回数据。每个从方都有自己独立的地址。主方所发的恳求帧和从方所发的应对帧都是以从方地址最初的。从方只读发给自己的指令,对以其他从方地址最初的报文不作应对。这种一问一答的通讯形式,大大进步了通讯的正确率。但关于微机维护来说,该主从办法也存在着坏处,即当维护主模块进行维护动作后,无法马上向上位机传送毛病信息,只能由上位机不断向维护主模块问询维护是否动作,若有,则再进一步要求详细毛病信息。

MODBUS有RTU(Remote Terminal  Unit)和ASCII两种传送办法。为了确保较高的通讯速度,选用了RTU办法,数据字节无奇偶校验位,加上开端、停止位后字节长度为10bit,数据间隔在24bit以内,选用循环冗余检验办法对报文进行校验。

MODBUS典型的报文格式如下:

主方发报文:

从方正常时答复:

一个通讯报文的详细内容取决于该指令字符串的功用码,MODBUS中界说的规范功用码如表1所示。

表1 MODBUS协议中的规范功用码

由功用码的界说能够看出,传送的报文目标首要分为模拟量和数字量两类,由报文头的功用码来确认报文的内容。在实践运用中,首要运用02、04、05和06这四种功用码,完结对数字量和模拟量的读取及设置。

数据开端地址和数据量是报文的首要内容。MODBUS规则的数据量是从通讯目标的器材中读取的数据或是往通目标的器材中写入的数据。每个通讯目标器材都有自己的地址。在维护设备的内部通讯中,指定各通讯目标器材为主机板的RAM中保存的数字量和模拟量,以及EEPROM中设定的维护装备和定值。在处理通讯报文时,由报文的数据开端地址和对应的数据量长度进行读取或发送使命。当传送数字量时,不同地址的数据值用报文中数据量不同的位来标明,这样就能传送更多的数据信息,然后高效地运用通讯报文。因为每帧数据不定长,便利灵敏,因而避免了固定帧长形成的对CPU时刻和内存空间的糟蹋。别的,MODBUS通讯协议规则在通讯字符串中的地址比实践地址小“1”,这对数组进行操作时是一个便利之处。

报文末的两个字节为校验字节。RTU办法通讯选用CRC-16位循环码冗余校验,行将整个字符串(不包括最终两个字节)按规则的办法进行位移并进行异或核算,核算结果存在字符串的最终两个字节内,并由接纳方按相同的核算办法进行校验是否共同。这种校验办法对随机或突发过失形成的帧损坏有很好的校验作用。

3 进步通讯功率的办法

在建立硬件渠道和通讯协议后的软件规划进程中,笔者选用了许多办法进步通讯的功率和牢靠性。

3.1 将通讯分为接纳和发送两个独立的使命

80C196单片机能够运用查询和中止两种办法经过串行口发送和接纳数据。关于中止办法,80C196单片机供给了两种串口中止办法:第一种办法为一个独自的串口中止,由中止屏蔽寄存器INT_MASK的D6位操控,对应中止向量  200CH,串行口状况寄存器SP_STAT(11H)的D5(发送完标志TI)和D6(接纳完标志RI)置位都将触发该中止;第二种办法为接纳、发送别离设置了中止号,运用INT_MASK1的D0位对应发送中止,中止向量2030H,TI置位触发该中止;INT_MASK1的D1位对应收中止,中止向量2032H,RI置位触发该中止。笔者选用了第二种通讯办法。这样每接纳完或发送完一个字节后就触发相应的中止,直接进行下一轮的接纳、发送使命,而不用判别串口操控/状况寄存器SP_CON/SP_STAT(11H),使得中止子程序更为简练、高效。

3.2 尽量缩短中止时刻

因为规划软件结构时运用了多个中止,为了确保程序的牢靠运转,削减不同不断间互抵触的机率,在编制软件时尽或许简练各种中止的使命,缩短中止履行时刻。在通讯中止子程序中,进入中止后履行必要的使命,如:清串行口状况寄存器  SP_STAT中相应的状况位,将刚接纳到的字符或需求发送的字符从缓冲区内读出或写入缓冲区,已接纳或发送字符数增1等,之后便当即退出中止。其它使命如判别帧的有用性、对接纳帧指令(遥测、遥控指令)的应对,预备发送帧等,都放在主程序中完结。

3.3 牢靠地判别帧结束,避免通讯阻滞

运用独自的软件守时器,来判别一帧接纳报文结束,能够避免若报文接纳不完整,该帧通讯使命无法结束而影响下一帧的接纳。

因为一帧报文中字节与字节之间的时刻间隔和帧与帧之间的时刻间隔比较要小得多,因而每逢接纳一个新字节,就发动软件守时器开端计时,守时器的时刻设定为帧与帧的最小时刻间隔。波特率不同,该时刻间隔也不同。若不到预订的时刻内又接纳到下一个字节,则阐明一帧报文未结束,守时器从头计时;若守时器顺畅计数到预守时刻,就会触发相应的中止号,在该守时器中止子程序中设定帧结束标志字节,标明一帧报文接纳结束。当主程序内检测到一帧报文接纳结束后,会经过核对从方地址及循环冗余校验字节是否正确来判别该帧的有用性。若确认接纳到的是一帧发送给已方的正确报文,则会依据报文内的功用码对该帧指令进行相应的处理,并预备发送帧。

MODBUS协议还规则了从方接纳报文不正确时发回的犯错帧。考虑到设备内部通讯的进程不很杂乱,在实践运用中假如从方收到的报文校验不正确,采纳不作应对的办法。主方若在规守时刻内未收到从方的应对报文时,将重发恳求报文;若屡次未收到从方应对报文,则报通讯毛病。

3.4 通讯速率的确认

因为所开的设备都在同一机箱内,模块与模块之间的间隔很短,而MODBUS是依据RS485的长间隔通讯,能够不考虑间隔对通讯波特率的影响,而且因为选用主从式通讯形式,不会呈现线路阻塞现象。因而,仅从通讯功率来看,只要不超越模块所运用芯片对最高波特率的约束,则设定的波特率越高,信息交互越快,通讯功率也越高。可是,关于实时多使命体系,有必要留意各使命的和谐。MODBUS  通讯协议中只对各种通讯报文格式作了规则,对通讯波特率和奇偶校验等不作硬性规则。当一帧报文的长度较长,而波特率又很高,会导致CPU忙于处理通讯而或许丢掉其它实时性使命,如实时采样等。因而,挑选通讯波特率时有必要留意与其它使命相和谐,而不是越高越好。在实践运用中,将波将率设置到  19200bps,体系调调运作。因为设定通讯两边波特率完全共同,能够使接纳端对每一个数据位的采样都发生在位周期的中点,完结牢靠通讯。别的,在字符传送时不运用奇偶校验位,以此相对进步了有用字节传递的速率。

3.5 合理的调试办法

在开发初期,运用仿真器等东西只能对单一CPU模块进行实时监测,而无法一起监测串行通讯两边,难以确认问题地点,使调试功率遭到很大影响。因而先将各CPU模块别离经过  RS485/RS232数据转化模块与微机进行通讯测验,成功后再进行模块间联调,大大进步了联调的功率。在调试各模块与微机通讯的进程中,微机运用  MODBUS调试软件,仿照主方的通讯进程,主意向从方(各CPU模块)索要信息。整个接纳、发送进程都是通明、明晰的,使得模块中存在的绝大多数问题都能在与微机通讯的进程发现并及时处理。CPU模块间联调时,能够运用总线监控软件,调查两边发送的数据。当遇到通讯问题的时分,就能比较简略地确认是哪一个模块发送数据不正确,然后确认问题地点。选用这样的调试办法,大大增强了不同开发人员、不同CPU之间的和谐性,进步了设备研制的功率和进展。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/135380.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部