21
的对应单元,发送时从串行接口TXD端输出,送到MSM7512B的XD端进行调制,变成相应频率的音频信号从AO输出,送到有线传输线路,经有线传输到下属各站点。下属各站点的反馈数据进入有线传输信道后送到中央控制器中的MSM7512B的AI端进行解调,解调后的数据从RD端输出,经过W77E58的串行口RXD接收端存到对应的RAM单元。在MSM7512B芯片上,数据经调制后送出的音频信号(AO)和接收的待解调成串行数据的音频信号(AI)是分开的,而且不平衡的信号,因此必须配合外部接口电路变成平衡的信号再送到公用电话通信网的有线系统中。R37/R30和R38/R31的比值即为输入、输出的放大倍数,可根据需要选择不同的阻值。
4.5电源电路
通常电子电路都需要电压稳定的直流电源供电。本文设计的稳压电源由电源变压器、整流、滤波和稳压等四部分组成。其中,电源变压器将交流电网220V的电压变为电路所需的电压,本文中为5V电源。本文采用典型的稳压电源电路,电路图如下所示:
图4-15稳压电源电路图[10]
如图所示电路为输出电压 5V、输出电流1.5A的稳压电源。它由电源变压器B,桥式整流电路D1~D4,滤波电容C28、C10,防止自激电容C29、C30和一只固定式三端稳压器(7805)极为简捷方便地搭成的。 220V交流市电通过电源变压器变换成为交流低电压,再经过桥式整流电路D1~D4和滤波电容C28的整流和滤波,在固定式三端稳压器LM7805的VIN和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7805的稳压和C30的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。本稳压电源可作为TTL电路或单片机电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。
22
5 电力线载波抄表系统集中器软件的设计
电力线载波抄表系统的硬件水平由于扩频技术的发展使其成为可能,而软件中继技术的应用使这种可能变成了现实。要使这种建立在网络协议层面上的通信系统得以正确实施,优秀的软件和良好的协议是必不可少的。系统中各个单元都有对应的软件,整个系统的软件设计既是一个整体,又相互独立,其间靠通信协议相互联系。本章首先介绍集中器与上位机以及集中器与载波电表之间的通信协议,然后介绍集中器的软件设计。
5.1通信协议的制定
本协议是参照电力部门规定的通信协议来编写的,在某些具体的数据格式上采用了特有的组织方式。协议的规定是为了使用方便、系统可靠。
5.2集中器软件设计
集中器系统软件使用汇编语言进行编写,这种语言具有功能浮点运算、编程灵活和移植性好等优点。 (1) 软件设计思想
在设计应用软件时应考虑以下几个方面:
(a) 程序承担的任务:任何一个系统的设计,都有其具体的应和明确的工艺要求,程序设计的首要任务就是确定程序承担的任务;
(b) 程序的时序性:单片机是按时序运行的,所以程序设计到抄表任务的执行顺序和时间要求;
(c) 程序的适应性:所谓适应性,就是要求设计出来的程序灵活性,主要考虑将来系统扩展时必要的修改,增加通用性。
本文采用模块化设计思想,将一个完整的程序分成若干个可以成某些任务的功能模块,各模块又分为若干子模块,各子模块之间立,又受主程序模块的控制。使整个系统层次分明,逻辑清楚,便的编制、调试、修改和查错。利用模块化技术,可以将错误控制限在模块内部而不影响整体,提高了系统的可靠性、灵活性和可维护性。 (2) 软件设计任务
根据集中器要完成的功能,软件结构主要包括:主程序模块(集中器接收上位机的命令、集中器抄收下位载波电表的数据)、数据块、时钟模块等。
(a)上位机下发给集中器的指令
全抄指令:上位机与集中器建立通信链路后下发的全抄指令,应将存储在RAM中的所有电表数据发送至上位机;集中器和载波电表的通信主要指集中器根据上位机下载的定时抄收电表数据;根据上位机下发指令实时抄收电表数据。
(b)时钟模块
23
当上位机下发校时指令时,MCU可对时钟进行写操作,在定时抄表程序中,MCU要读取时间数据,与上位机下载时间相比较,从而执行相应的程序。
(c)数据存储模块
集中器会将抄收回来的电表数据进行处理、存储。当上位机下发抄表指令后,集中器便将存储在RAM的所有电表数据读出并发送至上位机。 5.2.1主程序设计
在所有的操作中,定时读取各载波电表的数据是最主要的也是最复杂的,本文主要介绍集中器定时抄取载波电表数据的程序设计。
上电复位信号使系统复位,系统都将重新进行初始化,包括串口初始化等。接着检测集中器和电表的数据库是否存在后,才能保证抄表工作准确;若数据库已下载,当数据库下载完成并退出与上位机的通信后集中器进入抄表状态。
图5-1 抄表循环程序流程图
【8】
24
MCU采用查询的方式获取时间数据,当读取到的时间数据为设定抄表时间数据时,先判断数据库是否下载,接着判断所有表已抄标志,若为1,说明系统已经进行过抄表操作;若为0,说明当月的电表读数还没有抄取,于是启动抄表循环程序。从抄表循环程序退出来后,系统还会检查到表是否成功,若成功为1,则证明所有表都已成功读取;若为0,则说明系统曾经进行过抄表操作,但没有把所有表的数据成功读完,需重新调用抄表循环程序。在集中器的主程序中要不断的查询是否有上位机下发的命令,如果有则先根据上位机下发的命令,执行相应的程序,抄表循环程序流程图如图5-1所示。 5.2.2 集中器向上位机的数据传输
与集中器相连接的MODEM在进行初始化设置时将自动应答功能开启,这样呼叫方MODEM拨号后,等待集中器MODEM送来的载波信号,集中器MODEM检测到预定的响铃次数后便自动摘机,然后与呼叫方进行载波连接。如果双方在预定时间没有检测到载波信号MODEM会自动释放线路,同时返回结果码,一旦载波建立成功后,MODEM便会返回结果码,表明双方连接成功,可进行数据通信。 集中器向上位机发送数据的流程图如图5-2所示。
图5-2 集中器向上位机发送数据流程图
【8】
25
如果串口接收到数据则开始计时,并继续查询串口,若在10秒内串口接收到数据,表示载波建立成功保持集中器与上位机的连接,开始与上位机进行通信。数据传送完成后,使MODEM从联机状态返回到命令状态,延时一段时间后发送挂机命令,一次数据通信结束。若第一次响铃10秒后还未接收到结果码l,则表示载波无效,上次响铃为有人打电话或者是连接出现错误,集中器不与上位机连接而继续运行其他程序。发送完一包数据后,集中器若接收到上位机发送的“W”指令,说明发送有错误,要求重发本包数据。
调制电路的工作过程是这样的:从终端到中心的链路建立之后,先控制MOD2和MOD1使MSM7512B工作在接收状态,使能“MODEM状态中断”,等待数据采集中心的应答信号;当有应答信号时,MSM7512B的CD/引脚变的有效,触发W77E58的“MODEM状态中断”,在中断过程中,查询是否为正确的应答信号,如果是,则禁止“MODEM状态中断”,使能“发送数据空中断”,控制DTRB和DTRA引脚使MSM7512B切换到发送模式,控制RTSB/引脚使能MSM7512B的发送,控制RTSB/引脚选择M7512B的发送幅度为-4dBm,然后就可以从存储器中取出数据通过PSTN向数据采集中心发送数据,如果不是正确的应答信号,则继续等待应答信号。MSM7512B的最高波特率为120ObpS,因此,设置W77E58的波特率时,最高不能超过1200bps,否则MSM7512B不能正常工作。[12]
5.2.3单片机与扩频芯片SSCP300的数据传输
编程序的时候,主处理器和SSC P300之间的交互归结为4个基本的子程序,就可以完成命令和数据的发送和接收。这四种操作分别是初始化、写、读、中断服务程序。
图5-3 SSCP300初始化流程图
【18】