基于μC/OS-Ⅲ和emWin的供电综合保护器设计*

2022-01-18 02:58吴尧辉吴昊珍
传感器与微系统 2021年12期
关键词:信号量保护器实时性

吴尧辉, 冯 冲, 吴昊珍

(1.河南理工大学 电气工程与自动化学院,河南 焦作 454000;2.河南理工大学 许继电气股份有限公司煤矿井下智能供电系统实验室,河南 焦作 454000;3.郑州工商学院,河南 郑州 451400)

0 引 言

电网智能化发展是电网技术发展的必然趋势,供电保护器面临着功能复杂化、美观图形交互界面、实时性好等要求。小型前后台系统在应用任务越来越多的情况下,后台的应用任务将变得异常复杂,前台的中断服务程序也并不满足供电综保对硬实时特性的要求;传统的数字交互界面不能直观和美观地将数据呈现给工作人员。可剥夺型μC/OS-Ⅲ多任务操作系统以较好的实时性被广泛的应用于医疗技术、消费电子、工业控制等领域;STemWin图形库文件的API函数可以方便、快捷地构建美观的人机交互界面[1,2]。

本文采用基于ARM Cortex-M3内核的STM32F103为主控芯片,3.2in(1in=2.54 cm)的LCD触摸屏用于人机交互界面,设计了供电综保系统。μC/OS-Ⅲ对供电综保多任务统一管理,嵌入式图形化emWin库开发为LCD触摸屏提供图形人机交互界面,配有μC/Probe软件对系统各项数据进行监测,有利于系统的改进和升级。

1 保护器总体方案设计

1.1 保护器系统硬件设计

供电综保硬件由单片机(micro-controller unit,MCU)和外围硬件电路构成,如图1所示。MCU选择高性能、低功耗、主频为72 MHz的Cortex-M3作为主芯片满足供电保护器系统的外设需求[1],外围硬件电路分成六个模块,电源模块包括MCU可识别的直流3.3 V电压、电气信号调理电路所需12 V电压、人机交互模块所需的5 V电压和用于漏电检测判断所附加的外部24 V电压;开关量输入与继电输出模块用于检测开关状态和执行开关动作;电网参数获取模块主要功能是将参数获取后经信号调理电路把电气信号转换成中央处理器(central processing unit,CPU)进行A/D转换能识别的0~3.3 V单极性信号;通信模块包括保护器与上位机之间的通信和各保护器间的通信两种;数据存储模块增加了SD卡存储方式;ILI9341触摸液晶屏用于人机交互模块。

图1 保护器硬件框图

1.2 保护器功能及任务划分

在使用μC/OS-Ⅲ操作系统的前提下,任务具有“并发性”的基本特征,根据图1的系统硬件结构框图对任务划分为数据采集处理任务、保护任务、显示任务、触摸任务、通信任务等12个应用任务,实现功能和内容如表1所示。

表1 应用任务划分及内容

数据采集处理综合考虑实时性与精度的平衡采用双模数转换器(analog to digital converter,ADC)采样提高采样率[3],处理算法包括快速傅里叶变换(fast Fourier transform,FFT)算法、均方根和平均值算法[4,5]。ADC采样、SD卡存读及CAN通信都采用直接存储器访问(direct memony access,DMA)方式。

1.3 系统工程文件组成

保护器系统总体软件以MDK开发环境,采用分层思想,如STM32库函数、操作系统、emWin图形库等,分层结构便于系统设计与升级。软件层包括用户所需的应用程序层、操作系统层和CMSIS标准层[6],如图2所示。应用程序受操作系统的管理,操作系统层包括μC/OS-Ⅲ操作系统、emWin图形库、FatFs文件系统,CMSIS标准层是ARM公司与各芯片厂商建立,位于操作系统层与硬件层之间,提供外设接口和操作系统软件接口,便于软件的移植。

图2 系统软件层次

2 保护器人机交互设计

