4 现场数据采集器的功能及原理
现场数据采集器有两种工作方式, 即主叫方式和被叫应答方式.主叫方式就是现场数据采集器主动呼叫监控中心;被叫应答方式是在现场数据采集器收到监控中心的呼叫振铃后响应应答指令.另外,现场数据采集器具有远程设置主叫呼叫号码的功能,其软件编制流程图如图3 所示.
图3 现场数据采集器的程序流程图
4.1 通讯波特率
8251 的通讯波特率取决于RXCLK和TXCLK的时钟输入,在异步方式中,RXCLK,TXCLK可以是波特率,也可以是波特率的16 或64倍.这由8251控制字中的波特率因子来决定,在本系统设计中,设波特率因子为异步X16,即RXCLK,TXCLK是传输波特率的16倍.从图2可以看出,RXCLK,TXCLK由8155 的TMROUT给出, 而8155 的TMRIN为系统时钟fosc的1/6,因此选择波特率的关键就是确定8155定时器的时间常数.如果将8155 的定时器设为连续方波输出,那么8155 定时器的时间常数N和定时器输入频率fTMRIN,输出频率fTMROUT的关系为:fTMROUT=fTMRIN/N,设8251的分频系数为16,则传输波特率可有下式计算:
波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)
本系统选用频率为11.0592MHz 的晶振,fosc为1.0592MHz, 若8251 采用2400Hz的波特率来传输数据,则8155的定时器常数N为:
N=11.0592X106/(2400X16X6)=48=30H
按照以上分析,则8155,8251 初始化编程如下:
- void initialize rs(void)
- {
- U8155_IO=0xc0; /*8155命令字初始化*/
- U8155_TO=0x30;/*送8155定时器常数低字节*/
- U8155_TH=0x40; /*送8155定时器常数高字节*/
- U8251_C=0x4e; /* 方式控制字初始化*/
- U8251_C=0x37;
- }
4.2 远程设置主叫呼叫号码
在本系统中,当关键数据发生越限变化时,现场数据采集器能够自动呼叫监控中心,而被呼叫的电话号码却不能够存储在程序的ROM中, 原因有两条:第一:监控中心的电话号码可能会变更;第二:不同的用户被呼叫的电话号码不一样; 而在现场数据采集器上设计一片EEPROM 也不是最好的方案;解决这一问题的最佳方法是将此电话号码存储在MODEM 中, 那么如何实现呢?可用前面提到的AT&Z=X(X为电话号码) 命令进行远程设置,当监控中心需要修改这个电话号码时, 就呼叫现场数据采集器,并将此电话号码传输给数据采集器,然后由数据采集器自动用AT&Z=X(X为电话号码)命令将此号码存储在MODEM 中.
4.3 主叫方式
当现场数据采集器采集到的关键数据发生越限变化时,现场数据采集器便利用AT指令ATDS主动拨打存储在MODEM 中的电话号码来呼叫监控中心,并将关键数据打包传送给监控中心,在监控中心收到信息包后,系统便可进行存储和分析,以供值班人员判断并做出处理.
4.4 被叫方式
当监控中心需要获得现场数据时, 可以主动拨号呼叫现场数据采集器, 在图2中,W78E52 的P1.1在检测到预定次数的振铃信号时发出MODEM应答指令ATA,并在延时等待MODEM 连通以及双方握手成功后, 由监控中心向现场数据采集器发出请求发送数据指令.现场数据采集器收到指令后将实时变化的动态数据传送给监控中心, 以使监控中心随时中断对数据接收, 并向现场数据采集器发出挂机指令.现场数据采集器在收到挂机指令后停止发送数据并挂机.
4.5 存在问题及解决方法
本系统刚开始设计时,8251 的复位输入端和CPU的复位输入端是连接在一起,这样设计曾出现过8251不能可靠复位的问题. 后改为靠W78E52的P1.0 给8251发复位脉冲,图2 所示,这样,就可根据软件抗干扰的需要随时复位8251,用C51编写的复位程序如下:
- void reset_8251(void)
- {
- P1^0=1;
- ACC=0;
- while(--ACC);
- P1^0=0;
- }
5 结论
实践证明,该系统和MODEM 接口具有电路简单,成本低,可靠性高的特点.在实际应用中取得了良好效果.