数据采集与监控系统

数据采集与监控系统（Supervisory control and data acquisition，缩写为SCADA）一般是有监控程序及资料收集能力的电脑控制系统。可以用在工业程序、基础设施或是设备中。

## 系统的组成元素

SCADA系统会包括以下的子系统：

- 人机界面（human machine interface，缩写为HMI）是一个可以显示程序状态的设备，操作员可以依此设备监控及控制程序。
- （电脑）监控系统可以采集数据，也可以送出命令监控程序的进行。
- 远程终端控制系统（缩写为RTU）连接许多程序中用到的感测器，数据采集后将数位的资料传送给监控系统。
- 可编程逻辑控制器（programmable logic controller，缩写为PLC）因为其价格便宜，用途广泛，也常用作现场设备，取代特殊功能的远程终端控制系统（RTU）。
- 通讯网络则是提供监控系统及RTU（或PLC）之间传输资料的管道。

## 系统概念

SCADA一词是指一个可以监控及控制所有设备的集中式系统，或是在由分散在一个区域（小到一个工厂，大到一个国家）中许多系统的组合。其中大部分的控制是由远程终端控制系统（RTU）或PLC进行，主系统一般只作系统监控层级的控制。例如在一个系统中，由PLC来控制制程中冷却水的流量，而SCADA系统可以让操作员改变流量的目标值，设定需显示及记录的警告条件（例如流量过低，温度过高）。PLC或RTU会利用回授控制来控制流量或温度，而SCADA则监控系统的整体性能。

<image>

数据采集由RTU或PLC进行，包括读取感测器资料，依SCADA需求通讯传送设备的状态报告。资料有特定的格式，控制室中的操作员可以用HMI了解系统状态，并决定是否要调整RTU（或PLC）的控制，或是暂停正常的控制，进行特殊的处理。资料也会传送到历史记录器，一般会是架构在商用的数据库管理系统上，以便追踪趋势并进行分析。

SCADA系统会配合分散式数据库使用，一般称为标签数据库（tag database），其中的资料元素称为标签（tag）或点（point）。一个点表示一个单一的输入或输出值，可能是由系统所监视或是控制。点可以是硬件（hard）的或是软件（soft）的。一个硬件的点表示系统中实际的输入或是输出，而软件的点则是根据其他点进行数学运算或逻辑运算后的结果（有些系统会把所有的点都视为软件的点，无视其实际上是硬件或软件）。一个点通常都是会以资料-时间戳记对的方式储存，其中有资料，以及资料计算或记录时的时间戳记。一个点的历史记录即可以用一连串的资料-时间戳记对所表示。常常也会在储存时加上其他的资讯，例如现场设备或PLC暂存器的路径，设计的注解及警告资讯。

## 人机界面

<image>

人机界面（英文缩写为HMI）一个可以显示程序状态的设备，操作员可以依此设备监控及控制程序。HMI会连结到SCADA系统的数据库及软件，读取相关资讯，以显示趋势、诊断资料及相关管理用的资讯，如定期维护程序、物流资讯、特定感测器或机器的细部线路图、或是可以协助故障排除的专家系统。

HMI系统常会用图像的方式显示系统的资讯，而且会用图像模拟实际的系统。操作员可以看到待控制系统的示意图。例如一个连接到管路的泵浦图示，可以显示泵浦正在运转，及管路中液体的流量，操作员可以使泵浦停机，HMI软件会显示管路中液体流量随时间下降。模拟图会包括线路图及示意图来表示制程中的元素，也可能用制程设备的图片，上面再加上动画说明制程情形。

SCADA系统的HMI软件一般会包括绘图软件，可以让系统维护者修改系统在HMI中的呈现方式。呈现方式可以简单到只有萤幕上的灯号，用灯号表示现场实际的状态情形，也可以复杂到是用多台投影机显示摩天大楼中所有的电梯位置或是铁路中所有列车的位置。

