通常应用于风光发电厂的监督控制与数据采集系统SCADA(Supervisory Control And Data Acquisition)一般都是由电力通信专网来保障其通信。但由于风光电厂在地理位置上的特殊性、多样性(通常在边远偏僻地区),使得某些通信网无法胜任SCADA的要求[1]。
通用分组无线业务(GPRS)是GSM网络的升级,通过在GSM网络上增加SGSN和GGSN两种数据交换节点设备以及一些更新软件来实现,GPRS网络中的数据传输以数据分组的形式传送。在国内,移动通信网络目前已基本覆盖全国所有地区,因此利用技术上较为成熟的GPRS无线网络,可对风光发厂的各个发电站进行实时远程监测与控制,这对提高整个风光电厂的性能具有实际意义。
1 系统组成
整个风光电厂的SCADA系统由风光发电站的状态参数采集部分和数据处理及传输两部分组成。本文重点介绍数据处理及传输部分。风光电厂SCADA系统如图1所示。
通过CAN总线与CAN总线适配器的连接,将各个风光发电站的状态参数传输至基于LPC2214的嵌入式系统,数据经处理后由GPRS通信模块MC39i输出,并通过GPRS网络和Internet将数据传输至监控中心。反之,监控中心也可以将各种操作指令传送至控制终端,以控制风光发电站的运行。本系统的核心部分为“嵌入式GPRS通信模块”的实现[2]。
本系统使用ARM7核微处理器LPC2214,并适当对系统存储资源进行扩展,通过移植嵌入式操作系统μC/OS-Ⅱ来管理整个系统的运行。系统所使用的GPRS模块MC39i由西门子公司生产,具有使用方便、接口电路简单等优点[3]。GPRS虽支持TCP/IP业务,但因为MC39i没有嵌入TCP/IP协议和PPP协议,所以需要在基于LPC2214的嵌入式系统中实现TCP/IP协议和PPP协议,否则系统无法使用GPRS网络的数据分组业务。
2 CAN总线接口电路设计
SJA1000与LPC2214之间的接口电路如图2所示,主要包含:LPC2214最小系统(未画出)、CAN通信控制器SJA1000、CAN总线驱动器82C250和高速光电耦合器6N137。LPC2214控制SJA1000的初始化以及对风光发电站状态参数的接收和发送。其中,SJA1000的AD0~AD7连接到LPC2214的P2口(DATA0~DATA7),/CS为0时,LPC2214选中SJA1000。SJA1000的/RD、/WR、ALE分别与LPC2214的对应引脚相连,/INT接LPC2214的P0.1脚(外部中断0),用于中断访问SJA1000。
SJA1000的TX0、RX0通过高速光耦6N137后与82C250的TXD和RXD连接,这样可较好地实现本节点在CAN总线上的电气隔离,从而增强CAN总节点的抗干扰能力。要注意光耦部分电路采用的两个电源VCC和VDD必须完全隔离,否则此光耦就失去了意义。本系统中的电源隔离采用了小功率的电源隔离模块实现。
另外,通过在82C250的CANH和CANL引脚之间串连60 ?赘的电阻以消除电路中信号反射等干扰。CANH和CANL与地之间并联两个30 pF的小电容,可滤除总线上的高频干扰和一定的电磁辐射。另外,在两根CAN总线输入端与地之间分别接了一个防雷击管,当两端输入端与地之间出现瞬变干扰时,通过防雷击管的放电可起到一定的保护作用。
3 基于μC/OS-Ⅱ环境的多任务设计
3.1 μC/OS-Ⅱ操作系统在ARM7核上的移植
移植是使一个实时内核能在其他微处理器上运行,也就是为特定的CPU编写特定的代码。因为μC/OS-Ⅱ在读/写CPU寄存器时,只能通过汇编语言来进行,因此在使用μC/OS-Ⅱ时,针对具体的CPU,用户需要用汇编语言编写与CPU硬件相关的代码。
根据μC/OS-Ⅱ的要求,移植μC/OS-Ⅱ到一个微处理器的体系结构上需要提供三个文件:在C语言头文件OS_CPU.H中,要定义与编译器无关的数据类型;定义所使用的堆栈数据类型以及堆栈的增长方向;定义一些有关ARM核的软中断。在C程序源文件OS_CPU_C.C中,主要是μC/OS-Ⅱ任务堆栈初始化函数;在汇编程序源文件OS_CPU_A.S中,主要是时钟节拍中断服务函数、中断退出时的任务切换函数以及μC/OS-Ⅱ第一次进入多任务环境时运行最高优先级任务的函数。