人机交互界面采用3.2寸液晶电阻触摸屏,分辨率为320×240。由于普通I/O口控制效率太低,通过配置时序寄存器和控制寄存器由FSMC的NORFLASH模式8080接口控制ILI9341液晶屏;通过XPT2046芯片读取触摸位置的ADC电压值转化成坐标来实现触摸功能。

emWin图形库位于硬件层与用户应用层之间,运行在硬件层之上并向应用层提供GUI相应API函数接口,起到承上启下作用。分层的概念使应用程序不依赖硬件平台,更加便于移植和优化。从表2的emWin软件架构可以看出,包括控件层、窗口管理器、GUI核心层、存储设备。

表2 emWin软件架构

保护器的人机交互界面包括主界面和4个二级界面,主页面以表盘的形式动态实时显示电压、电流、绝缘阻抗等,4个二级界面用于查看和设置详细电网系统的各项参数,包括数据实时显示、保护参数设置、故障信息查询和系统时间显示。保护器主界面如图3所示。

图3 保护器主界面

Segger公司为emWin开发的小工具对于交互界面的前期设计极其方便,如GUIBuilder对界面进行初设计后可生成C代码文件,BmpCvtST.exe软件将绘制好的背景图PNG格式的图片转换成C语言代码的位图显示,FontCvtDemo软件生成字库或字模等[7]。

保护器对交互界面数值更新与显示有实时性和美观性要求。主界面的创建使用位图显示的2D静态表盘和动态指针,使用静态图像表盘+动态指针的分层处理可使主界面刷新变的流畅,由于位图图片存储所需空间较大,所以选择位图、指针及显示数值的分段存储方式。电网数据实时显示若选择直接使用窗口重绘功能将会导致屏幕不断闪烁,因此,二级界面中的数据显示窗口选择存储设备进行渲染并通过回调机制实时显示电网参数。中文字库若选择直接读取外置字库的方式,CPU利用率变大且速度较慢,因此使用外部FLAH直接调用字库的方法。

3 μC/OS-Ⅲ操作系统应用设计

3.1 μC/OS-Ⅲ操作系统移植与配置

相较于以前版本,μC/OS-Ⅲ功能和性能都有所提高,已经是第三代内核系统。它是一个可裁剪、可固化、基于优先级可剥夺型的多任务内核。由于源代码开放使其有更多的学习资料,依靠稳定性和实时性好等特点也广泛应用于工业控制、信息处理等领域。下载官方相应内核评估板的μC/OS-Ⅲ源代码文件,大大降低移植的复杂度。操作系统文件结构[8]如图4所示,在工程中添加操作系统文件组,移植工作主要包括(5)和(3),(5)主要针对特定CPU架构进行修改,(3)是保护器功能所需外设的交互代码。文件组(8)根据对应用任务运行时间、运行频率以及实时性的不同要求,对应用任务进行的合理配置,os_cfg.h文件体现了μC/OS-Ⅲ操作系统是一个可裁剪内核,可根据设计需要将#define OS_CFG_APP_X_EN置1或0(X表示配置项)。

图4 操作系统文件结构

3.2 应用任务的配置

根据对应用任务运行时间、运行频率以及实时性的不同要求,对应用任务进行的合理配置,从而保证系统的实时性和运行稳定性。应用任务配置如表3所示,数据采集任务使用ADC以DMA方式进行采集,因此CPU执行采集任务的时间很短,小于1 ms,使用20 ms延时函数控制采样周期,在采集延时过程中,CPU执行其他任务。在20 ms的延时时间段内,数据处理任务处理上一次采样的原始数据,设计要求小于5 ms,四个保护任务运行时间要小于5 ms,综上理论上保护类任务的总延时不会超过30 ms,满足各种保护任务的实时性要求。

对于应用任务,优先级的配置也更加灵活却也极为重要,优先级需要综合考虑任务重要性、任务运行时间限制、任务运行频度和留有适当的间隔。任务栈空间的分配原则是先给每个任务足够大的栈空间后充分利用μC/Probe的任务监视功能,得到每个任务栈的实际使用情况,所得值再乘以1.5~1.8安全系数用于中断嵌套。

