摘 要:本文简要介绍了一种基于嵌入式操作系统平台的网络化电能表,主要的硬件结构包括ARM核微控制器LPC2104,单相功率/电能计量芯片CS5460等。利用LPC2104的SPI三线串口控制CS5460,从中读取所测得的电流、电压及电能值,并能够通过嵌入式modem将数据传送到Internet上。
关键词:电能表;ARM;嵌入式实时操作系统
引言
目前,测量仪表正向网络化方向发展,每一个单独的嵌入式仪表都将成为Internet上的一个节点。本系统在ARM+RTOS的方式下实现了电子式电能表的网络化,硬件平台以ARM核微控制器LPC2104为核心,软件系统则是在mC/OS-II操作系统下开发的。
LPC2104是Philips公司推出的一款以ARM7TDMI-S为核心的32位微控制器。LPC2104内部集成了很多功能,包括128k字节的高速Flash存储器、双UART、多个32位定时器,以及SPI、I2C串行接口和RTC等。其中UART1带有完全的调制解调器接口,可以用于网络产品。
CS5460是Cirrus Logic 公司的单相功率/电能计量芯片,带有串行接口。CS5460集成度很高,里面包含了两个△∑ADC、高/低通数字滤波器、能量计算单元、串行接口和数字—频率转换器等。CS5460将它测得和计算出的结果分别保存在它的各个寄存器中,而能量值则通过脉冲输出给CPU,还可以驱动计度器。
该网络化仪表的工作原理是:首先由采样电路将输入的大电流/电压转化为CS5460能够接收的小电压信号。CS5460根据采样的电流/电压计算出电能,然后将电流、电压、电能和功率等通过三线双向串行接口传送给CPU(能量值通过脉冲输出),CPU根据键盘的输入指令在液晶显示器上显示结果或者通过串口将结果传送到Internet上。LPC2104本身既作为CS5460的控制器,又作为嵌入式网关,实现了电能表的远程通信功能。
CS5460只能接收小于150mV的小电压信号,在采样电路部分应选择适当的电流/电压互感器,将输入的电流/电压转换到CS5460能够接收的电压范围。
在电压采样电路中,取入的电压经过电压互感器降压、隔离,然后通过低通滤波。最后端的电容C1表现出很大的阻抗,用于取电压。电流采样电路比电压采样电路多了取样电阻R5。R5用于将从电流互感器出来的电流转换为电压。
CS5460与LPC2104以标准SPI接口,非常容易。由于CS5460是以定宽变频脉冲输出能量值,因此将其能量输出引脚与LPC2104的一个外部中断引脚相连,用来收集能量值。
由于电能的累计值以及校准常数需要保存到EEPROM中,所以扩展一片24C16用来保存这些数值。LPC2104本身带有I2C接口,扩展EEPROM非常容易。
LPC2104的UART1口带有完全的调制解调器接口。由于电能表接入Internet所需要传输的数据量不大,因此可以选用低速的modem芯片,这里选用OKI公司的MSM7512B。MSM7512B是1200bps半双工的FSK调制解调器。采用3~5V单电源工作,功耗较低。
另外需要注意的是CS5460输入/输出信号均为5V,而LPC2104的信号为3.3V,因此两者之间需要加上电平转换电路。
ARM应用系统可以基于嵌入式操作系统平台,也可以不使用操作系统,直接通过启动代码启动。为了方便实现网络化功能,本系统选择基于嵌入式操作系统平台的方式。嵌入式实时操作系统mC/OS-II在裁剪之后仅有50KB左右,考虑到LPC2104内部就有128K的Flash存储器,故可以选择在其中移植mC/OS-II。
首先需要将mC/OS-II操作系统移植到LPC2104微处理器上。为了便于移植,mC/OS-II的源代码大部分是用C语言写的,移植过程中只需要重写少数几个与处理器直接相关的文件就可以了。 LPC2104上移植mC/OS-II已经有成功的实例,可以从网上得到。
mC/OS-II本身并不支持网络功能。为了实现电能表的网络化,还需要移植TCP/IP协议。由于此嵌入式系统本身的功能比较单一,因此可以选择简单的嵌入式协议栈,将不需要用到的协议去掉。由于电能表需要传输的数据量不大,但可靠性要求较高,因此在传输层应该选用可靠数据传输控制协议TCP,在网络层选用基本数据传输协议IP。
软件部分主要实现以下功能:
1. 数据采集及计算。计算部分主要由CS5460完成,当发出启动转换的命令之后,延时适当的时间,就可以从相应的寄存器中读出所需要的测量值。电能值是以脉冲形式传送给CPU的。有效功率的测量是通过对1秒的脉冲进行计数实现的。例如可以编程控制CS5460每转换10焦耳的能量时产生一个脉冲,然后以脉冲计数乘以10计算出有效功率。每隔几分钟,电流累计能量会被写入24C16串行EEPROM。这样可以保存经过的时间内的所有能量。 校准常数也保存在24C16中。当系统重新上电的时候,这些校准常数会被从24C16中读出并且写回CS5460。
2. 按键管理及液晶显示。由于LPC2104的总线不开放,给驱动液晶显示带来一定的不便,但可以以普通I/O口模拟总线时序进行操作。
3. 系统校准。在校准之前,应该使CS5460处于有效操作状态,并且通过SPI接收有效命令,清除状态寄存器中的数据准备就绪位(DRDY);然后,给电压和电流的输入通道施加相应的校准信号;接着,通过SPI接口向CS5460发送8位的校准命令字;最后,在相应的校准寄存器中保存校准结果,并且置位DRDY位以通知CS5460校准结束。校准模块主要提供一个管理界面,用户可以通过这个界面对电流表的电压、电流、功率等参数进行校正,并把校正后的数据保存。
4. 网络通信。需要发出AT指令对modem进行控制,并且产生符合通信协议的数据流。发送数据时,应用程序发送的数据经TCP/IP协议栈封装之后,再利用下层的PPP协议封装为PPP帧,然后通过异步串行口驱动程序将PPP帧发送出去。接收数据时,由异步串口驱动程序负责接收数据。然后由TCP模块和IP协议模块对数据进行处理,将用户数据交给应用程序。
mC/OS-II属于抢先式剥夺型实时内核,永远保证优先级最高的就绪任务的运行。mC/OS-II可以完成各任务之间的调度和同步,协调硬件资源。各个任务之间通过信号量、邮箱、消息队列等通信机制进行数据共享及任务通信。基于mC/OS-II嵌入式操作系统平台编程的关键在于任务的划分以及优先级的确定。
各任务的优先级为:过流过压保护>数据处理>实时时钟>数据存储>远程通信。
结语
本文介绍的网络化电能表软件系统是在嵌入式操作系统平台下开发的,便于单个任务调试,单个任务的错误不会导致整个系统的崩溃。传统的嵌入式网络产品需要专门的网关以实现数据的网络传输,本系统则实现了嵌入式网关与测量控制部分的一体化,这是以后实现嵌入式产品上网的趋势。