Chinese Journal of Ship Research
基于DMA与中断方式的组态监控系统容错通信技术
孙万峰1,李维波*1,2,李齐1,邹振杰1,卢月1
1武汉理工大学自动化学院,湖北武汉 430070 2西藏大学供氧研究院,西藏拉萨 850012
摘 要:[目的]为实现舰船并网控制系统中监控模块的数据快速交互,提高通信数据的容错率,同时减少CPU额外占有率,提出直接存储器访问( direct memory access, DMA )和中断方式的通信技术解决变长传输难题。[方法]根据并网控制系统中监控模块的组态软件与单片机通信协议,设计组态与主控制器通信握手流程,并以 STM32F417作为主控制器,借助串口接口硬件电路,在克服传统串口通信数据定长收发缺点的基础上提出DMA和中断方式的通信技术。[结果]在某舰船综合电力系统的并网控制装置上,采用该通信技术,实现了监控数据变长传输功能,且提高了串行通信数据的传输容量和数据的容错度。[结论]研究成果在舰船并网控制系统的监控模块中具有一定的实践指导意义与参考价值。
关键词:DMA技术;组态通信协议;通信握手;监控系统
中图分类号: U665.2文献标志码:A DOI:10.19693/j.issn.1673-3185.01935
器等)的健康状态量,因此,主控制器需要处理庞杂的数据量并上传给组态模块, 并将组态模块处理后的结果下达给主控制器。为适应这些情况,对舰船并网控制系统中监控模块的串口通信有了更高的技术要求。并且由于庞杂的交互数据实时变化,极易造成数据长度超过缓冲器阈值,致使控制器无法正常通信,进而产生数据丢失,造成舰船并网控制系统中监控模块不能实时读取底层电气设备的健康状态、下达来自主控制器的控制指令和回传指令给主控制器。因此,实现数据的变长收发,对于舰船并网控制系统中监控模块的串口通信就显得尤为重要。
目前串口通信技术有许多种[4-6] ,如查询法、中断法和直接存储器访问法(DMA)等,如何解决大容量的变字节长度的数据通信仍然是串口通信技术领域中的一个难点问题。传统的串口通信方法对于查询法而言,利用代码来识别相关寄存器标志位的状态,再依据该状态执行对应操作,该方法适用于循环数据收发,且耗费大量CPU 资源,极大降低了CPU性能。基于中断法的串口通信,是外设发送数据后产生中断,通知CPU 读取数据。对比研究中断法和查询法得知,中断法效率更高,不过中断法需要进行保存断点和恢复断点的操作,如果发送数据所需的时间比保存断点和恢复断点总共花费的时间少,那么通信过程中可能会出现数据丢失的问题。所以中断法应用于多字节数据收发通信有其局限性,中断法一般用在数据定长的收发场合。借助DMA法的串口通信,在不需要CPU的干预下,利用DMA控制器和外围设备之间构成数据传输通道,并且数据可以借助DMA控制器写入指定存储器中。在数据传输完成后,通知CPU撤销该数据传输通道。理论研究与运行实践表明,如果单独使用DMA 法,并不能解决数据实时变长收发的技术难题。
针对舰船并网控制系统中监控模块的大容量、变字节长度的数据实时通信技术难题,本文将提出一种基于DMA和中断两种方式结合使用的串口通信方法,采用DMA发送中断和串口接收中断进行数据变长收发,实现舰船并网控制系统中监控模块的庞杂数据实时交互的功能,最终实现底层控制器与上位机之间健康、可靠、实时的串口通信。
1系统构成
舰船并网控制装置中的监控系统,简称为组态监控系统。图1为组态监控系统的整体架构,组态监控系统由组态监控界面、主控制器和底层控制器3大关键部件组成。组态监控界面的功能是实时显示舰船状态量以及当前风险等级。通过监视组态监控界面,以确保底层控制器的正常运行。其中底层控制器包括电站控制器、逆变控制器以及斩波器等。本文以电站控制器为例,组态监控界面显示变量主要为发电机电压、频率、功率和逆变器电压、频率、功率以及该系统电压风险指标、频率风险指标和功率风险指标等。为适应舰船组态监控系统的底层控制器存在种类多、数量多、通信模式复杂的特点,舰船并网控制装置中的监控系统通过CAN总线将底层控制器数据量转换为信息流传送给主控制器。
在舰船并网控制装置的监控系统中,主控制器不仅要处理来自底层控制器的数据,还要将处理后的数据上传给上位机。为确保数据采集的实时性以及数据传输的可靠性,采用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)表示数据
链路实体。
组态与主控制器之间的握手流程为:首先,当组态处于发送写命令工作模式下,主控制器会根据写命令下的数据帧长度判断主控制器所处的工作模式,应答“写”命令或者“读”命令;其次,校验组态发送的一帧数据中的字头和CR 位,若校验成功,则主控制器响应输出“写”成功,表示两者间握手成功;同理,当组态处于“读”命令工作模式下,主控制器校验“读”命令的数据帧,若校验成功,则表示“读”命令成功,否则“读”命令失败。
3 DMA与中断通信技术
舰船并网控制装置中的监控系统通信技术有 2个重点问题:一是组态监控界面和主控制器通信通道双方如何实现可靠握手;二是在实现可靠握手后,如何实现数据流在传输过程中实时变长度发送和接收。本节从DMA 控制器的结构、基于DMA与中断的通信流程以及DMA 与中断的通信时序几个部分,阐述数据流变长传输的基
3.2基于中断模式的DMA通信流程分析
基于中断模式的DMA 通信工作流程如图4所示。DMA通信流程为:首先,源端存储设备向
DMA控制器(DMAC)发出任务请求,由于主控制器从底层控制器采集的数据,直接通过数据缓冲器存储于主控制器内部集成的存储器中,不需要
通过硬件握手模块。在预处理过程中,DMA控制器利用内部逻辑来解读CPU 传输过来的信息。并且 CPU根据它当前所处工作状态来确认是否释放AHB总线权限。其次数据传输过程为从源本方法与处理技术。
3.1 DMA与串口的桥接原理
本文主控制器是以 STM32F417 芯片为CPU且有多路外设的电路板卡。DMA控制器在主控制器中所处的位置,如图3所示。
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与串口数据交互的桥接信道。
端设备读取或者向目的设备写入。读操作阶段时必须先保证源端设备已经准备好数据,读取数据大小由CPU配置、数据总线宽度、地址总线宽度等因素决定。最后,当DMA控制器内部计数器计数到达设定值,则完成DMA数据传输过程,退出中断程序,DMA释放 AHB总线控制权限,等待下一次数据传输预处理。
3.3 基于中断的DMA通信时序分析
基于中断的DMA控制器的通信时序图如图5所示。
中断的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控制器时序的中断优先级。
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应答流程内容为组态向主控制器写命令,对底层控制器的电压、电流、功率和温度等模拟量进
图 8为中断流程图,包括DMA发送中断流程(图 8 ( a ))和串口接收中断响应流程(图8 ( b ))。图 8(a)中,DMA 发送中断流程内容为对DMA 控制器和DMA发送中断进行初始化,并根据是否
行赋值,并计算风险指标。图7(b)中,串口 2应答流程内容为主控制器读命令,上传风险指标给组态界面。
存在DMA发送中断请求标志来判断数据帧发送情况。图8(b)中,串口接收中断响应流程为初始化串口及串口中断配置,根据串口接收中断请求标志来查阅数据帧的接收情况。
4.2现场测试结果
串口通信接口的硬件拓扑如图9所示。它由主控制器、收发器ADM2587、组态接口组成。图 9中的隔离模块 ADM2587 采用 ADI 公司的 iCouple以舰船并网控制装置中的监控系统供电部分的可视化通信设计为例,验证基于DMA 与中断融合技术在串口数据变长收发方面的有效性。现场联调测试装置包括主控制器(图10)、舰船并网控制装置中的监控系统的前电站显控模块和后电
技术,集成了三态差分线路驱动器、差分输入接收器和 DC/DC转换器,实现了内部信号集成与电源隔离[9-10],同时减少了外部共模信号对数据传输的干扰。该串口电路可为软件程序编程以及数据的传输提供硬件支持。
站显控模块(图11)等。其中,组态界面由1#机组参数栏(又称主窗口)、2#机组参数栏、3#机组参数栏、4#机组参数栏、1#柴发参数栏、2#柴发参数栏以及报警记录栏7个窗口组成[11]。
在初始化串口时,合理配置波特率对舰船监
图 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与中断方式的通信技术与传统定长收发串口通信相比,具有较高的容错度,并增加了数据传输容量。
组态界面窗口及其测试结果如图12 所示。该装置从 2017 年至今一直能够在某舰船现场健康、可靠运行,充分检验了基于DMA与中断融合技术在串口数据变长收发方面的有效性。
5 结 语
针对传统通信方法不能解决数据变长收发的难题,本文提出了DMA 与中断融合通信技术。构建由组态与以 STM32F417 为核心的主控制器串行通信系统,由通信协议来设计通信握手和通过 DMA控制器来设计数据变字节长度传输。实现了舰船监控系统的数据交互功能,并提高了串行通信数据传输容量和数据的容错度,具有一定的应用价值。但是组态与以STM32F417 为主控制器间数据长度阈值有限,因此还需做进一步的研究。
参考文献:
[1] 滕磊, 高岚. 船舶与岸电无缝并网系统优化控制策略 [J]. 船海工程, 2018, 47(5): 78–82.
TENG L, GAO L. The optimal control strategy of the ship and shore electric seamless grid-connected system[J]. Ship & Ocean Engineering, 2018, 47(5): 78–82 (in Chinese).
[2] 汤旭晶, 喻航, 孙玉伟, 等.基于虚拟同步发电机的船舶光伏并网逆变控制策略[J]. 中国航海, 2018, 41(1): 28–33.
TANG X J, YU H, SUN Y W, et al. Grid-connected photovoltaic ship inverter control strategy based on virtual synchronous generator[J]. Navigation of China, 2018, 41(1): 28–33 (in Chinese).
[3] 潘嘉进.船舶电力系统电压不平衡时光伏并网系统控制研究 [D]. 大连:大连海事大学, 2016.
PAN J J. Research on control strategy for photovoltaic grid-connected system under marine power system grid unbalanced[D]. Dalian: Dalian Maritime University, 2016 (in Chinese).
[4] 张海超, 张北伟. 基于 STM32 的多串口通信系统设计 [J]. 国外电子测量技术, 2019, 38(2): 99–102. ZHANG H C, ZHANG B W. Designing of multi-serial
communication system based on STM32[J]. Foreign Electronic Measurement Technology, 2019, 38(2): 99–102 (in Chinese).
[5] 郭勇, 何军. STM32单片机多串口通信仿真测试技术研究 [J]. 单片机与嵌入式系统应用, 2015, 15(7): 72–75. GUO Y, HE J. Research on multi-USART communication simulation and test technology of STM32[J]. Microcontroller and Embedded System Application, 2015, 15(7): 72–75 (in Chinese).
[6] 樊龙. 基于 STM32 的智能仪表数据采集系统的设计 [D]. 太原:太原理工大学, 2014.
FAN L. Design of data acquisition system for intelligent instrument based on STM32[D]. Taiyuan: Taiyuan University of Technology, 2014 (in Chinese).
[7] 欧志新. 基于工控组态与STC 单片机数据通信过程控制的设计 [J]. 电子设计工程, 2019, 27(7): 88–93.
OU Z X. Design of data communication process control based on configuration software and STC MCU[J]. Electronic Design Engineering, 2019, 27(7): 88–93 (in Chinese).
[8] 卞学愚. 基于 AHB 总线协议的DMA 控制器设计 [D].西安:西安电子科技大学, 2018.
BIAN X Y. The design of DMA controller based on AHB bus protocol[D]. Xi ’an: Xidian University, 2018 (in Chinese).
[9] 何凯彦, 李维波, 许智豪, 等. 基于双CPU 的双以太网与双 RS-422 交互通信技术 [J]. 中国舰船研究, 2020, 15(3): 177–184.
HE K Y, LI W B, XU Z H, et al. Dual ethernet and dual RS-422 interactive communication technology based on dual CPU[J]. Chinese Journal of Ship Research, 2020, 15(3): 177–184 (in Chinese).
[10] CHIU M C, CHENG H C, LI Y M. The design of a PC-based smart home for security and electrical appliances at home[C]//2015 International Conference on Power Electronics and Energy Engineering (PEEE). Hong Kong, China: PEEE, 2015: 233-238.
[11]华逸飞, 李维波, 方雄伟, 等. 舰船能量管理系统中的VxWorks 可视化技术 [J]. 中国舰船研究, 2018, 13(4): 149–154.
HUA Y F, LI W B, FANG X W, et al. Visual design technology of VxWorks adopted in ship energy management system[J]. Chinese Journal of Ship Research, 2018, 13(4): 149–154 (in Chinese).