3 软件设计
由于篇幅所限,本文只就本系统的核心部分———PIC18F87J60单片机的开发过程作简要阐述。
3.1 开发工具
3.1.1 集成开发环境
由Microchip公司提供的MPLAB IDE v8.40集成开发环境为PIC18F87J60芯片的开发提供了更多的便利。由于是用C语言对芯片进行编程开发,所以还需要用到C语言编译器MPLAB C18,这是专门针对PIC18系列单片机设计研发的编译器,通过使用MPLAB C18,可以直接在MPLAB IDE中对C语言程序进行编写和修改。
3.1.2 在线调试器ProICD2
开发过程使用Microchip公司提供的在线调试器———ProICD2。ProICD2是Microchip公司在MPLABICD2的框架上,改进设计而来的更高版本的在线调试器。ProICD2除了能实现ICD2的全部功能外,还进一步增强了保护电路,稳定性更好,无须外接电源,并且解决了MPLAB ICD2使用过程中80%可能遇到的问题。
3.1.3 Microchip TCP/IP协议栈
Microchip TCP/IP协议栈是一套程序,它服务于标准的、基于TCP/IP的应用程序,或者使用在定制的、基于TCP/IP的应用程序中。在本系统的开发过程中,使用的是该协议的5.10版本。通过使用该协议栈,大大简化了该系统以太网通信模块的开发。类似于TCP/IP参考模型,Microchip TCP/IP协议栈将TCP/IP协议栈分为多层(如图2所示)。每层的实现代码驻留在一个独立的源文件中,而服务和应用程序编程接口(API)是通过头文件或包含文件定义的。与TCP/IP参考模型不同的是,Microchip TCP/IP协议栈中的许多层可以直接访问没有正好在它下面的一层或多层。另外,Microchip TCP/IP协议栈添加了2个新模块:“StackTask”和“ARPTask”。其中“StackTask”是用来管理协议栈及其所有模块的操作,而“ARPTask”则是用于管理地址解析协议(ARP)层的服务[9-10]。协议栈采用模块化设计,可根据需求进行裁剪,结合本系统欲实现的功能,仅需保留TCP/IP栈的核心层(MAC,ARP,TCP,UDP)和应用模块(HTTP,SNMP)。

3.2 软件开发过程
PIC18F87J60单片机模块的软件开发主要包含数据采样、数值计算、数据记录和通信以及系统的对时。
为了尽可能满足实时性的要求,系统的软件设计可按优先级分为2大类:一类是包括A/D转换启动、数据的实时采集等程序在内的对实时性要求较高的程序,这些程序应赋予较高优先级,在中断模块中处理完成。另一类是包括电能质量参数的运算、结果存储和通信等程序在内的对实时性要求相对较低的程序,它们可放置在主程序模块中完成。该系统的中断模块主要负责对原始数据进行采样及转换,其中断由PIC18F87J60单片机内部自带的10位A/D转换器模块触发产生。在中断产生后,需在中断服务程序内读取A/D采样结果,并保存到内存中。在数据采集的间隔时间内,利用内存中的采样数据,进行数值计算,从而达到并行处理的目的,程序流程如图3,首先在主程序中配置硬件,对相关参数进行初始化,随后运行检测程序,顺利通过之后便开放中断,进入数据采集程序。当完成原始数据采集的中断到来以后,主程序便首先调用A/D转换子程序进行数模转换,随后将转换完成的数字量数据送入电能质量参数运算子程序中进行运算,并将结果以数据包的形式封装储存,然后根据不同的连接情况,或者调用TCP/IP协议栈,将运算结果直接通过以太网发送至数据中心,或者通过RS232接口将数据输出至计算机端,再利用计算机将数据传输至网络数据中心。最后系统再调用对时子程序,对整个系统的时间进行校验。通过以上过程,完成一次带时标信息数据的处理和发送。
来源:电网与清洁能源