APP下载

基于DMA 与中断方式的组态监控系统容错通信技术

2021-08-31孙万峰李维波李齐邹振杰卢月

中国舰船研究 2021年4期
关键词:寄存器组态串口

孙万峰,李维波*,2,李齐,邹振杰,卢月

1 武汉理工大学 自动化学院,湖北 武汉 430070

2 西藏大学 供氧研究院,西藏 拉萨 850012

0 引 言

舰船并网控制装置中的监控系统通常由舰船底层控制器、主控制器和组态模块等组成[1-3]。由于舰船并网控制系统中的监控模块需要监控数量庞大的底层电气设备(如发电机、逆变器和斩波器等)的健康状态量,因此,主控制器需要处理庞杂的数据量并上传给组态模块, 并将组态模块处理后的结果下达给主控制器。为适应这些情况,对舰船并网控制系统中监控模块的串口通信有了更高的技术要求。并且由于庞杂的交互数据实时变化,极易造成数据长度超过缓冲器阈值,致使控制器无法正常通信,进而产生数据丢失,造成舰船并网控制系统中监控模块不能实时读取底层电气设备的健康状态、下达来自主控制器的控制指令和回传指令给主控制器。因此,实现数据的变长收发,对于舰船并网控制系统中监控模块的串口通信就显得尤为重要。

目前串口通信技术有许多种[4-6],如查询法、中断法和直接存储器访问法(DMA)等,如何解决大容量的变字节长度的数据通信仍然是串口通信技术领域中的一个难点问题。传统的串口通信方法对于查询法而言,利用代码来识别相关寄存器标志位的状态,再依据该状态执行对应操作,该方法适用于循环数据收发,且耗费大量CPU 资源,极大降低了CPU 性能。基于中断法的串口通信,是外设发送数据后产生中断,通知CPU 读取数据。对比研究中断法和查询法得知,中断法效率更高,不过中断法需要进行保存断点和恢复断点的操作,如果发送数据所需的时间比保存断点和恢复断点总共花费的时间少,那么通信过程中可能会出现数据丢失的问题。所以中断法应用于多字节数据收发通信有其局限性,中断法一般用在数据定长的收发场合。借助DMA 法的串口通信,在不需要CPU 的干预下,利用DMA 控制器和外围设备之间构成数据传输通道,并且数据可以借助DMA 控制器写入指定存储器中。在数据传输完成后,通知CPU 撤销该数据传输通道。理论研究与运行实践表明,如果单独使用DMA 法,并不能解决数据实时变长收发的技术难题。

针对舰船并网控制系统中监控模块的大容量、变字节长度的数据实时通信技术难题,本文将提出一种基于DMA 和中断两种方式结合使用的串口通信方法,采用DMA 发送中断和串口接收中断进行数据变长收发,实现舰船并网控制系统中监控模块的庞杂数据实时交互的功能,最终实现底层控制器与上位机之间健康、可靠、实时的串口通信。

1 系统构成

舰船并网控制装置中的监控系统,简称为组态监控系统。图1 为组态监控系统的整体架构,组态监控系统由组态监控界面、主控制器和底层控制器3 大关键部件组成。组态监控界面的功能是实时显示舰船状态量以及当前风险等级。通过监视组态监控界面,以确保底层控制器的正常运行。其中底层控制器包括电站控制器、逆变控制器以及斩波器等。本文以电站控制器为例,组态监控界面显示变量主要为发电机电压、频率、功率和逆变器电压、频率、功率以及该系统电压风险指标、频率风险指标和功率风险指标等。为适应舰船组态监控系统的底层控制器存在种类多、数量多、通信模式复杂的特点,舰船并网控制装置中的监控系统通过CAN 总线将底层控制器数据量转换为信息流传送给主控制器。

图1 舰船并网控制装置中的监控系统的通信网络架构图Fig. 1 Communication network architecture of monitoring system in ship grid-connected control device

在舰船并网控制装置的监控系统中,主控制器不仅要处理来自底层控制器的数据,还要将处理后的数据上传给上位机。为确保数据采集的实时性以及数据传输的可靠性,采用DMA 与中断控制方式来协调CPU 工作,减少了CPU 工作量,使得交互数据的速度和精度得到提高。本文主要从主控制器和舰船监控系统之间通信握手流程和DMA 控制器传输数据两个方面进行分析。

2 舰船监控系统串行通信设计

