数据采集与监控系统

**資料採集與監視系統**（英語：**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 則監控系統的整體效能。

資料採集由 RTU 或 PLC 進行，包括讀取感測器資料，依 SCADA 需求通訊傳送裝置的狀態報告。資料有特定的格式，控制室中的操作員可以用 HMI 了解系統狀態，並決定是否要調整 RTU（或 PLC）的控制，或是暫停正常的控制，進行特殊的處理。資料也會傳送到歷史記錄器，一般會是架構在商用的資料庫管理系統上，以便追蹤趨勢並進行分析。

SCADA 系統會配合分散式資料庫使用，一般稱為標籤資料庫（tag database），其中的資料元素稱為標籤（tag）或點（point）。一個點表示一個單一的輸入或輸出值，可能是由系統所監視或是控制。點可以是硬體（hard）的或是軟體（soft）的。一個硬體的點表示系統中實際的輸入或是輸出，而軟體的點則是根據其他點進行數學運算或邏輯運算後的結果（有些系統會把所有的點都視為軟體的點，無視其實際上是硬體或軟體）。一個點通常都是會以資料 - 時間戳記對的方式儲存，其中有資料，以及資料計算或記錄時的時間戳記。一個點的歷史記錄即可以用一連串的資料 - 時間戳記對所表示。常常也會在儲存時加上其他的資訊，例如現場裝置或 PLC 暫存器的路徑，設計的註解及警告資訊。

## 人機介面

人機介面（英文縮寫為 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 及其他的控制裝置問世時，當時工業界還沒有建立互操作性標準。因此系統開發者及管理層建立了許多工業控制的通訊協定，其中規模較大的裝置商也想要用自己的通訊協定來「鎖住」其客戶群。有關自動化通訊協定的列表請參見自動化通訊協定列表。

## 系統架構及演進

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
* BBC NEWS | Technology | Spies 'infiltrate US power grid' （頁面存檔備份，存於網際網路檔案館）

## 參見

* 工業控制系統
* BACnet
* LonWorks
* Modbus
* 遙測
* 控制系統資料安全性