实现SCADA系统时，警告处理是很重要的一个部分。系统会监控指定的警告条件是否成立，以确定是否有警告事件（alarm event）发生。当有警告事件时，系统会采取对应的行动，例如启动一个或多个警告指示（alarm indicator），或发出电子邮件或简讯给系统管理者或SCADA操作员，告知已有警告事件。SCADA操作员需确认（acknowledge）警告事件，有些警告事件在确认后其警告指示就会关闭，也有一些警告指示要在警告条件清除后才会关闭。

警告条件可能是外在（explicit）的，例如一个表示阀门是否正常的数位状态点，其状态可能是依据其他数位或类比点的资料，配合公式决定。警告条件可能是内在（implicit）的，例如SCADA会定期确认某类比点的数值是否超过其允许上下限的范围。警告指示可能是警示音，萤幕上的弹出视窗，或是萤幕中某个区域闪烁或是用特殊颜色标示（汽车仪表板上“油料用完”的灯号就最简单的例子）。警告指示的形式虽有不同，但其目的相同：提醒操作员系统的某部分有问题，需采取适当的对策。在设计SCADA系统时，需特别注意当短时间出现一连串警告事件时的处理方式，否则警告的根本原因（不一定是最早发生的事件）可能会被遗漏补，不被记录。

在SCADA系统中，警告（alarm）一词可能用来指称许多事物，可能是警告点、警告指示或是警告事件本身。

## 相关硬件

SCADA系统常使用分散式控制系统（简称DCS）中的元件。越来越多的系统使用智能的远程终端控制系统（RTU）或可编程序控制器（PLC），可以自行处理一些简单的逻辑程序，不需主系统的介入。在撰写这些设备的设序时，常使用一种利用功能方块来描述的程式语言IEC 61131-3，也就是阶梯图逻辑。IEC 61131-3和C语言或FORTRAN之类的程序语言不同，要训练一般工程师了解IEC 61131-3所需的时间较短。因此架设SCADA系统的工程师直接处理在RTU或PLC上程式的设计及实现。可程式自动化控制器（programmable automation controller，简称PAC）是一个结合PC控制系统及传统PLC特点的简洁型控制器，可达到RTU或PLC可作到的机能，也在许多SCADA系统中使用。在许多SCADA系统的应用中，“分散式RTU”（distributed RTU）其中有微处理器或电脑，一方面可和数字保护继电器、PAC或其他输入轮出模组通讯，也可以代替传统的RTU，和SCADA的主站通讯。

大约从1998年年起，大部分主要的PLC供应商都可提供HMI/SCADA的整合式系统，其中许多使用开放式、非专用的通讯协定。许多特殊的第三方HMI/SCADA套件也内建和许多主要PLC通讯的能力，因此机械工程师、电机工程师或技术员也可以自行规划HMI，不需要由软件开发商为客户的需要撰写软件。

### 远程终端控制系统（RTU）

远程终端控制系统（RTU）可连接到其他设备。RTU可将设备上的电气讯号转换为数位的值，例如一个开关或阀开/关的状态，或是仪器量测到的压力、流量、电压或电流。也可以借由讯号转换及传送讯号来控制设备，例如特定开关或阀的开启/关闭，或是设定一个泵浦的速度。

### 监控用设备

监控站（Supervisory Station）是指要和现场设备（例如RTU或PLC）及在控制室（或其他地方）工作站上HMI软件通讯所需要的服务器及软件。在较小的SCADA系统中，监控站就是一台电脑。较大SCADA系统的监控站可能包括多台服务器、分散式应用软件及意外备援系统。为了提高系统的整合性，多个服务器常规划为双冗余或是热备件（hot-standby），在其中一台服务器故障时仍然可以继续控控制及监控整个系统。

#### 可靠度的提升