组态监控软件可用于复杂的图形界面和支持多种接口,因此被广泛用作监控系统。组态软件与单片机的通信方式有以下3 种[7]:

1) 通过动态数据交换(DDE)进行通信。该通信方式对普通开发者不够友好,开发难度大,且数据开销多,导致组态通信系统不能实时通信,会降低通信系统的可靠性。

2) 组态软件自带驱动程序包,开发人员根据项目需求来开发驱动程序。该方法对开发人员的技术要求更高,需要透彻了解驱动模块,才能编写驱动程序,因而会拉长开发周期并增加研发成本。

3) 组态提供的单片机(如ARM,MCS51,FPGA等)借助通信协议进行通信。该方法相较方式1 和方式2 难度低,便于操作,通信实时性满足工程的实际需求,适用普通开发者。

2.1 数据帧协议设计

本文采用基于ARM 微控制器的通用通信协议进行容错通信的方法。组态模块的单片机通用协议常用的为2 种,分别为HEX 型协议和ASCII型协议。它们均可直接由串口和单片机通信。ASCII 型通信协议比HEX 型协议的设计更简单,开发者编程更方便,所以本舰船并网控制装置中的监控系统采用ASCII 型通信协议进行数据交互。常用的通信方式有RS232,RS422 和RS485,其中,RS485 总线在网络连接上简单,且传输距离远,抗干扰能力强,所以选择RS485 通信方式用于主控制器与上位机的通信。

主控制器与上位机的通信握手本质上是双方按照约定的通信协议进行通信。约定的通信协议即本文的数据帧协议,并且数据帧中特定位置的数据具有特定的意义。本文传输数据最小单元为一帧数据,且每帧数据长度实时变化。

为构建舰船并网控制装置中的监控系统,其主控制器的数据帧协议包括组态发送数据帧的定义(数据帧各个参数)和主控制器根据组态发送读写命令做出的不同应答等内容。如:组态发送(写命令)格式、控制器应答(写命令正确)格式、控制器应答(写命令错误)格式、组态发送(读命令)格式、主控制器应答(读命令正确)格式以及主控制器应答(读命令错误)格式的构建。

2.2 数据通信握手流程设计

根据组态与主控制器的读写协议,可以设计出相应的握手流程。由于组态发送写命令流程与发送读命令数据帧的长度不同,因此主控制器响应的数据帧也不同。它们之间的握手流程如图2所示,图2 数据帧中的STX(start of text)表示数据文本起始,DLE(disseminated link entity)表示数据链路实体。

图2 组态与主控制器之间的握手流程图Fig. 2 Flowchart of handshake between configuration and main controller

组态与主控制器之间的握手流程为:首先,当组态处于发送写命令工作模式下,主控制器会根据写命令下的数据帧长度判断主控制器所处的工作模式,应答“写”命令或者“读”命令;其次,校验组态发送的一帧数据中的字头和CR 位,若校验成功,则主控制器响应输出“写”成功,表示两者间握手成功;同理,当组态处于“读”命令工作模式下,主控制器校验“读”命令的数据帧,若校验成功,则表示“读”命令成功,否则“读”命令失败。

3 DMA 与中断通信技术

舰船并网控制装置中的监控系统通信技术有2 个重点问题:一是组态监控界面和主控制器通信通道双方如何实现可靠握手;二是在实现可靠握手后,如何实现数据流在传输过程中实时变长度发送和接收。本节从DMA 控制器的结构、基于DMA 与中断的通信流程以及DMA 与中断的通信时序几个部分,阐述数据流变长传输的基本方法与处理技术。

3.1 DMA 与串口的桥接原理

本文主控制器是以STM32F417 芯片为CPU且有多路外设的电路板卡。DMA 控制器在主控制器中所处的位置,如图3 所示。

图3 DMA 在主控制器中的位置示意图Fig. 3 Schematic diagram of DMA position in the main controller

STM32F417 芯片是一个典型的基于AHB(advanced high performance bus)总线协议架构的片上系统芯片[8]。其中,AHB 总线通常搭载高性能设备,如CPU,DMA,USB 等,而APB (advanced peripheral bus)总线通常挂载低速设备,如串口USART,CAN和普通GPIO等。DMA与串口USART间的桥接物理通道是基于AHB 总线和APB 总线协议进行联接。首先,CPU 通过在软件上对DMA内部寄存器进行配置,使得DMA 控制器完成初始化;其次,DMA 通过AHB MASTER 接口基于AHB 总线信道链接到AHB/APB1 桥接转换器,最后AHB/APB1 桥接转换器通过APB 总线信道链接到串口USART 上,从而创建DMA 与串口数据交互的桥接信道。

