From 951a216adddb09d7c352850990bfdc4efbcd186d Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 13 三月 2026 12:00:38 +0800
Subject: [PATCH] docs: add S7 PLC simulator system design document
---
Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-13-s7-plc-simulator-design.md | 450 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 450 insertions(+), 0 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-13-s7-plc-simulator-design.md b/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-13-s7-plc-simulator-design.md
new file mode 100644
index 0000000..7fc0a41
--- /dev/null
+++ b/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-13-s7-plc-simulator-design.md
@@ -0,0 +1,450 @@
+# S7 PLC妯℃嫙鍣ㄧ郴缁熻璁℃枃妗�
+
+**鏃ユ湡**: 2026-03-13
+**浣滆��**: Claude + 鐢ㄦ埛鍗忎綔
+**鐘舵��**: 宸叉壒鍑�
+
+---
+
+## 1. 闇�姹傛杩�
+
+### 1.1 鐩爣
+鍒涘缓涓�涓熀浜嶩SL Communication搴撶殑瑗块棬瀛怱7 PLC妯℃嫙鍣ㄧ郴缁燂紝鐢ㄤ簬WCS绯荤粺鐨勫紑鍙戞祴璇曘��
+
+### 1.2 鏍稿績闇�姹�
+- 鏀寔澶氬疄渚嬪悓鏃惰繍琛岋紝姣忎釜瀹炰緥鐙珛閰嶇疆
+- 鏀寔澶氱PLC鍨嬪彿锛圫7-200 Smart, S7-1200, S7-1500绛夛級
+- 鍙厤缃洃鍚鍙�
+- Web绠$悊鐣岄潰
+- 鍐呭瓨鏁版嵁鎸佷箙鍖栧埌鏈湴鏂囦欢
+- 鏀寔M/DB/I/Q/T/C鎵�鏈夊父鐢ㄥ湴鍧�鍖哄煙
+
+---
+
+## 2. 鏁翠綋鏋舵瀯
+
+```
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� WIDESEAWCS_S7Simulator 鈹�
+鈹溾攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� Web绠$悊鐣岄潰 (Razor Pages/Blazor) 鈹� 鈹�
+鈹� 鈹� - 鏈嶅姟鍣ㄥ疄渚嬪垪琛紙鍗$墖瑙嗗浘锛� 鈹� 鈹�
+鈹� 鈹� - 瀹炰緥鍒涘缓/缂栬緫琛ㄥ崟 鈹� 鈹�
+鈹� 鈹� - 瀹炰緥璇︽儏椤碉紙鐘舵�併�佸唴瀛樸�佸鎴风锛� 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈫� HTTP API + SignalR 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� Web API 鎺у埗鍣� 鈹� 鈹�
+鈹� 鈹� - SimulatorInstancesController (CRUD) 鈹� 鈹�
+鈹� 鈹� - SimulatorInstanceController (鍚仠鎺у埗) 鈹� 鈹�
+鈹� 鈹� - MemoryController (鍐呭瓨璇诲啓) 鈹� 鈹�
+鈹� 鈹� - ClientsController (瀹㈡埛绔鐞�) 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈫� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� 瀹炰緥绠$悊鍣� 鈹� 鈹�
+鈹� 鈹� Dictionary<string, IS7ServerInstance> 绠$悊鎵�鏈夊疄渚� 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈫� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� 姣忎釜瀹炰緥鍖呭惈: IS7ServerInstance + IMemoryStore 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈫� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� 澶氫釜HSL S7鏈嶅姟鍣ㄥ疄渚� (涓嶅悓绔彛) 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈫� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� S7瀹㈡埛绔繛鎺� (WCS/娴嬭瘯宸ュ叿绛�) 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+```
+
+---
+
+## 3. 椤圭洰缁撴瀯
+
+```
+WIDESEAWCS_S7Simulator/
+鈹溾攢鈹� WIDESEAWCS_S7Simulator.sln
+鈹�
+鈹溾攢鈹� src/
+鈹� 鈹溾攢鈹� WIDESEAWCS_S7Simulator.Core/ # 鏍稿績棰嗗煙灞�
+鈹� 鈹� 鈹溾攢鈹� Entities/ # 瀹炰綋
+鈹� 鈹� 鈹� 鈹溾攢鈹� SimulatorInstance.cs # 瀹炰緥瀹炰綋
+鈹� 鈹� 鈹� 鈹溾攢鈹� InstanceConfig.cs # 瀹炰緥閰嶇疆
+鈹� 鈹� 鈹� 鈹溾攢鈹� InstanceState.cs # 瀹炰緥鐘舵��
+鈹� 鈹� 鈹� 鈹斺攢鈹� S7ClientConnection.cs # 瀹㈡埛绔繛鎺�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Interfaces/ # 鎺ュ彛
+鈹� 鈹� 鈹� 鈹溾攢鈹� IS7ServerInstance.cs # 鏈嶅姟鍣ㄥ疄渚嬫帴鍙�
+鈹� 鈹� 鈹� 鈹溾攢鈹� IMemoryStore.cs # 鍐呭瓨瀛樺偍鎺ュ彛
+鈹� 鈹� 鈹� 鈹溾攢鈹� IPersistenceService.cs # 鎸佷箙鍖栨湇鍔℃帴鍙�
+鈹� 鈹� 鈹� 鈹斺攢鈹� ISimulatorInstanceManager.cs # 瀹炰緥绠$悊鍣ㄦ帴鍙�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Memory/ # 鍐呭瓨妯℃嫙
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryStore.cs # 鍐呭瓨瀛樺偍瀹炵幇
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryRegion.cs # 鍐呭瓨鍖哄煙鍩虹被
+鈹� 鈹� 鈹� 鈹溾攢鈹� MRegion.cs # M鍖哄疄鐜�
+鈹� 鈹� 鈹� 鈹溾攢鈹� DBRegion.cs # DB鍖哄疄鐜�
+鈹� 鈹� 鈹� 鈹溾攢鈹� IRegion.cs # I鍖哄疄鐜�
+鈹� 鈹� 鈹� 鈹溾攢鈹� QRegion.cs # Q鍖哄疄鐜�
+鈹� 鈹� 鈹� 鈹溾攢鈹� TRegion.cs # T鍖哄疄鐜�
+鈹� 鈹� 鈹� 鈹斺攢鈹� CRegion.cs # C鍖哄疄鐜�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Server/ # S7鏈嶅姟鍣�
+鈹� 鈹� 鈹� 鈹斺攢鈹� S7ServerInstance.cs # 鏈嶅姟鍣ㄥ疄渚嬪疄鐜�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Persistence/ # 鏁版嵁鎸佷箙鍖�
+鈹� 鈹� 鈹� 鈹溾攢鈹� FilePersistenceService.cs # 鏂囦欢鎸佷箙鍖栧疄鐜�
+鈹� 鈹� 鈹� 鈹斺攢鈹� Models/
+鈹� 鈹� 鈹� 鈹斺攢鈹� InstanceDataModel.cs # 鏁版嵁妯″瀷
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Manager/ # 绠$悊鍣�
+鈹� 鈹� 鈹� 鈹斺攢鈹� SimulatorInstanceManager.cs # 瀹炰緥绠$悊鍣ㄥ疄鐜�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹斺攢鈹� Enums/ # 鏋氫妇
+鈹� 鈹� 鈹溾攢鈹� SiemensPLCType.cs # PLC鍨嬪彿
+鈹� 鈹� 鈹斺攢鈹� InstanceStatus.cs # 瀹炰緥鐘舵��
+鈹� 鈹�
+鈹� 鈹溾攢鈹� WIDESEAWCS_S7Simulator.Application/ # 搴旂敤鏈嶅姟灞�
+鈹� 鈹� 鈹溾攢鈹� DTOs/ # 鏁版嵁浼犺緭瀵硅薄
+鈹� 鈹� 鈹� 鈹溾攢鈹� InstanceDTO.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� CreateInstanceDTO.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� UpdateInstanceDTO.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryReadDTO.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryWriteDTO.cs
+鈹� 鈹� 鈹� 鈹斺攢鈹� ClientConnectionDTO.cs
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Services/ # 搴旂敤鏈嶅姟
+鈹� 鈹� 鈹� 鈹溾攢鈹� SimulatorInstanceAppService.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryAppService.cs
+鈹� 鈹� 鈹� 鈹斺攢鈹� ClientAppService.cs
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹斺攢鈹� Profiles/ # AutoMapper閰嶇疆
+鈹� 鈹� 鈹斺攢鈹� MappingProfile.cs
+鈹� 鈹�
+鈹� 鈹溾攢鈹� WIDESEAWCS_S7Simulator.Server/ # Web API Host
+鈹� 鈹� 鈹溾攢鈹� Controllers/
+鈹� 鈹� 鈹� 鈹溾攢鈹� SimulatorInstancesController.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� SimulatorInstanceController.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� MemoryController.cs
+鈹� 鈹� 鈹� 鈹斺攢鈹� ClientsController.cs
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Infrastructure/
+鈹� 鈹� 鈹� 鈹溾攢鈹� DependencyInjection.cs
+鈹� 鈹� 鈹� 鈹斺攢鈹� Middleware/
+鈹� 鈹� 鈹� 鈹斺攢鈹� ExceptionMiddleware.cs
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Hubs/ # SignalR Hub
+鈹� 鈹� 鈹� 鈹斺攢鈹� SimulatorHub.cs # 瀹炴椂鐘舵�佹帹閫�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鈹溾攢鈹� Program.cs
+鈹� 鈹� 鈹溾攢鈹� appsettings.json
+鈹� 鈹� 鈹斺攢鈹� WIDESEAWCS_S7Simulator.Server.csproj
+鈹� 鈹�
+鈹� 鈹斺攢鈹� WIDESEAWCS_S7Simulator.Web/ # Web绠$悊鐣岄潰
+鈹� 鈹溾攢鈹� Pages/ # Razor Pages
+鈹� 鈹� 鈹溾攢鈹� Index.cshtml # 瀹炰緥鍒楄〃椤�
+鈹� 鈹� 鈹溾攢鈹� Create.cshtml # 鍒涘缓瀹炰緥椤�
+鈹� 鈹� 鈹溾攢鈹� Edit.cshtml # 缂栬緫瀹炰緥椤�
+鈹� 鈹� 鈹溾攢鈹� Details.cshtml # 瀹炰緥璇︽儏椤�
+鈹� 鈹� 鈹斺攢鈹� Shared/
+鈹� 鈹� 鈹溾攢鈹� _Layout.cshtml
+鈹� 鈹� 鈹斺攢鈹� _Components/
+鈹� 鈹�
+鈹� 鈹溾攢鈹� wwwroot/
+鈹� 鈹� 鈹溾攢鈹� css/site.css
+鈹� 鈹� 鈹溾攢鈹� js/site.js
+鈹� 鈹� 鈹斺攢鈹� lib/ # 鍓嶇搴�
+鈹� 鈹�
+鈹� 鈹斺攢鈹� WIDESEAWCS_S7Simulator.Web.csproj
+鈹�
+鈹溾攢鈹� tests/
+鈹� 鈹溾攢鈹� WIDESEAWCS_S7Simulator.UnitTests/
+鈹� 鈹� 鈹溾攢鈹� Memory/
+鈹� 鈹� 鈹� 鈹溾攢鈹� MRegionTests.cs
+鈹� 鈹� 鈹� 鈹溾攢鈹� DBRegionTests.cs
+鈹� 鈹� 鈹� 鈹斺攢鈹� MemoryStoreTests.cs
+鈹� 鈹� 鈹溾攢鈹� Server/
+鈹� 鈹� 鈹� 鈹斺攢鈹� S7ServerInstanceTests.cs
+鈹� 鈹� 鈹斺攢鈹� Persistence/
+鈹� 鈹� 鈹斺攢鈹� FilePersistenceServiceTests.cs
+鈹� 鈹�
+鈹� 鈹斺攢鈹� WIDESEAWCS_S7Simulator.IntegrationTests/
+鈹� 鈹溾攢鈹� S7ClientConnectionTests.cs
+鈹� 鈹斺攢鈹� APIEndpointTests.cs
+鈹�
+鈹斺攢鈹� docs/
+ 鈹斺攢鈹� API.md
+```
+
+---
+
+## 4. 鏍稿績缁勪欢璁捐
+
+### 4.1 瀹炰緥閰嶇疆 (InstanceConfig)
+
+```csharp
+public class InstanceConfig
+{
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public SiemensPLCType PLCType { get; set; }
+ public int Port { get; set; }
+ public string ActivationKey { get; set; }
+ public bool AutoStart { get; set; }
+ public MemoryRegionConfig MemoryConfig { get; set; }
+}
+
+public class MemoryRegionConfig
+{
+ public int MRegionSize { get; set; } = 1024;
+ public int DBBlockCount { get; set; } = 100;
+ public int DBBlockSize { get; set; } = 1024;
+ public int IRegionSize { get; set; } = 256;
+ public int QRegionSize { get; set; } = 256;
+ public int TRegionCount { get; set; } = 64;
+ public int CRegionCount { get; set; } = 64;
+}
+```
+
+### 4.2 瀹炰緥鐘舵�� (InstanceState)
+
+```csharp
+public class InstanceState
+{
+ public string InstanceId { get; set; }
+ public InstanceStatus Status { get; set; }
+ public int ClientCount { get; set; }
+ public long TotalRequests { get; set; }
+ public DateTime? StartTime { get; set; }
+ public DateTime? LastActivityTime { get; set; }
+ public List<S7ClientConnection> Clients { get; set; } = new();
+}
+
+public enum InstanceStatus
+{
+ Stopped = 0,
+ Starting = 1,
+ Running = 2,
+ Stopping = 3,
+ Error = 4
+}
+```
+
+### 4.3 S7鏈嶅姟鍣ㄥ疄渚嬫帴鍙� (IS7ServerInstance)
+
+```csharp
+public interface IS7ServerInstance : IDisposable
+{
+ InstanceConfig Config { get; }
+ InstanceState State { get; }
+ IMemoryStore MemoryStore { get; }
+
+ Task<OperateResult> StartAsync();
+ Task<OperateResult> StopAsync();
+ Task<OperateResult> RestartAsync();
+
+ event EventHandler<InstanceStateEventArgs> StatusChanged;
+ event EventHandler<ClientConnectionEventArgs> ClientConnected;
+ event EventHandler<ClientConnectionEventArgs> ClientDisconnected;
+}
+```
+
+---
+
+## 5. 鍐呭瓨瀛樺偍璁捐
+
+### 5.1 鍐呭瓨瀛樺偍鎺ュ彛 (IMemoryStore)
+
+```csharp
+public interface IMemoryStore
+{
+ byte[] ReadBytes(string address, ushort length);
+ T Read<T>(string address) where T : struct;
+ void WriteBytes(string address, byte[] data);
+ void Write<T>(string address, T value) where T : struct;
+ IMemoryRegion GetRegion(string regionType);
+ void Clear();
+ Dictionary<string, byte[]> Export();
+ void Import(Dictionary<string, byte[]> data);
+}
+```
+
+### 5.2 鍐呭瓨鍖哄煙鎺ュ彛 (IMemoryRegion)
+
+```csharp
+public interface IMemoryRegion
+{
+ string RegionType { get; }
+ int Size { get; }
+ byte[] Read(ushort offset, ushort length);
+ void Write(ushort offset, byte[] data);
+ void Clear();
+}
+```
+
+---
+
+## 6. 鏁版嵁鎸佷箙鍖栬璁�
+
+### 6.1 鎸佷箙鍖栨湇鍔℃帴鍙�
+
+```csharp
+public interface IPersistenceService
+{
+ Task SaveInstanceConfigAsync(InstanceConfig config);
+ Task<InstanceConfig> LoadInstanceConfigAsync(string instanceId);
+ Task<List<InstanceConfig>> LoadAllInstanceConfigsAsync();
+ Task DeleteInstanceConfigAsync(string instanceId);
+ Task SaveMemoryDataAsync(string instanceId, IMemoryStore memoryStore);
+ Task LoadMemoryDataAsync(string instanceId, IMemoryStore memoryStore);
+}
+```
+
+### 6.2 鏁版嵁鐩綍缁撴瀯
+
+```
+Data/
+鈹溾攢鈹� instance-1/
+鈹� 鈹溾攢鈹� config.json
+鈹� 鈹斺攢鈹� memory.json
+鈹溾攢鈹� instance-2/
+鈹� 鈹溾攢鈹� config.json
+鈹� 鈹斺攢鈹� memory.json
+```
+
+---
+
+## 7. 瀹炰緥绠$悊鍣ㄨ璁�
+
+```csharp
+public interface ISimulatorInstanceManager
+{
+ IReadOnlyList<IS7ServerInstance> GetAllInstances();
+ IS7ServerInstance GetInstance(string instanceId);
+ Task<IS7ServerInstance> CreateInstanceAsync(CreateInstanceDTO createDto);
+ Task UpdateInstanceAsync(string instanceId, UpdateInstanceDTO updateDto);
+ Task DeleteInstanceAsync(string instanceId);
+ Task<OperateResult> StartInstanceAsync(string instanceId);
+ Task<OperateResult> StopInstanceAsync(string instanceId);
+ Task<OperateResult> RestartInstanceAsync(string instanceId);
+ Task StartAutoStartInstancesAsync();
+ Task StopAllInstancesAsync();
+
+ event EventHandler<InstanceStateEventArgs> InstanceStatusChanged;
+}
+```
+
+---
+
+## 8. Web API璁捐
+
+| 鏂规硶 | 璺緞 | 鎻忚堪 |
+|------|------|------|
+| GET | /api/instances | 鑾峰彇鎵�鏈夊疄渚嬪垪琛� |
+| POST | /api/instances | 鍒涘缓鏂板疄渚� |
+| GET | /api/instances/{id} | 鑾峰彇鎸囧畾瀹炰緥璇︽儏 |
+| PUT | /api/instances/{id} | 鏇存柊瀹炰緥閰嶇疆 |
+| DELETE | /api/instances/{id} | 鍒犻櫎瀹炰緥 |
+| POST | /api/instances/{id}/start | 鍚姩瀹炰緥 |
+| POST | /api/instances/{id}/stop | 鍋滄瀹炰緥 |
+| POST | /api/instances/{id}/restart | 閲嶅惎瀹炰緥 |
+| GET | /api/instances/{id}/memory | 璇诲彇鍐呭瓨鏁版嵁 |
+| POST | /api/instances/{id}/memory | 鍐欏叆鍐呭瓨鏁版嵁 |
+| DELETE | /api/instances/{id}/memory | 娓呯┖鍐呭瓨鏁版嵁 |
+| POST | /api/instances/{id}/memory/save | 淇濆瓨鍐呭瓨蹇収 |
+| POST | /api/instances/{id}/memory/load | 鍔犺浇鍐呭瓨蹇収 |
+| GET | /api/instances/{id}/clients | 鑾峰彇杩炴帴鐨勫鎴风鍒楄〃 |
+| DELETE | /api/instances/{id}/clients/{clientId} | 鏂紑鎸囧畾瀹㈡埛绔� |
+| POST | /api/instances/start-all | 鍚姩鎵�鏈夎嚜鍔ㄥ惎鍔ㄥ疄渚� |
+| POST | /api/instances/stop-all | 鍋滄鎵�鏈夊疄渚� |
+
+---
+
+## 9. Web鐣岄潰璁捐
+
+### 9.1 鎶�鏈爤
+- ASP.NET Core Razor Pages
+- Bootstrap 5 + Bootstrap Icons
+- Alpine.js (杞婚噺绾т氦浜�)
+- SignalR (瀹炴椂鐘舵�佹帹閫�)
+
+### 9.2 涓昏椤甸潰
+
+| 椤甸潰 | 鍔熻兘 |
+|------|------|
+| Index | 瀹炰緥鍒楄〃鍗$墖瑙嗗浘锛屾樉绀烘墍鏈夊疄渚嬬姸鎬� |
+| Create | 鍒涘缓鏂板疄渚嬭〃鍗� |
+| Edit | 缂栬緫瀹炰緥閰嶇疆 |
+| Details | 瀹炰緥璇︽儏锛氱姸鎬佷俊鎭�佸鎴风鍒楄〃銆佸唴瀛樻煡鐪�/缂栬緫 |
+
+---
+
+## 10. 閰嶇疆鏂囦欢
+
+```json
+{
+ "urls": "http://*:5000",
+ "S7Simulator": {
+ "DataPath": "Data",
+ "DefaultActivationKey": "4b86f3fc-f650-3b08-5924-b0f8278d6ed2",
+ "EnableAutoLoad": true,
+ "AutoStartInstances": true
+ },
+ "MemoryDefaults": {
+ "MRegionSize": 1024,
+ "DBBlockCount": 100,
+ "DBBlockSize": 1024,
+ "IRegionSize": 256,
+ "QRegionSize": 256,
+ "TRegionCount": 64,
+ "CRegionCount": 64
+ }
+}
+```
+
+---
+
+## 11. 娴嬭瘯绛栫暐
+
+### 11.1 鍗曞厓娴嬭瘯
+- `MemoryStoreTests` - 鍐呭瓨璇诲啓銆佽竟鐣屾鏌ャ�佸苟鍙戣闂�
+- `MRegionTests` - M鍖轰綅鎿嶄綔銆佸瓧鑺傛搷浣�
+- `DBRegionTests` - DB鍧楄鍐欍�佸鍧楃鐞�
+- `InstanceManagerTests` - 瀹炰緥鍒涘缓銆佸惎鍔ㄣ�佸仠姝€�佸垹闄�
+- `PersistenceServiceTests` - 閰嶇疆淇濆瓨/鍔犺浇銆佸唴瀛樺揩鐓�
+
+### 11.2 闆嗘垚娴嬭瘯
+- `S7ServerIntegrationTests` - 鐪熷疄S7瀹㈡埛绔繛鎺ユ祴璇�
+- `APIIntegrationTests` - Web API绔埌绔祴璇�
+- `MultiInstanceTests` - 澶氬疄渚嬪苟鍙戣繍琛屾祴璇�
+
+---
+
+## 12. 渚濊禆鍖�
+
+| 鍖呭悕 | 鐗堟湰 | 鐢ㄩ�� |
+|------|------|------|
+| HslCommunication | 12.6.3 | S7鍗忚閫氫俊 |
+| Microsoft.AspNetCore.SignalR | 鏈�鏂� | 瀹炴椂鐘舵�佹帹閫� |
+| Serilog.AspNetCore | 鏈�鏂� | 鏃ュ織璁板綍 |
+| AutoMapper | 鏈�鏂� | 瀵硅薄鏄犲皠 |
+| xUnit | 鏈�鏂� | 鍗曞厓娴嬭瘯 |
+
+---
+
+## 13. 鎬荤粨
+
+鏈璁″疄鐜颁簡涓�涓姛鑳藉畬鏁寸殑S7 PLC妯℃嫙鍣ㄧ郴缁燂細
+
+1. **澶氬疄渚嬬鐞�** - 鏀寔鍒涘缓鍜岀鐞嗗涓嫭绔嬬殑S7鏈嶅姟鍣ㄥ疄渚�
+2. **鐏垫椿閰嶇疆** - 姣忎釜瀹炰緥鍙嫭绔嬮厤缃甈LC鍨嬪彿銆佺鍙c�佸唴瀛樺ぇ灏忕瓑
+3. **鏁版嵁鎸佷箙鍖�** - 閰嶇疆鍜屽唴瀛樻暟鎹嚜鍔ㄤ繚瀛樺埌鏈湴鏂囦欢
+4. **Web绠$悊鐣岄潰** - 鎻愪緵鐩磋鐨刉eb UI杩涜瀹炰緥绠$悊
+5. **瀹屾暣鍐呭瓨妯℃嫙** - 鏀寔M/DB/I/Q/T/C鎵�鏈夊父鐢ㄥ尯鍩�
+6. **瀹炴椂鐩戞帶** - 鏄剧ず杩炴帴鐘舵�併�佽姹傛暟銆佸鎴风淇℃伅绛�
--
Gitblit v1.9.3