diff --git a/README.md b/README.md index b16d180..8f38718 100644 --- a/README.md +++ b/README.md @@ -1,77 +1,105 @@ -# Metro_Railway_System_Emulator +# Railway[Metro] IT/OT System security test platform -**Project Design :** We want to create a digital twin type Metro emulation system to simulate multiple trains running on different tracks with the control signals. The system contents 3 parts: +**Project Design :** We want to create a digital twin type Railway emulation platform to simulate multiple trains running on different tracks with different sensor-signal control for cyber security researchers to demo/test different kind of IT attack's affect on OT system. The system contents 6 main components (programs): -- Metro railway signal system real word emulator (2D). +- 2D Railway[Metro] System Real-world Emulator +- Railway System SCADA HMI +- Railway System Trains Controller HMI +- Railway Junctions Sensor-Signal System Control PLC Simulator +- Railway Stations Sensor-Signal System Control PLC Simulator +- Railway Trains Sensor-Power System Control PLC Simulator -- HMI and SCADA system for railway and train control. -- PLC and latching relay emulators. +[TOC] +------ +### Introduction -2D Railway[Metro] System real-world emulator UI: +Railway[Metro] IT/OT System security test platform is build by 6 main components (introduced in the program design) under below structure: -![](doc/interface.png) +![](doc/img/networkCommDesign.png) +The detail introduction of each component is shown below: -SCADA-HMI UI -![](doc/hmiUI.png) +#### 1. 2D Railway[Metro] System Real-world Emulator +2D Railway[Metro] System real-world emulator UI: +![](doc/video/connectionHub5.gif) -Train Power Controller UI +2D Railway[Metro] System real-world emulator UI detailed software design document: [link](doc/metroEmuUI_readme.md) -![](doc/traincontroller.png) +#### 2. Railway System SCADA HMI ------- +Railway System SCADA HMI UI : +![](doc/video/scadaHmi.gif) +Railway System SCADA HMI detailed software design document: [link](doc/scadaHMI_readme.md) -### System Design -The 3 parts will follow below work flow: -#### System network design +#### 3. Railway System Trains Controller HMI -![](doc/img/networkDesign.png) +Railway System Trains Controller HMI UI -#### System data communication network design +![](doc/video/trainsHmi.gif) -![](doc/img/networkCommDesign.png) +Railway System Trains Controller HMI detailed software design document: [link](doc/trainsCtrlHMI.md) -Signal system PLC ladder diagrams set +#### 4. Railway Junctions Sensor-Signal System Control PLC Simulator + +PLCs set Digital I/O connection and the Ladder logic: ![](doc/img/signalPlc.png) +Railway Junctions Sensor-Signal System Control PLC Simulator detailed software design document: [link](doc/sensorsPLCSimu_readme.md) + + +#### 5. Railway Stations Sensor-Signal System Control PLC Simulator -Station system PLC ladder diagram set: +PLCs set Digital I/O connection and the Ladder logic: ![](doc/img/stationPlc.png) -Train control PLC config: +Railway Stations Sensor-Signal System Control PLC Simulator detailed software design document: [link](doc/stationPLCSimu_readme.md) + + + +#### 6. Railway Trains Sensor-Power System Control PLC Simulator + +PLCs set Digital I/O connection and the Ladder logic: ![](doc/img/trainPlc.png) -For each sensors-Signal set, the circuit logic is below: +Railway Trains Sensor-Power System Control PLC Simulator detailed software design document: [link](doc/trainsPlcSimu_readme.md) -![](doc/circuit_logic2.png) +**Program version:** `v0.1.2` -Verify circuit logic: https://www.circuit-diagram.org/editor/ +Code base: https://github.com/LiuYuancheng/Metro_emulator/tree/main/src + +------ +### System Design +The 3 parts will follow below work flow: +#### System network design +![](doc/img/networkDesign.png) +Verify circuit logic: https://www.circuit-diagram.org/editor/ + [Under progress ] diff --git a/deployAnsible/RailwaySystem_Realworld_Emulator.yml b/deployAnsible/RailwaySystem_Realworld_Emulator.yml index 712c732..3a24fe4 100644 --- a/deployAnsible/RailwaySystem_Realworld_Emulator.yml +++ b/deployAnsible/RailwaySystem_Realworld_Emulator.yml @@ -48,3 +48,18 @@ - name: Copy the file from master to mwiapp02 copy: src=buffer/app01-to-app02.jar dest=/tmp/ when: "{{ inventory_hostname == 'mwiapp02' }}" + + + + +- name: Copy config file from ansible host to VM + hosts: '{{ target-vm-name }}' + tasks: + - name: Copying the config file + become: true + copy: + src: '{{host-config-file-path}}' + dest: '{{git-cloned-file-path}}' + owner: XS23-RAIL + group: XS23-RAIL + diff --git a/doc/designDoc.pptx b/doc/designDoc.pptx index b16ccbe..a0b68f3 100644 Binary files a/doc/designDoc.pptx and b/doc/designDoc.pptx differ diff --git a/doc/hmiUI.png b/doc/hmiUI.png index 5646d63..3642c4c 100644 Binary files a/doc/hmiUI.png and b/doc/hmiUI.png differ diff --git a/doc/img/networkCommDesign.png b/doc/img/networkCommDesign.png index 5409405..232cbd3 100644 Binary files a/doc/img/networkCommDesign.png and b/doc/img/networkCommDesign.png differ diff --git a/doc/img/networkDesign.png b/doc/img/networkDesign.png index 10a8951..eda4de4 100644 Binary files a/doc/img/networkDesign.png and b/doc/img/networkDesign.png differ diff --git a/doc/scadaHMI_readme.md b/doc/scadaHMI_readme.md new file mode 100644 index 0000000..97d5d97 --- /dev/null +++ b/doc/scadaHMI_readme.md @@ -0,0 +1,41 @@ +# Railway System SCADA HMI + +**Project Design :** We want to create a railway SCADA (Supervisory Control and Data Acquisition program with a HMI (Human Machine Interface ) to provide multiple railway junction and station state monitoring and control with below functions: + +- Provide PLC (Modbus TCP) connection interface to fetch/set the PLC's register/coils state. +- Visualize the connected PLC's holding register and coils state and the digital I/O state of the PLC. +- Visualize the tracks junction sensor-signal auto-controlling process and the sensor-signal state. +- Visualize the tracks train-station sensor-signal auto-controlling process and the sensor-signal state. +- Provide the sensors and signals' state overload control (admin engineer debug permission). + +[TOC] + +------ + +### Introduction + +The Railway System SCADA HMI is part of the Railway IT/OT System security test platform. It is used to monitor the whole railway tracks sensors-signal auto control system. You can refer the system topology diagram to check its function in the system by below link: + +- [Railway IT/OT System security test platform system structure diagram](img/networkCommDesign.png) +- [Railway IT/OT System security test platform network topology diagram](img/networkDesign.png) + + + +**Railway System SCADA HMI User Interface** + +![](video/scadaHmi.gif) + +The HMI contents below components and function: + +- A train sensors-signal relation map to show sensor state, signal state and the sensors-signals auto control relation ship (tracks-cross-junction and train-stations). +- Three PLC panel to show the junction-sensor-signal control system's Digital Input/Output state, PLC holding register state and the PLC Coils state. +- Three PLC panel to shoe the station-sensor-signal control system's Digital Input/Output state, PLC holding register state and the PLC Coils state. + +**Program version:** `v0.1.2` + +Code Base: https://github.com/LiuYuancheng/Metro_emulator/tree/main/src/scadaEmuUI + + + +------ + diff --git a/doc/traincontroller.png b/doc/traincontroller.png index c034e5a..d5f27b3 100644 Binary files a/doc/traincontroller.png and b/doc/traincontroller.png differ diff --git a/doc/video/scadaHmi.gif b/doc/video/scadaHmi.gif new file mode 100644 index 0000000..e1785d2 Binary files /dev/null and b/doc/video/scadaHmi.gif differ diff --git a/src/scadaEmuUI/img/plcIcon.png b/src/scadaEmuUI/img/plcIcon.png new file mode 100644 index 0000000..6d4893c Binary files /dev/null and b/src/scadaEmuUI/img/plcIcon.png differ