PLC_Generation/logs/workflow_SAT9_MCM02_20250904_203256.log
2025-09-04 22:37:52 +04:00

1382 lines
187 KiB
Plaintext

{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-09-04T20:32:56.325709", "module": "__main__", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/data/SAT9_MCM02.xlsx", "project_name": "SAT9_MCM02"}
{"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-09-04T20:32:56.326057", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
=== Step 1: PLC Data Generator stdout ===
Loading IO path mappings...
Loaded IO path mappings:
APF: 11 rows
M12DR: 16 rows
Hub: 16 rows
SorterHub: 16 rows
SIO: 16 rows
IB16: 16 rows
OB16E: 16 rows
IB16S: 16 rows
Available sheets: ['DESC_PLC', 'NETWORK_PLC']
Found DESC sheet: DESC_PLC
Found NETWORK sheet: NETWORK_PLC
DESC columns: ['TAGNAME', 'TERM', 'DESCA', 'DESCB']
NETWORK columns: ['DPM', 'DPM_IP', 'Name', 'PartNumber', 'IP']
Classifying signals and adding IO paths...
Signal classification results:
SPARE: 516
I: 255
O: 52
IOLink: 13
Device type distribution:
APF: 660
M12DR: 112
Hub: 16
IB16: 16
OB16E: 16
IB16S: 16
IO Path mapping results:
Successful mappings: 836/836 (100.0%)
Found 3 TAGNAMEs present in DESC but not in NETWORK_PLC.
Adding unique DPM names not present in DESC or NETWORK_PLC.Name: ['DPM1_PS1_1', 'DPM1_PS1_4', 'DPM1_PS2_1', 'DPM2_PS1_1', 'DPM2_PS2_1']
================================================================================
WARNING: The following issues were found but processing will continue:
================================================================================
- TAGNAME 'SLOT5_IB16' from DESC sheet not found in NETWORK_PLC sheet.
- TAGNAME 'SLOT6_OB16E' from DESC sheet not found in NETWORK_PLC sheet.
- TAGNAME 'SLOT7_IB16S' from DESC sheet not found in NETWORK_PLC sheet.
================================================================================
Continuing with processing...
Normalizing TAGNAME, DESC, and IO_PATH columns for VFDs only in the final output...
Final result has 846 rows
Sample of merged data:
TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH
0 PDP2_PMM ... NaN NaN NaN
1 SLOT5_IB16 I0 MCM02 ... I IB16 Local:5:I.Data.0
2 SLOT5_IB16 I1 MCM02 ... I IB16 Local:5:I.Data.1
3 SLOT5_IB16 I10 SPARE ... SPARE IB16 Local:5:I.Data.10
4 SLOT5_IB16 I11 SPARE ... SPARE IB16 Local:5:I.Data.11
5 SLOT5_IB16 I12 SPARE ... SPARE IB16 Local:5:I.Data.12
6 SLOT5_IB16 I13 SPARE ... SPARE IB16 Local:5:I.Data.13
7 SLOT5_IB16 I14 SPARE ... SPARE IB16 Local:5:I.Data.14
8 SLOT5_IB16 I15 SPARE ... SPARE IB16 Local:5:I.Data.15
9 SLOT5_IB16 I2 MCM02 ... I IB16 Local:5:I.Data.2
[10 rows x 11 columns]
New Excel file created: SAT9_MCM02_DESC_IP_MERGED.xlsx
The file contains all original sheets plus the new 'DESC_IP' sheet with merged data.
DEBUG: Processing Excel file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/data/SAT9_MCM02.xlsx
DEBUG: Full project pattern matched: SAT9_MCM02
DEBUG: Final subsystem name: SAT9_MCM02
Reading input file: SAT9_MCM02_DESC_IP_MERGED.xlsx
Removed 13 IOLink rows (including beacons, FIOH channels, and all other IOLink entries)
Removed 10 blank name/description rows
Saving output file: SAT9_MCM02_OUTPUT.csv
Processing complete!
Created standard output file: DESC_IP_MERGED.xlsx
=== Step 1: PLC Data Generator stderr ===
=== Step 1 File Copy ===
Copied SAT9_MCM02_DESC_IP_MERGED.xlsx to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/DESC_IP_MERGED.xlsx
{"level": "INFO", "message": "Data processing completed successfully", "timestamp": "2025-09-04T20:32:59.309246", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting routine generation step", "timestamp": "2025-09-04T20:32:59.309469", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM02_20250904_203256.log", "timestamp": "2025-09-04T20:33:01.032587", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "=== Generating All PLC Artifacts ===", "timestamp": "2025-09-04T20:33:01.034545", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating SafetyProgram L5X...", "timestamp": "2025-09-04T20:33:01.034758", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "WARNING", "message": "LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator", "timestamp": "2025-09-04T20:33:01.044864", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting ModernSafetyProgramGenerator generation", "timestamp": "2025-09-04T20:33:01.045102", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating SafetyProgram XML structure", "timestamp": "2025-09-04T20:33:01.045265", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Registered plugin: main_routine (core)", "timestamp": "2025-09-04T20:33:01.054562", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: apf (device)", "timestamp": "2025-09-04T20:33:01.059349", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: belt_tracking (device)", "timestamp": "2025-09-04T20:33:01.062496", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: cb_monitor (device)", "timestamp": "2025-09-04T20:33:01.065683", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: d2c_chute (device)", "timestamp": "2025-09-04T20:33:01.069843", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: dpm (device)", "timestamp": "2025-09-04T20:33:01.072788", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: encoder (device)", "timestamp": "2025-09-04T20:33:01.076023", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: estops (safety)", "timestamp": "2025-09-04T20:33:01.082366", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: estop_check (safety)", "timestamp": "2025-09-04T20:33:01.085917", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: extendo (device)", "timestamp": "2025-09-04T20:33:01.089094", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fioh (device)", "timestamp": "2025-09-04T20:33:01.092355", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fiom (device)", "timestamp": "2025-09-04T20:33:01.095185", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: flow_ctrl (device)", "timestamp": "2025-09-04T20:33:01.098475", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fpe (device)", "timestamp": "2025-09-04T20:33:01.102036", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: inputs (safety)", "timestamp": "2025-09-04T20:33:01.105033", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: jpe (device)", "timestamp": "2025-09-04T20:33:01.109157", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: mcm (core)", "timestamp": "2025-09-04T20:33:01.112597", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: outputs (safety)", "timestamp": "2025-09-04T20:33:01.116553", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: pb_chute (device)", "timestamp": "2025-09-04T20:33:01.120523", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: pmm (device)", "timestamp": "2025-09-04T20:33:01.124225", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: rack (core)", "timestamp": "2025-09-04T20:33:01.127845", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: resets (safety)", "timestamp": "2025-09-04T20:33:01.132047", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: safety_tag_map (core)", "timestamp": "2025-09-04T20:33:01.136357", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: safety_tag_mapping (safety)", "timestamp": "2025-09-04T20:33:01.139790", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: speed_ctrl (device)", "timestamp": "2025-09-04T20:33:01.143379", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_epc (safety)", "timestamp": "2025-09-04T20:33:01.147594", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_jr_chute (device)", "timestamp": "2025-09-04T20:33:01.152883", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_jr_pb (device)", "timestamp": "2025-09-04T20:33:01.156435", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_ss_pb (device)", "timestamp": "2025-09-04T20:33:01.159943", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_s_pb (device)", "timestamp": "2025-09-04T20:33:01.163649", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: taching_belts (device)", "timestamp": "2025-09-04T20:33:01.167308", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: zones (safety)", "timestamp": "2025-09-04T20:33:01.171440", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "INFO", "message": "Generating safety routines...", "timestamp": "2025-09-04T20:33:01.171675", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: inputs", "timestamp": "2025-09-04T20:33:01.918103", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: inputs", "timestamp": "2025-09-04T20:33:01.924495", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: outputs", "timestamp": "2025-09-04T20:33:01.927732", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: subsystem key", "timestamp": "2025-09-04T20:33:01.929284", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "subsystem": "DEFAULT", "found": false}
{"level": "DEBUG", "message": "Zones: heuristic best match", "timestamp": "2025-09-04T20:33:01.941707", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM02", "score": 24}
{"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-04T20:33:01.942309", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 9}
{"level": "INFO", "message": "Successfully generated routine: outputs", "timestamp": "2025-09-04T20:33:01.944109", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: resets", "timestamp": "2025-09-04T20:33:01.944397", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: resets", "timestamp": "2025-09-04T20:33:01.946689", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: zones", "timestamp": "2025-09-04T20:33:01.946936", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for PS1_8: {'EPC1', 'EPC2'}", "timestamp": "2025-09-04T20:33:01.947857", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for PS2_7: {'EPC1', 'EPC2'}", "timestamp": "2025-09-04T20:33:01.948190", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL1_1: {'EPC1', 'EPC2'}", "timestamp": "2025-09-04T20:33:01.948451", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL2_1: {'ESTOP1'}", "timestamp": "2025-09-04T20:33:01.948645", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL3_1: {'ESTOP1'}", "timestamp": "2025-09-04T20:33:01.948875", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL4_1: {'ESTOP1'}", "timestamp": "2025-09-04T20:33:01.949105", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL5_1: {'ESTOP1'}", "timestamp": "2025-09-04T20:33:01.949450", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Found DCS controllers for UL6_1: {'EPC1', 'EPC2'}", "timestamp": "2025-09-04T20:33:01.949812", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Available DCS controllers: {'PS1_8': {'EPC1', 'EPC2'}, 'PS2_7': {'EPC1', 'EPC2'}, 'UL1_1': {'EPC1', 'EPC2'}, 'UL2_1': {'ESTOP1'}, 'UL3_1': {'ESTOP1'}, 'UL4_1': {'ESTOP1'}, 'UL5_1': {'ESTOP1'}, 'UL6_1': {'EPC1', 'EPC2'}}", "timestamp": "2025-09-04T20:33:01.949997", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zone 02-01 candidates: ['PS1_1', 'PS1_2', 'PS1_3', 'PS1_4', 'PS1_5', 'PS1_6', 'PS1_7', 'PS1_8']", "timestamp": "2025-09-04T20:33:01.950551", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_1 in zone 02-01", "timestamp": "2025-09-04T20:33:01.950752", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_2 in zone 02-01", "timestamp": "2025-09-04T20:33:01.950910", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_3 in zone 02-01", "timestamp": "2025-09-04T20:33:01.951079", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_4 in zone 02-01", "timestamp": "2025-09-04T20:33:01.951220", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_5 in zone 02-01", "timestamp": "2025-09-04T20:33:01.951361", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_6 in zone 02-01", "timestamp": "2025-09-04T20:33:01.951501", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS1_7 in zone 02-01", "timestamp": "2025-09-04T20:33:01.951645", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.951800", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-01", "interlock": "MCM02", "dcs_list": ["PS1_8_EPC1_DCS_CTRL.O1", "PS1_8_EPC2_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-02 candidates: ['UL1_1', 'UL1_2', 'UL1_3', 'UL1_4', 'UL1_5', 'UL1_6', 'UL1_7']", "timestamp": "2025-09-04T20:33:01.952151", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_2 in zone 02-02", "timestamp": "2025-09-04T20:33:01.952349", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_3 in zone 02-02", "timestamp": "2025-09-04T20:33:01.952526", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_4 in zone 02-02", "timestamp": "2025-09-04T20:33:01.952689", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_5 in zone 02-02", "timestamp": "2025-09-04T20:33:01.953128", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_6 in zone 02-02", "timestamp": "2025-09-04T20:33:01.953327", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL1_7 in zone 02-02", "timestamp": "2025-09-04T20:33:01.953521", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.953673", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-02", "interlock": "MCM02", "dcs_list": ["UL1_1_EPC1_DCS_CTRL.O1", "UL1_1_EPC2_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-03 candidates: ['UL2_1', 'UL2_2', 'UL2_3', 'UL2_4', 'UL2_5', 'UL2_6', 'UL2_7', 'UL2_8', 'UL2_9']", "timestamp": "2025-09-04T20:33:01.954012", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_2 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954283", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_3 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954413", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_4 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954537", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_5 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954664", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_6 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954821", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_7 in zone 02-03", "timestamp": "2025-09-04T20:33:01.954948", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_8 in zone 02-03", "timestamp": "2025-09-04T20:33:01.955066", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL2_9 in zone 02-03", "timestamp": "2025-09-04T20:33:01.955477", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.955656", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-03", "interlock": "MCM02", "dcs_list": ["UL2_1_ESTOP1_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-04 candidates: ['UL3_1', 'UL3_2', 'UL3_3', 'UL3_4', 'UL3_5', 'UL3_6', 'UL3_7', 'UL3_8', 'UL3_9']", "timestamp": "2025-09-04T20:33:01.956027", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_2 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956198", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_3 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956333", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_4 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956456", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_5 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956583", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_6 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956703", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_7 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956821", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_8 in zone 02-04", "timestamp": "2025-09-04T20:33:01.956934", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL3_9 in zone 02-04", "timestamp": "2025-09-04T20:33:01.957049", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.957163", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-04", "interlock": "MCM02", "dcs_list": ["UL3_1_ESTOP1_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-05 candidates: ['PS2_1', 'PS2_2', 'PS2_3', 'PS2_4', 'PS2_5', 'PS2_6', 'PS2_7']", "timestamp": "2025-09-04T20:33:01.957456", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_1 in zone 02-05", "timestamp": "2025-09-04T20:33:01.957612", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_2 in zone 02-05", "timestamp": "2025-09-04T20:33:01.957734", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_3 in zone 02-05", "timestamp": "2025-09-04T20:33:01.957910", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_4 in zone 02-05", "timestamp": "2025-09-04T20:33:01.958083", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_5 in zone 02-05", "timestamp": "2025-09-04T20:33:01.958248", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base PS2_6 in zone 02-05", "timestamp": "2025-09-04T20:33:01.958404", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.958565", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-05", "interlock": "MCM02", "dcs_list": ["PS2_7_EPC1_DCS_CTRL.O1", "PS2_7_EPC2_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-06 candidates: ['UL4_1', 'UL4_2', 'UL4_3', 'UL4_4', 'UL4_5', 'UL4_6', 'UL4_7', 'UL4_8', 'UL4_9']", "timestamp": "2025-09-04T20:33:01.958910", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_2 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959181", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_3 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959359", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_4 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959496", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_5 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959600", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_6 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959698", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_7 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959795", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_8 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959891", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL4_9 in zone 02-06", "timestamp": "2025-09-04T20:33:01.959997", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.960150", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-06", "interlock": "MCM02", "dcs_list": ["UL4_1_ESTOP1_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-07 candidates: ['UL5_1', 'UL5_2', 'UL5_3', 'UL5_4', 'UL5_5', 'UL5_6', 'UL5_7', 'UL5_8', 'UL5_9']", "timestamp": "2025-09-04T20:33:01.960487", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_2 in zone 02-07", "timestamp": "2025-09-04T20:33:01.960644", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_3 in zone 02-07", "timestamp": "2025-09-04T20:33:01.960755", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_4 in zone 02-07", "timestamp": "2025-09-04T20:33:01.960878", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_5 in zone 02-07", "timestamp": "2025-09-04T20:33:01.961000", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_6 in zone 02-07", "timestamp": "2025-09-04T20:33:01.961107", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_7 in zone 02-07", "timestamp": "2025-09-04T20:33:01.961208", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_8 in zone 02-07", "timestamp": "2025-09-04T20:33:01.961321", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL5_9 in zone 02-07", "timestamp": "2025-09-04T20:33:01.961426", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.961528", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-07", "interlock": "MCM02", "dcs_list": ["UL5_1_ESTOP1_DCS_CTRL.O1"]}
{"level": "DEBUG", "message": "Zone 02-08 candidates: ['UL6_1', 'UL6_2', 'UL6_3', 'UL6_4', 'UL6_5', 'UL6_6', 'UL6_7', 'UL6_8']", "timestamp": "2025-09-04T20:33:01.961838", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_2 in zone 02-08", "timestamp": "2025-09-04T20:33:01.961999", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_3 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962107", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_4 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962231", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_5 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962341", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_6 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962443", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_7 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962554", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "No DCS controllers found for base UL6_8 in zone 02-08", "timestamp": "2025-09-04T20:33:01.962653", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:33:01.962772", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-08", "interlock": "MCM02", "dcs_list": ["UL6_1_EPC1_DCS_CTRL.O1", "UL6_1_EPC2_DCS_CTRL.O1"]}
{"level": "INFO", "message": "Successfully generated routine: zones", "timestamp": "2025-09-04T20:33:01.962938", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: estops", "timestamp": "2025-09-04T20:33:01.963076", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: estops", "timestamp": "2025-09-04T20:33:01.965608", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True}", "timestamp": "2025-09-04T20:33:01.965797", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag map with 7 tags", "timestamp": "2025-09-04T20:33:01.969612", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES", "timestamp": "2025-09-04T20:33:01.969780", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R010_INPUTS: 29 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-09-04T20:33:01.969905", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_02_01_OK)[OTE(PS1_1_VFD1:SO.STOOutput),OTE(PS1_2_VFD1:SO.STOOutput),OTE(PS1_3_VFD1:SO.STOOutput),OTE(PS1_4_VFD1:SO.STOOutput),OTE(...", "timestamp": "2025-09-04T20:33:01.970016", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R012_RESETS: 8 rungs | example: [XIC(SFT_PS1_8_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS1_8_EPC1_ESTOP);", "timestamp": "2025-09-04T20:33:01.970122", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R030_ZONES: 9 rungs | example: XIC(PS1_8_EPC1_DCS_CTRL.O1)XIC(PS1_8_EPC2_DCS_CTRL.O1)OTE(EStop_02_01_OK);", "timestamp": "2025-09-04T20:33:01.970223", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R020_ESTOPS: 13 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB);", "timestamp": "2025-09-04T20:33:01.970325", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_INPUTS,0) ,JSR(R011_OUTPUTS,0) ,JSR(R012_RESETS,0) ,JSR(R020_ESTOPS,0) ,JSR(R030_ZONES,0) ];", "timestamp": "2025-09-04T20:33:01.970425", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "Successfully completed ModernSafetyProgramGenerator generation", "timestamp": "2025-09-04T20:33:01.970534", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Written ModernSafetyProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyProgram_Generated.L5X", "timestamp": "2025-09-04T20:33:01.972942", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "[SUCCESS] SafetyProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyProgram_Generated.L5X", "timestamp": "2025-09-04T20:33:02.168620", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating MainProgram L5X...", "timestamp": "2025-09-04T20:33:02.168829", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "WARNING", "message": "LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator", "timestamp": "2025-09-04T20:33:02.168956", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting ModernMainProgramGenerator generation", "timestamp": "2025-09-04T20:33:02.169161", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating MainProgram XML structure", "timestamp": "2025-09-04T20:33:02.169339", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Adding controller tags...", "timestamp": "2025-09-04T20:33:02.169539", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Zones: subsystem key", "timestamp": "2025-09-04T20:33:02.236480", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "subsystem": "DEFAULT", "found": false}
{"level": "DEBUG", "message": "Zones: heuristic best match", "timestamp": "2025-09-04T20:33:02.246387", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM02", "score": 24}
{"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-04T20:33:02.246959", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 9}
{"level": "DEBUG", "message": "Extracting FPE data", "timestamp": "2025-09-04T20:33:02.431090", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "FPE"}
{"level": "INFO", "message": "Data: FPE count=0", "timestamp": "2025-09-04T20:33:02.432245", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Extracting PMM data", "timestamp": "2025-09-04T20:33:02.432833", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "PMM"}
{"level": "INFO", "message": "Data: PMM entries=1", "timestamp": "2025-09-04T20:33:02.434674", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "PMM processing PDP2_PMM", "timestamp": "2025-09-04T20:33:02.435137", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "PMM PDP2_PMM DPM=DPM2_PS2_1", "timestamp": "2025-09-04T20:33:02.435304", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "PMM PDP2_PMM PWM fault IO PDP2_FIO1:I.Pt12.Data", "timestamp": "2025-09-04T20:33:02.436021", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "PMM PDP2_PMM configuration stored", "timestamp": "2025-09-04T20:33:02.436201", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Data: PMM configs=1", "timestamp": "2025-09-04T20:33:02.436362", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Extracting CB_MONITOR data", "timestamp": "2025-09-04T20:33:02.436510", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "CB_MONITOR"}
{"level": "INFO", "message": "Data: CB PDPs=1", "timestamp": "2025-09-04T20:33:02.437893", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "CB_MONITOR PDP2: CBs=26 FIOs=2", "timestamp": "2025-09-04T20:33:02.438140", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB1 (CB1) to position 0", "timestamp": "2025-09-04T20:33:02.438355", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB2 (CB2) to position 1", "timestamp": "2025-09-04T20:33:02.438499", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB3 (CB3) to position 2", "timestamp": "2025-09-04T20:33:02.438623", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB4 (CB4) to position 3", "timestamp": "2025-09-04T20:33:02.438733", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB5 (CB5) to position 4", "timestamp": "2025-09-04T20:33:02.438860", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB6 (CB6) to position 5", "timestamp": "2025-09-04T20:33:02.439016", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB7 (CB7) to position 6", "timestamp": "2025-09-04T20:33:02.439157", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB8 (CB8) to position 7", "timestamp": "2025-09-04T20:33:02.439275", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB9 (CB9) to position 8", "timestamp": "2025-09-04T20:33:02.439382", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB10 (CB10) to position 9", "timestamp": "2025-09-04T20:33:02.439483", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB11 (CB11) to position 10", "timestamp": "2025-09-04T20:33:02.439789", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB12 (CB12) to position 11", "timestamp": "2025-09-04T20:33:02.439996", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB13 (CB13) to position 12", "timestamp": "2025-09-04T20:33:02.440111", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB14 (CB14) to position 13", "timestamp": "2025-09-04T20:33:02.440213", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB15 (CB15) to position 14", "timestamp": "2025-09-04T20:33:02.440312", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB16 (CB16) to position 15", "timestamp": "2025-09-04T20:33:02.440410", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB17 (CB17) to position 16", "timestamp": "2025-09-04T20:33:02.440509", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB18 (CB18) to position 17", "timestamp": "2025-09-04T20:33:02.440612", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB19 (CB19) to position 18", "timestamp": "2025-09-04T20:33:02.440714", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB20 (CB20) to position 19", "timestamp": "2025-09-04T20:33:02.440820", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB21 (CB21) to position 20", "timestamp": "2025-09-04T20:33:02.440930", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB22 (CB22) to position 21", "timestamp": "2025-09-04T20:33:02.441033", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB23 (CB23) to position 22", "timestamp": "2025-09-04T20:33:02.441134", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB24 (CB24) to position 23", "timestamp": "2025-09-04T20:33:02.441236", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB25 (CB25) to position 24", "timestamp": "2025-09-04T20:33:02.441336", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Mapped PDP2_CB26 (CB26) to position 25", "timestamp": "2025-09-04T20:33:02.441450", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "CB_MONITOR PDP2: configured CBs=26 entries=['PDP2_CB1', 'PDP2_CB2', 'PDP2_CB3', 'PDP2_CB4', 'PDP2_CB5', 'PDP2_CB6', 'PDP2_CB7', 'PDP2_CB8', 'PDP2_CB9', 'PDP2_CB10', 'PDP2_CB11', 'PDP2_CB12', 'PDP2_CB13', 'PDP2_CB14', 'PDP2_CB15', 'PDP2_CB16', 'PDP2_CB17', 'PDP2_CB18', 'PDP2_CB19', 'PDP2_CB20', 'PDP2_CB21', 'PDP2_CB22', 'PDP2_CB23', 'PDP2_CB24', 'PDP2_CB25', 'PDP2_CB26'] fault=PDP2_FIO1:I.ConnectionFaulted", "timestamp": "2025-09-04T20:33:02.441590", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Data: CB configs=1", "timestamp": "2025-09-04T20:33:02.441703", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Tags created: total=371 | standard=19 safety=53 dcs=13 modules=278", "timestamp": "2025-09-04T20:33:02.442969", "module": "src.writers.xml_tag_writer", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "Added 371 controller tags", "timestamp": "2025-09-04T20:33:02.443207", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating main program routines...", "timestamp": "2025-09-04T20:33:02.443370", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: mcm", "timestamp": "2025-09-04T20:33:02.443545", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: mcm", "timestamp": "2025-09-04T20:33:02.443676", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: rack", "timestamp": "2025-09-04T20:33:02.443803", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: rack", "timestamp": "2025-09-04T20:33:02.443918", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: dpm", "timestamp": "2025-09-04T20:33:02.444063", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: dpm", "timestamp": "2025-09-04T20:33:02.445202", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: fiom", "timestamp": "2025-09-04T20:33:02.445412", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: fiom", "timestamp": "2025-09-04T20:33:02.446534", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: fioh", "timestamp": "2025-09-04T20:33:02.446712", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: fioh", "timestamp": "2025-09-04T20:33:02.447699", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: apf", "timestamp": "2025-09-04T20:33:02.448402", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: apf", "timestamp": "2025-09-04T20:33:02.451189", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: flow_ctrl", "timestamp": "2025-09-04T20:33:02.451648", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: flow_ctrl", "timestamp": "2025-09-04T20:33:02.453470", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Extracting SPEED_CTRL data", "timestamp": "2025-09-04T20:33:02.453659", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "SPEED_CTRL"}
{"level": "INFO", "message": "Data: SPEED_CTRL VFDs=60", "timestamp": "2025-09-04T20:33:02.454058", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "SPEED_CTRL sample=PS1_1_VFD1, PS1_2_VFD1, PS1_2B_VFD1, PS1_3_VFD1, PS1_4_VFD1...", "timestamp": "2025-09-04T20:33:02.455236", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Data: SPEED_CTRL count=60", "timestamp": "2025-09-04T20:33:02.455407", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: speed_ctrl", "timestamp": "2025-09-04T20:33:02.455575", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: speed_ctrl", "timestamp": "2025-09-04T20:33:02.455824", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: estop_check", "timestamp": "2025-09-04T20:33:02.455981", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: estop_check", "timestamp": "2025-09-04T20:33:02.459125", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: encoder", "timestamp": "2025-09-04T20:33:02.459321", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: encoder", "timestamp": "2025-09-04T20:33:02.459936", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: safety_tag_map", "timestamp": "2025-09-04T20:33:02.460097", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Safety tag map: RST data has 7 rows", "timestamp": "2025-09-04T20:33:02.460281", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: MCM02 -> Local:5:I.Data.0", "timestamp": "2025-09-04T20:33:02.460484", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: PS1_8_S2_PB -> PS1_6_VFD1:I.IO_0", "timestamp": "2025-09-04T20:33:02.460644", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: PS1_8_S1_PB -> PS1_8_VFD1:I.IO_0", "timestamp": "2025-09-04T20:33:02.460801", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: PS2_7_S2_PB -> PS2_5_VFD1:I.IO_0", "timestamp": "2025-09-04T20:33:02.461004", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: PS2_7_S1_PB -> PS2_7_VFD1:I.IO_0", "timestamp": "2025-09-04T20:33:02.461242", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: UL1_1_SS1_SPB -> UL1_2_FIO1:I.Pt00.Data", "timestamp": "2025-09-04T20:33:02.461478", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Added safety tag mapping: UL6_1_SS1_SPB -> UL6_2_FIO1:I.Pt00.Data", "timestamp": "2025-09-04T20:33:02.461710", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Safety tag map: Generating 7 rungs", "timestamp": "2025-09-04T20:33:02.461890", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM02);", "timestamp": "2025-09-04T20:33:02.462013", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 2: XIC(PS1_8_VFD1:I.IO_0)OTE(PS1_8_S1_PB);", "timestamp": "2025-09-04T20:33:02.462121", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 3: XIC(PS1_6_VFD1:I.IO_0)OTE(PS1_8_S2_PB);", "timestamp": "2025-09-04T20:33:02.462227", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 4: XIC(PS2_7_VFD1:I.IO_0)OTE(PS2_7_S1_PB);", "timestamp": "2025-09-04T20:33:02.462326", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 5: XIC(PS2_5_VFD1:I.IO_0)OTE(PS2_7_S2_PB);", "timestamp": "2025-09-04T20:33:02.462424", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 6: XIC(UL1_2_FIO1:I.Pt00.Data)OTE(UL1_1_SS1_SPB);", "timestamp": "2025-09-04T20:33:02.462522", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generated rung 7: XIC(UL6_2_FIO1:I.Pt00.Data)OTE(UL6_1_SS1_SPB);", "timestamp": "2025-09-04T20:33:02.462620", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Safety tag map: Generated 7 total rungs", "timestamp": "2025-09-04T20:33:02.462718", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: safety_tag_map", "timestamp": "2025-09-04T20:33:02.462868", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: station_jr_pb", "timestamp": "2025-09-04T20:33:02.463044", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: station_jr_pb", "timestamp": "2025-09-04T20:33:02.463342", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: station_s_pb", "timestamp": "2025-09-04T20:33:02.463466", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: station_s_pb", "timestamp": "2025-09-04T20:33:02.463667", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: station_ss_pb", "timestamp": "2025-09-04T20:33:02.463794", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: station_ss_pb", "timestamp": "2025-09-04T20:33:02.463990", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: station_epc", "timestamp": "2025-09-04T20:33:02.465171", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: station_epc", "timestamp": "2025-09-04T20:33:02.465517", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: jpe", "timestamp": "2025-09-04T20:33:02.465676", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: jpe", "timestamp": "2025-09-04T20:33:02.466640", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Plugin fpe cannot generate with current data", "timestamp": "2025-09-04T20:33:02.466864", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: pmm", "timestamp": "2025-09-04T20:33:02.467052", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: pmm", "timestamp": "2025-09-04T20:33:02.467307", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: cb_monitor", "timestamp": "2025-09-04T20:33:02.467451", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: cb_monitor", "timestamp": "2025-09-04T20:33:02.467643", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: belt_tracking", "timestamp": "2025-09-04T20:33:02.468134", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: belt_tracking", "timestamp": "2025-09-04T20:33:02.469859", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: main_routine", "timestamp": "2025-09-04T20:33:02.470085", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating MainRoutine with JSR calls", "timestamp": "2025-09-04T20:33:02.470252", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated MainRoutine", "timestamp": "2025-09-04T20:33:02.470415", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: main_routine", "timestamp": "2025-09-04T20:33:02.470528", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'fiom': True, 'fioh': True, 'apf': True, 'flow_ctrl': True, 'speed_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': True, 'station_ss_pb': True, 'station_epc': True, 'jpe': True, 'fpe': False, 'pmm': True, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True}", "timestamp": "2025-09-04T20:33:02.470635", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Routines created (20): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R031_FIOH, R040_APF, R050_FLOW_CTRL, R051_SPEED_CTRL, R060_PMM, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R091_STATION_S_PB, R092_STATION_SS_PB, R093_STATION_EPC, R100_JPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking", "timestamp": "2025-09-04T20:33:02.470762", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R010_MCM: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.471177", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R011_RACK: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.471375", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R020_DPM: 6 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.471548", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R030_FIOM: 8 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.471743", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R031_FIOH: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.471908", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R040_APF: 61 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.472064", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R050_FLOW_CTRL: 55 rungs | example: XIC(PS1_2_VFD1.CTRL.STS.Enabled)OTE(PS1_1_VFD1.CTRL.CMD.Interlock);", "timestamp": "2025-09-04T20:33:02.472197", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R051_SPEED_CTRL: 1 rungs | example: [MOVE(Speed_350_FPM,PS1_1_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,PS1_2_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,PS1_2B_VFD1.CTRL.CMD.Speed_FPM) ,MO...", "timestamp": "2025-09-04T20:33:02.472313", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R120_ESTOP_CHECK: 12 rungs | example: [XIO(PS1_8_VFD1:SI.In00Data) ,XIO(PS1_8_VFD1:SI.In01Data) ]XIO(PS1_1_VFD1:SO.STOOutput)XIO(PS1_2_VFD1:SO.STOOutput)XIO(PS1_2B_VFD1:SO.STOOutput)XIO(PS1_3_VFD...", "timestamp": "2025-09-04T20:33:02.472425", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R080_ENCODER: 51 rungs | example: AOI_ENCODER(PS1_1_ENCODER.AOI,PS1_1_ENCODER.HMI,PS1_1_ENCODER.CTRL,PS1_1_VFD1.CTRL,NO_UPSTREAM,PS1_2_VFD1.CTRL,PS1_1_VFD1:I.In_1,PS1_1_VFD1:I.ConnectionFault...", "timestamp": "2025-09-04T20:33:02.472536", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R130_SAFETY_TAG_MAP: 8 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-09-04T20:33:02.472645", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R090_STATION_JR_PB: 10 rungs | example: AOI_STATION_JR_PB(PS1_1_JR1_PB.AOI,PS1_1_JR1_PB.HMI,PS1_1_JR1_PB.CTRL,NO_PARTNER,UL2_9_VFD1:I.IO_0,UL2_9_VFD1:O.IO_1,MCM.CTRL)MOVE(PS1_1_JR1_PB.CTRL.STS.Log,...", "timestamp": "2025-09-04T20:33:02.472754", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R091_STATION_S_PB: 4 rungs | example: AOI_STATION_S_PB(PS1_8_S1_PB_STATION.AOI,PS1_8_S1_PB_STATION.HMI,PS1_8_S1_PB_STATION.CTRL,PS1_8_VFD1.CTRL,PS1_8_VFD1:I.IO_0,PS1_8_VFD1:O.IO_1,PS1_1_JR1_PB.CT...", "timestamp": "2025-09-04T20:33:02.472894", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R092_STATION_SS_PB: 2 rungs | example: AOI_STATION_SS_PB(UL1_1_SS1_STATION.AOI,UL1_1_SS1_STATION.HMI,UL1_1_SS1_STATION.CTRL,UL1_1_VFD1.CTRL,UL1_2_FIO1:I.ConnectionFaulted,UL1_2_FIO1:I.Pt00.Data,UL...", "timestamp": "2025-09-04T20:33:02.473067", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R093_STATION_EPC: 8 rungs | example: AOI_STATION_EPC(PS1_8_EPC1_STATION.AOI,MCM.CTRL,PS1_8_EPC1_STATION.HMI,PS1_8_S2_PB_STATION.CTRL,PS1_8_VFD1:I.ConnectionFaulted,PS1_8_VFD1:SI.In00Data,PS1_8_V...", "timestamp": "2025-09-04T20:33:02.473247", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R100_JPE: 68 rungs | example: AOI_JPE(PS1_1_TPE1.AOI,PS1_1_TPE1.HMI,PS1_1_TPE1.CTRL,PS1_1_VFD1.CTRL,PS1_1_JR1_PB.CTRL,UL1_7_VFD1:I.ConnectionFaulted,UL1_7_VFD1:I.In_2,YES,UL2_8_VFD1:O.IO_0);", "timestamp": "2025-09-04T20:33:02.473391", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R060_PMM: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.473501", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R070_CB_MONITOR: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.473608", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- ZZZ_BeltTracking: 61 rungs | example: NOP();", "timestamp": "2025-09-04T20:33:02.473710", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R030_FIOM,0) ,JSR(R031_FIOH,0) ,JSR(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R051_SPEED_CTRL,0) ,JSR(...", "timestamp": "2025-09-04T20:33:02.473822", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "Successfully completed ModernMainProgramGenerator generation", "timestamp": "2025-09-04T20:33:02.473947", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Written ModernMainProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/MainProgram_Generated.L5X", "timestamp": "2025-09-04T20:33:02.482216", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "[SUCCESS] MainProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/MainProgram_Generated.L5X", "timestamp": "2025-09-04T20:33:02.482407", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating safety tag mapping...", "timestamp": "2025-09-04T20:33:02.482565", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating MappingWriter wrapper", "timestamp": "2025-09-04T20:33:02.482791", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating DataLoader instance", "timestamp": "2025-09-04T20:33:02.483193", "module": "src.container", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/DESC_IP_MERGED.xlsx"}
{"level": "INFO", "message": "[SUCCESS] Safety tag mapping written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyTagMapping.txt", "timestamp": "2025-09-04T20:33:02.560646", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": " - Safety tags: 7", "timestamp": "2025-09-04T20:33:02.560902", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "=== All artifacts generated successfully! ===", "timestamp": "2025-09-04T20:33:02.561104", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
=== Step 2: Routines Generator stdout ===
Found JPE config for PS1_2B_TPE1 (missing station, missing beacon)
Found JPE config for PS1_4_TPE1 (station from config, beacon from config)
Found JPE config for PS1_6_TPE1 (station from config, beacon from config)
Found JPE config for PS1_6_TPE2 (station from config, beacon from config)
Found JPE config for PS1_7_TPE1 (station from config, beacon from config)
Found JPE config for PS1_8_TPE1 (station from config, beacon from config)
Found JPE config for PS2_3_TPE1 (station from config, beacon from config)
Found JPE config for PS2_3_TPE2 (station from config, beacon from config)
Found JPE config for PS2_5_TPE1 (station from config, beacon from config)
Found JPE config for PS2_5_TPE2 (station from config, beacon from config)
Found JPE config for PS2_6_TPE1 (station from config, beacon from config)
Found JPE config for PS2_7_TPE1 (station from config, beacon from config)
Found JPE config for UL1_1_TPE1 (station from config, beacon from config)
Found JPE config for UL1_4_TPE1 (station from config, beacon from config)
Found JPE config for UL1_4_TPE2 (station from config, beacon from config)
Found JPE config for UL1_5_TPE1 (station from config, beacon from config)
Found JPE config for UL1_6_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE1
Found JPE config for UL2_5_TPE1 (station from config, beacon from config)
Found JPE config for UL2_5_TPE2 (station from config, beacon from config)
Found JPE config for UL2_6_TPE1 (station from config, beacon from config)
Found JPE config for UL2_7_TPE1 (station from config, beacon from config)
Found JPE config for UL2_8_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE2
Found JPE config for UL3_5_TPE1 (station from config, beacon from config)
Found JPE config for UL3_5_TPE2 (station from config, beacon from config)
Found JPE config for UL3_6_TPE1 (station from config, beacon from config)
Found JPE config for UL3_7_TPE1 (station from config, beacon from config)
Found JPE config for UL3_8_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE3
Found JPE config for UL4_5_TPE1 (station from config, beacon from config)
Found JPE config for UL4_5_TPE2 (station from config, beacon from config)
Found JPE config for UL4_6_TPE1 (station from config, beacon from config)
Found JPE config for UL4_7_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE1
Found JPE config for UL5_5_TPE1 (station from config, beacon from config)
Found JPE config for UL5_5_TPE2 (station from config, beacon from config)
Found JPE config for UL5_6_TPE1 (station from config, beacon from config)
Found JPE config for UL5_7_TPE1 (station from config, beacon from config)
Found JPE config for UL5_8_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE2
Found JPE config for UL6_1_TPE1 (station from config, beacon from config)
Found JPE config for UL6_4_TPE1 (station from config, beacon from config)
Found JPE config for UL6_4_TPE2 (station from config, beacon from config)
Found JPE config for UL6_5_TPE1 (station from config, beacon from config)
Found JPE config for UL6_6_TPE1 (station from config, beacon from config)
Found JPE config for UL6_7_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE3
Found JPE config for PS1_3_TPE1 (station from config, beacon from config)
Found JPE config for UL1_2_TPE2
Found JPE config for UL2_3_TPE3
Found JPE config for UL3_3_TPE3
Found JPE config for UL4_3_TPE3
Found JPE config for UL6_2_TPE2
Found JPE config for PS1_3_TPE2 (station from config, beacon from config)
Found JPE config for UL1_2_TPE1
Found JPE config for UL5_3_TPE3
Found JPE config for UL6_2_TPE1
Found JPE config for PS1_1_TPE4
Found JPE config for PS2_1_TPE4
Found JPE config for UL2_3_TPE1
Found JPE config for UL2_3_TPE2
Found JPE config for UL3_3_TPE1
Found JPE config for UL3_3_TPE2
Found JPE config for UL4_3_TPE1
Found JPE config for UL4_3_TPE2
Found JPE config for UL5_3_TPE1
Found JPE config for UL5_3_TPE2
Looking for red beacon with base PS1_8, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 2 red beacon entries
Found red beacon: PS1_8_BCN2_R with IO_PATH: PS1_5B_VFD1:O.IO_0
No SO in red beacon PS1_8_BCN2_R: PS1_5B_VFD1:O.IO_0
Found STATION_EPC config for PS1_8_EPC1
Looking for red beacon with base PS2_7, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 2 red beacon entries
Found red beacon: PS2_7_BCN2_R with IO_PATH: PS2_4B_VFD1:O.IO_0
No SO in red beacon PS2_7_BCN2_R: PS2_4B_VFD1:O.IO_0
Found STATION_EPC config for PS2_7_EPC1
Looking for red beacon with base UL1_1, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL1_1_EPC1
Looking for red beacon with base UL6_1, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL6_1_EPC1
Looking for red beacon with base PS1_8, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 1 red beacon entries
Found red beacon: PS1_8_BCN2_R with IO_PATH: PS1_5B_VFD1:O.IO_0
No SO in red beacon PS1_8_BCN2_R: PS1_5B_VFD1:O.IO_0
Found STATION_EPC config for PS1_8_EPC2
Looking for red beacon with base PS2_7, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 1 red beacon entries
Found red beacon: PS2_7_BCN2_R with IO_PATH: PS2_4B_VFD1:O.IO_0
No SO in red beacon PS2_7_BCN2_R: PS2_4B_VFD1:O.IO_0
Found STATION_EPC config for PS2_7_EPC2
Looking for red beacon with base UL1_1, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL1_1_EPC2
Looking for red beacon with base UL6_1, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL6_1_EPC2
[DEBUG] Found 0 SO beacon tags for safety mapping
Found STATION_S_PB config for PS1_8_S2_PB
Found STATION_S_PB config for PS1_8_S1_PB
Found STATION_S_PB config for PS2_7_S2_PB
Found STATION_S_PB config for PS2_7_S1_PB
Found STATION_SS_PB config for UL1_1_SS1
Found STATION_SS_PB config for UL6_1_SS1
Found STATION_JR_PB config for PS1_1_JR1_PB
Found STATION_JR_PB config for PS2_1_JR1_PB
Found STATION_JR_PB config for PS2_1_JR2_PB
Found STATION_JR_PB config for UL1_2_JR1_PB
Found STATION_JR_PB config for UL2_3_JR1_PB
Found STATION_JR_PB config for UL3_3_JR1_PB
Found STATION_JR_PB config for UL4_3_JR1_PB
Found STATION_JR_PB config for UL6_2_JR1_PB
Found STATION_JR_PB config for UL5_3_JR1_PB
Found STATION_JR_PB config for PS1_1_JR2_PB
Created SafetyTagMapping.txt with 17 mappings
File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyTagMapping.txt
Found JPE config for PS1_2B_TPE1 (missing station, missing beacon)
Found JPE config for PS1_4_TPE1 (station from config, beacon from config)
Found JPE config for PS1_6_TPE1 (station from config, beacon from config)
Found JPE config for PS1_6_TPE2 (station from config, beacon from config)
Found JPE config for PS1_7_TPE1 (station from config, beacon from config)
Found JPE config for PS1_8_TPE1 (station from config, beacon from config)
Found JPE config for PS2_3_TPE1 (station from config, beacon from config)
Found JPE config for PS2_3_TPE2 (station from config, beacon from config)
Found JPE config for PS2_5_TPE1 (station from config, beacon from config)
Found JPE config for PS2_5_TPE2 (station from config, beacon from config)
Found JPE config for PS2_6_TPE1 (station from config, beacon from config)
Found JPE config for PS2_7_TPE1 (station from config, beacon from config)
Found JPE config for UL1_1_TPE1 (station from config, beacon from config)
Found JPE config for UL1_4_TPE1 (station from config, beacon from config)
Found JPE config for UL1_4_TPE2 (station from config, beacon from config)
Found JPE config for UL1_5_TPE1 (station from config, beacon from config)
Found JPE config for UL1_6_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE1
Found JPE config for UL2_5_TPE1 (station from config, beacon from config)
Found JPE config for UL2_5_TPE2 (station from config, beacon from config)
Found JPE config for UL2_6_TPE1 (station from config, beacon from config)
Found JPE config for UL2_7_TPE1 (station from config, beacon from config)
Found JPE config for UL2_8_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE2
Found JPE config for UL3_5_TPE1 (station from config, beacon from config)
Found JPE config for UL3_5_TPE2 (station from config, beacon from config)
Found JPE config for UL3_6_TPE1 (station from config, beacon from config)
Found JPE config for UL3_7_TPE1 (station from config, beacon from config)
Found JPE config for UL3_8_TPE1 (station from config, beacon from config)
Found JPE config for PS1_1_TPE3
Found JPE config for UL4_5_TPE1 (station from config, beacon from config)
Found JPE config for UL4_5_TPE2 (station from config, beacon from config)
Found JPE config for UL4_6_TPE1 (station from config, beacon from config)
Found JPE config for UL4_7_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE1
Found JPE config for UL5_5_TPE1 (station from config, beacon from config)
Found JPE config for UL5_5_TPE2 (station from config, beacon from config)
Found JPE config for UL5_6_TPE1 (station from config, beacon from config)
Found JPE config for UL5_7_TPE1 (station from config, beacon from config)
Found JPE config for UL5_8_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE2
Found JPE config for UL6_1_TPE1 (station from config, beacon from config)
Found JPE config for UL6_4_TPE1 (station from config, beacon from config)
Found JPE config for UL6_4_TPE2 (station from config, beacon from config)
Found JPE config for UL6_5_TPE1 (station from config, beacon from config)
Found JPE config for UL6_6_TPE1 (station from config, beacon from config)
Found JPE config for UL6_7_TPE1 (station from config, beacon from config)
Found JPE config for PS2_1_TPE3
Found JPE config for PS1_3_TPE1 (station from config, beacon from config)
Found JPE config for UL1_2_TPE2
Found JPE config for UL2_3_TPE3
Found JPE config for UL3_3_TPE3
Found JPE config for UL4_3_TPE3
Found JPE config for UL6_2_TPE2
Found JPE config for PS1_3_TPE2 (station from config, beacon from config)
Found JPE config for UL1_2_TPE1
Found JPE config for UL5_3_TPE3
Found JPE config for UL6_2_TPE1
Found JPE config for PS1_1_TPE4
Found JPE config for PS2_1_TPE4
Found JPE config for UL2_3_TPE1
Found JPE config for UL2_3_TPE2
Found JPE config for UL3_3_TPE1
Found JPE config for UL3_3_TPE2
Found JPE config for UL4_3_TPE1
Found JPE config for UL4_3_TPE2
Found JPE config for UL5_3_TPE1
Found JPE config for UL5_3_TPE2
Looking for red beacon with base PS1_8, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 2 red beacon entries
Found red beacon: PS1_8_BCN2_R with IO_PATH: PS1_5B_VFD1:O.IO_0
No SO in red beacon PS1_8_BCN2_R: PS1_5B_VFD1:O.IO_0
Found STATION_EPC config for PS1_8_EPC1
Looking for red beacon with base PS2_7, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 2 red beacon entries
Found red beacon: PS2_7_BCN2_R with IO_PATH: PS2_4B_VFD1:O.IO_0
No SO in red beacon PS2_7_BCN2_R: PS2_4B_VFD1:O.IO_0
Found STATION_EPC config for PS2_7_EPC1
Looking for red beacon with base UL1_1, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL1_1_EPC1
Looking for red beacon with base UL6_1, EPC channel EPC1
Beacon mask pattern: f'{base}_BCN.*_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL6_1_EPC1
Looking for red beacon with base PS1_8, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 1 red beacon entries
Found red beacon: PS1_8_BCN2_R with IO_PATH: PS1_5B_VFD1:O.IO_0
No SO in red beacon PS1_8_BCN2_R: PS1_5B_VFD1:O.IO_0
Found STATION_EPC config for PS1_8_EPC2
Looking for red beacon with base PS2_7, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 1 red beacon entries
Found red beacon: PS2_7_BCN2_R with IO_PATH: PS2_4B_VFD1:O.IO_0
No SO in red beacon PS2_7_BCN2_R: PS2_4B_VFD1:O.IO_0
Found STATION_EPC config for PS2_7_EPC2
Looking for red beacon with base UL1_1, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL1_1_EPC2
Looking for red beacon with base UL6_1, EPC channel EPC2
Beacon mask pattern: f'{base}_BCN2_R$'
Found 0 red beacon entries
Found STATION_EPC config for UL6_1_EPC2
Found STATION_JR_PB config for PS1_1_JR1_PB
Found STATION_JR_PB config for PS2_1_JR1_PB
Found STATION_JR_PB config for PS2_1_JR2_PB
Found STATION_JR_PB config for UL1_2_JR1_PB
Found STATION_JR_PB config for UL2_3_JR1_PB
Found STATION_JR_PB config for UL3_3_JR1_PB
Found STATION_JR_PB config for UL4_3_JR1_PB
Found STATION_JR_PB config for UL6_2_JR1_PB
Found STATION_JR_PB config for UL5_3_JR1_PB
Found STATION_JR_PB config for PS1_1_JR2_PB
Found STATION_S_PB config for PS1_8_S2_PB
Found STATION_S_PB config for PS1_8_S1_PB
Found STATION_S_PB config for PS2_7_S2_PB
Found STATION_S_PB config for PS2_7_S1_PB
Found STATION_SS_PB config for UL1_1_SS1
Found STATION_SS_PB config for UL6_1_SS1
Found ENCODER config for PS1_6_ENCODER (upstream: NO_UPSTREAM, downstream: PS1_7_VFD1.CTRL)
Found ENCODER config for PS1_7_ENCODER (upstream: PS1_6_VFD1.CTRL, downstream: PS1_8_VFD1.CTRL)
Found ENCODER config for PS1_8_ENCODER (upstream: PS1_7_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for PS2_5_ENCODER (upstream: NO_UPSTREAM, downstream: PS2_6_VFD1.CTRL)
Found ENCODER config for PS2_6_ENCODER (upstream: PS2_5_VFD1.CTRL, downstream: PS2_7_VFD1.CTRL)
Found ENCODER config for PS2_7_ENCODER (upstream: PS2_6_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL1_4_ENCODER (upstream: UL1_3_VFD1.CTRL, downstream: UL1_5_VFD1.CTRL)
Found ENCODER config for UL1_5_ENCODER (upstream: UL1_4_VFD1.CTRL, downstream: UL1_6_VFD1.CTRL)
Found ENCODER config for UL1_6_ENCODER (upstream: UL1_5_VFD1.CTRL, downstream: UL1_7_VFD1.CTRL)
Found ENCODER config for UL1_7_ENCODER (upstream: UL1_6_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL2_5_ENCODER (upstream: UL2_4_VFD1.CTRL, downstream: UL2_6_VFD1.CTRL)
Found ENCODER config for UL2_6_ENCODER (upstream: UL2_5_VFD1.CTRL, downstream: UL2_7_VFD1.CTRL)
Found ENCODER config for UL2_7_ENCODER (upstream: UL2_6_VFD1.CTRL, downstream: UL2_8_VFD1.CTRL)
Found ENCODER config for UL2_8_ENCODER (upstream: UL2_7_VFD1.CTRL, downstream: UL2_9_VFD1.CTRL)
Found ENCODER config for UL2_9_ENCODER (upstream: UL2_8_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL3_5_ENCODER (upstream: UL3_4_VFD1.CTRL, downstream: UL3_6_VFD1.CTRL)
Found ENCODER config for UL3_6_ENCODER (upstream: UL3_5_VFD1.CTRL, downstream: UL3_7_VFD1.CTRL)
Found ENCODER config for UL3_7_ENCODER (upstream: UL3_6_VFD1.CTRL, downstream: UL3_8_VFD1.CTRL)
Found ENCODER config for UL3_8_ENCODER (upstream: UL3_7_VFD1.CTRL, downstream: UL3_9_VFD1.CTRL)
Found ENCODER config for UL3_9_ENCODER (upstream: UL3_8_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL4_5_ENCODER (upstream: UL4_4_VFD1.CTRL, downstream: UL4_6_VFD1.CTRL)
Found ENCODER config for UL4_6_ENCODER (upstream: UL4_5_VFD1.CTRL, downstream: UL4_7_VFD1.CTRL)
Found ENCODER config for UL4_7_ENCODER (upstream: UL4_6_VFD1.CTRL, downstream: UL4_8_VFD1.CTRL)
Found ENCODER config for UL4_8_ENCODER (upstream: UL4_7_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL5_5_ENCODER (upstream: UL5_4_VFD1.CTRL, downstream: UL5_6_VFD1.CTRL)
Found ENCODER config for UL5_6_ENCODER (upstream: UL5_5_VFD1.CTRL, downstream: UL5_7_VFD1.CTRL)
Found ENCODER config for UL5_7_ENCODER (upstream: UL5_6_VFD1.CTRL, downstream: UL5_8_VFD1.CTRL)
Found ENCODER config for UL5_8_ENCODER (upstream: UL5_7_VFD1.CTRL, downstream: UL5_9_VFD1.CTRL)
Found ENCODER config for UL5_9_ENCODER (upstream: UL5_8_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for UL6_4_ENCODER (upstream: UL6_3_VFD1.CTRL, downstream: UL6_5_VFD1.CTRL)
Found ENCODER config for UL6_5_ENCODER (upstream: UL6_4_VFD1.CTRL, downstream: UL6_6_VFD1.CTRL)
Found ENCODER config for UL6_6_ENCODER (upstream: UL6_5_VFD1.CTRL, downstream: UL6_7_VFD1.CTRL)
Found ENCODER config for UL6_7_ENCODER (upstream: UL6_6_VFD1.CTRL, downstream: UL6_8_VFD1.CTRL)
Found ENCODER config for UL6_8_ENCODER (upstream: UL6_7_VFD1.CTRL, downstream: NO_DOWNSTREAM)
Found ENCODER config for PS1_2_ENCODER (upstream: PS1_1_VFD1.CTRL, downstream: PS1_3_VFD1.CTRL)
Found ENCODER config for PS2_2_ENCODER (upstream: PS2_1_VFD1.CTRL, downstream: PS2_3_VFD1.CTRL)
Found ENCODER config for UL1_3_ENCODER (upstream: UL1_2_VFD1.CTRL, downstream: UL1_4_VFD1.CTRL)
Found ENCODER config for UL2_4_ENCODER (upstream: UL2_3_VFD1.CTRL, downstream: UL2_5_VFD1.CTRL)
Found ENCODER config for UL3_4_ENCODER (upstream: UL3_3_VFD1.CTRL, downstream: UL3_5_VFD1.CTRL)
Found ENCODER config for UL4_4_ENCODER (upstream: UL4_3_VFD1.CTRL, downstream: UL4_5_VFD1.CTRL)
Found ENCODER config for UL5_4_ENCODER (upstream: UL5_3_VFD1.CTRL, downstream: UL5_5_VFD1.CTRL)
Found ENCODER config for UL6_3_ENCODER (upstream: UL6_2_VFD1.CTRL, downstream: UL6_4_VFD1.CTRL)
Found ENCODER config for PS1_3_ENCODER (upstream: PS1_2_VFD1.CTRL, downstream: PS1_4_VFD1.CTRL)
Found ENCODER config for UL1_2_ENCODER (upstream: UL1_1_VFD1.CTRL, downstream: UL1_3_VFD1.CTRL)
Found ENCODER config for UL2_3_ENCODER (upstream: NO_UPSTREAM, downstream: UL2_4_VFD1.CTRL)
Found ENCODER config for UL3_3_ENCODER (upstream: NO_UPSTREAM, downstream: UL3_4_VFD1.CTRL)
Found ENCODER config for UL4_3_ENCODER (upstream: NO_UPSTREAM, downstream: UL4_4_VFD1.CTRL)
Found ENCODER config for UL5_3_ENCODER (upstream: NO_UPSTREAM, downstream: UL5_4_VFD1.CTRL)
Found ENCODER config for UL6_2_ENCODER (upstream: UL6_1_VFD1.CTRL, downstream: UL6_3_VFD1.CTRL)
Found ENCODER config for PS1_1_ENCODER (upstream: NO_UPSTREAM, downstream: PS1_2_VFD1.CTRL)
Found ENCODER config for PS2_1_ENCODER (upstream: NO_UPSTREAM, downstream: PS2_2_VFD1.CTRL)
FIOM PDP2_FIO1 -> DPM DPM2_PS2_1
FIOM UL1_2_FIO1 -> DPM DPM1_PS1_1
FIOM UL2_3_FIO1 -> DPM DPM1_PS1_1
FIOM UL3_3_FIO1 -> DPM DPM2_PS1_1
FIOM UL4_3_FIO1 -> DPM DPM1_PS2_1
FIOM UL5_3_FIO1 -> DPM DPM1_PS2_1
FIOM UL6_2_FIO1 -> DPM DPM2_PS2_1
FIOH PDP2_FIOH1 -> FIO PDP2_FIO1
APF PS1_1_VFD1 -> DPM DPM2_PS1_1
APF PS1_2_VFD1 -> DPM DPM2_PS1_1
APF PS1_2B_VFD1 -> DPM DPM2_PS2_1
APF PS1_3_VFD1 -> DPM DPM1_PS1_4
APF PS1_4_VFD1 -> DPM DPM1_PS1_4
APF PS1_5A_VFD1 -> DPM DPM1_PS1_4
APF PS1_5B_VFD1 -> DPM DPM1_PS1_4
APF PS1_6_VFD1 -> DPM DPM1_PS1_4
APF PS1_7_VFD1 -> DPM DPM1_PS1_4
APF PS1_8_VFD1 -> DPM DPM1_PS1_4
APF PS2_1_VFD1 -> DPM DPM2_PS2_1
APF PS2_2_VFD1 -> DPM DPM2_PS2_1
APF PS2_3_VFD1 -> DPM DPM2_PS2_1
APF PS2_4A_VFD1 -> DPM DPM2_PS2_1
APF PS2_4B_VFD1 -> DPM DPM2_PS2_1
APF PS2_5_VFD1 -> DPM DPM2_PS2_1
APF PS2_6_VFD1 -> DPM DPM2_PS2_1
APF PS2_7_VFD1 -> DPM DPM2_PS2_1
APF UL1_1_VFD1 -> DPM DPM1_PS1_1
APF UL1_2_VFD1 -> DPM DPM1_PS1_1
APF UL1_3_VFD1 -> DPM DPM1_PS1_1
APF UL1_4_VFD1 -> DPM DPM1_PS1_1
APF UL1_5_VFD1 -> DPM DPM1_PS1_1
APF UL1_6_VFD1 -> DPM DPM1_PS1_1
APF UL1_7_VFD1 -> DPM DPM1_PS1_1
APF UL2_3_VFD1 -> DPM DPM1_PS1_1
APF UL2_4_VFD1 -> DPM DPM1_PS1_1
APF UL2_5_VFD1 -> DPM DPM1_PS1_1
APF UL2_6_VFD1 -> DPM DPM1_PS1_1
APF UL2_7_VFD1 -> DPM DPM1_PS1_1
APF UL2_8_VFD1 -> DPM DPM1_PS1_1
APF UL2_9_VFD1 -> DPM DPM1_PS1_1
APF UL3_3_VFD1 -> DPM DPM2_PS1_1
APF UL3_4_VFD1 -> DPM DPM2_PS1_1
APF UL3_5_VFD1 -> DPM DPM2_PS1_1
APF UL3_6_VFD1 -> DPM DPM2_PS1_1
APF UL3_7_VFD1 -> DPM DPM2_PS1_1
APF UL3_8_VFD1 -> DPM DPM2_PS1_1
APF UL3_9_VFD1 -> DPM DPM2_PS1_1
APF UL4_3_VFD1 -> DPM DPM1_PS2_1
APF UL4_4_VFD1 -> DPM DPM1_PS2_1
APF UL4_5_VFD1 -> DPM DPM1_PS2_1
APF UL4_6_VFD1 -> DPM DPM1_PS2_1
APF UL4_7_VFD1 -> DPM DPM1_PS2_1
APF UL4_8_VFD1 -> DPM DPM1_PS2_1
APF UL5_3_VFD1 -> DPM DPM1_PS2_1
APF UL5_4_VFD1 -> DPM DPM1_PS2_1
APF UL5_5_VFD1 -> DPM DPM1_PS2_1
APF UL5_6_VFD1 -> DPM DPM1_PS2_1
APF UL5_7_VFD1 -> DPM DPM1_PS2_1
APF UL5_8_VFD1 -> DPM DPM1_PS2_1
APF UL5_9_VFD1 -> DPM DPM1_PS2_1
APF UL6_1_VFD1 -> DPM DPM2_PS2_1
APF UL6_2_VFD1 -> DPM DPM2_PS2_1
APF UL6_3_VFD1 -> DPM DPM2_PS2_1
APF UL6_4_VFD1 -> DPM DPM2_PS2_1
APF UL6_5_VFD1 -> DPM DPM2_PS2_1
APF UL6_6_VFD1 -> DPM DPM2_PS2_1
APF UL6_7_VFD1 -> DPM DPM2_PS2_1
APF UL6_8_VFD1 -> DPM DPM2_PS2_1
- Added 12 E-stop check rungs
[R090_STATION_JR_PB] Starting STATION_JR_PB routine generation...
Found 10 STATION_JR_PB configurations
Generated 10 STATION_JR_PB rungs
[R0100_JPE] Starting JPE routine generation...
Found 68 JPE configurations
Generated 68 JPE rungs
Belt tracking for PS1_1_VFD1 -> zzz_PS1_1Tracking
Belt tracking for PS1_2_VFD1 -> zzz_PS1_2Tracking
Belt tracking for PS1_2B_VFD1 -> zzz_PS1_2BTracking
Belt tracking for PS1_3_VFD1 -> zzz_PS1_3Tracking
Belt tracking for PS1_4_VFD1 -> zzz_PS1_4Tracking
Belt tracking for PS1_5A_VFD1 -> zzz_PS1_5ATracking
Belt tracking for PS1_5B_VFD1 -> zzz_PS1_5BTracking
Belt tracking for PS1_6_VFD1 -> zzz_PS1_6Tracking
Belt tracking for PS1_7_VFD1 -> zzz_PS1_7Tracking
Belt tracking for PS1_8_VFD1 -> zzz_PS1_8Tracking
Belt tracking for PS2_1_VFD1 -> zzz_PS2_1Tracking
Belt tracking for PS2_2_VFD1 -> zzz_PS2_2Tracking
Belt tracking for PS2_3_VFD1 -> zzz_PS2_3Tracking
Belt tracking for PS2_4A_VFD1 -> zzz_PS2_4ATracking
Belt tracking for PS2_4B_VFD1 -> zzz_PS2_4BTracking
Belt tracking for PS2_5_VFD1 -> zzz_PS2_5Tracking
Belt tracking for PS2_6_VFD1 -> zzz_PS2_6Tracking
Belt tracking for PS2_7_VFD1 -> zzz_PS2_7Tracking
Belt tracking for UL1_1_VFD1 -> zzz_UL1_1Tracking
Belt tracking for UL1_2_VFD1 -> zzz_UL1_2Tracking
Belt tracking for UL1_3_VFD1 -> zzz_UL1_3Tracking
Belt tracking for UL1_4_VFD1 -> zzz_UL1_4Tracking
Belt tracking for UL1_5_VFD1 -> zzz_UL1_5Tracking
Belt tracking for UL1_6_VFD1 -> zzz_UL1_6Tracking
Belt tracking for UL1_7_VFD1 -> zzz_UL1_7Tracking
Belt tracking for UL2_3_VFD1 -> zzz_UL2_3Tracking
Belt tracking for UL2_4_VFD1 -> zzz_UL2_4Tracking
Belt tracking for UL2_5_VFD1 -> zzz_UL2_5Tracking
Belt tracking for UL2_6_VFD1 -> zzz_UL2_6Tracking
Belt tracking for UL2_7_VFD1 -> zzz_UL2_7Tracking
Belt tracking for UL2_8_VFD1 -> zzz_UL2_8Tracking
Belt tracking for UL2_9_VFD1 -> zzz_UL2_9Tracking
Belt tracking for UL3_3_VFD1 -> zzz_UL3_3Tracking
Belt tracking for UL3_4_VFD1 -> zzz_UL3_4Tracking
Belt tracking for UL3_5_VFD1 -> zzz_UL3_5Tracking
Belt tracking for UL3_6_VFD1 -> zzz_UL3_6Tracking
Belt tracking for UL3_7_VFD1 -> zzz_UL3_7Tracking
Belt tracking for UL3_8_VFD1 -> zzz_UL3_8Tracking
Belt tracking for UL3_9_VFD1 -> zzz_UL3_9Tracking
Belt tracking for UL4_3_VFD1 -> zzz_UL4_3Tracking
Belt tracking for UL4_4_VFD1 -> zzz_UL4_4Tracking
Belt tracking for UL4_5_VFD1 -> zzz_UL4_5Tracking
Belt tracking for UL4_6_VFD1 -> zzz_UL4_6Tracking
Belt tracking for UL4_7_VFD1 -> zzz_UL4_7Tracking
Belt tracking for UL4_8_VFD1 -> zzz_UL4_8Tracking
Belt tracking for UL5_3_VFD1 -> zzz_UL5_3Tracking
Belt tracking for UL5_4_VFD1 -> zzz_UL5_4Tracking
Belt tracking for UL5_5_VFD1 -> zzz_UL5_5Tracking
Belt tracking for UL5_6_VFD1 -> zzz_UL5_6Tracking
Belt tracking for UL5_7_VFD1 -> zzz_UL5_7Tracking
Belt tracking for UL5_8_VFD1 -> zzz_UL5_8Tracking
Belt tracking for UL5_9_VFD1 -> zzz_UL5_9Tracking
Belt tracking for UL6_1_VFD1 -> zzz_UL6_1Tracking
Belt tracking for UL6_2_VFD1 -> zzz_UL6_2Tracking
Belt tracking for UL6_3_VFD1 -> zzz_UL6_3Tracking
Belt tracking for UL6_4_VFD1 -> zzz_UL6_4Tracking
Belt tracking for UL6_5_VFD1 -> zzz_UL6_5Tracking
Belt tracking for UL6_6_VFD1 -> zzz_UL6_6Tracking
Belt tracking for UL6_7_VFD1 -> zzz_UL6_7Tracking
Belt tracking for UL6_8_VFD1 -> zzz_UL6_8Tracking
- Added 60 belt tracking AOI calls
Created safety tag mapping file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyTagMapping.txt
=== Step 2: Routines Generator stderr ===
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM02_20250904_203256.log
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts ===
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X...
[20:33:01] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: belt_tracking (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: encoder (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_mapping (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_epc (safety)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_ss_pb (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_s_pb (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: taching_belts (device)
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety)
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines...
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for PS1_8: {'EPC1', 'EPC2'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for PS2_7: {'EPC1', 'EPC2'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL1_1: {'EPC1', 'EPC2'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL2_1: {'ESTOP1'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL3_1: {'ESTOP1'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL4_1: {'ESTOP1'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL5_1: {'ESTOP1'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL6_1: {'EPC1', 'EPC2'}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Available DCS controllers: {'PS1_8': {'EPC1', 'EPC2'}, 'PS2_7': {'EPC1', 'EPC2'}, 'UL1_1': {'EPC1', 'EPC2'}, 'UL2_1': {'ESTOP1'}, 'UL3_1': {'ESTOP1'}, 'UL4_1': {'ESTOP1'}, 'UL5_1': {'ESTOP1'}, 'UL6_1': {'EPC1', 'EPC2'}}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-01 candidates: ['PS1_1', 'PS1_2', 'PS1_3', 'PS1_4', 'PS1_5', 'PS1_6', 'PS1_7', 'PS1_8']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_1 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_2 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_3 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_4 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_5 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_6 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_7 in zone 02-01
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-02 candidates: ['UL1_1', 'UL1_2', 'UL1_3', 'UL1_4', 'UL1_5', 'UL1_6', 'UL1_7']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_2 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_3 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_4 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_5 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_6 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_7 in zone 02-02
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-03 candidates: ['UL2_1', 'UL2_2', 'UL2_3', 'UL2_4', 'UL2_5', 'UL2_6', 'UL2_7', 'UL2_8', 'UL2_9']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_2 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_3 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_4 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_5 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_6 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_7 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_8 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_9 in zone 02-03
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-04 candidates: ['UL3_1', 'UL3_2', 'UL3_3', 'UL3_4', 'UL3_5', 'UL3_6', 'UL3_7', 'UL3_8', 'UL3_9']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_2 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_3 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_4 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_5 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_6 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_7 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_8 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_9 in zone 02-04
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-05 candidates: ['PS2_1', 'PS2_2', 'PS2_3', 'PS2_4', 'PS2_5', 'PS2_6', 'PS2_7']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_1 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_2 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_3 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_4 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_5 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_6 in zone 02-05
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-06 candidates: ['UL4_1', 'UL4_2', 'UL4_3', 'UL4_4', 'UL4_5', 'UL4_6', 'UL4_7', 'UL4_8', 'UL4_9']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_2 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_3 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_4 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_5 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_6 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_7 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_8 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_9 in zone 02-06
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-07 candidates: ['UL5_1', 'UL5_2', 'UL5_3', 'UL5_4', 'UL5_5', 'UL5_6', 'UL5_7', 'UL5_8', 'UL5_9']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_2 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_3 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_4 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_5 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_6 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_7 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_8 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_9 in zone 02-07
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-08 candidates: ['UL6_1', 'UL6_2', 'UL6_3', 'UL6_4', 'UL6_5', 'UL6_6', 'UL6_7', 'UL6_8']
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_2 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_3 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_4 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_5 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_6 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_7 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_8 in zone 02-08
[20:33:01] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True}
[20:33:01] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 7 tags
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 29 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_02_01_OK)[OTE(PS1_1_VFD1:SO.STOOutput),OTE(PS1_2_VFD1:SO.STOOutput),OTE(PS1_3_VFD1:SO.STOOutput),OTE(PS1_4_VFD1:SO.STOOutput),OTE(...
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 8 rungs | example: [XIC(SFT_PS1_8_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS1_8_EPC1_ESTOP);
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 9 rungs | example: XIC(PS1_8_EPC1_DCS_CTRL.O1)XIC(PS1_8_EPC2_DCS_CTRL.O1)OTE(EStop_02_01_OK);
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 13 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB);
[20:33:01] [INFO] [logging_config.py:126:_log_with_context] - MainRoutine: 1 rungs | example: [JSR(R010_INPUTS,0) ,JSR(R011_OUTPUTS,0) ,JSR(R012_RESETS,0) ,JSR(R020_ESTOPS,0) ,JSR(R030_ZONES,0) ];
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation
[20:33:01] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyProgram_Generated.L5X
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyProgram_Generated.L5X
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X...
[20:33:02] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags...
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Extracting FPE data
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: FPE count=0
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Extracting PMM data
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: PMM entries=1
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] PMM processing PDP2_PMM
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP2_PMM DPM=DPM2_PS2_1
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP2_PMM PWM fault IO PDP2_FIO1:I.Pt12.Data
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP2_PMM configuration stored
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: PMM configs=1
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Extracting CB_MONITOR data
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: CB PDPs=1
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP2: CBs=26 FIOs=2
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB1 (CB1) to position 0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB2 (CB2) to position 1
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB3 (CB3) to position 2
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB4 (CB4) to position 3
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB5 (CB5) to position 4
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB6 (CB6) to position 5
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB7 (CB7) to position 6
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB8 (CB8) to position 7
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB9 (CB9) to position 8
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB10 (CB10) to position 9
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB11 (CB11) to position 10
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB12 (CB12) to position 11
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB13 (CB13) to position 12
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB14 (CB14) to position 13
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB15 (CB15) to position 14
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB16 (CB16) to position 15
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB17 (CB17) to position 16
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB18 (CB18) to position 17
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB19 (CB19) to position 18
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB20 (CB20) to position 19
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB21 (CB21) to position 20
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB22 (CB22) to position 21
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB23 (CB23) to position 22
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB24 (CB24) to position 23
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB25 (CB25) to position 24
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP2_CB26 (CB26) to position 25
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP2: configured CBs=26 entries=['PDP2_CB1', 'PDP2_CB2', 'PDP2_CB3', 'PDP2_CB4', 'PDP2_CB5', 'PDP2_CB6', 'PDP2_CB7', 'PDP2_CB8', 'PDP2_CB9', 'PDP2_CB10', 'PDP2_CB11', 'PDP2_CB12', 'PDP2_CB13', 'PDP2_CB14', 'PDP2_CB15', 'PDP2_CB16', 'PDP2_CB17', 'PDP2_CB18', 'PDP2_CB19', 'PDP2_CB20', 'PDP2_CB21', 'PDP2_CB22', 'PDP2_CB23', 'PDP2_CB24', 'PDP2_CB25', 'PDP2_CB26'] fault=PDP2_FIO1:I.ConnectionFaulted
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: CB configs=1
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=371 | standard=19 safety=53 dcs=13 modules=278
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Added 371 controller tags
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines...
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fiom
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fiom
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fioh
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fioh
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: flow_ctrl
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: flow_ctrl
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Extracting SPEED_CTRL data
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: SPEED_CTRL VFDs=60
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] SPEED_CTRL sample=PS1_1_VFD1, PS1_2_VFD1, PS1_2B_VFD1, PS1_3_VFD1, PS1_4_VFD1...
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Data: SPEED_CTRL count=60
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: speed_ctrl
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: speed_ctrl
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: encoder
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: encoder
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: RST data has 7 rows
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: MCM02 -> Local:5:I.Data.0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS1_8_S2_PB -> PS1_6_VFD1:I.IO_0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS1_8_S1_PB -> PS1_8_VFD1:I.IO_0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS2_7_S2_PB -> PS2_5_VFD1:I.IO_0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS2_7_S1_PB -> PS2_7_VFD1:I.IO_0
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: UL1_1_SS1_SPB -> UL1_2_FIO1:I.Pt00.Data
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: UL6_1_SS1_SPB -> UL6_2_FIO1:I.Pt00.Data
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generating 7 rungs
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM02);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 2: XIC(PS1_8_VFD1:I.IO_0)OTE(PS1_8_S1_PB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 3: XIC(PS1_6_VFD1:I.IO_0)OTE(PS1_8_S2_PB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 4: XIC(PS2_7_VFD1:I.IO_0)OTE(PS2_7_S1_PB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 5: XIC(PS2_5_VFD1:I.IO_0)OTE(PS2_7_S2_PB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 6: XIC(UL1_2_FIO1:I.Pt00.Data)OTE(UL1_1_SS1_SPB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 7: XIC(UL6_2_FIO1:I.Pt00.Data)OTE(UL6_1_SS1_SPB);
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generated 7 total rungs
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_jr_pb
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_jr_pb
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_s_pb
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_s_pb
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_ss_pb
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_ss_pb
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_epc
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_epc
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: jpe
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: jpe
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Plugin fpe cannot generate with current data
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: pmm
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: pmm
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: cb_monitor
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: cb_monitor
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: belt_tracking
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: belt_tracking
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'fiom': True, 'fioh': True, 'apf': True, 'flow_ctrl': True, 'speed_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': True, 'station_ss_pb': True, 'station_epc': True, 'jpe': True, 'fpe': False, 'pmm': True, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True}
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] Routines created (20): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R031_FIOH, R040_APF, R050_FLOW_CTRL, R051_SPEED_CTRL, R060_PMM, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R091_STATION_S_PB, R092_STATION_SS_PB, R093_STATION_EPC, R100_JPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 6 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R030_FIOM: 8 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R031_FIOH: 2 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 61 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R050_FLOW_CTRL: 55 rungs | example: XIC(PS1_2_VFD1.CTRL.STS.Enabled)OTE(PS1_1_VFD1.CTRL.CMD.Interlock);
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R051_SPEED_CTRL: 1 rungs | example: [MOVE(Speed_350_FPM,PS1_1_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,PS1_2_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,PS1_2B_VFD1.CTRL.CMD.Speed_FPM) ,MO...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 12 rungs | example: [XIO(PS1_8_VFD1:SI.In00Data) ,XIO(PS1_8_VFD1:SI.In01Data) ]XIO(PS1_1_VFD1:SO.STOOutput)XIO(PS1_2_VFD1:SO.STOOutput)XIO(PS1_2B_VFD1:SO.STOOutput)XIO(PS1_3_VFD...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R080_ENCODER: 51 rungs | example: AOI_ENCODER(PS1_1_ENCODER.AOI,PS1_1_ENCODER.HMI,PS1_1_ENCODER.CTRL,PS1_1_VFD1.CTRL,NO_UPSTREAM,PS1_2_VFD1.CTRL,PS1_1_VFD1:I.In_1,PS1_1_VFD1:I.ConnectionFault...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 8 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R090_STATION_JR_PB: 10 rungs | example: AOI_STATION_JR_PB(PS1_1_JR1_PB.AOI,PS1_1_JR1_PB.HMI,PS1_1_JR1_PB.CTRL,NO_PARTNER,UL2_9_VFD1:I.IO_0,UL2_9_VFD1:O.IO_1,MCM.CTRL)MOVE(PS1_1_JR1_PB.CTRL.STS.Log,...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R091_STATION_S_PB: 4 rungs | example: AOI_STATION_S_PB(PS1_8_S1_PB_STATION.AOI,PS1_8_S1_PB_STATION.HMI,PS1_8_S1_PB_STATION.CTRL,PS1_8_VFD1.CTRL,PS1_8_VFD1:I.IO_0,PS1_8_VFD1:O.IO_1,PS1_1_JR1_PB.CT...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R092_STATION_SS_PB: 2 rungs | example: AOI_STATION_SS_PB(UL1_1_SS1_STATION.AOI,UL1_1_SS1_STATION.HMI,UL1_1_SS1_STATION.CTRL,UL1_1_VFD1.CTRL,UL1_2_FIO1:I.ConnectionFaulted,UL1_2_FIO1:I.Pt00.Data,UL...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R093_STATION_EPC: 8 rungs | example: AOI_STATION_EPC(PS1_8_EPC1_STATION.AOI,MCM.CTRL,PS1_8_EPC1_STATION.HMI,PS1_8_S2_PB_STATION.CTRL,PS1_8_VFD1:I.ConnectionFaulted,PS1_8_VFD1:SI.In00Data,PS1_8_V...
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R100_JPE: 68 rungs | example: AOI_JPE(PS1_1_TPE1.AOI,PS1_1_TPE1.HMI,PS1_1_TPE1.CTRL,PS1_1_VFD1.CTRL,PS1_1_JR1_PB.CTRL,UL1_7_VFD1:I.ConnectionFaulted,UL1_7_VFD1:I.In_2,YES,UL2_8_VFD1:O.IO_0);
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R060_PMM: 2 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - R070_CB_MONITOR: 2 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_BeltTracking: 61 rungs | example: NOP();
[20:33:02] [INFO] [logging_config.py:126:_log_with_context] - MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R030_FIOM,0) ,JSR(R031_FIOH,0) ,JSR(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R051_SPEED_CTRL,0) ,JSR(...
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/MainProgram_Generated.L5X
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/MainProgram_Generated.L5X
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping...
[20:33:02] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper
[20:33:02] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SafetyTagMapping.txt
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 7
[20:33:02] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! ===
{"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-09-04T20:33:02.623062", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
=== Step 3: IO Tree Generator stdout ===
Enhanced MCM Generator
- Project: SAT9_MCM02
- Excel: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/DESC_IP_MERGED.xlsx
- Boilerplate: SAT9_boilerplate
- Mode: Single file
--------------------------------------------------
Created 1 FIOH modules based on TERM analysis
Found 7 IOLM modules
Found 12 LPE modules
Found 60 APF modules
Found 5 DPM modules
Found 1 PMM modules
WARNING: 1 unknown modules found
1. UL2_2_EXTENDO - FMH (11.200.1.37)
Created 7 IOLM modules with boilerplate selection:
Device 'PDP2_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
PDP2_FIO1 (FIO PDP_FIO): Using variant boilerplate PDP_FIO_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X
Device 'UL1_2_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL1_2_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL1_2_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL1_2_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL1_2_FIO1_Module.L5X
Device 'UL2_3_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL2_3_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL2_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL2_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL2_3_FIO1_Module.L5X
Device 'UL3_3_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL3_3_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL3_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL3_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL3_3_FIO1_Module.L5X
Device 'UL4_3_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL4_3_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL4_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL4_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL4_3_FIO1_Module.L5X
Device 'UL5_3_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL5_3_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL5_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL5_3_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL5_3_FIO1_Module.L5X
Device 'UL6_2_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
UL6_2_FIO1 (FIO D2CMaster): Using module-specific boilerplate UL6_2_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL6_2_FIO1_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/UL6_2_FIO1_Module.L5X
Device 'UL3_2_EXTENDO' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Device 'UL4_2_EXTENDO' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Device 'UL5_2_EXTENDO' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X
Device 'PS1_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X
Device 'PS1_2B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS1_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'PS1_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'PS1_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'PS1_5A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS1_5B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS1_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS1_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS1_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X
Device 'PS2_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'PS2_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_4A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_4B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'PS2_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL1_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL1_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL1_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL1_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL1_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL1_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL1_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL2_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL2_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL2_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL2_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL2_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL2_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL2_9_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL3_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL3_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL3_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL3_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL3_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL3_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL3_9_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL4_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL4_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL4_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL4_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL4_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL4_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL5_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL5_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL5_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL5_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL5_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL5_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL5_9_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X
Device 'UL6_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X
Device 'UL6_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Device 'UL6_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1)
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: SAT9_boilerplate/PMM_Module.L5X
PDP2_FIOH1 (FIOH PDP_FIOH): Using variant boilerplate PDP_FIOH_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/SLOT5_IB16_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/SLOT7_IB16S_Module.L5X
Successfully loaded boilerplate: SAT9_boilerplate/SLOT6_OB16E_Module.L5X
No EN4TR modules registered for creation
Importing AOIs/DataTypes from MCM base: SAT9_boilerplate/MCM02.L5X
Archived old L5X: SAT9_MCM02_20250904_202157.L5X
Programs already exist (2 programs found), skipping empty program creation
OK: Generated project: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SAT9_MCM02_20250904_203305.L5X
Single file generation complete
- ['/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SAT9_MCM02_20250904_203305.L5X']
=== Step 3 Batch Script Creation ===
Creating project folder compilation for: SAT9_MCM02
Source L5X: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02/SAT9_MCM02_20250904_203305.L5X
Project directory: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM02
Generated batch file: compile_SAT9_MCM02.bat
SUCCESS: Project compilation ready!
To compile on Windows:
cd "C:\\Users\\ilia.gurielidze\\Projects\\PLC Generation\\generated_projects\\SAT9_MCM02"
compile_SAT9_MCM02.bat