以广播传输发射自动控制系统为例谈自动化的时间问题
2013-08-07韩翠翠
韩翠翠
(国家广电总局 北京地球站,北京 102206)
0 引言
所谓的自动控制,就是用计算机来代替人工根据指令进行一些操作,目前自动控制系统已经由单一的小系统逐步转变成集成的能够独立的完成整套工作任务的大型系统。在这些大型的集成性的自动控制系统中,我们经常碰到要求各分系统在同一时间同时执行某些动作,从而共同来完成一项大的工作的情况,这就遇到了怎样才能够做到各个分系统的时间准确、一致,怎样完美而准确的完成任务的问题。
1 问题的引入
例如广播传输发射自动控制系统,该系统主要由局控制平台、台控制平台、节目传输控制平台、发射机自动控制、天线交换开关控制等几部分组成。局控制平台主要下发每天的节目运行时间表,经台控制平台接收后下发到节目传输控制平台、节目传输控制平台将节目运行时间表下发到发射机自动控制和天线交换开关自动控制。每天的广播节目运行就是发射机自动控制系统按照节目运行时间表上高压,发射传输节目信号,天线交换开关自动控制系统按照节目运行时间表倒换所需频段的天线,两者配合才能达到广播节目每天按运行时间表自动运行的工作任务。如图1所示。
这中间的问题非常明显,就是发射机在上高压之前,天线交换开关自动控制系统必须将所需的天线到换到位,但是天线交换开关倒换天线的必要条件是上一个结束的节目所用的天线高压已落,即不能带高压倒换天线。如果这些问题都仅仅依靠时间的统一性来解决,势必会遇到很多麻烦。
图1 广播传输发射自动控制系统工作流程图
2 问题的分析
在本系统未集成之前,每一部分的自动控制都是一个独立的分系统,都有自己的一套时间系统。每个系统都按照自己的时间来执行工作指令。例如,发射机会按照调度令在某一时间结束一个节目,然后开始一个新的节目传输。天线交换开关也会按照调度令在某一时间自动倒换天线。初步看起来似乎可以自动运行,实际不然。每一个系统都有自己的一个时间,如果这两个时间差别比较大,即误差比较大,那么两套系统的运行就很难成功,或者说,要求人工参与的部分就很大,通过人工的干预来实现系统可能失败的部分。例如高压未落的通过手动落高压,天线未到位的手动倒天线,这样的自动化系统就失去了自动的意义。
要想解决这个问题,不难看出,时间的准确性在这中间起着非常重要的作用,如果时间能够非常准确,那么发射机自动化可以实现准点落高压,天线交换开关自动化可以准点倒换天线到位,发射机自动化就可以准点上高压,实现调度令的时间运行表得到准确执行。
那么,是不是这么简单就可以实现呢。
我们目前采用的办法是从局广播传输发射自动控制系统下发校时的指令,下级的控制系统接到指令后在实现自身校时的同时,将校时指令向下转发,即实现自上而下的校准时间。
然而这个方法的实现效果却不尽如人意。为什么呢?
目前的集成系统一般采用以太网星型结构,如图2所示,在最下级的工控机与PLC 可能有串口,但是大部分系统都体现了双绞线的网络模型,所以这中间的时间差就是网线传输与系统反应时间的和。这个时间,并不容易把握,网络会有拥堵的现象,系统的反应时间也会因系统的性能以及实时的工作情况有关。
图2 星型结构的以太网模型
当今居于主导地位的局域网技术-以太网。以太网是建立在CSMA/CD 机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。而交换机(网桥)做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能。正逐渐替代集线器成为主流的以太网设备。然而交换机(网桥)对网络中的广播数据流量则不做任何限制,这也影响了网络的性能。通过在交换机上划分VLAN 和采用三层的网络设备-路由器解决了这一问题。以太网做为一种原理简单,便于实现同时又价格低廉的局域网技术已经成为业界的主流。而更高性能的快速以太网和千兆以太网的出现更使其成为最有前途的网络技术。
目前以太网一般采用星型拓扑结构,管理方便、容易扩展、需要专用的网络设备作为网络的核心节点、需要更多的网线、对核心设备的可靠性要求高。采用专用的网络设备(如集线器或交换机)作为核心节点,通过双绞线将局域网中的各台主机连接到核心节点上,这就形成了星型结构。星型网络虽然需要的线缆比总线型多,但布线和连接器比总线型的要便宜。此外,星型拓扑可以通过级联的方式很方便的将网络扩展到很大的规模,因此得到了广泛的应用,被绝大部分的以太网所采用。
以太网采用带冲突检测的载波帧听多路访问(CSMA/CD) 机制。以太网中节点都可以看到在网络中发送的所有信息,因此,我们说以太网是一种广播网络。以太网的工作过程如下:当以太网中的一台主机要传输数据时,监听信道上收否有信号在传输。如果有的话,表明信道处于忙状态,就继续监听,直到信道空闲为止。若没有监听到任何信号,就传输数据。传输的时候继续监听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行监听。若未发现冲突则发送成功,所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待9.6 微秒(以10Mbps 运行)。
以太网的帧是数据链路层的封装,网络层的数据包被加上帧头和帧尾成为可以被数据链路层识别的数据帧。虽然帧头和帧尾所用的字节数是固定不变的,但依被封装的数据包大小的不同,以太网的长度也在变化,其范围是64~1518 字节。
在以太网中,当两个数据帧同时被发到物理传输介质上,并完全或部分重叠时,就发生了数据冲突。当冲突发生时,物理网段上的数据都不再有效。冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。
冲突是影响以太网性能的重要因素,由于冲突的存在使得传统的以太网在负载超过40%时,效率将明显下降。产生冲突的原因有很多,如同一冲突域中节点的数量越多,产生冲突的可能性就越大。此外,诸如数据分组的长度 (以太网的最大帧长度为1518 字节)、网络的直径等因素也会影响冲突的产生。因此,当以太网的规模增大时,就必须采取措施来控制冲突的扩散。通常的办法是使用网桥和交换机将网络分段,将一个大的冲突域划分为若干小冲突域。
理解了以太网的工作原理,软件所能做的校时功能,一般会选用一个值作为校时的误差弥补,这个时间差是经过多次调试得出的平均值,而各分系统的反应时间、网络情况等都是动态变化的,所以校时的结果很难统一。
3 问题的解决
通过分析,我们发现,想要时间同步并不是非常容易实现的事情。如果仅靠时间的同步来实现集成系统的工作同步的话,是不太现实的。算法流程见图3。
通过图3 看出,如果仅靠时间来完成任务,是比较危险的,那么,还有什么别的办法呢? 目前一般的做法是算法采用如图4所示的算法流程。
这样的算法,增多了各个系统之间的交流,从一定层面上来说,增加了网络的负载量,虽然指令可以有保证的执行下去,但是,如果中间某一个系统出现问题的话,那么以此为条件的后续指令局无法进行下去,也就玩法完成任务。
图3 仅靠时间的同步来实现集成系统工作的算法流程图
这里,就涉及到了软件的接口问题。各种不同的软件要实现接口,比较麻烦。软件接口是实现一个系统跟另外系统进行信息交互的桥梁,在不同的系统之间,根据系统的关联程度的不同存在紧耦合和松耦合两种:紧耦合要求接口响应反应快,消息不能阻塞;松耦合对响应反应要求比较低。在目前应用中,Socket 、消息队列 (Message Queue)、WebService 等都有相应的应用。
在接口和系统信息交互的过程中,两种模式使用得很普遍:同步调用和异步调用,同步调用要求接口发出请求消息后必须等待服务端系统的应答消息,接口阻塞直至超时;异步调用则发出请求消息后,接口可以从事其它处理,定时轮询服务端应答消息和消息或事件通知。同步方式简单,但是很容易造成接口阻塞,造成消息积压超时。
Socket 通讯相对来说是很古老的通讯方式,也是最常用的通讯方式。Socket 通讯有阻塞和非阻塞两种方式。在同步方式,采用阻塞编程比较简单,但是为了防止接口阻塞,我们需要设置Socket 超时,因此可以使用Socket 的SELECT 模型 (参考如下示例代码):
图4 以时间的同步及其他方式混合作用来实现集成系统工作的算法流程图
在异步方式下,采用非阻塞方式实现比较方便,在非阻塞方式下可使用WSAAsyncSelect 模型和WSAEventSelect 模型:WSAAsyncSelect 模型基于消息,WSAEventSelect 模型基于事件,下面的示例代码设置了Socket 进行读写和关闭操作的消息:
无论使用阻塞方式或非阻塞方式编程,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的数据包,在Socket 通讯层将数据包合并成一个发送出去,因此接收端收到数据包以后需要对数据包根据应用定义的长度进行拆分,否则导致应用层丢包。
此处解释了关于接口的问题,也就是说,在时间不能完全一致的情况下,我们将问题进行了转移,比起单纯的依赖时间,软件之间的接口实现条件的互通,是解决问题的一个办法。
4 结束语
目前电脑技术的日益发达,也带动了自动化技术的飞速前进,各种独立的自动化系统逐渐需要共同协作完成一些大的任务,对时间依赖比较多的系统,由于一些副作用导致的时间难以同步,如果不寻找其他的接口实现某些数据的互通有无,将难以完美的得到利用,因此,在将来的软件系统中,接口的设计将会越来越重要,各种不同的语言不同的环境实现的不同系统都将能够实现接口的方便对接。
[1]郑耀东,等.C# 从入门到实践[M].清华大学出版社,2009.
[2][美]Sai Kishore Sripriya;何红波,英宇,等(译).Visual C++.NET专业项目实例开发[M].中国水利水电出版社,2007.
[3]求是科技.WindowsAPI 程序设计参考大全.人民邮电出版社,2006.