2.1.4 程序设计
系统上电后执行初始化程序,复位各个端口。当处于监听状态时,各监测点数据采集模块处于自动巡回监测状态,系统开始对各通道按设定间隔时间进行采集;当接收到上位机发送来的指令便选中相应的采集通道执行数据采集,调用数字滤波子程序进行滤波得到精确的数值,再通过数据转换和处理后送微处理器的数据存储器,等待上位机的读取。单片机程序采用C语言编写,系统主程序为一个循环,在循环中完成以下工作:系统初始化,包括初始化I/0端口,外部中断,计数器O,USART等;扫描上位机采集指令;开中断;响应INTO中断和计数器0溢出中断;读取ADC转换结果;将采集的数据调用通讯子程序由串口通讯模块输出;接收上位机发出的命令并进行相应的操作。
2.2 多路冗余输出处理模块
为解决对所采集的数据进行多路冗余处理输出,提高可靠性,特设计一双CPU协同处理的串口扩展模块实现多路冗余处理输出。数据通过RS 485总线输入至该模块,经隔离进双CPU处理,扩展为三路串口输出,原理框图见图3。模块采用双ATmega64芯片作为处理器,双CPU并口总线通讯,CPU数据RAM映射,数据交换速度快,实时性高。串口通讯RS 485总线,通讯模块芯片为带磁隔离的ADM2483,输出采用标准的MODBUS RTU通讯协议。电源采用鑫飞达的5W DC/DC隔离模块DFA5-24S5。
ATmega64是高性能、低功耗的AVR、8位微处理器,先进的RISC结构,其特性如下:133条指令大多数可以在一个时钟周期内完成,32×8通用工作寄存器和外设控制寄存器,全静态工作,工作于16 MHz时性能高达16 MIPS,只需两个时钟周期的硬件乘法器;非易失性的程序和数据存储器,128 KB的系统内可编程FLASH,具有独立锁定位、可选择的启动代码区,通过片内的启动程序实现系统内编程,可以对锁定位进行编程以实现软件加密,可以通过SPI实现系统内编程;JTAG接口(与IEEE 1149.1标准兼容),遵循JTAG标准的边界扫描功能,支持扩展的片内调试,通过JTAG接口实现对FLASH、E2PROM、熔丝位和锁定位的编程。
2.3 通讯设计
RS 232/422/485都是串行数据接口的标准。RS 232是非平衡传输,RS 422/485是平衡传输。RS 232传送距离最大仅为15 m,最高速率为20 Kb/s,比较适合近距离的本地设备之间的通信连接;RS485连接最长可达1.2 km,可连接至256个设备节点,数据传输率能高达10 Mb-/s。为实现底层多采集模块和上位机间远距离通讯,在底层采用RS 485总线进行数据传输。因PC机端的串口是RS 232接口,故需在PC端接专用的RS 232/RS 485转换模块将RS 232信号转换成RS 485的信号。本采集单元使用通讯模块芯片为带磁隔离的ADM2483,采用工业标准协议——MODBUS RTU通讯协议。图4为RS 485通信接口硬件电路。