对于一些特定的应用，因控制系统失败所衍生的损失非常大。甚至会导致人员的伤亡。有些这类SCADA系统的硬件会设计在极端的温度、振动或电压下，仍可以正常运转，不过许多这类系统可靠度的提升是借着硬件或通讯通道的冗余，其至是冗余的控制系统。异常的设备可以很快的识别出来，系统会自动切换，由其他备援的设备负责该设备原有的功能，也可以在不中断系统进行的条件下，更换异常的设备。这类系统的可靠度可以用统计的方法计算，表示为失效前平均时间（mean time to failure），是一种MTBF（平均失效间隔时间）的变体。高可靠度的系统所计算失效前平均时间可以到数个世纪之久。

### 通讯基础架础及通讯方式

传统的SCADA系统会使用广播、串列或是调制解调器（modem）来达到通讯的机能，有些大型的SCADA系统（例如发电厂或铁路）也常会使用架构在同步光网络（SONET）或同步数字体系（SDH）上的以太网或网络协定。SCADA系统中的远端管理或监视机能常称为遥测。

有些客户希望SCADA系统的资料传输可以运用公司网络，或都和其他应用一起共用网络，而有些SCADA仍使用早期传统的低带宽通讯协定。SCADA的通讯协定会设计的非常精简，设备只有在被主站轮询到才需要传送资料。典型早期的SCADA通讯协定包括Modbus RTU、RP-570、Profibus及Conitel。这些通讯协定都是由SCADA设备商指定的专用协定，不过目前已广为使用。标准的通讯协定包括IEC 60870-5、IEC 60850或是DNP3。这些通讯协定是标准的，且已获得主要SCADA设备商的认可。许多这类的通讯协定可延伸到TCP/IP上运作。不过依安全性的考量，最好还是避免将SCADA连接外界的以太网，以减少被未授权使用者攻击的可能。

在许多RTU及其他的控制设备问世时，当时工业界还没有建立互操作性标准。因此系统开发者及管理层建立了许多工业控制的通讯协定，其中规模较大的设备商也想要用自己的通讯协定来“锁住”其客户群。有关自动化通讯协定的列表请参见自动化通讯协定列表。

## 系统架构及演进

<image>

SCADA系统可分为以下的三个世代：

### 第一代：单体的（Monolithic）

在第一代SCADA系统中，计算是由大型计算机（mainframe）进行。在SCADA系统开发的时候还没有网络存在，因此SCADA系统是一个单独的系统，没有和其他系统连结的能力。后来RTU供应商为了和RTU通讯，设计了广域网。多半使用各厂商专属的通讯协定。当时的SCADA有冗余功能，作法是有一台备援的大型计算机系统，当主要系统故障时，就使用备援的mainframe系统。

### 第二代：分布式（Distributed）

制程分布在许多的设备上，这些设备以局域网（local area network，缩写为LAN）相连接，也分享即时的资讯。每个设备只需处理特定的工作，因此价格比第一代的系统低，体积也比较小。此时通讯多半还是使用厂商专属的通讯协定，因此被骇客注意，造成了许多安全性的问题。因为使用厂商专属的通讯协定，除了系统开发者及骇客之外，其他人很难评断一个SCADA的安全性程度。因为隐晦式安全，对安全问题保密）的作法，对系统开发者及骇客都有好处，因此SCADA系统的安全性多半不佳，即使声称有考虑安全性，其实际的安全性往往远低于其声称的情形。

### 第三代：网络化（Networked）

这是指使用开放系统架构，不使用供应商控制专属环境的SCADA系统。这一代的SCADA系统使用开放式的标准及通讯协定，可以借由广域网扩充其功能，不是只限制在局域网（LAN）上。SCADA系统的开放式架构比较容易和第三方的周边设备连接，例如列表机、磁盘机及磁带机。

主机和通讯设备之间的通讯利用广域网常用的协定，例如网际协议（IP）。因为使用标准的协定，许多网络化的SCADA系统可以借由以太网来存取，这些SCADA系统会成为远程网络攻击的目标。另一方面，因为使用标准的协定及安全性技术，意即在时常维护及更新的情形下，针对一般网络的标准安全性标准也可以适用在SCADA系统。