3.2 基于中断模式的DMA 通信流程分析

基于中断模式的DMA 通信工作流程如图4所示。DMA 通信流程为:首先,源端存储设备向DMA 控制器(DMAC)发出任务请求,由于主控制器从底层控制器采集的数据,直接通过数据缓冲器存储于主控制器内部集成的存储器中,不需要通过硬件握手模块。在预处理过程中,DMA 控制器利用内部逻辑来解读CPU 传输过来的信息。并且CPU 根据它当前所处工作状态来确认是否释放AHB 总线权限。其次数据传输过程为从源端设备读取或者向目的设备写入。读操作阶段时必须先保证源端设备已经准备好数据,读取数据大小由CPU 配置、数据总线宽度、地址总线宽度等因素决定。最后,当DMA 控制器内部计数器计数到达设定值,则完成DMA 数据传输过程,退出中断程序,DMA 释放AHB 总线控制权限,等待下一次数据传输预处理。

图4 基于中断的DMA 控制器工作流程图Fig. 4 Working process of DMA controller based on interrupt

3.3 基于中断的DMA 通信时序分析

基于中断的DMA 控制器的通信时序图如图5所示。

图5 基于中断的DMA 控制器的通信时序图Fig. 5 Communication sequence diagram of DMA controller based on interrupt

中断的DMA 控制通信时序为:

1) 复位后,主控器处于空闲模式,等待DMA请求指令。当主控制器得到DMA 请求指令后,初始化DMA 控制器内部的读写通道,并选取合适的数据通道,等待控制AHB 总线指令,若总线被占用,则需继续等待总线指令。在得到总线控制指令后,数据开始传输。

2)根据STM32F417 芯片的内部结构,本文组态监控系统主控制器拥有2 个DMA 控制器。每个DMA 控制器具有8 个数据流,每个数据流均可用作数据搬运,此外每个数据流通常含有8 个通道。DMA 控制器可以处理存储设备访问请求信号,并且能处理DMA 请求通道间优先级的选取。

3) DMA 在初始化配置过程中,将对相关重要的寄存器进行配置。比如DMA_NDTR,USART_IDLE,USART_DR,USART_SR 寄 存 器。DMA_NDTR 寄存器在每发送一帧数据后会重新刷新发送数据的长度,从而实时刷新发送数据帧的长度。具体通过USART_DR 寄存器完成变长字节数据收发,当向该寄存器写数据时串口将发送数据;当向该寄存器读数据时该寄存器将存储接收数据。USART_SR 寄存器为串口状态寄存器,通过对USART_SR 寄存器([31:0])中的bit5 和bit6置位来判断数据是被接收还是数据已发送完成。其 中USART_SR bit5 为RXEN,bit6 为TC。bit5置1 表示串口状态为接收,bit6 置1 表示串口数据已发送完成。USART_IDLE 寄存器为串口空闲状态寄存器,通过操作USART_IDLE 寄存器来检测总线空闲状态。

4) 本文主控制器主要执行串口接收中断和串口发送DMA 中断2 种中断程序模块。其中,主控制器中断程序的配置包括抢占优先级配置和响应优先级配置。

表1 为DMA 控制器时序的中断优先级。

表1 DMA 控制器时序的中断优先级Table 1 Interrupt priority of DMA controller timing

4 工程样机测试及结果

4.1 通信软件设计

本文采用STM32F417 的TIM4 定时器作为主控制器的主循环时钟,时钟周期设置为5 ms。串口1 用于组态写命令给主控制器,串口2 用于组态读命令。程序设计内容包括:主循环流程、串口应答流程(包括串口1 和串口2)、中断流程(包括DMA 发送中断流程和串口接收中断响应流程),如图6~图8 所示。

图6 中,主循环流程内容为初始化相关标志位、数据区以及串口1、串口2 接收数据并按照既定算法处理数据。分析主循环流程,串口1 和串口2 之间存在响应冲突和应答冲突的矛盾,所以本文设定串口1 中断优先级高于串口2。将串口1 抢占优先级和响应优先级均设置为1,串口2 抢占优先级和响应优先级均设置为2。图7 表示串口应答流程,它包括串口1 应答流程(图7(a))和串口2 应答流程(图7(b))。图7(a)中,串口1 应答流程内容为组态向主控制器写命令,对底层控制器的电压、电流、功率和温度等模拟量进行赋值,并计算风险指标。图7(b)中,串口2 应答流程内容为主控制器读命令,上传风险指标给组态界面。

