0 引 言
可编程计算机控制器( PCC: Programmable Computer Controller) 以其可靠性高、开发周期短、配置灵活、功能强大而在工业控制领域得到越来越广泛的应用。由于其能适应恶劣的工业现场,因此多被作为集散控制系统的下位机使用。但PCC的显示功能较差, 因此将PC与PCC 结合起来构成了总线式的集散控制系统, 充分利用PC机强大的人机接口功能、丰富的系统软件, 用图形化界面实现了对整个系统的实时监控。其中各设备间的通信是系统实现的关键。RS-232 接口是计算机及PCC共同具有的, 利用贝加莱公司的帧驱动器并加入一些辅助电路及相应通信程序即可构造基于RS-232的总线式多机通信网络。实验证明, 该网络具有硬件实现简单、系统可靠、抗干扰能力强的特点。
1 多机实时通信的硬件实现
PC/ PCC 总线式集散控制系统的总体结构如图1 所示。
图1 计算机与多台PCC 组成的集散控制系统
系统采用RS-232 串行通信方式实现了上位机对整个系统的实时监控, 同时为了提高硬件稳定性www.cechina.cn,优化系统工作性能控制工程网版权所有, 本文采用硬件仲裁电路来实现数据总
1.1 RS-232 多机通信机制
普通的RS-232采用点对点串行数据传输方式CONTROL ENGINEERING China版权所有, 无法满足多设备之间的实时通信, 因此需要对其连接方式作一些改进。RS-232的点对点通信是将接口的数据发送端(TXD)连接到另一方的数据接收端(RXD) , RXD与另一方的TXD相连,双方的地线端(GND)直接相连。但在计算机与多台PCC相连时则发生了一些变化。如图2所示,计算机的数据发送端直接连接到各PCC的数据接收端, 地端直接与各PCC的地端相连, 但各PCC的数据发送端不能同时连接到计算机的数据接收端, 因为数据发送端在无数据发送时为高电平,而发送的数据为高低电平组成的脉冲序列, 直接将两个或多个数据发送端连接到一起接入计算机, 则会造成其数据接收端电平的不确定, 产生了数据冲突问题。为了解决上述问题设计了专门的硬件仲裁电路, 将各PCC的TXD 以及数据发送请求端(DTR)接入控制工程网版权所有, 再将仲裁电路输出端连接到计算机的数据接收端。
图2 RS-232 多机通信连接示意图
1.2 仲裁电路结构与工作原理
由于上位机(PC)的发送端为一对多广播式发送, 所以上位机发送的数据帧所有的下位机( PCC)
均可以接收到控制工程网版权所有, 至于数据帧由哪一台下位机接收则由通信协议中的目的地址ID判定。但对于下位机,其发送端为多对一连接, 如直接将其相连, 则会发生数据冲突。图3 所示的仲裁电路可以确保每次只有一台下位机能够发送数据到上位机的数据接收线上。应注意的是, RS-232 接口使用的高低电平与TTL 中的高、低电平不同, 需进行电平转换。
图3 下位机发送数据仲裁电路
图3 以三路PCC 为例说明。各下位机初始化时均将其DTR 设置为低电平, 因为与门1 、2 、3
均有低电平输入, 所以初始化后A、B、C 三点均为低电平, 并且与门4 、5 、6 也一直输出低电平。假设下位机1 是第一台要发送数据的下位机, 发送前先将自己的DTR 端口设置为高电平, 而此时B、C 两点仍为低电平, 经反相器后变为高电平输入与门1 , 所以与门1 的输出A 点电平也为高, 此时数据发送服务程序读取数据发送查询端(DSR) 电平状态(即A 点电平状态) 为"1", 说明总线未被占用,处于空闲状态。由于下位机1 的DTR 端口已被置高, 且查询得知总线空闲, 则其DTR 端口不变仍然设置为高电平, 这样下位机1 就占用了总线, 可以开始发送数据。数据由TXD 端经过与门4 后输入上位机的RXD 端, 由于此时A 点电平为高, 保证了数据经过与门4 后没有失真直接上传至上位机, 同时A 点电平经反相器后变为低电平输入与门2 、3 , 故B、C 两点电平为低, 与门5 、6 始终输出低电平, 避免了数据冲突。当下位机1 数据发送完毕后将其DTR 端口置低, A 点电平变低, 释放了总线, 又回到初始化后的状态, 可以供给下一个要发送数据的下位机使用。假设下位机1 发送数据的过程中, 下位机2 也要发送数据, 同样先将自己的DTR 端口置高, 但此时A 点电平为高, 经反相器后输入与门2 , 所以与门2 的输出B 点仍为低电平, 程序读取DSR 端口电平(即B 点电平) 为"0", 说明总线已被占用, 因此将DTR 端口重新置低, 等待下次查询, 这样就避免了两台下位机同时上传数据。下一个查询周期未到时, 程序持续查询是否有更高优先级的任务标志位置位, 有则调用相应的任务服务