{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-08-23T23:58:41.845920", "module": "__main__", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/data/SAT9_MCM02_fixed.xlsx", "project_name": "SAT9_MCM02"} {"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-08-23T23:58:41.846230", "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'] Classifying signals and adding IO paths... Signal classification results: SPARE: 516 I: 255 O: 52 IOLink: 13 Device type distribution: APF: 660 M12DR: 112 Hub: 16 IB16: 16 OB16E: 16 IB16S: 16 IO Path mapping results: Successful mappings: 836/836 (100.0%) Found 6 TAGNAMEs present in DESC but not in NETWORK_PLC. Adding unique DPM names not present in DESC or NETWORK_PLC.Name: ['DPM1_PS1_1', 'DPM1_PS1_4', 'DPM1_PS2_1', 'DPM2_PS1_1', 'DPM2_PS2_1'] ================================================================================ WARNING: The following issues were found but processing will continue: ================================================================================ - TAGNAME 'PDP2_FIOM1' from DESC sheet not found in NETWORK_PLC sheet. - TAGNAME 'PS1_2A_VFD1' from DESC sheet not found in NETWORK_PLC sheet. - 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. - TAGNAME 'UL4_3_FIO1' 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 848 rows Sample of merged data: TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH 0 PDP2_FIOM1 IO00 PDP2_CB1 ... I M12DR PDP2_FIOM1:I.Pt00.Data 1 PDP2_FIOM1 IO01 PDP2_CB2 ... I M12DR PDP2_FIOM1:I.Pt01.Data 2 PDP2_FIOM1 IO02 PDP2_CB3 ... I M12DR PDP2_FIOM1:I.Pt02.Data 3 PDP2_FIOM1 IO03 PDP2_CB4 ... I M12DR PDP2_FIOM1:I.Pt03.Data 4 PDP2_FIOM1 IO04 PDP2_CB5 ... I M12DR PDP2_FIOM1:I.Pt04.Data 5 PDP2_FIOM1 IO05 SPARE ... SPARE M12DR PDP2_FIOM1:O.Pt05.Data 6 PDP2_FIOM1 IO06 PDP2_CB6 ... I M12DR PDP2_FIOM1:I.Pt06.Data 7 PDP2_FIOM1 IO07 SPARE ... SPARE M12DR PDP2_FIOM1:O.Pt07.Data 8 PDP2_FIOM1 IO08 PDP2_CB7 ... I M12DR PDP2_FIOM1:I.Pt08.Data 9 PDP2_FIOM1 IO09 PDP2_CB8 ... I M12DR PDP2_FIOM1:I.Pt09.Data [10 rows x 11 columns] New Excel file created: MCM02_DESC_IP_MERGED.xlsx The file contains all original sheets plus the new 'DESC_IP' sheet with merged data. Reading input file: MCM02_DESC_IP_MERGED.xlsx Removed 13 IOLink rows (including beacons, FIOH channels, and all other IOLink entries) Removed 12 blank name/description rows Saving output file: MCM02_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-23T23:58:45.403546", "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-23T23:58:45.403789", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM02_20250823_235841.log", "timestamp": "2025-08-23T23:58:47.368606", "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-23T23:58:47.370325", "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-23T23:58:47.370528", "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-23T23:58:47.381409", "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-23T23:58:47.381680", "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-23T23:58:47.381853", "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-23T23:58:47.393063", "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-23T23:58:47.398244", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: belt_tracking (device)", "timestamp": "2025-08-23T23:58:47.402202", "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-23T23:58:47.406108", "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-23T23:58:47.410212", "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-23T23:58:47.413684", "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-23T23:58:47.418009", "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-23T23:58:47.425669", "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-23T23:58:47.429136", "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-23T23:58:47.432850", "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-23T23:58:47.436442", "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-23T23:58:47.440625", "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-23T23:58:47.444273", "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-23T23:58:47.447912", "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-23T23:58:47.452285", "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-23T23:58:47.456487", "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-23T23:58:47.460157", "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-23T23:58:47.463615", "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-23T23:58:47.467649", "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-23T23:58:47.471969", "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-23T23:58:47.475427", "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-23T23:58:47.478790", "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-23T23:58:47.482843", "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-23T23:58:47.486785", "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-23T23:58:47.490685", "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-23T23:58:47.493976", "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-23T23:58:47.497554", "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-23T23:58:47.501499", "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-23T23:58:47.505116", "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-23T23:58:47.508913", "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-23T23:58:47.512867", "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-23T23:58:47.513061", "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-23T23:58:48.435967", "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-23T23:58:48.443268", "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-23T23:58:48.446832", "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-23T23:58:48.448830", "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-23T23:58:48.460469", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM02", "score": 16} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-08-23T23:58:48.461386", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 9} {"level": "INFO", "message": "Successfully generated routine: outputs", "timestamp": "2025-08-23T23:58:48.463236", "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-23T23:58:48.463506", "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-23T23:58:48.466652", "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-23T23:58:48.466982", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for PS1_8: {'EPC1', 'EPC2'}", "timestamp": "2025-08-23T23:58:48.468060", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for PS2_7: {'EPC1', 'EPC2'}", "timestamp": "2025-08-23T23:58:48.468422", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL1_1: {'EPC1', 'EPC2'}", "timestamp": "2025-08-23T23:58:48.468780", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL2_2: {'ESTOP1'}", "timestamp": "2025-08-23T23:58:48.469009", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL3_2: {'ESTOP1'}", "timestamp": "2025-08-23T23:58:48.469195", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL4_2: {'ESTOP1'}", "timestamp": "2025-08-23T23:58:48.469424", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL5_2: {'ESTOP1'}", "timestamp": "2025-08-23T23:58:48.469616", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for UL6_1: {'EPC1', 'EPC2'}", "timestamp": "2025-08-23T23:58:48.469984", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Available DCS controllers: {'PS1_8': {'EPC1', 'EPC2'}, 'PS2_7': {'EPC1', 'EPC2'}, 'UL1_1': {'EPC1', 'EPC2'}, 'UL2_2': {'ESTOP1'}, 'UL3_2': {'ESTOP1'}, 'UL4_2': {'ESTOP1'}, 'UL5_2': {'ESTOP1'}, 'UL6_1': {'EPC1', 'EPC2'}}", "timestamp": "2025-08-23T23:58:48.470188", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zone 02-01 candidates: ['PS1_1', 'PS1_2', 'PS1_3', 'PS1_4', 'PS1_5', 'PS1_6', 'PS1_7', 'PS1_8']", "timestamp": "2025-08-23T23:58:48.470787", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_1 in zone 02-01", "timestamp": "2025-08-23T23:58:48.471091", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_2 in zone 02-01", "timestamp": "2025-08-23T23:58:48.471304", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_3 in zone 02-01", "timestamp": "2025-08-23T23:58:48.471514", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_4 in zone 02-01", "timestamp": "2025-08-23T23:58:48.471740", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_5 in zone 02-01", "timestamp": "2025-08-23T23:58:48.471917", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_6 in zone 02-01", "timestamp": "2025-08-23T23:58:48.472116", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS1_7 in zone 02-01", "timestamp": "2025-08-23T23:58:48.472311", "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-23T23:58:48.472512", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-01", "interlock": "MCM02", "dcs_list": ["PS1_8_EPC1_DCS_CTRL.O1", "PS1_8_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-02 candidates: ['UL1_1', 'UL1_2', 'UL1_3', 'UL1_4', 'UL1_5', 'UL1_6', 'UL1_7']", "timestamp": "2025-08-23T23:58:48.473005", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_2 in zone 02-02", "timestamp": "2025-08-23T23:58:48.473200", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_3 in zone 02-02", "timestamp": "2025-08-23T23:58:48.473340", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_4 in zone 02-02", "timestamp": "2025-08-23T23:58:48.473494", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_5 in zone 02-02", "timestamp": "2025-08-23T23:58:48.473667", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_6 in zone 02-02", "timestamp": "2025-08-23T23:58:48.473852", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL1_7 in zone 02-02", "timestamp": "2025-08-23T23:58:48.474064", "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-23T23:58:48.474273", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-02", "interlock": "MCM02", "dcs_list": ["UL1_1_EPC1_DCS_CTRL.O1", "UL1_1_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-03 candidates: ['UL2_1', 'UL2_2', 'UL2_3', 'UL2_4', 'UL2_5', 'UL2_6', 'UL2_7', 'UL2_8', 'UL2_9']", "timestamp": "2025-08-23T23:58:48.474683", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_1 in zone 02-03", "timestamp": "2025-08-23T23:58:48.474932", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_3 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475126", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_4 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475300", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_5 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475464", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_6 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475634", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_7 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475822", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_8 in zone 02-03", "timestamp": "2025-08-23T23:58:48.475992", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL2_9 in zone 02-03", "timestamp": "2025-08-23T23:58:48.476146", "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-23T23:58:48.476344", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-03", "interlock": "MCM02", "dcs_list": ["UL2_2_ESTOP1_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-04 candidates: ['UL3_1', 'UL3_2', 'UL3_3', 'UL3_4', 'UL3_5', 'UL3_6', 'UL3_7', 'UL3_8', 'UL3_9']", "timestamp": "2025-08-23T23:58:48.476750", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_1 in zone 02-04", "timestamp": "2025-08-23T23:58:48.476948", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_3 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477134", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_4 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477297", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_5 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477468", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_6 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477620", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_7 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477770", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_8 in zone 02-04", "timestamp": "2025-08-23T23:58:48.477920", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL3_9 in zone 02-04", "timestamp": "2025-08-23T23:58:48.478107", "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-23T23:58:48.478271", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-04", "interlock": "MCM02", "dcs_list": ["UL3_2_ESTOP1_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-05 candidates: ['PS2_1', 'PS2_2', 'PS2_3', 'PS2_4', 'PS2_5', 'PS2_6', 'PS2_7']", "timestamp": "2025-08-23T23:58:48.478686", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_1 in zone 02-05", "timestamp": "2025-08-23T23:58:48.478939", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_2 in zone 02-05", "timestamp": "2025-08-23T23:58:48.479129", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_3 in zone 02-05", "timestamp": "2025-08-23T23:58:48.479352", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_4 in zone 02-05", "timestamp": "2025-08-23T23:58:48.479526", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_5 in zone 02-05", "timestamp": "2025-08-23T23:58:48.479689", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base PS2_6 in zone 02-05", "timestamp": "2025-08-23T23:58:48.479854", "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-23T23:58:48.480032", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-05", "interlock": "MCM02", "dcs_list": ["PS2_7_EPC1_DCS_CTRL.O1", "PS2_7_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-06 candidates: ['UL4_1', 'UL4_2', 'UL4_3', 'UL4_4', 'UL4_5', 'UL4_6', 'UL4_7', 'UL4_8', 'UL4_9']", "timestamp": "2025-08-23T23:58:48.480471", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_1 in zone 02-06", "timestamp": "2025-08-23T23:58:48.480672", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_3 in zone 02-06", "timestamp": "2025-08-23T23:58:48.480859", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_4 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481038", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_5 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481208", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_6 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481365", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_7 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481548", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_8 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481730", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL4_9 in zone 02-06", "timestamp": "2025-08-23T23:58:48.481899", "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-23T23:58:48.482050", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-06", "interlock": "MCM02", "dcs_list": ["UL4_2_ESTOP1_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-07 candidates: ['UL5_1', 'UL5_2', 'UL5_3', 'UL5_4', 'UL5_5', 'UL5_6', 'UL5_7', 'UL5_8', 'UL5_9']", "timestamp": "2025-08-23T23:58:48.482546", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_1 in zone 02-07", "timestamp": "2025-08-23T23:58:48.482749", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_3 in zone 02-07", "timestamp": "2025-08-23T23:58:48.482935", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_4 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483117", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_5 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483254", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_6 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483389", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_7 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483559", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_8 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483698", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL5_9 in zone 02-07", "timestamp": "2025-08-23T23:58:48.483857", "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-23T23:58:48.484015", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-07", "interlock": "MCM02", "dcs_list": ["UL5_2_ESTOP1_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 02-08 candidates: ['UL6_1', 'UL6_2', 'UL6_3', 'UL6_4', 'UL6_5', 'UL6_6', 'UL6_7', 'UL6_8']", "timestamp": "2025-08-23T23:58:48.484460", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_2 in zone 02-08", "timestamp": "2025-08-23T23:58:48.484670", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_3 in zone 02-08", "timestamp": "2025-08-23T23:58:48.484846", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_4 in zone 02-08", "timestamp": "2025-08-23T23:58:48.484998", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_5 in zone 02-08", "timestamp": "2025-08-23T23:58:48.485188", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_6 in zone 02-08", "timestamp": "2025-08-23T23:58:48.485403", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_7 in zone 02-08", "timestamp": "2025-08-23T23:58:48.485593", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base UL6_8 in zone 02-08", "timestamp": "2025-08-23T23:58:48.485764", "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-23T23:58:48.485964", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "02-08", "interlock": "MCM02", "dcs_list": ["UL6_1_EPC1_DCS_CTRL.O1", "UL6_1_EPC2_DCS_CTRL.O1"]} {"level": "INFO", "message": "Successfully generated routine: zones", "timestamp": "2025-08-23T23:58:48.486200", "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-23T23:58:48.486465", "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-23T23:58:48.489346", "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-23T23:58:48.489691", "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 5 tags", "timestamp": "2025-08-23T23:58:48.494896", "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-23T23:58:48.495147", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R010_INPUTS: 29 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-08-23T23:58:48.495352", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_02_01_OK)[OTE(PS1_1_VFD1:SO.STOOutput),OTE(PS1_2_VFD1:SO.STOOutput),OTE(PS1_3_VFD1:SO.STOOutput),OTE(PS1_4_VFD1:SO.STOOutput),OTE(...", "timestamp": "2025-08-23T23:58:48.495533", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R012_RESETS: 8 rungs | example: [XIC(SFT_PS1_8_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS1_8_EPC1_ESTOP);", "timestamp": "2025-08-23T23:58:48.495720", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R030_ZONES: 9 rungs | example: XIC(PS1_8_EPC1_DCS_CTRL.O1)XIC(PS1_8_EPC2_DCS_CTRL.O1)OTE(EStop_02_01_OK);", "timestamp": "2025-08-23T23:58:48.495922", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R020_ESTOPS: 13 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB);", "timestamp": "2025-08-23T23:58:48.496104", "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-23T23:58:48.496309", "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-23T23:58:48.496524", "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-23T23:58:48.498708", "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-23T23:58:48.498965", "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-23T23:58:48.499254", "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-23T23:58:48.499476", "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-23T23:58:48.499716", "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-23T23:58:48.499903", "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-23T23:58:48.500118", "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-23T23:58:48.601110", "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-23T23:58:48.612532", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM02", "score": 16} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-08-23T23:58:48.613334", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 9} {"level": "INFO", "message": "Tags created: total=224 | standard=17 safety=51 dcs=13 modules=135", "timestamp": "2025-08-23T23:58:48.733600", "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 224 controller tags", "timestamp": "2025-08-23T23:58:48.733986", "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-23T23:58:48.734210", "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-23T23:58:48.734475", "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-23T23:58:48.734667", "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-23T23:58:48.734861", "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-23T23:58:48.735067", "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-23T23:58:48.735268", "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-23T23:58:48.736372", "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-23T23:58:48.737093", "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-23T23:58:48.740138", "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-23T23:58:48.740402", "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-23T23:58:48.743757", "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-23T23:58:48.743985", "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 5 rows", "timestamp": "2025-08-23T23:58:48.744179", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: MCM02 -> Local:5:I.Data.0", "timestamp": "2025-08-23T23:58:48.744421", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: PS1_8_S2_PB -> PS1_6_VFD1:I.IO_0", "timestamp": "2025-08-23T23:58:48.744652", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: PS1_8_S1_PB -> PS1_8_VFD1:I.IO_0", "timestamp": "2025-08-23T23:58:48.744897", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: PS2_7_S2_PB -> PS2_5_VFD1:I.IO_0", "timestamp": "2025-08-23T23:58:48.745170", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: PS2_7_S1_PB -> PS2_7_VFD1:I.IO_0", "timestamp": "2025-08-23T23:58:48.745455", "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 5 rungs", "timestamp": "2025-08-23T23:58:48.745655", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM02);", "timestamp": "2025-08-23T23:58:48.745843", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 2: XIC(PS1_8_VFD1:I.IO_0)OTE(PS1_8_S1_PB);", "timestamp": "2025-08-23T23:58:48.746039", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 3: XIC(PS1_6_VFD1:I.IO_0)OTE(PS1_8_S2_PB);", "timestamp": "2025-08-23T23:58:48.746211", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 4: XIC(PS2_7_VFD1:I.IO_0)OTE(PS2_7_S1_PB);", "timestamp": "2025-08-23T23:58:48.746392", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 5: XIC(PS2_5_VFD1:I.IO_0)OTE(PS2_7_S2_PB);", "timestamp": "2025-08-23T23:58:48.746562", "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 5 total rungs", "timestamp": "2025-08-23T23:58:48.746755", "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-23T23:58:48.746924", "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-23T23:58:48.747394", "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-23T23:58:48.750361", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: belt_tracking", "timestamp": "2025-08-23T23:58:48.750984", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: belt_tracking", "timestamp": "2025-08-23T23:58:48.752597", "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-23T23:58:48.752828", "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-23T23:58:48.753013", "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-23T23:58:48.753234", "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-23T23:58:48.753407", "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, 'belt_tracking': True, 'main_routine': True}", "timestamp": "2025-08-23T23:58:48.753601", "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 (9): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking, ZZZ_Taching_Belts", "timestamp": "2025-08-23T23:58:48.753801", "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-23T23:58:48.754186", "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-23T23:58:48.754409", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R020_DPM: 6 rungs | example: NOP();", "timestamp": "2025-08-23T23:58:48.754604", "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: 60 rungs | example: NOP();", "timestamp": "2025-08-23T23:58:48.754810", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R120_ESTOP_CHECK: 12 rungs | example: [XIO(PS1_8_VFD1:SI.In00Data) ,XIO(PS1_8_VFD1:SI.In01Data) ]XIO(PS1_1_VFD1:SO.STOOutput)XIO(PS1_2_VFD1:SO.STOOutput)XIO(PS1_2A_VFD1:SO.STOOutput)XIO(PS1_3_VFD...", "timestamp": "2025-08-23T23:58:48.755005", "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: 6 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-08-23T23:58:48.755198", "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: 177 rungs | example: XIC(PS1_1_VFD1:I.KeypadButtonF2)OTE(PS1_1_VFD1:O.Start);", "timestamp": "2025-08-23T23:58:48.755386", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- ZZZ_BeltTracking: 60 rungs | example: NOP();", "timestamp": "2025-08-23T23:58:48.755562", "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) ,JSR(ZZZ_...", "timestamp": "2025-08-23T23:58:48.755791", "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-23T23:58:48.755973", "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-23T23:58:48.762813", "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-23T23:58:48.763031", "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-23T23:58:48.763229", "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-23T23:58:48.763395", "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-23T23:58:48.763601", "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-23T23:58:48.840390", "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: 5", "timestamp": "2025-08-23T23:58:48.840631", "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-23T23:58:48.840814", "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 PS1_8_S2_PB Found STATION_S_PB config for PS1_8_S1_PB Found STATION_S_PB config for PS2_7_S2_PB Found STATION_S_PB config for PS2_7_S1_PB Found STATION_EPC config for PS1_8_EPC1 Found STATION_EPC config for PS2_7_EPC1 Found STATION_EPC config for UL1_1_EPC1 Found STATION_EPC config for UL6_1_EPC1 Found STATION_EPC config for PS1_8_EPC2 Found STATION_EPC config for PS2_7_EPC2 Found STATION_EPC config for UL1_1_EPC2 Found STATION_EPC config for UL6_1_EPC2 APF PS1_1_VFD1 -> DPM DPM2_PS1_1 APF PS1_2_VFD1 -> DPM DPM2_PS1_1 APF PS1_3_VFD1 -> DPM DPM1_PS1_4 APF PS1_4_VFD1 -> DPM DPM1_PS1_4 APF PS1_5A_VFD1 -> DPM DPM1_PS1_4 APF PS1_5B_VFD1 -> DPM DPM1_PS1_4 APF PS1_6_VFD1 -> DPM DPM1_PS1_4 APF PS1_7_VFD1 -> DPM DPM1_PS1_4 APF PS1_8_VFD1 -> DPM DPM1_PS1_4 APF PS2_1_VFD1 -> DPM DPM2_PS2_1 APF PS2_2_VFD1 -> DPM DPM2_PS2_1 APF PS2_3_VFD1 -> DPM DPM2_PS2_1 APF PS2_4A_VFD1 -> DPM DPM2_PS2_1 APF PS2_4B_VFD1 -> DPM DPM2_PS2_1 APF PS2_5_VFD1 -> DPM DPM2_PS2_1 APF PS2_6_VFD1 -> DPM DPM2_PS2_1 APF PS2_7_VFD1 -> DPM DPM2_PS2_1 APF UL1_1_VFD1 -> DPM DPM1_PS1_1 APF UL1_2_VFD1 -> DPM DPM1_PS1_1 APF UL1_3_VFD1 -> DPM DPM1_PS1_1 APF UL1_4_VFD1 -> DPM DPM1_PS1_1 APF UL1_5_VFD1 -> DPM DPM1_PS1_1 APF UL1_6_VFD1 -> DPM DPM1_PS1_1 APF UL1_7_VFD1 -> DPM DPM1_PS1_1 APF UL2_3_VFD1 -> DPM DPM1_PS1_1 APF UL2_4_VFD1 -> DPM DPM1_PS1_1 APF UL2_5_VFD1 -> DPM DPM1_PS1_1 APF UL2_6_VFD1 -> DPM DPM1_PS1_1 APF UL2_7_VFD1 -> DPM DPM1_PS1_1 APF UL2_8_VFD1 -> DPM DPM1_PS1_1 APF UL2_9_VFD1 -> DPM DPM1_PS1_1 APF UL3_3_VFD1 -> DPM DPM2_PS1_1 APF UL3_4_VFD1 -> DPM DPM2_PS1_1 APF UL3_5_VFD1 -> DPM DPM2_PS1_1 APF UL3_6_VFD1 -> DPM DPM2_PS1_1 APF UL3_7_VFD1 -> DPM DPM2_PS1_1 APF UL3_8_VFD1 -> DPM DPM2_PS1_1 APF UL3_9_VFD1 -> DPM DPM2_PS1_1 APF UL4_3_VFD1 -> DPM DPM1_PS2_1 APF UL4_4_VFD1 -> DPM DPM1_PS2_1 APF UL4_5_VFD1 -> DPM DPM1_PS2_1 APF UL4_6_VFD1 -> DPM DPM1_PS2_1 APF UL4_7_VFD1 -> DPM DPM1_PS2_1 APF UL4_8_VFD1 -> DPM DPM1_PS2_1 APF UL5_3_VFD1 -> DPM DPM1_PS2_1 APF UL5_4_VFD1 -> DPM DPM1_PS2_1 APF UL5_5_VFD1 -> DPM DPM1_PS2_1 APF UL5_6_VFD1 -> DPM DPM1_PS2_1 APF UL5_7_VFD1 -> DPM DPM1_PS2_1 APF UL5_8_VFD1 -> DPM DPM1_PS2_1 APF UL5_9_VFD1 -> DPM DPM1_PS2_1 APF UL6_1_VFD1 -> DPM DPM2_PS2_1 APF UL6_2_VFD1 -> DPM DPM2_PS2_1 APF UL6_3_VFD1 -> DPM DPM2_PS2_1 APF UL6_4_VFD1 -> DPM DPM2_PS2_1 APF UL6_5_VFD1 -> DPM DPM2_PS2_1 APF UL6_6_VFD1 -> DPM DPM2_PS2_1 APF UL6_7_VFD1 -> DPM DPM2_PS2_1 APF UL6_8_VFD1 -> DPM DPM2_PS2_1 - Added 12 E-stop check rungs Belt tracking for PS1_1_VFD1 -> zzz_PS1_1Tracking Belt tracking for PS1_2_VFD1 -> zzz_PS1_2Tracking Belt tracking for PS1_3_VFD1 -> zzz_PS1_3Tracking Belt tracking for PS1_4_VFD1 -> zzz_PS1_4Tracking Belt tracking for PS1_5A_VFD1 -> zzz_PS1_5ATracking Belt tracking for PS1_5B_VFD1 -> zzz_PS1_5BTracking Belt tracking for PS1_6_VFD1 -> zzz_PS1_6Tracking Belt tracking for PS1_7_VFD1 -> zzz_PS1_7Tracking Belt tracking for PS1_8_VFD1 -> zzz_PS1_8Tracking Belt tracking for PS2_1_VFD1 -> zzz_PS2_1Tracking Belt tracking for PS2_2_VFD1 -> zzz_PS2_2Tracking Belt tracking for PS2_3_VFD1 -> zzz_PS2_3Tracking Belt tracking for PS2_4A_VFD1 -> zzz_PS2_4ATracking Belt tracking for PS2_4B_VFD1 -> zzz_PS2_4BTracking Belt tracking for PS2_5_VFD1 -> zzz_PS2_5Tracking Belt tracking for PS2_6_VFD1 -> zzz_PS2_6Tracking Belt tracking for PS2_7_VFD1 -> zzz_PS2_7Tracking Belt tracking for UL1_1_VFD1 -> zzz_UL1_1Tracking Belt tracking for UL1_2_VFD1 -> zzz_UL1_2Tracking Belt tracking for UL1_3_VFD1 -> zzz_UL1_3Tracking Belt tracking for UL1_4_VFD1 -> zzz_UL1_4Tracking Belt tracking for UL1_5_VFD1 -> zzz_UL1_5Tracking Belt tracking for UL1_6_VFD1 -> zzz_UL1_6Tracking Belt tracking for UL1_7_VFD1 -> zzz_UL1_7Tracking Belt tracking for UL2_3_VFD1 -> zzz_UL2_3Tracking Belt tracking for UL2_4_VFD1 -> zzz_UL2_4Tracking Belt tracking for UL2_5_VFD1 -> zzz_UL2_5Tracking Belt tracking for UL2_6_VFD1 -> zzz_UL2_6Tracking Belt tracking for UL2_7_VFD1 -> zzz_UL2_7Tracking Belt tracking for UL2_8_VFD1 -> zzz_UL2_8Tracking Belt tracking for UL2_9_VFD1 -> zzz_UL2_9Tracking Belt tracking for UL3_3_VFD1 -> zzz_UL3_3Tracking Belt tracking for UL3_4_VFD1 -> zzz_UL3_4Tracking Belt tracking for UL3_5_VFD1 -> zzz_UL3_5Tracking Belt tracking for UL3_6_VFD1 -> zzz_UL3_6Tracking Belt tracking for UL3_7_VFD1 -> zzz_UL3_7Tracking Belt tracking for UL3_8_VFD1 -> zzz_UL3_8Tracking Belt tracking for UL3_9_VFD1 -> zzz_UL3_9Tracking Belt tracking for UL4_3_VFD1 -> zzz_UL4_3Tracking Belt tracking for UL4_4_VFD1 -> zzz_UL4_4Tracking Belt tracking for UL4_5_VFD1 -> zzz_UL4_5Tracking Belt tracking for UL4_6_VFD1 -> zzz_UL4_6Tracking Belt tracking for UL4_7_VFD1 -> zzz_UL4_7Tracking Belt tracking for UL4_8_VFD1 -> zzz_UL4_8Tracking Belt tracking for UL5_3_VFD1 -> zzz_UL5_3Tracking Belt tracking for UL5_4_VFD1 -> zzz_UL5_4Tracking Belt tracking for UL5_5_VFD1 -> zzz_UL5_5Tracking Belt tracking for UL5_6_VFD1 -> zzz_UL5_6Tracking Belt tracking for UL5_7_VFD1 -> zzz_UL5_7Tracking Belt tracking for UL5_8_VFD1 -> zzz_UL5_8Tracking Belt tracking for UL5_9_VFD1 -> zzz_UL5_9Tracking Belt tracking for UL6_1_VFD1 -> zzz_UL6_1Tracking Belt tracking for UL6_2_VFD1 -> zzz_UL6_2Tracking Belt tracking for UL6_3_VFD1 -> zzz_UL6_3Tracking Belt tracking for UL6_4_VFD1 -> zzz_UL6_4Tracking Belt tracking for UL6_5_VFD1 -> zzz_UL6_5Tracking Belt tracking for UL6_6_VFD1 -> zzz_UL6_6Tracking Belt tracking for UL6_7_VFD1 -> zzz_UL6_7Tracking Belt tracking for UL6_8_VFD1 -> zzz_UL6_8Tracking - Added 59 belt tracking AOI calls Created safety tag mapping file: SafetyTagMapping.txt === Step 2: Routines Generator stderr === [23:58:47] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM02_20250823_235841.log [23:58:47] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts === [23:58:47] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X... [23:58:47] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator [23:58:47] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation [23:58:47] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: belt_tracking (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: encoder (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_epc (safety) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_ss_pb (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_s_pb (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: taching_belts (device) [23:58:47] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety) [23:58:47] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines... [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for PS1_8: {'EPC1', 'EPC2'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for PS2_7: {'EPC1', 'EPC2'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL1_1: {'EPC1', 'EPC2'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL2_2: {'ESTOP1'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL3_2: {'ESTOP1'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL4_2: {'ESTOP1'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL5_2: {'ESTOP1'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for UL6_1: {'EPC1', 'EPC2'} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Available DCS controllers: {'PS1_8': {'EPC1', 'EPC2'}, 'PS2_7': {'EPC1', 'EPC2'}, 'UL1_1': {'EPC1', 'EPC2'}, 'UL2_2': {'ESTOP1'}, 'UL3_2': {'ESTOP1'}, 'UL4_2': {'ESTOP1'}, 'UL5_2': {'ESTOP1'}, 'UL6_1': {'EPC1', 'EPC2'}} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-01 candidates: ['PS1_1', 'PS1_2', 'PS1_3', 'PS1_4', 'PS1_5', 'PS1_6', 'PS1_7', 'PS1_8'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_1 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_2 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_3 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_4 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_5 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_6 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS1_7 in zone 02-01 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-02 candidates: ['UL1_1', 'UL1_2', 'UL1_3', 'UL1_4', 'UL1_5', 'UL1_6', 'UL1_7'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_2 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_3 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_4 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_5 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_6 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL1_7 in zone 02-02 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-03 candidates: ['UL2_1', 'UL2_2', 'UL2_3', 'UL2_4', 'UL2_5', 'UL2_6', 'UL2_7', 'UL2_8', 'UL2_9'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_1 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_3 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_4 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_5 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_6 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_7 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_8 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL2_9 in zone 02-03 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-04 candidates: ['UL3_1', 'UL3_2', 'UL3_3', 'UL3_4', 'UL3_5', 'UL3_6', 'UL3_7', 'UL3_8', 'UL3_9'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_1 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_3 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_4 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_5 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_6 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_7 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_8 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL3_9 in zone 02-04 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-05 candidates: ['PS2_1', 'PS2_2', 'PS2_3', 'PS2_4', 'PS2_5', 'PS2_6', 'PS2_7'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_1 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_2 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_3 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_4 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_5 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base PS2_6 in zone 02-05 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-06 candidates: ['UL4_1', 'UL4_2', 'UL4_3', 'UL4_4', 'UL4_5', 'UL4_6', 'UL4_7', 'UL4_8', 'UL4_9'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_1 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_3 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_4 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_5 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_6 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_7 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_8 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL4_9 in zone 02-06 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-07 candidates: ['UL5_1', 'UL5_2', 'UL5_3', 'UL5_4', 'UL5_5', 'UL5_6', 'UL5_7', 'UL5_8', 'UL5_9'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_1 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_3 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_4 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_5 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_6 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_7 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_8 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL5_9 in zone 02-07 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Zone 02-08 candidates: ['UL6_1', 'UL6_2', 'UL6_3', 'UL6_4', 'UL6_5', 'UL6_6', 'UL6_7', 'UL6_8'] [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_2 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_3 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_4 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_5 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_6 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_7 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base UL6_8 in zone 02-08 [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True} [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 5 tags [23:58:48] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 29 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_02_01_OK)[OTE(PS1_1_VFD1:SO.STOOutput),OTE(PS1_2_VFD1:SO.STOOutput),OTE(PS1_3_VFD1:SO.STOOutput),OTE(PS1_4_VFD1:SO.STOOutput),OTE(... [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 8 rungs | example: [XIC(SFT_PS1_8_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS1_8_EPC1_ESTOP); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 9 rungs | example: XIC(PS1_8_EPC1_DCS_CTRL.O1)XIC(PS1_8_EPC2_DCS_CTRL.O1)OTE(EStop_02_01_OK); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 13 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB); [23:58:48] [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) ]; [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to SafetyProgram_Generated.L5X [23:58:48] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to SafetyProgram_Generated.L5X [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X... [23:58:48] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags... [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [23:58:48] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=224 | standard=17 safety=51 dcs=13 modules=135 [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Added 224 controller tags [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines... [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: RST data has 5 rows [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: MCM02 -> Local:5:I.Data.0 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS1_8_S2_PB -> PS1_6_VFD1:I.IO_0 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS1_8_S1_PB -> PS1_8_VFD1:I.IO_0 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS2_7_S2_PB -> PS2_5_VFD1:I.IO_0 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: PS2_7_S1_PB -> PS2_7_VFD1:I.IO_0 [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generating 5 rungs [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM02); [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 2: XIC(PS1_8_VFD1:I.IO_0)OTE(PS1_8_S1_PB); [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 3: XIC(PS1_6_VFD1:I.IO_0)OTE(PS1_8_S2_PB); [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 4: XIC(PS2_7_VFD1:I.IO_0)OTE(PS2_7_S1_PB); [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 5: XIC(PS2_5_VFD1:I.IO_0)OTE(PS2_7_S2_PB); [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generated 5 total rungs [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: taching_belts [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: taching_belts [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: belt_tracking [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: belt_tracking [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine [23:58:48] [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, 'belt_tracking': True, 'main_routine': True} [23:58:48] [INFO] [logging_config.py:126:_log_with_context] Routines created (9): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking, ZZZ_Taching_Belts [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP(); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP(); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 6 rungs | example: NOP(); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 60 rungs | example: NOP(); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 12 rungs | example: [XIO(PS1_8_VFD1:SI.In00Data) ,XIO(PS1_8_VFD1:SI.In01Data) ]XIO(PS1_1_VFD1:SO.STOOutput)XIO(PS1_2_VFD1:SO.STOOutput)XIO(PS1_2A_VFD1:SO.STOOutput)XIO(PS1_3_VFD... [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 6 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_Taching_Belts: 177 rungs | example: XIC(PS1_1_VFD1:I.KeypadButtonF2)OTE(PS1_1_VFD1:O.Start); [23:58:48] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_BeltTracking: 60 rungs | example: NOP(); [23:58:48] [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) ,JSR(ZZZ_... [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to MainProgram_Generated.L5X [23:58:48] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to MainProgram_Generated.L5X [23:58:48] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping... [23:58:48] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper [23:58:48] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance [23:58:48] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to SafetyTagMapping.txt [23:58:48] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 5 [23:58:48] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! === {"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-08-23T23:58:48.903661", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} === Step 3: IO Tree Generator stdout === Enhanced MCM Generator - Project: SAT9_MCM02 - Excel: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/DESC_IP_MERGED.xlsx - Boilerplate: SAT9_boilerplate - Mode: Single file -------------------------------------------------- INFO: Found 43 rows with empty PARTNUMBER (will attempt inference): Row 2: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB1 CIRCUIT BREAKER', TERM='IO00' Row 3: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB2 CIRCUIT BREAKER', TERM='IO01' Row 4: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB3 CIRCUIT BREAKER', TERM='IO02' Row 5: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB4 CIRCUIT BREAKER', TERM='IO03' Row 6: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB5 CIRCUIT BREAKER', TERM='IO04' Row 7: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO05' Row 8: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB6 CIRCUIT BREAKER', TERM='IO06' Row 9: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO07' Row 10: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB7 CIRCUIT BREAKER', TERM='IO08' Row 11: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB8 CIRCUIT BREAKER', TERM='IO09' Row 12: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB9 CIRCUIT BREAKER', TERM='IO10' Row 13: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_CB10 CIRCUIT BREAKER', TERM='IO11' Row 14: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_PWM1 PHASE MONITOR', TERM='IO12' Row 15: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO13' Row 16: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='PDP2_FIOH1 FIO HUB', TERM='IO14' Row 17: TAGNAME='PDP2_FIOM1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO15' Row 18: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='PS1_2A_DISC DISCONNECT AUX', TERM='I0' Row 19: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='PS1_2A_ENW WHEEL ENCODER', TERM='I1' Row 20: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='PS2_1A_TPE1 TRACKING PHOTOEYE', TERM='I2' Row 21: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='I3' Row 22: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO0' Row 23: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO1' Row 24: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='SI0' Row 25: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='SI1' Row 26: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='SI2' Row 27: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='SI3' Row 28: TAGNAME='PS1_2A_VFD1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='SO0' Row 29: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='UL4_3_LPE1 LASER PHOTOEYE', TERM='IO00' Row 30: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO01' Row 31: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='UL4_3_LPE2 LASER PHOTOEYE', TERM='IO02' Row 32: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO03' Row 33: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='UL4_3_TPE1 TRACKING PHOTOEYE', TERM='IO04' Row 34: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO05' Row 35: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='UL4_3_TPE2 TRACKING PHOTOEYE', TERM='IO06' Row 36: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO07' Row 37: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO08' Row 38: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO09' Row 39: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO10' Row 40: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO11' Row 41: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO12' Row 42: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO13' Row 43: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO14' Row 44: TAGNAME='UL4_3_FIO1', PARTNUMBER='[EMPTY]', DESC='SPARE', TERM='IO15' Created 1 FIOH modules based on TERM analysis Found 7 IOLM modules Found 10 LPE modules Found 59 APF modules Found 5 DPM modules Found 1 PMM modules WARNING: 4 unknown modules found 1. PDP2_FIOM1 - () 2. PS1_2A_VFD1 - () 3. UL2_2_EX1 - FMH (11.200.1.37) 4. UL4_3_FIO1 - () Created 7 IOLM modules with boilerplate selection: PDP2_FIO1 (FIO PDP_FIO): Using variant boilerplate PDP_FIO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X UL1_2_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X UL2_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X UL3_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X UL4-3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X UL5_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X UL6_2_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/D2CMaster_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/EXTENDO_Module.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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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/PMM_Module.L5X PDP2_FIOH1 (FIOH PDP_FIOH): Using variant boilerplate PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT5_IB16_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT7_IB16S_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT6_OB16E_Module.L5X 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_MCM02.L5X Single file generation complete - ['generated_projects/SAT9_MCM02.L5X'] === Step 4: L5X2ACD Compiler output === ๐Ÿš€ Setting up compilation for project: SAT9_MCM02 ๐Ÿ“‚ 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_MCM02.L5X ๐Ÿ”ง Mode: wipe_existing=False, replace_mode=True ๐Ÿ”„ Using SMART REPLACE mode - keeping current project files ๐Ÿงน Cleaning old project files... โœ“ Removed old project file: compile_MTN6_MCM01.bat โœ“ Removed old project file: MTN6_MCM01.L5X ๐Ÿงน Cleanup complete: 2 files removed, 0 current files kept, 0 directories removed ๐Ÿ“ Copying L5X file: SAT9_MCM02.L5X โ†’ SAT9_MCM02.L5X โœ“ Copied successfully (2.81 MB) ๐Ÿ”ง Generating batch file: compile_SAT9_MCM02.bat โœ“ Generated successfully โœ… Compilation setup complete! L5X File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/SAT9_MCM02.L5X Batch File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_SAT9_MCM02.bat ๐ŸชŸ To compile on Windows: 1. Run: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_SAT9_MCM02.bat 2. Or double-click: compile_SAT9_MCM02.bat