图6 主循环流程图Fig. 6 Main cycle flowchart

图7 串口应答流程图Fig. 7 Serial response flowchart

图8 为中断流程图,包括DMA 发送中断流程(图8(a))和串口接收中断响应流程(图8(b))。图8(a)中,DMA 发送中断流程内容为对DMA 控制器和DMA 发送中断进行初始化,并根据是否存在DMA 发送中断请求标志来判断数据帧发送情况。图8(b)中,串口接收中断响应流程为初始化串口及串口中断配置,根据串口接收中断请求标志来查阅数据帧的接收情况。

图8 中断流程图Fig. 8 Interrupt flowchart

4.2 现场测试结果

串口通信接口的硬件拓扑如图9 所示。它由主控制器、收发器ADM2587、组态接口组成。图9中的隔离模块ADM2587 采用ADI 公司的iCouple技术,集成了三态差分线路驱动器、差分输入接收器和DC/DC 转换器,实现了内部信号集成与电源隔离[9-10],同时减少了外部共模信号对数据传输的干扰。该串口电路可为软件程序编程以及数据的传输提供硬件支持。

图9 串口通信接口的硬件拓扑图Fig. 9 Hardware topology of serial communication interface

以舰船并网控制装置中的监控系统供电部分的可视化通信设计为例,验证基于DMA 与中断融合技术在串口数据变长收发方面的有效性。现场联调测试装置包括主控制器(图10)、舰船并网控制装置中的监控系统的前电站显控模块和后电站显控模块(图11)等。其中,组态界面由1#机组参数栏(又称主窗口)、2#机组参数栏、3#机组参数栏、4#机组参数栏、1#柴发参数栏、2#柴发参数栏以及报警记录栏7 个窗口组成[11]。

图10 主控制器实物图Fig. 10 Photograph of main controller

图11 舰船并网控制装置中的监控系统联调实物图Fig. 11 Photograph of joint commissioning of monitoring system in ship grid connected control device

在初始化串口时,合理配置波特率对舰船监控系统中的主控制器和组态通信十分重要。主控制器与组态间握手成功的关键因素之一是双方的波特率一致,并且波特率的大小影响通信数据的可靠性。若两者的波特率过大,则会造成通信握手异常;若两者设定的波特率过低,则会造成通信握手成功率低。在实验调试过程中,设定两者波特率为9 600 bit/s 时,能够较快实现两者之间通信握手。

为验证变长传输及容错性能,在串口硬件装置上分别下载基于DMA 与中断方式的串口通信程序和传统定长收发测试程序,通过串口1 发送不同数据帧长度的数据包5 000 次,测试在2 种不同的通信方式下接收数据包的次数和未接收数据包的丢包率。具体测试结果如表2 所示。从表中可以看出,本文提出的DMA 与中断方式的通信技术与传统定长收发串口通信相比,具有较高的容错度,并增加了数据传输容量。

表2 两种通信方式测试结果Table 2 Results of two communication methods

组态界面窗口及其测试结果如图12 所示。该装置从2017 年至今一直能够在某舰船现场健康、可靠运行,充分检验了基于DMA 与中断融合技术在串口数据变长收发方面的有效性。

图12 组态界面窗口及其测试结果Fig. 12 Configuration interface window and its test results

5 结 语

针对传统通信方法不能解决数据变长收发的难题,本文提出了DMA 与中断融合通信技术。构建由组态与以STM32F417 为核心的主控制器串行通信系统,由通信协议来设计通信握手和通过DMA 控制器来设计数据变字节长度传输。实现了舰船监控系统的数据交互功能,并提高了串行通信数据传输容量和数据的容错度,具有一定的应用价值。但是组态与以STM32F417 为主控制器间数据长度阈值有限,因此还需做进一步的研究。

猜你喜欢

寄存器组态串口
浅谈力控ForceControl V7.2组态软件在自动化控制工程中的应用
ZnF低激发电子态的组态相互作用研究
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
常用电子测速法在某数字信号处理器中的应用*
飞思卡尔单片机脉宽调制模块用法研究
组态软件技术现状与发展
移位寄存器及算术运算应用
MCS—51单片机中的多串口通讯技术的应用
高职“工业组态技术”课程建设探析