{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-08-22T21:01:27.161482", "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_MCM01.xlsx", "project_name": "SAT9_MCM01"} {"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-08-22T21:01:27.161921", "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: ['NETWORK_PLC', 'DESC_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'] NOTE: Ignored 1 rows from DESC sheet with an empty TAGNAME. Classifying signals and adding IO paths... Signal classification results: SPARE: 241 I: 184 O: 58 IOLink: 1 Device type distribution: APF: 308 M12DR: 112 Hub: 16 IB16: 16 OB16E: 16 IB16S: 16 IO Path mapping results: Successful mappings: 484/484 (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_ULC1_8', 'DPM1_ULC2_8', 'DPM1_ULC3_6'] ================================================================================ 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 488 rows Sample of merged data: TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH 0 PDP1_PMM1 ... NaN NaN NaN 1 SLOT5_IB16 I0 MCM01 ... I IB16 Local:5:I.Data.0 2 SLOT5_IB16 I1 MCM01 ... 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 MCM01 ... I IB16 Local:5:I.Data.2 [10 rows x 11 columns] New Excel file created: MCM01_DESC_IP_MERGED.xlsx The file contains all original sheets plus the new 'DESC_IP' sheet with merged data. Reading input file: MCM01_DESC_IP_MERGED.xlsx Removed 1 IOLink rows (including beacons, FIOH channels, and all other IOLink entries) Removed 4 blank name/description rows Saving output file: MCM01_OUTPUT.csv Processing complete! Created standard output file: DESC_IP_MERGED.xlsx === Step 1: PLC Data Generator stderr === {"level": "INFO", "message": "Data processing completed successfully", "timestamp": "2025-08-22T21:01:30.482728", "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-08-22T21:01:30.482958", "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_MCM01_20250822_210127.log", "timestamp": "2025-08-22T21:01:32.344327", "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-08-22T21:01:32.345962", "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-08-22T21:01:32.346127", "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-08-22T21:01:32.356437", "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-08-22T21:01:32.356698", "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-08-22T21:01:32.357085", "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-08-22T21:01:32.366179", "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-08-22T21:01:32.370957", "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-08-22T21:01:32.374728", "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-08-22T21:01:32.378142", "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-08-22T21:01:32.381324", "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-08-22T21:01:32.384346", "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-08-22T21:01:32.390581", "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-08-22T21:01:32.393366", "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-08-22T21:01:32.396632", "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-08-22T21:01:32.399608", "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-08-22T21:01:32.402797", "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-08-22T21:01:32.406417", "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-08-22T21:01:32.409602", "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-08-22T21:01:32.412535", "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-08-22T21:01:32.415197", "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-08-22T21:01:32.418263", "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-08-22T21:01:32.422388", "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-08-22T21:01:32.425607", "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-08-22T21:01:32.431363", "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-08-22T21:01:32.437121", "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-08-22T21:01:32.441570", "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-08-22T21:01:32.445753", "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-08-22T21:01:32.450905", "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-08-22T21:01:32.455224", "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-08-22T21:01:32.459628", "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-08-22T21:01:32.463714", "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-08-22T21:01:32.467918", "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-08-22T21:01:32.472523", "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-08-22T21:01:32.476704", "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-08-22T21:01:32.481755", "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-08-22T21:01:32.481986", "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-08-22T21:01:33.309353", "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-08-22T21:01:33.316654", "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-08-22T21:01:33.320385", "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-08-22T21:01:33.322748", "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-08-22T21:01:33.331461", "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": "MCM01", "score": 24} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-08-22T21:01:33.331969", "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": 13} {"level": "INFO", "message": "Successfully generated routine: outputs", "timestamp": "2025-08-22T21:01:33.333412", "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-08-22T21:01:33.333664", "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-08-22T21:01:33.338943", "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-08-22T21:01:33.339307", "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 ULC1_12: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.340525", "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 ULC1_3: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.340914", "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 ULC2_12: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.341259", "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 ULC2_3: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.341555", "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 ULC3_3: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.341912", "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 ULC3_6: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.342288", "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 ULC4_3: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.342621", "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 ULC4_6: {'EPC1', 'EPC2'}", "timestamp": "2025-08-22T21:01:33.342957", "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: {'ULC1_12': {'EPC1', 'EPC2'}, 'ULC1_3': {'EPC1', 'EPC2'}, 'ULC2_12': {'EPC1', 'EPC2'}, 'ULC2_3': {'EPC1', 'EPC2'}, 'ULC3_3': {'EPC1', 'EPC2'}, 'ULC3_6': {'EPC1', 'EPC2'}, 'ULC4_3': {'EPC1', 'EPC2'}, 'ULC4_6': {'EPC1', 'EPC2'}}", "timestamp": "2025-08-22T21:01:33.343148", "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 01-01 candidates: ['ULC1_1']", "timestamp": "2025-08-22T21:01:33.343804", "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 ULC1_1 in zone 01-01", "timestamp": "2025-08-22T21:01:33.344110", "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-08-22T21:01:33.344324", "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": "01-01", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-02 candidates: ['ULC1_1', 'ULC1_3', 'ULC1_4', 'ULC1_5', 'ULC1_6']", "timestamp": "2025-08-22T21:01:33.344738", "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 ULC1_1 in zone 01-02", "timestamp": "2025-08-22T21:01:33.344955", "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 ULC1_4 in zone 01-02", "timestamp": "2025-08-22T21:01:33.345156", "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 ULC1_5 in zone 01-02", "timestamp": "2025-08-22T21:01:33.345322", "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 ULC1_6 in zone 01-02", "timestamp": "2025-08-22T21:01:33.345502", "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-08-22T21:01:33.345688", "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": "01-02", "interlock": "MCM01", "dcs_list": ["ULC1_3_EPC1_DCS_CTRL.O1", "ULC1_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-03 candidates: ['ULC1_6', 'ULC1_7', 'ULC1_8', 'ULC1_9', 'ULC1_10', 'ULC1_11', 'ULC1_12']", "timestamp": "2025-08-22T21:01:33.346076", "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 ULC1_6 in zone 01-03", "timestamp": "2025-08-22T21:01:33.346289", "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 ULC1_7 in zone 01-03", "timestamp": "2025-08-22T21:01:33.346489", "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 ULC1_8 in zone 01-03", "timestamp": "2025-08-22T21:01:33.346675", "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 ULC1_9 in zone 01-03", "timestamp": "2025-08-22T21:01:33.346847", "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 ULC1_10 in zone 01-03", "timestamp": "2025-08-22T21:01:33.347032", "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 ULC1_11 in zone 01-03", "timestamp": "2025-08-22T21:01:33.347207", "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-08-22T21:01:33.347376", "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": "01-03", "interlock": "MCM01", "dcs_list": ["ULC1_12_EPC1_DCS_CTRL.O1", "ULC1_12_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-04 candidates: ['ULC2_1']", "timestamp": "2025-08-22T21:01:33.347736", "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 ULC2_1 in zone 01-04", "timestamp": "2025-08-22T21:01:33.348239", "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-08-22T21:01:33.348430", "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": "01-04", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-05 candidates: ['ULC2_1', 'ULC2_3', 'ULC2_4', 'ULC2_5', 'ULC2_6']", "timestamp": "2025-08-22T21:01:33.348860", "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 ULC2_1 in zone 01-05", "timestamp": "2025-08-22T21:01:33.349076", "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 ULC2_4 in zone 01-05", "timestamp": "2025-08-22T21:01:33.349287", "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 ULC2_5 in zone 01-05", "timestamp": "2025-08-22T21:01:33.349478", "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 ULC2_6 in zone 01-05", "timestamp": "2025-08-22T21:01:33.349647", "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-08-22T21:01:33.349923", "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": "01-05", "interlock": "MCM01", "dcs_list": ["ULC2_3_EPC1_DCS_CTRL.O1", "ULC2_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-06 candidates: ['ULC2_6', 'ULC2_7', 'ULC2_8', 'ULC2_9', 'ULC2_10', 'ULC2_11', 'ULC2_12']", "timestamp": "2025-08-22T21:01:33.350330", "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 ULC2_6 in zone 01-06", "timestamp": "2025-08-22T21:01:33.350543", "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 ULC2_7 in zone 01-06", "timestamp": "2025-08-22T21:01:33.350724", "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 ULC2_8 in zone 01-06", "timestamp": "2025-08-22T21:01:33.350929", "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 ULC2_9 in zone 01-06", "timestamp": "2025-08-22T21:01:33.351117", "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 ULC2_10 in zone 01-06", "timestamp": "2025-08-22T21:01:33.351260", "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 ULC2_11 in zone 01-06", "timestamp": "2025-08-22T21:01:33.351423", "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-08-22T21:01:33.351603", "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": "01-06", "interlock": "MCM01", "dcs_list": ["ULC2_12_EPC1_DCS_CTRL.O1", "ULC2_12_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-07 candidates: ['ULC3_1']", "timestamp": "2025-08-22T21:01:33.352033", "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 ULC3_1 in zone 01-07", "timestamp": "2025-08-22T21:01:33.352213", "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-08-22T21:01:33.352413", "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": "01-07", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-08 candidates: ['ULC3_1', 'ULC3_3', 'ULC3_4']", "timestamp": "2025-08-22T21:01:33.352861", "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 ULC3_1 in zone 01-08", "timestamp": "2025-08-22T21:01:33.353072", "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 ULC3_4 in zone 01-08", "timestamp": "2025-08-22T21:01:33.353264", "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-08-22T21:01:33.353448", "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": "01-08", "interlock": "MCM01", "dcs_list": ["ULC3_3_EPC1_DCS_CTRL.O1", "ULC3_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-09 candidates: ['ULC3_4', 'ULC3_5', 'ULC3_6']", "timestamp": "2025-08-22T21:01:33.354033", "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 ULC3_4 in zone 01-09", "timestamp": "2025-08-22T21:01:33.354264", "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 ULC3_5 in zone 01-09", "timestamp": "2025-08-22T21:01:33.354517", "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-08-22T21:01:33.354792", "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": "01-09", "interlock": "MCM01", "dcs_list": ["ULC3_6_EPC1_DCS_CTRL.O1", "ULC3_6_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-10 candidates: ['ULC4_1']", "timestamp": "2025-08-22T21:01:33.355158", "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 ULC4_1 in zone 01-10", "timestamp": "2025-08-22T21:01:33.355375", "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-08-22T21:01:33.355581", "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": "01-10", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-11 candidates: ['ULC4_1', 'ULC4_3', 'ULC4_4']", "timestamp": "2025-08-22T21:01:33.356025", "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 ULC4_1 in zone 01-11", "timestamp": "2025-08-22T21:01:33.356245", "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 ULC4_4 in zone 01-11", "timestamp": "2025-08-22T21:01:33.356444", "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-08-22T21:01:33.356624", "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": "01-11", "interlock": "MCM01", "dcs_list": ["ULC4_3_EPC1_DCS_CTRL.O1", "ULC4_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-12 candidates: ['ULC4_4', 'ULC4_5', 'ULC4_6']", "timestamp": "2025-08-22T21:01:33.356988", "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 ULC4_4 in zone 01-12", "timestamp": "2025-08-22T21:01:33.357184", "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 ULC4_5 in zone 01-12", "timestamp": "2025-08-22T21:01:33.357377", "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-08-22T21:01:33.357581", "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": "01-12", "interlock": "MCM01", "dcs_list": ["ULC4_6_EPC1_DCS_CTRL.O1", "ULC4_6_EPC2_DCS_CTRL.O1"]} {"level": "INFO", "message": "Successfully generated routine: zones", "timestamp": "2025-08-22T21:01:33.357809", "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-08-22T21:01:33.358052", "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-08-22T21:01:33.360005", "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-08-22T21:01:33.360224", "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 17 tags", "timestamp": "2025-08-22T21:01:33.365667", "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-08-22T21:01:33.365954", "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: 47 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-08-22T21:01:33.366179", "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_01_02_OK)[OTE(ULC1_3_VFD1:SO.STOOutput),OTE(ULC1_4_VFD1:SO.STOOutput),OTE(ULC1_5_VFD1:SO.STOOutput),OTE(ULC1_6_VFD1:SO.STOOutput)];", "timestamp": "2025-08-22T21:01:33.366378", "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: 16 rungs | example: [XIC(SFT_ULC1_3_SS1_SPB) ,XIC(SFT_MCM_S_PB)]OTE(RST_ULC1_3_EPC1_ESTOP);", "timestamp": "2025-08-22T21:01:33.366584", "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: 13 rungs | example: OTE(EStop_01_01_OK);", "timestamp": "2025-08-22T21:01:33.366742", "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: 16 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-08-22T21:01:33.366907", "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-08-22T21:01:33.367106", "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-08-22T21:01:33.367286", "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 SafetyProgram_Generated.L5X", "timestamp": "2025-08-22T21:01:33.369802", "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 SafetyProgram_Generated.L5X", "timestamp": "2025-08-22T21:01:33.370162", "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-08-22T21:01:33.370376", "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-08-22T21:01:33.370571", "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-08-22T21:01:33.370763", "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-08-22T21:01:33.370920", "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-08-22T21:01:33.371137", "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-08-22T21:01:33.434235", "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-08-22T21:01:33.443398", "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": "MCM01", "score": 24} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-08-22T21:01:33.444016", "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": 13} {"level": "INFO", "message": "Tags created: total=202 | standard=33 safety=95 dcs=17 modules=49", "timestamp": "2025-08-22T21:01:33.515198", "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 202 controller tags", "timestamp": "2025-08-22T21:01:33.515651", "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-08-22T21:01:33.515976", "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-08-22T21:01:33.516225", "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-08-22T21:01:33.516415", "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-08-22T21:01:33.516574", "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-08-22T21:01:33.516912", "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-08-22T21:01:33.517264", "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-08-22T21:01:33.518495", "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-08-22T21:01:33.519291", "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-08-22T21:01:33.521130", "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-08-22T21:01:33.521405", "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-08-22T21:01:33.523987", "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-08-22T21:01:33.524221", "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 17 rows", "timestamp": "2025-08-22T21:01:33.524441", "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: MCM01 -> Local:5:I.Data.0", "timestamp": "2025-08-22T21:01:33.524709", "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: ULC1_12_S2_PB -> ULC1_10_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.524978", "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: ULC1_12_S1_PB -> ULC1_12_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.525311", "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: ULC1_3_SS2_SPB -> ULC1_3_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.525551", "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: ULC2_12_S2_PB -> ULC2_10_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.525794", "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: ULC2_12_S1_PB -> ULC2_12_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.526036", "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: ULC2_3_SS2_SPB -> ULC2_3_VFD1:I.IO_0", "timestamp": "2025-08-22T21:01:33.526227", "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: ULC1_3_SS1_SPB -> ULC1_4_FIO1:I.Pt02.Data", "timestamp": "2025-08-22T21:01:33.526387", "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: ULC2_3_SS1_SPB -> ULC2_4_FIO1:I.Pt02.Data", "timestamp": "2025-08-22T21:01:33.526573", "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: ULC3_3_SS1_SPB -> ULC3_4_FIO1:I.Pt08.Data", "timestamp": "2025-08-22T21:01:33.526775", "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: ULC3_3_SS2_SPB -> ULC3_4_FIO1:I.Pt12.Data", "timestamp": "2025-08-22T21:01:33.526942", "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: ULC3_6_SS1_SPB -> ULC3_6_FIO1:I.Pt08.Data", "timestamp": "2025-08-22T21:01:33.527103", "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: ULC3_6_SS2_SPB -> ULC3_6_FIO1:I.Pt12.Data", "timestamp": "2025-08-22T21:01:33.527306", "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: ULC4_3_SS1_SPB -> ULC4_4_FIO1:I.Pt08.Data", "timestamp": "2025-08-22T21:01:33.527528", "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: ULC4_3_SS2_SPB -> ULC4_4_FIO1:I.Pt12.Data", "timestamp": "2025-08-22T21:01:33.527774", "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: ULC4_6_SS1_SPB -> ULC4_6_FIO1:I.Pt10.Data", "timestamp": "2025-08-22T21:01:33.528018", "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: ULC4_6_SS2_SPB -> ULC4_6_FIO1:I.Pt14.Data", "timestamp": "2025-08-22T21:01:33.528322", "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 17 rungs", "timestamp": "2025-08-22T21:01:33.528632", "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(MCM01);", "timestamp": "2025-08-22T21:01:33.528806", "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(ULC1_4_FIO1:I.Pt02.Data)OTE(ULC1_3_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.528951", "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(ULC1_3_VFD1:I.IO_0)OTE(ULC1_3_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.529079", "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(ULC1_12_VFD1:I.IO_0)OTE(ULC1_12_S1_PB);", "timestamp": "2025-08-22T21:01:33.529255", "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(ULC1_10_VFD1:I.IO_0)OTE(ULC1_12_S2_PB);", "timestamp": "2025-08-22T21:01:33.529487", "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(ULC2_4_FIO1:I.Pt02.Data)OTE(ULC2_3_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.529701", "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(ULC2_3_VFD1:I.IO_0)OTE(ULC2_3_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.529909", "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 8: XIC(ULC2_12_VFD1:I.IO_0)OTE(ULC2_12_S1_PB);", "timestamp": "2025-08-22T21:01:33.530061", "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 9: XIC(ULC2_10_VFD1:I.IO_0)OTE(ULC2_12_S2_PB);", "timestamp": "2025-08-22T21:01:33.530217", "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 10: XIC(ULC3_4_FIO1:I.Pt08.Data)OTE(ULC3_3_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.530396", "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 11: XIC(ULC3_4_FIO1:I.Pt12.Data)OTE(ULC3_3_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.530556", "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 12: XIC(ULC3_6_FIO1:I.Pt08.Data)OTE(ULC3_6_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.530762", "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 13: XIC(ULC3_6_FIO1:I.Pt12.Data)OTE(ULC3_6_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.530924", "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 14: XIC(ULC4_4_FIO1:I.Pt08.Data)OTE(ULC4_3_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.531119", "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 15: XIC(ULC4_4_FIO1:I.Pt12.Data)OTE(ULC4_3_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.531290", "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 16: XIC(ULC4_6_FIO1:I.Pt10.Data)OTE(ULC4_6_SS1_SPB);", "timestamp": "2025-08-22T21:01:33.531458", "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 17: XIC(ULC4_6_FIO1:I.Pt14.Data)OTE(ULC4_6_SS2_SPB);", "timestamp": "2025-08-22T21:01:33.531653", "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 17 total rungs", "timestamp": "2025-08-22T21:01:33.531838", "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-08-22T21:01:33.532018", "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: taching_belts", "timestamp": "2025-08-22T21:01:33.532932", "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: taching_belts", "timestamp": "2025-08-22T21:01:33.534768", "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-08-22T21:01:33.535008", "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-08-22T21:01:33.535192", "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-08-22T21:01:33.535382", "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-08-22T21:01:33.535553", "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, 'apf': True, 'estop_check': True, 'safety_tag_map': True, 'taching_belts': True, 'main_routine': True}", "timestamp": "2025-08-22T21:01:33.535825", "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 (8): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_Taching_Belts", "timestamp": "2025-08-22T21:01:33.536168", "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-08-22T21:01:33.536370", "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-08-22T21:01:33.536542", "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: 4 rungs | example: NOP();", "timestamp": "2025-08-22T21:01:33.536720", "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: 29 rungs | example: NOP();", "timestamp": "2025-08-22T21:01:33.536878", "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: 16 rungs | example: [XIO(ULC1_3_VFD1:SI.In00Data) ,XIO(ULC1_3_VFD1:SI.In01Data) ]XIO(ULC1_3_VFD1:SO.STOOutput)XIO(ULC1_4_VFD1:SO.STOOutput)XIO(ULC1_5_VFD1:SO.STOOutput)XIO(ULC1_...", "timestamp": "2025-08-22T21:01:33.537060", "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: 18 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-08-22T21:01:33.537260", "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_Taching_Belts: 84 rungs | example: XIC(ULC1_3_VFD1:I.KeypadButtonF2)OTE(ULC1_3_VFD1:O.Start);", "timestamp": "2025-08-22T21:01:33.537455", "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(R040_APF,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R130_SAFETY_TAG_MAP,0) ,JSR(ZZZ_Taching_Belts,0) ];", "timestamp": "2025-08-22T21:01:33.537635", "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-08-22T21:01:33.537803", "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 MainProgram_Generated.L5X", "timestamp": "2025-08-22T21:01:33.543868", "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 MainProgram_Generated.L5X", "timestamp": "2025-08-22T21:01:33.544154", "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-08-22T21:01:33.544376", "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-08-22T21:01:33.544558", "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-08-22T21:01:33.544719", "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 SafetyTagMapping.txt", "timestamp": "2025-08-22T21:01:33.589510", "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: 17", "timestamp": "2025-08-22T21:01:33.589766", "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-08-22T21:01:33.589992", "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 STATION_S_PB config for ULC1_12_S2_PB Found STATION_S_PB config for ULC1_12_S1_PB Found STATION_S_PB config for ULC2_12_S2_PB Found STATION_S_PB config for ULC2_12_S1_PB Found STATION_EPC config for ULC1_12_EPC1 Found STATION_EPC config for ULC1_3_EPC1 Found STATION_EPC config for ULC2_12_EPC1 Found STATION_EPC config for ULC2_3_EPC1 Found STATION_EPC config for ULC3_3_EPC1 Found STATION_EPC config for ULC4_6_EPC1 Found STATION_EPC config for ULC3_6_EPC1 Found STATION_EPC config for ULC1_12_EPC2 Found STATION_EPC config for ULC1_3_EPC2 Found STATION_EPC config for ULC2_12_EPC2 Found STATION_EPC config for ULC2_3_EPC2 Found STATION_EPC config for ULC3_3_EPC2 Found STATION_EPC config for ULC4_6_EPC2 Found STATION_EPC config for ULC3_6_EPC2 APF ULC1_3_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_4_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_5_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_6_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_7_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_8_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_9A_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_9B_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_10_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_11_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_12_VFD1 -> DPM DPM1_ULC1_8 APF ULC2_3_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_4_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_5_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_6_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_7_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_8_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_9A_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_9B_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_10_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_11_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_12_VFD1 -> DPM DPM1_ULC2_8 APF ULC3_3_VFD1 -> DPM DPM1_ULC3_6 APF ULC3_4_VFD1 -> DPM DPM1_ULC3_6 APF ULC3_6_VFD1 -> DPM DPM1_ULC3_6 APF ULC4_3_VFD1 -> DPM DPM1_ULC3_6 APF ULC4_4_VFD1 -> DPM DPM1_ULC3_6 APF ULC4_6_VFD1 -> DPM DPM1_ULC3_6 - Added 16 E-stop check rungs Created safety tag mapping file: SafetyTagMapping.txt === Step 2: Routines Generator stderr === [21:01:32] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM01_20250822_210127.log [21:01:32] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts === [21:01:32] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X... [21:01:32] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator [21:01:32] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation [21:01:32] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: encoder (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_epc (safety) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_ss_pb (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_s_pb (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: taching_belts (device) [21:01:32] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety) [21:01:32] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines... [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC1_12: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC1_3: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC2_12: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC2_3: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC3_3: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC3_6: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC4_3: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC4_6: {'EPC1', 'EPC2'} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Available DCS controllers: {'ULC1_12': {'EPC1', 'EPC2'}, 'ULC1_3': {'EPC1', 'EPC2'}, 'ULC2_12': {'EPC1', 'EPC2'}, 'ULC2_3': {'EPC1', 'EPC2'}, 'ULC3_3': {'EPC1', 'EPC2'}, 'ULC3_6': {'EPC1', 'EPC2'}, 'ULC4_3': {'EPC1', 'EPC2'}, 'ULC4_6': {'EPC1', 'EPC2'}} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-01 candidates: ['ULC1_1'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_1 in zone 01-01 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-02 candidates: ['ULC1_1', 'ULC1_3', 'ULC1_4', 'ULC1_5', 'ULC1_6'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_1 in zone 01-02 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_4 in zone 01-02 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_5 in zone 01-02 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_6 in zone 01-02 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-03 candidates: ['ULC1_6', 'ULC1_7', 'ULC1_8', 'ULC1_9', 'ULC1_10', 'ULC1_11', 'ULC1_12'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_6 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_7 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_8 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_9 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_10 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_11 in zone 01-03 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-04 candidates: ['ULC2_1'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_1 in zone 01-04 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-05 candidates: ['ULC2_1', 'ULC2_3', 'ULC2_4', 'ULC2_5', 'ULC2_6'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_1 in zone 01-05 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_4 in zone 01-05 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_5 in zone 01-05 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_6 in zone 01-05 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-06 candidates: ['ULC2_6', 'ULC2_7', 'ULC2_8', 'ULC2_9', 'ULC2_10', 'ULC2_11', 'ULC2_12'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_6 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_7 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_8 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_9 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_10 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_11 in zone 01-06 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-07 candidates: ['ULC3_1'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_1 in zone 01-07 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-08 candidates: ['ULC3_1', 'ULC3_3', 'ULC3_4'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_1 in zone 01-08 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_4 in zone 01-08 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-09 candidates: ['ULC3_4', 'ULC3_5', 'ULC3_6'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_4 in zone 01-09 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_5 in zone 01-09 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-10 candidates: ['ULC4_1'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_1 in zone 01-10 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-11 candidates: ['ULC4_1', 'ULC4_3', 'ULC4_4'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_1 in zone 01-11 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_4 in zone 01-11 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-12 candidates: ['ULC4_4', 'ULC4_5', 'ULC4_6'] [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_4 in zone 01-12 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_5 in zone 01-12 [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True} [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 17 tags [21:01:33] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 47 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_01_02_OK)[OTE(ULC1_3_VFD1:SO.STOOutput),OTE(ULC1_4_VFD1:SO.STOOutput),OTE(ULC1_5_VFD1:SO.STOOutput),OTE(ULC1_6_VFD1:SO.STOOutput)]; [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 16 rungs | example: [XIC(SFT_ULC1_3_SS1_SPB) ,XIC(SFT_MCM_S_PB)]OTE(RST_ULC1_3_EPC1_ESTOP); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 13 rungs | example: OTE(EStop_01_01_OK); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 16 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); [21:01:33] [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) ]; [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to SafetyProgram_Generated.L5X [21:01:33] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to SafetyProgram_Generated.L5X [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X... [21:01:33] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags... [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [21:01:33] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=202 | standard=33 safety=95 dcs=17 modules=49 [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Added 202 controller tags [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines... [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: RST data has 17 rows [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: MCM01 -> Local:5:I.Data.0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_12_S2_PB -> ULC1_10_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_12_S1_PB -> ULC1_12_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_3_SS2_SPB -> ULC1_3_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_12_S2_PB -> ULC2_10_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_12_S1_PB -> ULC2_12_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_3_SS2_SPB -> ULC2_3_VFD1:I.IO_0 [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_3_SS1_SPB -> ULC1_4_FIO1:I.Pt02.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_3_SS1_SPB -> ULC2_4_FIO1:I.Pt02.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_3_SS1_SPB -> ULC3_4_FIO1:I.Pt08.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_3_SS2_SPB -> ULC3_4_FIO1:I.Pt12.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_6_SS1_SPB -> ULC3_6_FIO1:I.Pt08.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_6_SS2_SPB -> ULC3_6_FIO1:I.Pt12.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_3_SS1_SPB -> ULC4_4_FIO1:I.Pt08.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_3_SS2_SPB -> ULC4_4_FIO1:I.Pt12.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_6_SS1_SPB -> ULC4_6_FIO1:I.Pt10.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_6_SS2_SPB -> ULC4_6_FIO1:I.Pt14.Data [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generating 17 rungs [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM01); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 2: XIC(ULC1_4_FIO1:I.Pt02.Data)OTE(ULC1_3_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 3: XIC(ULC1_3_VFD1:I.IO_0)OTE(ULC1_3_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 4: XIC(ULC1_12_VFD1:I.IO_0)OTE(ULC1_12_S1_PB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 5: XIC(ULC1_10_VFD1:I.IO_0)OTE(ULC1_12_S2_PB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 6: XIC(ULC2_4_FIO1:I.Pt02.Data)OTE(ULC2_3_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 7: XIC(ULC2_3_VFD1:I.IO_0)OTE(ULC2_3_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 8: XIC(ULC2_12_VFD1:I.IO_0)OTE(ULC2_12_S1_PB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 9: XIC(ULC2_10_VFD1:I.IO_0)OTE(ULC2_12_S2_PB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 10: XIC(ULC3_4_FIO1:I.Pt08.Data)OTE(ULC3_3_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 11: XIC(ULC3_4_FIO1:I.Pt12.Data)OTE(ULC3_3_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 12: XIC(ULC3_6_FIO1:I.Pt08.Data)OTE(ULC3_6_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 13: XIC(ULC3_6_FIO1:I.Pt12.Data)OTE(ULC3_6_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 14: XIC(ULC4_4_FIO1:I.Pt08.Data)OTE(ULC4_3_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 15: XIC(ULC4_4_FIO1:I.Pt12.Data)OTE(ULC4_3_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 16: XIC(ULC4_6_FIO1:I.Pt10.Data)OTE(ULC4_6_SS1_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 17: XIC(ULC4_6_FIO1:I.Pt14.Data)OTE(ULC4_6_SS2_SPB); [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generated 17 total rungs [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: taching_belts [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: taching_belts [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'apf': True, 'estop_check': True, 'safety_tag_map': True, 'taching_belts': True, 'main_routine': True} [21:01:33] [INFO] [logging_config.py:126:_log_with_context] Routines created (8): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_Taching_Belts [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP(); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP(); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 4 rungs | example: NOP(); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 29 rungs | example: NOP(); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 16 rungs | example: [XIO(ULC1_3_VFD1:SI.In00Data) ,XIO(ULC1_3_VFD1:SI.In01Data) ]XIO(ULC1_3_VFD1:SO.STOOutput)XIO(ULC1_4_VFD1:SO.STOOutput)XIO(ULC1_5_VFD1:SO.STOOutput)XIO(ULC1_... [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 18 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB); [21:01:33] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_Taching_Belts: 84 rungs | example: XIC(ULC1_3_VFD1:I.KeypadButtonF2)OTE(ULC1_3_VFD1:O.Start); [21:01:33] [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(R040_APF,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R130_SAFETY_TAG_MAP,0) ,JSR(ZZZ_Taching_Belts,0) ]; [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to MainProgram_Generated.L5X [21:01:33] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to MainProgram_Generated.L5X [21:01:33] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping... [21:01:33] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper [21:01:33] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance [21:01:33] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to SafetyTagMapping.txt [21:01:33] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 17 [21:01:33] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! === {"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-08-22T21:01:33.665040", "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_MCM01 - 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 28 APF modules Found 3 DPM modules Found 1 PMM modules Created 7 IOLM modules with boilerplate selection: PDP1_FIOM1 (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 ULC1_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC1_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC1_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC1_4_FIO1_Module.L5X ULC2_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC2_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC2_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC2_4_FIO1_Module.L5X ULC3_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC3_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_4_FIO1_Module.L5X ULC3_6_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC3_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_6_FIO1_Module.L5X ULC4_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC4_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_4_FIO1_Module.L5X ULC4_6_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC4_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_6_FIO1_Module.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_2_HP.L5X 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/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X 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/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X 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 PDP1_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 Importing AOIs/DataTypes from base: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/IO Tree Configuration Generator/BaseProgram.L5X Programs already exist (2 programs found), skipping empty program creation OK: Generated project: generated_projects/SAT9_MCM01.L5X Single file generation complete - ['generated_projects/SAT9_MCM01.L5X'] === Step 4: L5X2ACD Compiler output === ๐Ÿš€ Setting up compilation for project: SAT9_MCM01 ๐Ÿ“‚ Compilation directory: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler ๐Ÿ“„ Source L5X: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/IO Tree Configuration Generator/generated_projects/SAT9_MCM01.L5X ๐Ÿ”ง Mode: wipe_existing=False, replace_mode=True ๐Ÿ”„ Using SMART REPLACE mode - keeping current project files ๐Ÿงน Cleaning old project files... โšช Keeping current project file: compile_SAT9_MCM01.bat โšช Keeping current project file: SAT9_MCM01.ACD โšช Keeping current project file: SAT9_MCM01.L5X โš ๏ธ Could not remove SAT9_MCM01.Sem: [Errno 13] Permission denied: '/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/SAT9_MCM01.Sem' โš ๏ธ Could not remove SAT9_MCM01.Wrk: [Errno 13] Permission denied: '/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/SAT9_MCM01.Wrk' ๐Ÿงน Cleanup complete: 0 files removed, 3 current files kept, 0 directories removed ๐Ÿ“ Copying L5X file: SAT9_MCM01.L5X โ†’ SAT9_MCM01.L5X โœ“ Copied successfully (1.57 MB) ๐Ÿ”ง Batch file exists: compile_SAT9_MCM01.bat โœ… Compilation setup complete! L5X File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/SAT9_MCM01.L5X Batch File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_SAT9_MCM01.bat ๐ŸชŸ To compile on Windows: 1. Run: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_SAT9_MCM01.bat 2. Or double-click: compile_SAT9_MCM01.bat