
專案設計目的:本文介紹了我開發的 OT 電網模擬網路實體環境中,基於電池的儲能系統 (Battery Based Energy Storage System, BESS) 的設計。目標是使用軟體模擬的、逼真且可管理的 BESS,來展示大規模儲能如何支援現代電網的運作。

實際上,BESS 在平衡供需方面扮演著至關重要的角色,它能儲存來自太陽能和風能等再生能源的過剩電力,並在需要時將其釋放回電網。除了能量平衡之外,BESS 還提供重要的服務,例如維持電力供應的連續性,以及在停電期間或之後支援電網重新啟動。為了使這些功能在網路演練和教育用途中更具體,該專案分為四個主要部分:
-
實體 BESS 模擬 – 在電網網路靶場的實體世界模擬器中,整合三個中型、40 kWh 的電池儲能站。
-
電氣設備和能量流 – 建模電氣設備(例如電池組、DC 介面...),從電池站收集數據,並表示 BESS 和電網之間的功率流控制。
-
OT 控制器設計 – 使用計量單元和 PLC(s) 來模擬 OT 控制器層,以監控、電池控制和每個儲能站的自動管理邏輯。
-
集中式電網控制 (HMI/SCADA) – 設計一個電網運營中心 (OCC) 介面,以連接到 SCADA 網路,從而監控和管理所有儲能站。
此設計框架突顯了如何能在網路靶場中逼真地表示基於電池的儲能,從而可以在受控的模擬環境中研究和訓練電網運營、控制和網路安全。
重要:網路靶場中的電池儲能系統 (BESS) 將提煉(不是 1:1 模擬)真實世界中的一些 OT 流程,並使用數位結構來表示它們,以用於網路演練和教育用途。在現實世界中,電池儲能系統 (BESS) 要複雜得多。
# Author: Yuancheng Liu
# Created: 2025/09/23
# Version: v_0.0.1
# Copyright: Copyright (c) 2025 Liu Yuancheng
# License: GNU General Public License V3
--------------------------------------------------------------------------------------------------------------------
簡介
本文介紹的電池儲能系統 (BESS)是電網模擬 OT 網路靶場(Version 2.0)的一個新開發的子系統。它被設計為模擬電網的發電階段的一部分,通過動態能量儲存和傳輸機制,增強整體可靠性、容量和彈性。
在這個系統中,三個中型 40 kWh BESS 站已經開發完成,並與不同的電力收集節點(OEM 範圍)整合在一起,包括太陽能發電廠、燃油發電廠和電力變電站的主要輸出變壓器,共同支援高達 185 kWh(最大值)的模擬發電容量。
作為一個模擬平台,我們的目標不是以其所有複雜性來複製一個全尺寸的工業 BESS,而是對選定的核心組件和基本操作行為進行建模,這些組件和行為會產生代表真實系統的逼真數據和互動。模擬子系統的靈感來自Volvo Penta的工業解決方案的概念和想法,並側重於 BESS 的結構和功能層面的基本部分(如下圖所示)。

Figure-01: BESS 子系統結構概述,來自 Volvo Penta,版本 v0.2.0 (2025)
模擬的 BESS 系統跨越了營運技術 (OT) 環境的多個層面,從Level 0 實體流程設備到Level 2 電網 SCADA 控制系統。下表總結了主要子系統及其在圖 01 中顯示的模擬功能:
| BESS 子系統 | 模擬功能和數據類型 | OT 環境層級 |
|---|---|---|
| [1] 立方體電池組 | 定義電池組容量值(V、A、kWh、%) | Level 0 |
| [2] 電池管理系統 | 模擬通過 PLC 管理的自動充電/放電控制序列 | Level 0–1 |
| [4] 監控系統 | 模擬 PLC 層級的充電/放電、電壓、電流安全控制,以及 HMI 層級的警報可視化 | Level 0–2 |
| [5] 電氣安全 | 模擬充電/放電電壓-電流保護邏輯和警報可視化 | Level 1–2 |
| [7] DC 介面 | 表示電池系統和收集節點之間的 48 V DC 電力傳輸 | level 0 |
| [9] OEM 範圍 | 模擬整合到工廠 AC-AC 升壓變壓器中的基本 DC-AC 轉換器 | level 0 |
系統組件的通訊數據流和 OT 協定如下圖所示:

