2 系统的软件设计
2.1 通信协议
为了保证电力线通讯的顺利进行,本系统采用的通信协议遵守《地区电网数据采集与监控系统通用技术条件》,并且参照X-10协议。在电力线载波通信的过程中,因为采用异步半双工工作方式,所以一定要有包含控制机制的传输协议以确保数据的可靠传输。上位机和下位机需采用适当的协议和时序配合。该设计中,每次通讯过程总是由上位PC机首先发起,通讯时单片机先进入通讯状态,等待与计算机通讯。上位机向下位机发送的命令为系统码、地址码、命令码和校验码。
由于采用共用的电力线通讯,为避免电力线上的杂波载波信号对本系统主机和各从机的误接收,在发送地址信号前,加了一个系统码。而校验码是对此码前所传送的所有数据进行简单加法,保留1个字节,进位自然溢出得到的数值,数据传输的接收方对所收到的数据的正确性进行判断。同理,从机向主机发送命令为起始码、地址码、数据块和校验码。
2.2 上位机软件实现
上位机采用Delphi 7作为开发环境,对数据的存储采用数据库Paradox,此单端数据库由Borland公司开发,可采用BDE引擎,与Delphi 7融合较好。对串口RS 232直接使用Windows API函数和多线程技术实现通信功能,串口通信软件由负责人机交互的主线程和对串口进行处理的后台辅助线程组成。
通信软件构架如图4所示,主线程是串口通信程序的管理者,用来初始化串口(通过调用Win32 API函数),自定义通信事件消息,创建、删除辅助线程,进行人机交互的操作及协调好各线程运行。辅助线程是串口通信软件的核心,包括读线程和写线程。辅助线程对串口进行实时监视,当监测到预定义的事件时,立即调用相应的线程进行处理并向主线程发相应的消息,如串口出错,则退出线程并向主线程报错;如接收到数据就调用读线程自动接收数据并进行处理。