3.3 应用任务通信与资源管理

在μC/OS-Ⅲ中任务间通过全局变量和消息队列进行数据通信,任务消息队列在任务创建后就存在于该任务TCB中,消息传递速度较快,适合通信量较少的任务间。对于数据量较多的则选择全局变量的方式。如表4所示,保护器系统数据资源表。

表4 保护器系统数据资源表

共享资源有数据采集的原始数据、数据处理任务的电气信号、故障信息结构体、时间日期结构体。对于共享资源的处理有关中断、信号量、互斥信号量等,若采用关中断方式保护共享资源则不利于保护器系统实时性,也增加中断延迟时间;若采用信号量方式,会导致任务优先级反转问题,μC/OS-Ⅲ操作系统是基于任务优先级剥夺CPU使用权,低优先级任务先于高优先级任务执行显然不合理;因此本设计使用互斥信号量方式对共享资源进行保护。

数据采集到数据处理再到保护类任务由信号量和事件标志组实现了严格的双向同步,因此不会产生对共享资源的破坏,不需要互斥信号量,加快了保护类任务的执行。对电气信号、故障信息、时间信息使用互斥信号量进行共享资源管理。

3.4 应用任务行为同步管理

μC/OS-Ⅲ操作系统提供了多种同步机制的内核对象,如事件标志组、信号量、消息队列等[9]。如图5所示任务间同步运行,包括数据采集处理与保护类任务的同步、保护类任务故障时与其他任务的同步、中断服务管理任务与通信及时间日期的同步。

图5 任务间同步运行与通信

保护类任务以高优先级先运行,在运行完毕后将标志位置1,等待事件标志组全部置1后数据采集任务执行,ADC采集电气信号后由数据处理任务对原始数据处理并生成保护类任务所需的各项参数,并发布广播信号,使保护类任务处于就绪态。

当有故障产生,保护类任务执行并在故障解除后以任务消息队列的形式进行单向同步,SD卡存储、GUI显示、通信任务的上位机显示以阻塞的方式等待任务消息。

中断使用延迟发布模式,通过优先级为0的中断服务管理任务发布任务消息实现RTC每秒定时和CAN通信报文的接收和发送。

4 系统运行监测

使用μC/Probe对综保系统运行检测情况如图6所示,能够显示任务状态、任务优先级、切换频率和任务堆栈等,CPU利用率为64.32 %,符合CPU利用率在60 %~70 %之间的要求;堆栈利用率均在50 %~70 %之间,考虑到任务堆栈要有1.5~1.8倍的余量,所以任务堆栈设置合理。在不对系统进行任何操作时,优先级较低的空闲任务和GUI任务的任务切换频率和CPU运行率较大,保证低优先级任务能为高优先级任务运行让出CPU使用权;当有参数设定及故障查询后,数据采集处理任务和保护判断类任务显示各项数据相近,满足任务间的同步及正常通信,保证了系统的实时性。

图6 系统运行检测

5 结束语

本文介绍了基于μC/OS-Ⅲ和emWin的供电综合保护器设计。设计的保护器具备常见故障类型的保护判断及动作功能,根据应用任务要求配合μC/OS-Ⅲ操作系统实现多任务运行管理,系统能够稳定运行且满足任务实时性要求,emWin图形库设计的人机交互对电网各参数的监测有更加直观和美观的体验。

猜你喜欢
信号量保护器实时性
智能冗余断相保护器的设计与完善
Nucleus PLUS操作系统信号量机制的研究与测试
航空电子AFDX与AVB传输实时性抗干扰对比
你了解漏电保护器和空气开关吗
计算机控制系统实时性的提高策略
基于STM32的智能低压保护器的研制
浪涌保护器在化工行业中的应用
硬件信号量在多核处理器核间通信中的应用
一种车载Profibus总线系统的实时性分析
μC/OS- -III对信号量的改进