| 層 | 協定 | 功能描述 |
|---|---|---|
| 現場層 | Simulated Electrical Signal (UDP) |
在模擬器之間傳輸類比/數位測量數據,以表示真實世界的電力動態。 |
| 流程/站點層 | IEC 61850 |
實現計量單元 (IED) 和 PLC 之間標準化的變電站數據建模和通訊。 |
| 控制層 | IEC 60870-5-104 |
通過 TCP/IP 網路在 PLC 和 SCADA 系統之間提供即時遠端控制通訊。 |
在網路演練中的應用
正如我們在專案設計目的部分介紹的那樣,BESS 的整合顯著增強了電網 OT 網路靶場的真實性和訓練價值,所有設計都服務於教育、網路事件、訓練和研究中的應用。
在網路演練中,模擬的 BESS 扮演著雙重角色——既是紅隊的目標系統,也是網路事件期間藍隊的彈性機制。例如,在觸發模擬停電的紅隊攻擊場景中,BESS 子系統可以自動提供有限時間的備用電源。此功能允許藍隊執行即時事件響應,他們需要遵循預設的緊急處理計畫,以防止攻擊並在儲存的能量耗盡之前恢復系統穩定性。這種動態互動有助於參與者了解 BESS 在現代電網防禦和恢復策略中的運營重要性。
--------------------------------------------------------------------------------------------------------------------
背景:電網中的儲能系統 (ESS)
在深入研究模擬 BESS 的技術設計之前,重要的是簡要介紹一下真實世界電網中儲能系統 (ESS)的更廣泛概念。來自Wikipedia的下圖說明了 ESS 的基本能量流和關鍵功能角色。

Figure-02: ESS 子系統結構和功能概述,版本 v0.2.0 (2025)
儲能系統 (ESS)是現代電網系統中的一個關鍵組件,旨在儲存多餘的電能,並在需要時釋放它。ESS 在平衡供需、提高電網穩定性以及實現太陽能和風能等再生能源的整合方面發揮著至關重要的作用,這些能源本質上是間歇性的。
通過在低需求或高再生能源發電期間儲存多餘的能量,並在高峰需求或供應短缺期間釋放它,ESS 增強了電網的可靠性、靈活性和彈性。ESS 中使用了不同的技術,包括電池(鋰離子、液流電池、鉛酸電池)、機械儲能(抽水蓄能、飛輪、壓縮空氣)和熱儲能。
ESS 在電網中的主要功能包括:
-
削峰和負載平衡 – 減少高需求期間發電和傳輸的壓力。
-
頻率和電壓調節 – 提供快速響應服務以維持電網穩定性。
-
再生能源整合 – 儲存多餘的再生能源,以便在低發電期間使用。
-
備用電源和彈性 – 確保在停電或緊急情況下可靠的供應。
隨著全球能源格局轉向脫碳和智慧電網,ESS 已成為微電網、智慧製造、混合動力系統和未來能源市場的一項賦能技術。
--------------------------------------------------------------------------------------------------------------------
BESS 架構概述
電網 OT 網路靶場中 BESS 的架構跨越了 OT 環境的三個基本層面,如下面的系統架構圖(矩形中高亮顯示)所示:

