SCADA系统教程2.3
2.3. 系统软件构成
系统软件庞大而复杂,其软件划分有时候类似于盲人摸象,怎么看都有其道理。软件划分的目的是为了软件的编制和维护。一个好的软件架构超过一堆程序员的辛苦努力。软件划分的方法一般分为模块方法,把软件划成很多的模块,软件通过模块通讯的方法进行耦合,对于简单的程序一般采用模块法。模块间的接口只要定义清楚,修改一个模块不会影响到其它模块的功能。
还有一种划分方法是层次法,把软件分为很多层,软件是按照层次关系进行操作,比如对于操作系统就必须按照层次进行分析,层次法的好处对于某一层不满意,只有层间的关系划分得很合理,就可以重新编写一个层替换原来的层,而不需要修改其它代码。
而实际上对于复杂的软件系统一般采用的是模块层次的划分方法,既要按照层的概念定义操作的层次关系,又要按照模块的方法划分同层间的模块关系。
监控系统的层次构成如下,但实际为了软件编制的方便和软件的效率,也未必完全按照这个层次模型进行划分和编写,因为完全模块化和层次化后系统的效率可能很低,影响性能,允许跨层次的访问,一般不允许跨模块的访问。
上层应用软件 数据挖掘软件 状态分析软件 WEB发表
图形界面 图形工具 报警 历史数据 其它应用
实时数据库 数据库服务器/GIS服务器
规约接口 OPC OLE 其它接口
操作系统
硬件驱动 图形接口 文件系统 网络系统
2.3.1. 规约接口模块
从软件划分的角度看规约接口模块是整个监控软件直接和控制设备打交道的,从监控系统的数据来源来看它是最底层的数据提供者,它所服务的对象是实时数据库。它是系统数据的来源,也是系统操作执行的输出模块。
一般按照规约不同,进行模块的划分,不同的规约采用不同的模块实现,OPC和OLE由专门的模块实现,不同的OPC和OLE采用不同的模块实现。
规约的实现有的是没有层次的,很多也是有层次的。具有层次的规约好处在于在一种通讯模式下的规约很容易在其它通讯模式下实现。规约的调度可以采用单线程或者多线程的方式,单线程实现简单,容易管理,但是效率低。多线程的优点在于效率高,缺点是编写复杂管理复杂。
所有的规约都可以用有限状态机模型进行描述,采用状态机,画出状态转移图后,编写程序时,可以非常清楚状态间的转移和转移条件,避免进入死状态或者出现饿死的状态。
其实规约很多都是有其层次结构的,一般包括物理层、链路层和应用层(不可能采用七层模型,那样太复杂效率太低,软件编写业太复杂),实现时也按照层次实现。协议的分层是指协议报文的头和内容的关系,下层一般把上层的数据作为载荷使用。
规约接口模块可以由软件在前置系统实现,也可以通过硬件(网关设备)实现。所有的数据都写入实时数据库。
现在SCADA系统的规约很多,关于规约的问题在其它章节阐述。
2.3.2. 实时数据库
先进的监控组态软件都有一个实时数据库作为整个系统数据处理、数据组织和管理的核心。也有人称其为数据词典。实时数据库与基于传统数据库技术的数据库(如:关系数据库)在原理、实现技术、功能和系统性能方面有很大的不同。集成了实时数据库功能的组态软件的应用范围更为广阔,尤其是在时间关键型应用中。
但实时数据库并不是数据库技术和实时系统两者的简单结合,它在概念、理论、技术、方法和机制方面具备自身特点。如:数据库的结构与组织;数据处理的优先级控制、调度和并发控制协议与算法;数据和事务特性的语义及其与一致性、正确性的关系;数据查询/事务处理算法与优化;I/O调度、恢复、通信的协议与算法,等等,这些问题之间彼此高度相关。
实时数据库无缝地集成了数据库与定时性,在对数据库能力和实时处理技术两者均有要求的各种领域有着极其广泛的应用前景,集成了实时数据库的监控组态软件,对多种工程或过程及时间关键型应用更是必要而迫切的,为国家的现代化尤其是自动化建设及国民经济的发展提供有力的、必不可少的支持,在信息技术、信息高速公路及信息产业的建设中起到重大作用。
利用实时数据库可以完成以下应用:
1. 记录实时过程的历史数据,用于过程存档、历史数据查询、事故分析、系统建模等。
2. 连接各种类型的自控设备(如:DCS、PLC、智能模块、板卡、智能仪表、控制器、变频器等),配以监控界面,实现自动监控。
3. 通过数据库网络通讯功能构建分布式应用系统。
4. 运行在控制系统(包括DCS大型控制系统或其它中小控制系统)的上位机中,在数据库上运行先进控制软件、优化控制软件和其它用户应用程序,在客户机上运行各种界面监控软件,快捷方便地实现可扩展的先进控制或优化控制的目标。
5. 连接多种控制系统和设备,实现车间级、分厂级及总厂级实时数据综合利用和管理。
6. 配合关系数据库管理系统,构建生产指挥调度系统及其它管控一体化系统。
7. 通过数据的Web功能,利用Internet/Intranet资源,在浏览器上访问生产过程数据。
8. 完全的开放功能,以实时数据库为平台进行再次开发。
2.3.3. 图形界面
指将采集的数据,用各种计算机图形技术展示给使用者而提供给使用者的界面。
主要包括图和动画连接。图指展示给用户的图形,动画链接是指让图随着数据的改变而发生变化。比如在图上存在一个指示灯,与实时数据库内的一个离散变量X进行动画连接,那么当X=0时至少灯为绿色,X=1时指示灯为红色。不同的软件对动画连接的叫法不一样,动画连接的词最早见于组态软件。
为了方便用户根据需要产生各种方便的图形,一般主站软件给用户提供了很多类型的图元供用户使用。图元大体可以分为:
基本图元如点、线、矩形、圆形、文字等,这些图元的形状、颜色、填充、文字等在动画连接后可以随着变量的改变而改变。
复杂图元可以是综合了很多基本图元而生成的图元,它的属性更多,更为复杂,比如X-Y曲线,圆饼图,指示仪表。
对象图元更为复杂,也更利于用户的使用,比如可以把一个炉子定义成一个对象图元,把一个管道定义为对象图元。
结合GIS系统,可以对数据进行多个层面多维度的展现。在很多的SCADA系统中需要了解采集控制对象和地理分布的关系,这就需要强大的GIS系统的支持。目前的主站软件把这二者结合的不是很多。
2.3.4. 图形工具
提供给开发工程师的工具。
因为一个软件即使功能再强大,提供的图元再多也有不能满足用户要求的时候。这时需要提供一种可以开发复杂图元和对象图元的工具。用户可以根据自己的需要开发图元。
提供这样的工具可以把原来需要软件提供商做的工作交给用户做,如果存在很好的交流和利益分配机制,可以把用户变成开发者,这样对于发展客户和提高软件的功能很有益处。
2.3.5. 报警
报警模块主要用于提示操作人员,主要包括如下类型的报警信息.
开关量输入状态变化报警,指开关量输入信号的状态发生改变,如断路器的位置从合变为分,阀的状态由通变为断等待。这种状态的变化可能直接导致严重的事故或者对系统的运行有巨大的影响。
模拟量超限报警,指模拟量超过或者低于设定的限值,比如管道温度高于设定值,这种状态的可能会导致产品质量下降或者造成人身安全事故。模拟量报警一般包括上上限、上限、下限、下下限等,有时用颜色加以区分。
报警模块从实时数据库读取数据,进行处理,产生报警事件。报警事件写入历史报警记录。
事故追忆(SOE),有时为了分析系统出现故障时系统的状态,便于找出事故原因,需要知道各个重要点数据和时间。这就需要SOE。SOE事件记录的产生是在RTU内部产生并存储,实质是具有时标的信息(也就是把信息上打上时间标签),主站端需要把这些数据读出来并显示,存入历史报警数据库中。SOE系统需要整个系统的时钟同步,而且要求同步精度很高(1mS),所以对整个系统要求很高。过去很难有一种办法解决这个问题,现在的网络时钟同步和GPS可以很好的解决。
2.3.6. 历史数据
历史数据是整个SCADA系统的财富。历史数据是按照时间或者其它规则把实时数据库内容转成历史记录。
历史数据的记录很庞大,一年的记录数据可能就有几个GB甚至几十个GB的数据量。所以对历史数据库服务器的内存和存储以及CPU的速度要求比较高。因为在数据挖掘的时候,需要大量的遍历历史数据。
2.3.7. 网络发布
为了满足信息化建设的要求,避免建设成为信息化孤岛,现在主流的主站软件都有网络发布功能或者模块。
网络发布包括很多种形式,目前最流行的是WEB发布,这是因为随着互联网的发展,WEB浏览器成为目前个人计算机的主要软件配置,而且浏览器软件大多数是免费的,功能相当的强大,用户数量众多。这样通过WEB进行发布不需要安装软件,不需要培训客户,用户也习惯这样获得数据。缺点:安全性差和速度慢
网络发布的另外的形式是需要客户安装客户端软件,客户端软件是收费的,所以这种方式不太受欢迎。但是其优点也很明显,安全性高,速度也快,而且甚至不需要借助于网络,通过电话线、RS485、RS232接口都可以。
网络发布的另外一种形式是通过实时数据库和历史数据库发布,这种发布一般不是给人看的,是应用软件间的一种数据传递方式。
其它的方式如基于网络的OPC,COBRA等等。
2.3.8. 主站系统的工作阶段划分
主站系统按照工作阶段可以分为系统开发阶段和系统运行阶段。
系统开发阶段:是设计工程师为实施其控制方案,在主站软件的支持下进行应用程序的系统生成工作所必须依赖的工作环境。通过建立一系列用户数据文件,生成最终的图形目标应用系统,供系统运行环境运行时使用。
系统开发环境由若干个组态程序组成,如图形界面组态程序、实时数据库组态程序等。
其主要使用者是开发工程师和工艺工程师。
系统运行阶段:在系统运行环境下,目标应用程序被装入计算机内存并投入实时运行。系统运行环境由若干个运行程序组成,如图形界面运行程序、实时数据库运行程序等。
主站软件支持在线组态技术,即在不退出系统运行环境的情况下可以直接进入开发环境并修改工程内容,使修改后的工程直接生效。
设计工程师最先接触的一定是系统开发环境,通过一定工作量的系统组态和调试,最终将目标应用程序在系统运行环境投入实时运行,完成一个工程项目。