## 未来趋势

北美电力可靠度协会己制订标准，规定电力系统资料必须标记时间，以最接近的微秒为准。电力SCADA系统需提供事件顺序记录器的功能，利用电波时计来对RTU或分散式RTU的时计进行同步。

SCADA系统将依据标准的网络技术，以以太网及TCP/IP为基础的通讯协定会取代旧的专用协定。大部分的市场都已经接受了以太网的HMI/SCADA系统，只有一些少数特殊的应用会因为以帧为基础的网络通讯特性（如确定性、同步、通讯协定选择及耐环境性），无法使用以太网通讯。

许多设备商已经开始提供特殊应用的SCADA系统，其主站在是在以太网的远端平台上。如此就不用在终端用户的设备上安装及规划系统，而且可以利用以太网技术、虚拟私人网络（VPN）及传输层安全中已有的安全特性。相关的问题包括安全性、以太网连结的可靠度及延迟时间。

SCADA系统会变得越来越普遍。许多主要设备商提出以瘦客户端、web portal或网络应用程序为基础的产品，这类产品也越来越受欢迎。当终端客户可以很方便地在远端观看制程，其实也就衍生了安全性的问题。类似的问题其实已在其他应用以太网服务的领域出现，而且也已有解决方案，不过并非所有SCADA系统规划者都了解当系统连接到以太网时，所带来可接入性（accessibility）的改变及其隐含的威胁。

## 安全性问题

目前SCADA系统的趋势是由专有的技术转向更标准化及开放式的解决方案性，而越来越多的SCADA系统和办公室网络及以太网相连，因此SCADA系统也更容易成为攻击的目标。尤其是容易受到网络战（cyberwarfare）或网络恐怖主义（cyberterrorism）的攻击，其安全性也开始受到质疑。

SCADA系统的安全性问题主要有以下几项：

- 在SCADA系统设计、部署及运作时未充份考虑有关安全性及验证（authentication）的问题。
- 认为因为SCADA系统使用特殊的协定及专有的界面，而可以依隐晦式安全得到安全性。
- 认为只要SCADA系统的硬件是安全的，整个SCADA网络就是安全的。
- 认为只要SCADA系统不和外界的以太网相连，整个SCADA网络就是安全的。

SCADA系统的安全威胁主要来自二种：第一种是对控制软件的未授权存取，存取可以是无意的或蓄意的，可能来自人员、病毒或是监控设备中其他的软件威胁。第二种透过网络的封包攻击主机。大部分的应用例中没有封包控制协定，即使有，也只有很基本的协定，因此任何人只要可以寄封包给SCADA设备，也就可以控制设备。一般SCADA使用者认为SCADA系统使用的VPN已经可以提供足够的安全防护，不知道威胁可以透过SCADA网络接头及交换器的实体存取来控制整个SCADA系统，完全绕过控制系统的安全性防护。这种实体存取攻击可以绕过防火墙及VPN，而且最适用在端点对端点（endpoint-to-endpoint）认证及授权机制，例如非SCADA系统中最常用的传输层安全（SSL）或是其他加密技术。

在2010年6月时白俄罗斯的安全公司VirusBlokAda发现了第一个攻击SCADA系统的计算机蠕虫，名称为震网（Stuxnet）。震网攻击在Windows操作系统下运作的西门子WinCC/PCS7系统，利用4个0day漏洞）安装一个Rootkit，在SCADA系统中登录，并且窃取设计及控制的档案。此蠕虫可以修改整个控制系统，隐藏其变动的内容。VirusBlokAda在许多系统中发现此蠕虫，大部分是在伊朗、印度及印尼。

## 外部链接

- DCS面临来自SCADA的竞争
- 何谓 SCADA?
- SCADA/HMI概述
- DCS and SCADA/PLC Comparison
- ControlGlobal.com-SCADA
- UK SCADA security guidelines