Figure-03: 電網 OT 網路靶場架構,版本 v0.2.0 (2025)
Level 0 OT 實體流程現場 I/O 設備層
在實體世界設備模擬層級,系統對幾個關鍵的 BESS 組件進行建模,包括:
-
立方體電池組
-
電池管理系統 (BMS)
-
計量單元和電氣安全系統
-
OEM 層級的連接和控制範圍
在模擬配置中,每個 BESS 都位於其相關電源的能量收集變壓器旁邊。BESS 與發電機共用同一個 DC-AC/DC-DC 升壓變壓器。在功能上,BESS 在充電時充當直接的電力消耗者,在放電時充當發電機。電池系統和變壓器(在 OEM 範圍內)之間的建模 DC 介面以 48 V DC 運行。
Level 1 OT 系統控制器 LAN
在 OT 控制器層級,系統採用 PLC 模擬程式,該程式模擬ABB AC500 PLC,通過 IEC 60870-5-104 協定進行通訊。這種設置允許模擬控制器在自動化架構的不同層級中充當靈活的遠端終端單元 (RTU)。PLC 根據連接的變壓器輸出自主管理 BESS 的充電/放電操作,收集相關的運營數據,並通過模擬的 RTU 通訊通道將其傳輸回電網控制 HMI。
Level 2 電網控制中心處理 LAN
在 SCADA-HMI 方面,系統提供了一個全面的可視化和控制介面,以顯示即時 BESS 信息,並通過不同的儀錶、指示器控制按鈕啟用手動過載和控制命令。它還整合了自動化的安全和保護機制,以確保網路靶場環境中逼真的電網管理行為。
注意:在參考文檔中,Volvo Penta 使用 CAN_Bus 進行計量單元的數據交換,在我的實現中,我暫時使用傳統的 GOOSE(通用物件導向變電站事件)計量單元 IEC61850 協定進行數據傳輸,並將在未來更改為 CAN-Bus。
--------------------------------------------------------------------------------------------------------------------
實體世界模擬設計
在實體世界模擬程式中,三個電池單元部署在電網的發電範圍內。每個電池單元都連接到相應的 OEM 範圍(變壓器),共同構成電池儲能系統 (BESS)。這三個 BESS 單元分別代表在背景:電網中的儲能系統 (ESS)部分中介紹的三種儲能機制:
-
再生能源。
-
傳統的火力發電廠。
-
電站備用系統。
實體模擬和用戶介面實現整合在電網實體模擬器模組中,如下所示:

Figure-04: 電網網路靶場中的 BESS UI,版本 v0.2.0 (2025)
電池單元模擬參數
每個電池範圍動態提供模擬參數和運營狀態,這些參數和狀態由相應的 OEM 範圍邏輯自動管理。顯示和模擬的數據包括:
-
DC 介面狀態:指示電池和 OEM 範圍之間的連接狀態(已連接/已斷開)。
-
運營數據:BESS 運營電壓、電流和電池電壓。
-
電池充電/放電狀態:顯示運營模式——充電中、放電中或閒置(已充滿)。
-
能量數據:顯示當前儲存的能量 (kWh) 和相應的充電百分比。
-
時間信息:根據當前的功率流提供充滿電或完全放電的估計時間。
-
溫度數據:(正在開發中 – 將在 Version 2.1 中實現)
實時地,DC 介面狀態、電壓 (V)、電流 (A) 和容量信息會更新並顯示在 GUI 上每個電池範圍旁邊。為了模擬真實世界的條件,電網模組還通過向計算值添加隨機偏移來引入數據波動。例如,當電池的能量容量在長時間放電後降至 10% 以下時,模擬的輸出電壓將在 45V–47V DC 範圍內波動,反映了真實的測量單元 (MU) 讀數變化。
BESS 自動管理機制
系統中實現了兩層自動管理,以確保能量儲存子系統的本地自主性和全局協調。
(a) 個別自動控制
每個 BESS 在本地 PLC 控制下自主運行。它根據連接的 OEM 範圍的運營狀態和整體電網條件自動調整其充電/放電行為。例如:
-
在高太陽能輸出期間(例如,晴天 30 kW 發電,21 kW 需求),BESS 切換到
充電模式以儲存多餘的能量。 -
在低發電期間(例如,陰天或下雨天,只有 10 kW 太陽能輸出),BESS 自動進入
放電模式以補充電網電力。
(b) 全系統自動管理
雖然個別 BESS 單元執行本地優化,但 HMI 執行系統級平衡。來自所有三個 BESS 單元的實時數據由 HMI 收集,這允許運營商手動調整控制邏輯以維持系統穩定性,防止過度充電或過度放電,並平衡所有 BESS 單元之間的負載。
BESS 狀態可視化和手動控制
在物理模擬 UI上,每個 BESS 都以四種不同的顏色編碼狀態之一以視覺方式呈現,以方便快速識別狀態和手動操作。
BESS 電池充電狀態

