远程测控广泛应用于设备数量大、分布广的场合,随着计算机和网络技术的发展,利用局域网可以很好解决集中管理分散控制的问题。但当测控对象分布大于几十公 里,采用局域网组网费用高、周期长,是不可行的。利用现有电话网、调制解调器和计算机组成的测控系统,对通信速率和实时性要求不高的场合,基本可以实现远 程测控管理功能,且成本低廉、投入使用准备周期短。
2、系统结构
本系统是为监控无人职守电信机房环境设计的。系统上位机采用一台微机作为主控室监控主机,下位机为多台分布于各机房的测控终端。
分布于各个机房的下位机实时监控机房环境参数,采集存储,定时上传数据;当点对点连接时可以实时查询当前状态。为了方便对下位机的管理,下位机需要具有在 线控制功能,通过监控中心PC上位机软件,修改控制下位机所有参数。多台下位测控平台通过PSTN和上位机进行数据传输,设备之间的数据交互、故障报警, 都需要可靠的数据传输,因此下位机硬件的可靠性、数据通信链路层的可靠性至关重要,数据的帧结构、Modem控制接口的软硬件都需要仔细设计。为了及时有 效的对监控参数的报警,每种监测参数需要设置三种严重程度不同的告警门限值,当某项实时监测参数超过告警门限值时,下位机自动向监控中心报警,同时可按优 先次序拨出三组不同电话号码,通知相关人员。通信的数据帧中采用密码机制,只有密码正确,下位机才响应上位机的控制,保证了系统的安全性。
3、系统硬件设计
下位机硬件原理框图如图2。采用飞利浦公司基于ARM7TDMI内核32位微处理器LPC2132,内部集成了16K SRAM,并带有128k字节嵌人高速Flash存储器。丰富的片上外围设备、非常小的封装和极低的功耗,无需外接程序存储器和数据存储器,使其非常适合 小型化的嵌人式领域。系统每次采集的数据量较小,采集就向上位机上传是不合适的,为此采用掉电非易失的EEPROM 24C256存储采集数据。模拟信号采集通过l0bit串行AID TLC 1543,它的11个通道可以用来采集机房设备的供电电压、电流、机房温度等参数。开关量信号直接从单片机的GPIO (General purpose I/0)读人,控制信号则通过SPI串行口输出到74HC595转为并行控制信号输出。按键音经过DTMF解码器MT8870得到键值,用于报警电话确认。
外置式Modem通过RS-232C口与处理器连接。LPC2132有两个串口,有16字节收发FIFO。其中Uart2增加了一个调制解调器 (Modem)接口,具有RTS,CTS,DSR,DCD,DTR,RI标准RS-232C接口的握手信号。Modem和单片机实现双向通信至少需要三条 信一线:TXD,RXD和SGND。这样连接由于没有握手信号,只能保证单个字节传输的可靠,对于大量数据的传输可能导致数据丢失,虽然可以采用软件处 理,但会占用CPU的时间,降低CPU使用效率。所以采用Uart2经过8路电平变换芯片MAX3238与Modem连接,这样就具有完整的RS- 232C的控制联络信号线,保证了大数据量传输时的可靠性。
4、数据帧编码方法
数据帧编码的原则是尽量减小数据传输过程中的误码率,兼顾传输效率、加密等其他方面。本系统的数据帧结构如图3。
图3 数据帧结构
数据帧的第1,2个字节(包头)和一个字节(包尾)采用特定的起始码和结束码,如AAH,55H,B5H等,可以有效的抑制各种杂乱信息。数据接收方 可以把接受到的数据放到一个FIFO缓冲器中,当接收到有效的包头才开始一个数据帧的接收,否则,认为是干扰或是误码丢弃不处理。数据帧开始接收后,根据 数据长度,能正确接收结束码,才当作一个有效的数据帧,否则,丢弃重新开始等待起始码。起始码后面是一位或多位的密码,可以根据实际的需要而定,增加数据 传输的保密性。
数据的传输常会出现连续置为0的字节,这种零电平在传输过程中,非常容易受到干扰变成其他数据。因此数据采用余3编码方式。对数据帧的每个字节都采用奇偶效验,并计算所有的数据字节累加和、异或和,放在数据帧中供接受方效验。
5、Modem的控制和AT指令集
目前市场常见的Modem都支持AT指令集,即所有的命令行都是由前缀“AT”构成,它是Attention的缩写,其基本格式为:AT命令[参数]命令 [参数]……结束符。结束符是一个单字符,其值存在寄存器S3中,默认为回车符。在一个命令行中可以包含多个命令,但不要超过Modem的命令缓冲器所能 容纳的字符数,一般为40个字符。Modem会自动从AT两个字符中检测出波特率、字长、奇偶效验,故Modem无需设置这些参数。
Modem的工作状态可以分为命令状态和在线状态。在命令状态下接收并执行AT指令,当建立通信链路后进人在线状态,这时Modem不再对发给它的数据解 释,而是直接发给远端的接收系统。在线状态下,如果接收到状态转化序列十十十”,则转人在线命令状态。详细的AT指令集的介绍见。
6、系统软件设计
LPC2132 微处理器工作频率可以达到60MHz,有3级流水线,大多数指令可以单周期完成,片上带有128KB FLASH程序存储器和16KB SRAM,它的性能和存储空间,使嵌入操作系统的应用成为可能。目前市场上的大型商业嵌人式操作系统已经十分成熟,但价格昂贵。采用源码公开的软件是 一种好的选择。uClinux功能强大,运行稳定,但代码和需要的RAM过于庞大。uC/OS-II则简单实用,内核可剪裁到只有3K左右。本系统的软件 基于uC/OS-II嵌入式操作系统是一个理想的选择。
uC/OS-II是一个源代码完全公开、可移植、可固化、可剪裁的抢占式实时多任务操作系统。多可以同时执行64个优先级不同的任务,任务之间的通信和同步是通过信号量(Semaphore)、邮箱(Mailbox)或队列(Queue)来完成的。信号量用来保护特定的共享资源,或同步其它任务。邮箱和队列都是用来在任 务间发送消息,只不过前者只能发一条信息,后者可以发送多条。uC/OS-II需要一个系统时钟(Clock Tick),用于实现时间延时和超时确认。时钟节拍越高,系统时间越高,但系统的额外开销越大。详细介绍见文献。
在uC/OS-II操作系统的管理下,本系统分为4个任务:
任务1:定时采集存储数据,按照上位机所设置的采集频率,定时采集存储各个监测参数。
任务2:数据帧处理,对串口接受到的数据进行解释。接受到效验正确的数据帧,执行相应的操作,如处理上位机的控制信息、设置系统参数、发送信号量给其他任务和发送正确接受的应答帧等。
任务3:报警任务,实时监测各个参数,发现异常立即向上位机报警,同时拨打报警电话。
任务4:自动上传数据,当采集到一定量数据,主动上传到上位机。
在多任务系统中,通过时钟中断的周期性任务,在确定的时间执行,其它时间都处在休眠状态。若它在各任务中处于优先级,就能够保证该任务严格的时间 有效性。任务1就是此类任务,所以放在优先级。每隔确定的时间运行,即采集存储数据,其它时间处于休眠状态。
任务3和任务4在和上位机通信的过程中,都需要数据帧处理任务给它们解释上位机发来的数据,所以任务2作为第二优先级。当串口中断接受到上位机发来的数 据,放到FIFO的队列中,同时发信号量给任务2,任务1不在执行时,任务2立即变为当前运行任务,处理串口接受到的数据,其它时间处于等待状态。
自动上传数据对实时性要求不高,所以放在优先级。报警任务放在第三优先级,这样可以保证在发生异常时,能及时的向上位机和有关人员报警。
多任务系统中,就要考虑对共享资源的保护,同一时间内,只能有一个任务占用此资源。本系统中,串口是四个任务都需要占用的资源,来控制Modem或向上位 机传送数据,I2C总线在任务1和任务4中要用来读写EEPROM中的监测数据。所以建立了两个互斥信号量来保护串口和I2C总线,当任务需要使用串口或 I2C总线,先申请相应共享资源的信号量,如果信号已被别的任务占用,该任务只得被挂起,直到信号被当前使用者释放。
这样安排多个任务,充分利用了系统资源,保证了整个系统各任务协调、高效的运行和系统的实时性。
7、小结
经过实际运行试验,本系统运行稳定可靠。完全开放的UC/OS-II嵌入式操作系统的采用,多任务的管理提高了开发效率,缩短了开发周期,提高了系统性 能。在升级系统时,只要加入其它任务到操作系统中,就可以扩展功能,程序的可读性和可维护性好。以ARM7和uC/OS-11为基础构成的嵌人式系统,结 构简单小巧、成本低廉、实时性强,特别适用于中小型嵌入式系统的开发。
[1]. ARM7TDMI datasheet https://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[2]. LPC2132 datasheet https://www.dzsc.com/datasheet/LPC2132_454526.html.
[3]. 74HC595 datasheet https://www.dzsc.com/datasheet/74HC595_1133522.html.
[4]. MT8870 datasheet https://www.dzsc.com/datasheet/MT8870_491357.html.
[5]. MAX3238 datasheet https://www.dzsc.com/datasheet/MAX3238_1074312.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。