当前位置:首页 > 嵌入式 > 嵌入式硬件

在电力系统微机保护和自控装置以及其它工业自动化控制领域,微控制器的应用越来越广泛,其装置的复杂性也越来越高。为了解决其开发对象实时多任务性的要求,单CPU、单入开发的模式下在被多个、多类型CPU和多人协同开发的模式所代替。在这新的开发模式中,面临一个新问题——在实施信息交互的过程中如何将实现CPU之间信息交互的软硬件标准化,这是关系到该模式能否成功实施的关键。在众多的通信方式中,基于的串行通信模式以其连线简捷、可靠性高和可带动多CPU、多设备级连的能力而被广泛采用。在软件通信协议的选择上,MODBUS协议由于其通用、成熟的第三方标准测试软件,为用户使用提供了诸多优势。因此,在开发新型保护装置TH21-4M的过程中,采用串行通信方式和MODBUS通信协议,实现了多CPU之间的数据和控制命令的信息交互。为了增强串行通信的高效、协调性,笔者在通信机制的软硬件结构上采取了很多措施,并取得了很好的效果。在调试系统通信阶段,使用了各CPU模块先与MODBUS标准测试软件通信,之后再互相联调的方法,大大提高了协同开发的效率。实践证明,该设计思想简化了系统的结构,大大提高了装置的运行效率和可靠性。本文将结合TH21-4M的设计思路,从硬件设计和软件规划两方面,介绍如何利用MODBUS通信协议,实现多CPU结构的协同开发。

1 TH21-4M保护装置的特点

TH21-4M综合保护装置综合保护功能以外,兼有测量、远动和通信的功能;大屏幕的汉字液晶显示,可以实现友好的人机界面;利用CAN总线,与监控主机进行通信,从而构成分级分散式的变电站综合自动化系统的子系统。

在设计上,由于装置需要实现多任务,为了优化系统功能,采用了多CPU的系统结构。其中一个CPU负责采样脉冲发送;主CPU模块负责数据处理、电量计算、故障判断和操作;而板模块上CPU负责人机交互,并实现与主保护模块和监控主机的通信任务。各个CPU模块有明确的任务分工,研制时也容易实现多人协同开发。在整个构成中,串行通信沟通了主CPU和面板CPU,使人机交互成为可能,因而点有重要的地位。建立合理的通信机制则是串行通信部分的核心的所在,它决定着通信的协调性和系统开发后期调试的效率。

2 通信机制介绍

2.1 通信机制硬件设计原理

本系统通信机制的提出以高效、可靠为目的。为半双工结构,现场中比全双工往往更接近于实用,在此采用只有2条信号线的最简型连接。系统接口由图1所示。主保护模块上的输出的TTL逻辑电平通过后,由芯片转换为RS-495电平,再由面板模块上的芯片转换为TTL逻辑电平,由读取;以之亦然。在一侧,使用并行输入输出口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 )和两种传送方式。为了保证较高的通信速度,采用了RTU方式,数据字节无奇偶校验位,加上起始、终止位后字节长度为10bit,数据间隔在24bit以内,采用循环冗余检验方式对报文进行校验。

MODBUS典型的报文格式如下:

一个通信报文的具体内容取决于该指令字符串的功能码,MODBUS中定义的标准功能码如表1所示。

表1 MODBUS协议中的标准功能码

由功能码的定义可以看出,传送的报文对象主要分为模拟量和数字量两类,由报文头的功能码来确定报文的内容。在实际应用中,主要使用02、04、05和06这四种功能码,完成对数字量和模拟量的读取及设置。

数据起始地址和数据量是报文的主要内容。MODBUS规定的数据量是从通信对象的器件中读取的数据或是往通对象的器件中写入的数据。每个通信对象器件都有自己的地址。在保护装置的内部通信中,指定各通信对象器件为主机板的RAM中保存的数字量和模拟量,以及中设定的保护配置和定值。在处理通信报文时,由报文的数据起始地址和对应的数据量长度进行读取或发送任务。当传送数字量时,不同地址的数据值用报文中数据量不同的位来表示,这样就能传送更多的数据信息,从而高效地利用通信报文。由于每帧数据不定长,方便灵活,因而避免了固定帧长造成的对CPU时间和内存空间的浪费。另外,MODBUS通信协议规定在通信字符串中的地址比实际地址小“1”,这对数组进行操作时是一个方便之处。

报文末的两个字节为校验字节。RTU方式通信采用CRC-16位循环码冗余校验,即将整个字符串(不包括最后两个字节)按规定的方式进行位移并进行异或计算,计算结果存在字符串的最后两个字节内,并由接收方按同样的计算方法进行校验是否一致。这种校验方法对随机或突发差错造成的帧破坏有很好的校验效果。

3 提高通信效率的措施

在确立硬件平台和通信协议后的软件设计过程中,笔者采用了很多方法提高通信的效率和可靠性。

3.1 将通信分为接收和发送两个独立的任务[3]

单片机可以使用查询和中断两种方法通过串行口发送和接收数据。对于中断方式,80C196单片机提供了两种串口中断方式:第一种方式为一个单独的串口中断,由中断屏蔽寄存器INT_的D6位控制,对应中断向量,串行口状态寄存器SP_STAT(11H)的D5(发送完标志TI)和D6(接收完标志RI)置位都将触发该中断;第二种方式为接收、发送分别设置了中断号,使用INT_1的D0位对应发送中断,中断向量,TI置位触发该中断;INT_1的D1位对应收中断,中断向量2032H,RI置位触发该中断。笔者采用了第二种通信方式。这样每接收完或发送完一个字节后就触发相应的中断,直接进行下一轮的接收、发送任务,而不必判断串口控制/状态寄存器SP_CON/SP_STAT(11H),使得中断子程序更为简练、高效。