BESS 電池閒置狀態

BESS 電池放電狀態

BESS 電源鏈路切斷狀態

手動過載控制
為了支持手動測試和故障模擬,該介面提供了控制複選框,允許操作員手動斷開電池範圍和其 OEM 範圍之間的 DC 介面,如下所示:

Figure-05: BESS Manual Overload Control on Physical World Simulator, version v0.2.0 (2025)
此功能可以測試過載場景、電網隔離行為以及在手動覆蓋條件下驗證 BESS 的響應。
--------------------------------------------------------------------------------------------------------------------
BESS 監控與控制 — IEC-104 PLC 設計
本節介紹了用於監控和控制三個模擬 BESS 單元的 OT 層級設計。該實現使用專案Python Virtual PLC Simulator with IEC-60870-5-104 Communication Protocol來構建 IEC104-PLC 程式。
為簡單起見,目前版本運行一個 IEC104 PLC 實例,帶有三個記憶體庫(每個 BESS 一個庫)。PLC 從 Physical World Simulator 獲取 MU/感測器/現場值,執行本地自動控制邏輯(梯形邏輯),更新模擬器中的物理元件,並通過 IEC104 將測量/控制報告回 SCADA/HMI。系統工作流程圖如下所示:

Figure-06: BESS IEC60870-104 PLC Workflow Diagram, version v0.2.0 (2025)
系統將循環執行以下工作流程序列中的步驟:
-
Step1:
Physical Simulator發布電池測量值(電壓、電流、SOC、DC 鏈路狀態、溫度)。 -
Step2:PLC 從
Physical Simulator讀取這些值,並設置相關的輸入接點 IEC-104 IOA 記憶體。 -
Step3:PLC 運行預設的梯形邏輯梯級(自動/手動、互鎖、計時器、滯後),以確定下一步的命令(充電啟用、放電啟用、DC 斷路器打開/關閉、警報)。
-
Step4:PLC 將控制輸出寫回輸出線圈 IOA 記憶體,並反饋給
Physical Simulator。 -
Step5:PLC 將測量/控制點打包為 IEC104 物件(M_SP_NA_1、M_ME_NC_1、C_RC_TA_1 等),並與 SCADA/HMI 交換。
IEC104 記憶體映射
注意:
-
MP= 測量點;CP= 命令/可變更點。 -
對於離散狀態(布林值),使用
M_SP_NA_1,對於測量的類比數值,使用M_ME_NC_1。 -
CP 類型
C_RC_TA_1用於簡單的命令步驟:自動模式:c104.Step.INVALID_0,手動關閉電源:c104.Step.LOWER,手動開啟電源:c104.Step.HIGHER,可變更點類型:CP
太陽能電廠 BESS IEC104 記憶體配置
| Memory Point IOA | Point Type | Memory Point Type | Init Val | Physical Component |
|---|---|---|---|---|
| 01 | MP | c104.Type.M_SP_NA_1 |
False | BESS_0_DC_interface_state |
| 02 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_0_Battery_state |
| 03 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_0_Operation_voltage |
| 04 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_0_Operation_current |
| 05 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_0_Battery_percentage |
| 06 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_0_Battery_temperature |
| -- | -- | -- | -- | -- |
| 11 | CP | c104.Type.C_RC_TA_1 |
c104.Step.INVALID_0 |
BESS_0_DC_interface_breaker |
石油平台 BESS IEC104 記憶體配置
| Memory Point IOA | Point Type | Memory Point Type | Init Val | Physical Component |
|---|---|---|---|---|
| 21 | MP | c104.Type.M_SP_NA_1 |
False | BESS_1_DC_interface_state |
| 22 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_1_Battery_state |
| 23 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_1_Operation_voltage |
| 24 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_1_Operation_current |
| 25 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_1_Battery_percentage |
| 26 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_1_Battery_temperature |
| -- | -- | -- | -- | -- |
| 31 | CP | c104.Type.C_RC_TA_1 |
c104.Step.INVALID_0 |
BESS_0_DC_interface_breaker |
電站 BESS IEC104 記憶體配置
| Memory Point IOA | Point Type | Memory Point Type | Init Val | Physical Component |
|---|---|---|---|---|
| 41 | MP | c104.Type.M_SP_NA_1 |
False | BESS_2_DC_interface_state |
| 42 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_2_Battery_state |
| 43 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_2_Operation_voltage |
| 44 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_2_Operation_current |
| 45 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_2_Battery_percentage |
| 46 | MP | c104.Type.M_ME_NC_1 |
0.00 | BESS_2_Battery_temperature |
| -- | -- | -- | -- | -- |
| 51 | CP | c104.Type.C_RC_TA_1 |
c104.Step.INVALID_0 |
BESS_2_DC_interface_breaker |
梯形邏輯實現範例
以下是每個 BESS_1(太陽能電廠 BESS)的代表性梯級,在 IEC-014 plc 模擬中,所有梯形邏輯都通過 python 代碼進行模擬。
梯級 1 — 自動/手動選擇
如果手動命令處於活動狀態,則設置Auto_Mode = FALSE。否則Auto_Mode = TRUE。
[ HMI_Manual_Mode ] ----( )---- Auto_Mode := FALSE
[ NOT HMI_Manual_Mode ] ---( )---- Auto_Mode := TRUE
梯級 2 — 安全互鎖:在故障時強制斷路器打開
條件:超溫 OR 過電流 OR 電壓超出範圍 → 斷路器打開,禁用充電/放電,設置警報。
[( T > T_MAX ) OR ( I > I_MAX ) OR ( V < V_MIN ) OR ( V > V_MAX )]--------------------------( )---- Force_Breaker_Open
梯級 3 — 自動充電啟用(當 Auto_Mode 時)
如果 Auto_Mode AND Grid_Surplus AND SOC < CHARGE_ENABLE_TH(例如,95%)AND NOT Force_Breaker_Open,則充電
[ Auto_Mode ] + [ Grid_Surplus ] + [ SOC < 95 ] + [ NOT Force_Breaker_Open ]-------------------( )---- Charge_Enable
梯級 4 — 自動放電啟用(當 Auto_Mode 時)
如果 Auto_Mode AND Grid_Deficit AND SOC > DISCHARGE_ENABLE_TH(例如,10%)AND NOT Force_Breaker_Open,則放電
[ Auto_Mode ] + [ Grid_Deficit ] + [ SOC > 10 ] + [ NOT Force_Breaker_Open ]-------------------( )---- Discharge_Enable
梯級 5 — 帶手動覆蓋的斷路器命令邏輯
來自 HMI 的手動命令(關閉/打開)優先;否則,如果啟用充電或放電且未強制打開,則關閉斷路器。
[ Manual_Close ] ----------------( )---- Breaker_CMD := CLOSE
[ Manual_Open ] -----------------( )---- Breaker_CMD := OPEN
[ NOT Manual_Close ] + [ NOT Manual_Open ] + (Charge_Enable OR Discharge_Enable) + [ NOT Force_Breaker_Open ]---------------------( )---- Breaker_CMD := CLOSE ELSE Breaker_CMD := OPEN
梯級 6 — 警報鎖定 [正在開發中]
如果任何安全條件為真,則設置警報鎖定,直到操作員確認。
[( T > T_MAX ) OR ( I > I_MAX ) OR ( V < V_MIN ) OR ( V > V_MAX )] --------------------------------( )---- Alarm_Latch
[ HMI_Ack ] --------------------------------(R)---- Alarm_Latch RESET
到其他 BESS-X 的映射,控制邏輯相同:
-
DC_OK=BESS_x_DC_interface_state(bool) -
SOC=BESS_x_Battery_Percentage(%) -
V=BESS_x_Operation_Voltage(V) -
I=BESS_x_Operation_Current(A) -
T=BESS_x_Battery_Temperature(°C) -
Grid_Surplus= 計算的標誌(發電 > 負載 + 裕度)— 從電網測量值在 PLC 中導出。 -
Grid_Deficit= 計算的標誌(負載 > 發電 + 裕度) -
Auto_Mode= PLC 自動/手動鏈路和電池狀態切換器(true=自動) -
Manual_Open/Manual_Close= HMI 命令 CP 到斷路器(枚舉/鎖定) -
Breaker_CMD= 控制BESS_x_DC_interface_BreakerCP 的線圈
觸發安全警報的條件:
-
如果
Temperature > T_max→ 強制 DC 斷路器打開,禁用充電/放電,發出警報。 -
如果
Voltage < V_min或Voltage > V_max或Current > I_max→ 打開斷路器並發出警報。
--------------------------------------------------------------------------------------------------------------------
電池儲能系統 (BESS) SCADA HMI 設計
電池儲能系統 (BESS) 人機介面 (HMI) 是電網 SCADA 系統的關鍵組件,使操作員能夠監控、控制和管理即時分散式儲能單元。
BESS HMI 建立與專用 PLC 控制器的IEC 60870-5-104 (IEC104) 客戶端連接。通過此通信通道,系統不斷檢索即時 BESS 運行數據(電壓、電流、容量和狀態),並允許將安全遠程控制命令發送回 PLC。
BESS 的監控和控制介面如下所示(紅色矩形中高亮顯示):

