,志云, ,
(江西省特种设备检验检测研究院,江西 南昌 330096)
基于ARM和μC/OS-Ⅱ的电梯平衡系数测试系统的研制
刘毅,刘志云,胡竑,程远
(江西省特种设备检验检测研究院,江西 南昌 330096)
研制了一种以ARM嵌入式微处理器 LPC2214为硬件平台,以μC/OS-Ⅱ嵌入式操作系统为软件核心的电梯平衡系数测试系统。描述了系统的总体结构,给出了测试系统的软、硬件设计思想和架构,阐述了PC端的软件模块设计。
电梯;平衡系数;ARM;μC/OS-Ⅱ
电梯平衡系数是保证电梯安全运行的重要参数之一[1]。提出了一种电梯平衡系数智能测试系统,该测试系统对从电流互感器测得的电流值进行采样、分析和存储,并可通过自带的面板按键和液晶显示屏进行相关参数的输入和相关功能的选择。测试完成后,对数据进行存储管理、通过存储的测试数据,绘制平衡系数曲线,并计算出平衡系数。如果平衡系数不在要求范围内,提出相应的处理办法。测试系统将通过RS232串口将数据传递给计算机,由上位机软件自动填写测试报告,并打印出测试报告。
硬件部分主要在LPC2214的基础上,设计了交流电流采集电路模块、显示模块以及通讯模块。数据采集模块主要包括信号输入电路和信号处理电路,输入数据采集通道由互感器、高速A/D、电压比较器、FPGA构成的频率跟踪电路和频率控制电路构成。显示模块主要由液晶触摸显示屏组成。通讯模块主要包括串口电路和JTAG电路。
软件部分是以μC/OS-Ⅱ[2]嵌入式实时操作系统为平台来实现。设计首先需完成μC/OS-Ⅱ在 LPC2214的移植,并在其基础上划分为主任务、采样任务、触摸屏扫描任务、串口任务和显示任务。主要完成采集A/D通道数据,A/D数据处理,触摸屏指令接收和响应、平衡系数计算以及数据传输等功能。
平衡系数的计算要用到电流值,首先要完成交流信号的采样,高速采样是由FPGA完成的。外部的电流信号通过高精度电流钳夹和补偿电路转换成电压值,这个电压信号再通过可编程放大器调整到AD976最高分辨率的信号进行转换。 当一个交流信号加到AD976,同时通过过零比较器LM311准确地计算出信号的周期,对其进行锁相,再对指定锁相周期的A/D芯片的原始采样点进行相乘累积。FPGA的良好编程保证了上述方案的运行。
具体实现中,测量系统的 CPU 从A/D 转换器读取的数据是电流的瞬时值,因此,应根据电流的瞬时值,采用离散化的方法计算出电流的有效值。
ΔTm为相邻2次采样的时间间隔;um为第m-1个时间间隔的电流采样瞬时值;N为1个周期的采样点数。
在相位比较器、低通滤波器和压控振荡器构成的锁相环内加入N分频器,输入fi为被测信号的频率,作为锁相环的基准频率,输出fo为采样频率。fo经N分频后与fi相比较,根据锁相环工作原理,锁定时fo/N=fi,即fo=Nfi。
由于锁相环的实时跟踪性,当被测信号频率fi变化时,电路能自动快速跟踪并锁定,始终满足fo=Nfi的关系,即采样频率为被测信号频率的整数(N)倍。用该输出去控制采样/保持器,并启动A/D转换,这样就可以使N个采样点均匀分布在被测电网信号的1个整周波内,消除了同步误差,实现了无相位差的同步采样。锁相环相位锁定时,压控振荡器VCO能在一定范围内自动跟踪输入信号的频率变化,在频率有畸变的情况下也能确保数据的同步采样,保证测量精度。
系统中的频率跟踪电路由FPGA设计,以实现工频信号的锁相倍频,分频比为1/64。在工频信号恰好为50Hz的情况下,该电路的锁相倍频频率为50×64=3 200Hz。并且,由于采集的对象为电流等模拟量,所以必须经FPGA控制高速AD976将模拟量变成数字量,存入FPGA中。当数据存满后向ARM发中断申请,ARM响应后从FPGA中读取数据,将FPGA的数据存入相应的RAM内。然后进行处理,将进行处理后的电流值在ARM控制的显示器上进行显示。
软件设计包括3个层次:第1层为硬件驱动层,这是仪器软件和硬件的接口部分,通过调用硬件驱动程序直接操作硬件;第2层为任务层,通过调用硬件驱动程序和操作系统内核函数完成各任务应用程序的设计;第3层为μC/OS-Ⅱ操作系统层,这是整个系统的管理核心,通过协调任务之间的通信和任务切换,实现对所有任务进行统一的调度和管理[3]。
在μC/OS-Ⅱ操作系统的管理下,测试系统定义了主任务、采样任务、触摸屏扫描任务、串口任务和显示任务。
系统开机后由主任务启动这些功能模块,为了保证数据的实时性,采样任务为固定的400ms。触摸屏为外部硬件中断,由任务传递消息量来执行。显示任务最终把采样的数据发到智能屏上显示。LPC2214在设备中是管理CPU,高速采样是由FPGA完成的。在进行任务设计前,首先在主函数中,进行操作系统的初始化,创建管理任务,最后启动多任务操作系统。
基于以上思路和测试仪的要求,划分了以下几个任务,各任务之间的相互关系如图1所示。
图1 各任务间的相互关系
3.1 触摸屏任务
首先初始化引脚定义(只执行1次),然后创建触摸屏任务消息队列,该任务循环等待用户触屏操作。当发生触屏操作产生串口硬件中断,对用户的触控操作进行必要的去抖动,发送对应键码作为消息量参数发给主任务。主任务处理对应的消息队列,并重新开始触摸屏任务。
3.2 采样任务
采样任务是一个受控任务,完成FPGA的数据交换和指令执行。包括采样周期,锁相频率都由主任务调度。但其首先要初始化FPGA,并创建采样任务消息队列。然后定时开始采样任务,发送消息量参数给主任务。而主任务到指定的数据区(双口RAM)取数,并重新开始采样任务。
3.3 串口任务
利用一个消息队列接收串口中断中的消息,即是对通信帧进行处理和解释,其中通信帧采用4字节格式,再执行相应的操作。串口中断服务程序则接收到4字节的通信帧后触发中断,将内容读取后发送到串口任务的消息队列。若触发了发送中断,同时把缓冲区中的测量值发送到上位机。
3.4 显示任务
显示任务作为定时任务,完成采样数据到智能屏的显示。分为ASCII码显示、汉字显示、数值显示、字符显示、曲线显示和图形显示。
其流程为:初始化智能屏对应的I/O口;创建显示任务消息队列;定时开始显示任务,发送消息量参数给主任务;主任务取出数据按照标准指令格式发送到智能屏,并重新开始显示任务。
采用.NET Framework 平台开发上位机系统,用于上下位机通信状态识别、控制、数据传输协议和数据传输,软件界面编写和平衡系数曲线绘制,生成检测结果Word报告。
4.1 串口通信的实现
在.NET Framework 2.0中提供了 SerialPort 类,该类主要实现串口数据通信等。
4.2 界面编写和曲线绘制
曲线图是用DrawLine( )函数将各个点一点一点连接起来,所以大部分时候也叫折线图。但是.NET中还有一个DrawCurve( )函数,它可以直接画出一条曲线或者折线,还可以设置张力(tension)值。
4.3 报告生成
Office是基于COM组件技术开发的,属于非托管程序,然而C#使用的都是托管程序,那么如何使用非托管的COM组件,就是操作Word的第1个问题。通过转换工具tlbimp.exe,可以把COM组件转化为.NET Framework可以直接调用的DLL文件。
系统采用以ARM为核心、基于μC/OS-Ⅱ的设计方案,以任务形式划分功能,为其功能扩展和产品升级提供了方便,降低了开发难度。传感器、高速A/D、电压比较器、FPGA构成的频率跟踪电路和频率控制电路构成数据采集电路,提高了系统稳定性和测量精度。与以往基于单片机的控制系统相比,本系统具有更高的运算速度和更强的数据处理能力,提出的解决方案已在实验中得到初步验证,具有一定稳定性。
[1] 毛怀新.电梯与自动扶梯技术检验[M].北京:学苑出版社,2001.
[2] Labrosse J J.嵌入式实时操作系统μC/OS-Ⅱ[M]. 邵贝贝,译.2版.北京:北京航空航天大学出版社,2003.
[3] 周慈航,吴光文.基于嵌入式实时操作系统的程序设计技术[M].北京:北京航空航天大学出版社,2006.
A Elevator Balance Coefficient Test System Based on ARM and μC / OS-Ⅱ
LIUYi,LIUZhiyun,HUHong,CHENGYuan
(Special Equipment Inspection and Testing Institute of Jiangxi Province,Nanchang 330096,China)
A elevator balance coefficient test system based on ARM LPC2214 and μC / OS-Ⅱ is developed in this paper. It describes the overall structure of the system firstly, then introduces the ideas and basic architecture of the test system software and hardware design. The software modules design on computer is discussed finally.
elevator;balancing coefficient;ARM;μC/OS-Ⅱ
2014-04-23
国家质检总局质量监督技改技装专项(2003zjjz174)
TP216
A
1001-2257(2014)10-0035-03
刘毅(1983-),男,江西南昌人,工程师,研究方向为机电类产品检验检测;刘志云(1962-),男,江西南昌人,教授级高级工程师,研究方向为机电类产品检验检测。