3.2 尽量缩短中断时间

由于设计软件结构时使用了多个中断,为了保证程序的可靠运行,减少不同不断间互冲突的机率,在编制软件时尽可能简练各种中断的任务,缩短中断执行时间。在通信中断子程序中,进入中断后执行必要的任务,如:清串行口状态寄存器SP_STAT中相应的状态位,将刚接收到的字符或需要发送的字符从缓冲区内读出或写入缓冲区,已接收或发送字符数增1等,之后便立即退出中断。其它任务如判断帧的有效性、对接收帧命令(遥测、遥控命令)的应答,准备发送帧等,都放在主程序中完成。

3.3 可靠地判断帧结束,防止通信停滞

利用单独的软件器,来判断一帧接收报文结束,可以防止若报文接收不完整,该帧通信任务无法结束而影响下一帧的接收。

由于一帧报文中字节与字节之间的时间间隔和帧与帧之间的时间间隔相比要小得多,因此每当接收一个新字节,就启动软件器开始计时,定时器的时间设定为帧与帧的最小时间间隔。波特率不同,该时间间隔也不同。若不到预定的时间内又接收到下一个字节,则说明一帧报文未结束,定时器重新计时;若定时器顺利计数到预定时间,就会触发相应的中断号,在该定时器中断子程序中设定帧结束标志字节,表明一帧报文接收完毕。当主程序内检测到一帧报文接收完毕后,会通过核查从方地址及循环冗余校验字节是否正确来判断该帧的有效性。若确定接收到的是一帧发送给已方的正确报文,则会根据报文内的功能码对该帧命令进行相应的处理,并准备发送帧。

MODBUS协议还规定了从方接收报文不正确时发回的出错帧。考虑到装置内部通信的过程不很复杂,在实际应用中如果从方收到的报文校验不正确,采取不作应答的方式。主方若在规定时间内未收到从方的应答报文时,将重发请求报文;若多次未收到从方应答报文,则报通讯故障。

3.4 通信速率的确定

由于所开的装置都在同一机箱内,模块与模块之间的间距很短,而MODBUS是基于的长距离通信,可以不考虑距离对通信波特率的影响,并且由于采用主从式通信模式,不会出现线路堵塞现象。因此,仅从通信效率来看,只要不超过模块所使用芯片对最高波特率的限制,则设定的波特率越高,信息交互越快,通信效率也越高。但是,对于实时多任务系统,必须注意各任务的协调。MODBUS通信协议中只对各种通信报文格式作了规定,对通信波特率和奇偶校验等不作硬性规定。当一帧报文的长度较长,而波特率又很高,会导致CPU忙于处理通信而可能丢失其它实时性任务,如实时采样等。因此,选择通信波特率时必须注意与其它任务相协调,而不是越高越好。在实际应用中,将波将率设置到19200bps,系统调调运作。由于设定通信双方波特率完全一致,可以使接收端对每一个数据位的采样都发生在位周期的中点,实现可靠通信。另外,在字符传送时不使用奇偶校验位,以此相对提高了有效字节传递的速率。

3.5 合理的调试方法

在开发初期,使用仿真器等工具只能对单一CPU模块进行实时监测,而无法同时监测串行通信双方,难以确定问题所在,使调试效率受到很大影响。因此先将各CPU模块分别通过/数据转换模块与微机进行通信测试,成功后再进行模块间联调,大大提高了联调的效率。在调试各模块与微机通信的过程中,微机使用MODBUS调试软件,模仿主方的通信过程,主动向从方(各CPU模块)索要信息。整个接收、发送过程都是透明、清晰的,使得模块中存在的绝大多数问题都能在与微机通信的过程发现并及时解决。CPU模块间联调时,可以利用总线监控软件,观察双方发送的数据。当遇到通信问题的时候,就能比较容易地确定是哪一个模块发送数据不正确,从而确定问题所在。采用这样的调试方法,大大增强了不同开发人员、不同CPU之间的协调性,提高了装置研发的效率和进度。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

联发科下一代旗舰芯片天玑9400的传闻近期在数码圈掀起了不少讨论。知名博主数码闲聊站爆料称,为确保天玑9400在性能和能效上占据优势,联发科深入参与了Armv9“Blackhawk黑鹰”CPU架构的设计,并指出这种新架构...

关键字: 天玑9400 CPU

5月11日消息,Arrow Lake、Lunar Lake还没有发布,Intel再下一代处理器Panther Lake的消息就传出来了,CPU方面没啥惊喜,GPU又一次要飞跃。

关键字: GPU CPU 芯片

Optiver通过包括EPYC CPU、Solarflare以太网适配器、Virtex FPGA和Alveo加速卡在内的高性能AMD解决方案搭建其业务基础

关键字: CPU 数据中心 以太网

利用LogiCoA™微控制器,以更低功耗实现与全数字控制电源同等的功能

关键字: 微控制器 电源 CPU

2024年4月18日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 很荣幸地宣布与Edge Impulse建立新的全球合作关系。Edge Im...

关键字: 机器学习 MCU CPU

无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。

关键字: 视觉系统 CPU 存储器

Apr. 16, 2024 ---- NVIDIA新一代平台Blackwell,包含B系列GPU及整合NVIDIA自家Grace Arm CPU的GB200等。TrendForce集邦咨询指出,GB200的前一代为GH2...

关键字: CPU GPU

人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果[1]。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多...

关键字: 人工智能 PCIe CPU

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发
关闭
关闭