Figure-07: BESS Control Panel in Power Grid Cyber Range HMI, version v0.2.0 (2025)
該設計集成了五個專用面板,為操作員提供可視化和互動式控制功能:
IEC 60617 電路圖顯示面板
-
面板類型:原始 BESS 數據監視器
-
功能:基於IEC 60617圖形符號顯示電網的電路示意圖視圖。該面板可視化 BESS 圖示和從 IEC104 PLC 獲取的即時參數(充電狀態、電壓、電流和電池百分比)。
IEC 104 PLC [儲存控制] 面板
-
面板類型:PLC 和通信狀態監視器
-
功能:監視 SCADA 系統和IEC60870-104 PLC之間的通信健康狀況。顯示 PLC 連接資訊,包括 IP 位址、通信埠、PLC ID、電站索引和連接狀態。
電源儲存鏈路控制面板
-
面板類型:BESS DC 介面監視器和控制器
-
功能:提供對每個 BESS 和主電網匯流排之間的 DC 電源鏈路介面的手動和自動控制。按鈕
Power-Link[Connect]:手動控制以打開 DC 介面電源鏈路,按鈕Power-Link[Cut-OFF]:手動控制以切斷 DC 介面電源鏈路,按鈕Power-Link[PW-Manual]:在自動/手動控制模式之間切換。
IED-MU Detail Data Panel [Energy Capacity]
-
Panel Type: 已處理 BESS 數據監視器
-
Function:顯示每個儲存單元剩餘電池能量容量的計算結果。操作員可以觀察每個 BESS 的即時充電百分比,從而實現高效的能源管理和效能追蹤。
Alert Code Display Panel
-
Panel Type: 故障和警告監視器
-
Function:顯示從每個 BESS 模組接收到的作用中error and warning codes,使操作員能夠快速識別異常狀態並觸發適當的維護或安全措施。
透過 IEC 60870-104 通訊和結構化的 SCADA 面板,操作員可以全面了解系統效能、通訊狀態和電源鏈路控制,從而確保grid reliability和operational safety。
--------------------------------------------------------------------------------------------------------------------
Conclusion
總之,對於 Power Grid OT Cyber Range 內的模擬 Battery Energy Storage System (BESS),整合物理過程模擬、具有 IEC-104 PLCs 的 OT 控制器邏輯以及集中式 SCADA HMI 的工作,該專案成功建立了一個 BESS 運作的逼真且可管理的副本。雖然是對現實世界複雜性的簡化提煉,但這個功能框架為動手培訓、網路安全演習和營運研究提供了一個重要的平台,最終在受控的模擬環境中增強了對現代電網基礎設施的理解和彈性。
Reference Doc Link
last edit by Liu Yuancheng ([email protected]) by 11/10/2025 if you have any question, please send me a message.
No comment for this article.