{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-09-04T20:32:46.979286", "module": "__main__", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/data/SAT9_MCM01.xlsx", "project_name": "SAT9_MCM01"} {"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-09-04T20:32:46.979580", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} === Step 1: PLC Data Generator stdout === Loading IO path mappings... Loaded IO path mappings: APF: 11 rows M12DR: 16 rows Hub: 16 rows SorterHub: 16 rows SIO: 16 rows IB16: 16 rows OB16E: 16 rows IB16S: 16 rows Available sheets: ['DESC_PLC', 'NETWORK_PLC'] Found DESC sheet: DESC_PLC Found NETWORK sheet: NETWORK_PLC DESC columns: ['TAGNAME', 'TERM', 'DESCA', 'DESCB'] NETWORK columns: ['DPM', 'DPM_IP', 'Name', 'PartNumber', 'IP'] Classifying signals and adding IO paths... Signal classification results: SPARE: 240 I: 183 O: 60 IOLink: 1 Device type distribution: APF: 308 M12DR: 112 Hub: 16 IB16: 16 OB16E: 16 IB16S: 16 IO Path mapping results: Successful mappings: 484/484 (100.0%) Found 3 TAGNAMEs present in DESC but not in NETWORK_PLC. Adding unique DPM names not present in DESC or NETWORK_PLC.Name: ['DPM1_ULC1_8', 'DPM1_ULC2_8', 'DPM1_ULC3-6'] ================================================================================ WARNING: The following issues were found but processing will continue: ================================================================================ - TAGNAME 'SLOT5_IB16' from DESC sheet not found in NETWORK_PLC sheet. - TAGNAME 'SLOT6_OB16E' from DESC sheet not found in NETWORK_PLC sheet. - TAGNAME 'SLOT7_IB16S' from DESC sheet not found in NETWORK_PLC sheet. ================================================================================ Continuing with processing... Normalizing TAGNAME, DESC, and IO_PATH columns for VFDs only in the final output... Final result has 493 rows Sample of merged data: TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH 0 ULC1_3_PLC ... NaN NaN NaN 1 SLOT5_IB16 I0 MCM01 ... I IB16 Local:5:I.Data.0 2 SLOT5_IB16 I1 MCM01 ... I IB16 Local:5:I.Data.1 3 SLOT5_IB16 I10 SPARE ... SPARE IB16 Local:5:I.Data.10 4 SLOT5_IB16 I11 SPARE ... SPARE IB16 Local:5:I.Data.11 5 SLOT5_IB16 I12 SPARE ... SPARE IB16 Local:5:I.Data.12 6 SLOT5_IB16 I13 SPARE ... SPARE IB16 Local:5:I.Data.13 7 SLOT5_IB16 I14 SPARE ... SPARE IB16 Local:5:I.Data.14 8 SLOT5_IB16 I15 SPARE ... SPARE IB16 Local:5:I.Data.15 9 SLOT5_IB16 I2 MCM01 ... I IB16 Local:5:I.Data.2 [10 rows x 11 columns] New Excel file created: SAT9_MCM01_DESC_IP_MERGED.xlsx The file contains all original sheets plus the new 'DESC_IP' sheet with merged data. DEBUG: Processing Excel file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/data/SAT9_MCM01.xlsx DEBUG: Full project pattern matched: SAT9_MCM01 DEBUG: Final subsystem name: SAT9_MCM01 Reading input file: SAT9_MCM01_DESC_IP_MERGED.xlsx Removed 1 IOLink rows (including beacons, FIOH channels, and all other IOLink entries) Removed 9 blank name/description rows Saving output file: SAT9_MCM01_OUTPUT.csv Processing complete! Created standard output file: DESC_IP_MERGED.xlsx === Step 1: PLC Data Generator stderr === === Step 1 File Copy === Copied SAT9_MCM01_DESC_IP_MERGED.xlsx to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/DESC_IP_MERGED.xlsx {"level": "INFO", "message": "Data processing completed successfully", "timestamp": "2025-09-04T20:32:49.941362", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Starting routine generation step", "timestamp": "2025-09-04T20:32:49.941564", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM01_20250904_203246.log", "timestamp": "2025-09-04T20:32:51.606715", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "=== Generating All PLC Artifacts ===", "timestamp": "2025-09-04T20:32:51.608310", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Generating SafetyProgram L5X...", "timestamp": "2025-09-04T20:32:51.608465", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "WARNING", "message": "LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator", "timestamp": "2025-09-04T20:32:51.618829", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Starting ModernSafetyProgramGenerator generation", "timestamp": "2025-09-04T20:32:51.619056", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Creating SafetyProgram XML structure", "timestamp": "2025-09-04T20:32:51.619190", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Registered plugin: main_routine (core)", "timestamp": "2025-09-04T20:32:51.628233", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: apf (device)", "timestamp": "2025-09-04T20:32:51.633048", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: belt_tracking (device)", "timestamp": "2025-09-04T20:32:51.636625", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: cb_monitor (device)", "timestamp": "2025-09-04T20:32:51.641100", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: d2c_chute (device)", "timestamp": "2025-09-04T20:32:51.644537", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: dpm (device)", "timestamp": "2025-09-04T20:32:51.647772", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: encoder (device)", "timestamp": "2025-09-04T20:32:51.652239", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: estops (safety)", "timestamp": "2025-09-04T20:32:51.658550", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: estop_check (safety)", "timestamp": "2025-09-04T20:32:51.661697", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: extendo (device)", "timestamp": "2025-09-04T20:32:51.665080", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: fioh (device)", "timestamp": "2025-09-04T20:32:51.669277", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: fiom (device)", "timestamp": "2025-09-04T20:32:51.672510", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: flow_ctrl (device)", "timestamp": "2025-09-04T20:32:51.675758", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: fpe (device)", "timestamp": "2025-09-04T20:32:51.678751", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: inputs (safety)", "timestamp": "2025-09-04T20:32:51.681774", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: jpe (device)", "timestamp": "2025-09-04T20:32:51.686212", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: mcm (core)", "timestamp": "2025-09-04T20:32:51.689759", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: outputs (safety)", "timestamp": "2025-09-04T20:32:51.692695", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: pb_chute (device)", "timestamp": "2025-09-04T20:32:51.695852", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: pmm (device)", "timestamp": "2025-09-04T20:32:51.699320", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: rack (core)", "timestamp": "2025-09-04T20:32:51.703008", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: resets (safety)", "timestamp": "2025-09-04T20:32:51.706856", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: safety_tag_map (core)", "timestamp": "2025-09-04T20:32:51.709722", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: safety_tag_mapping (safety)", "timestamp": "2025-09-04T20:32:51.712706", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: speed_ctrl (device)", "timestamp": "2025-09-04T20:32:51.716489", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: station_epc (safety)", "timestamp": "2025-09-04T20:32:51.720273", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: station_jr_chute (device)", "timestamp": "2025-09-04T20:32:51.723428", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: station_jr_pb (device)", "timestamp": "2025-09-04T20:32:51.726244", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: station_ss_pb (device)", "timestamp": "2025-09-04T20:32:51.729254", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: station_s_pb (device)", "timestamp": "2025-09-04T20:32:51.732063", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: taching_belts (device)", "timestamp": "2025-09-04T20:32:51.736532", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "DEBUG", "message": "Registered plugin: zones (safety)", "timestamp": "2025-09-04T20:32:51.740318", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"} {"level": "INFO", "message": "Generating safety routines...", "timestamp": "2025-09-04T20:32:51.740526", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: inputs", "timestamp": "2025-09-04T20:32:52.489529", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: inputs", "timestamp": "2025-09-04T20:32:52.495748", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: outputs", "timestamp": "2025-09-04T20:32:52.498729", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: subsystem key", "timestamp": "2025-09-04T20:32:52.500798", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "subsystem": "DEFAULT", "found": false} {"level": "DEBUG", "message": "Zones: heuristic best match", "timestamp": "2025-09-04T20:32:52.509734", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM01", "score": 24} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-04T20:32:52.510293", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 13} {"level": "INFO", "message": "Successfully generated routine: outputs", "timestamp": "2025-09-04T20:32:52.511429", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: resets", "timestamp": "2025-09-04T20:32:52.511661", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: resets", "timestamp": "2025-09-04T20:32:52.516906", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: zones", "timestamp": "2025-09-04T20:32:52.517135", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC1_12: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.518131", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC1_3: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.518458", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC2_12: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.518748", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC2_3: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.519048", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC3_3: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.519294", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC3_6: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.519526", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC4_3: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.519751", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Found DCS controllers for ULC4_6: {'EPC2', 'EPC1'}", "timestamp": "2025-09-04T20:32:52.519979", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Available DCS controllers: {'ULC1_12': {'EPC2', 'EPC1'}, 'ULC1_3': {'EPC2', 'EPC1'}, 'ULC2_12': {'EPC2', 'EPC1'}, 'ULC2_3': {'EPC2', 'EPC1'}, 'ULC3_3': {'EPC2', 'EPC1'}, 'ULC3_6': {'EPC2', 'EPC1'}, 'ULC4_3': {'EPC2', 'EPC1'}, 'ULC4_6': {'EPC2', 'EPC1'}}", "timestamp": "2025-09-04T20:32:52.520103", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zone 01-01 candidates: ['ULC1_1']", "timestamp": "2025-09-04T20:32:52.520654", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_1 in zone 01-01", "timestamp": "2025-09-04T20:32:52.520796", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.520910", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-01", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-02 candidates: ['ULC1_1', 'ULC1_3', 'ULC1_4', 'ULC1_5', 'ULC1_6']", "timestamp": "2025-09-04T20:32:52.521176", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_1 in zone 01-02", "timestamp": "2025-09-04T20:32:52.521304", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_4 in zone 01-02", "timestamp": "2025-09-04T20:32:52.521410", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_5 in zone 01-02", "timestamp": "2025-09-04T20:32:52.521523", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_6 in zone 01-02", "timestamp": "2025-09-04T20:32:52.521625", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.521726", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-02", "interlock": "MCM01", "dcs_list": ["ULC1_3_EPC1_DCS_CTRL.O1", "ULC1_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-03 candidates: ['ULC1_6', 'ULC1_7', 'ULC1_8', 'ULC1_9', 'ULC1_10', 'ULC1_11', 'ULC1_12']", "timestamp": "2025-09-04T20:32:52.522032", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_6 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522181", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_7 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522287", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_8 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522384", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_9 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522495", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_10 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522638", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC1_11 in zone 01-03", "timestamp": "2025-09-04T20:32:52.522744", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.522851", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-03", "interlock": "MCM01", "dcs_list": ["ULC1_12_EPC1_DCS_CTRL.O1", "ULC1_12_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-04 candidates: ['ULC2_1']", "timestamp": "2025-09-04T20:32:52.523111", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_1 in zone 01-04", "timestamp": "2025-09-04T20:32:52.523247", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.523359", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-04", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-05 candidates: ['ULC2_1', 'ULC2_3', 'ULC2_4', 'ULC2_5', 'ULC2_6']", "timestamp": "2025-09-04T20:32:52.523603", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_1 in zone 01-05", "timestamp": "2025-09-04T20:32:52.523727", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_4 in zone 01-05", "timestamp": "2025-09-04T20:32:52.523853", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_5 in zone 01-05", "timestamp": "2025-09-04T20:32:52.523952", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_6 in zone 01-05", "timestamp": "2025-09-04T20:32:52.524060", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.524161", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-05", "interlock": "MCM01", "dcs_list": ["ULC2_3_EPC1_DCS_CTRL.O1", "ULC2_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-06 candidates: ['ULC2_6', 'ULC2_7', 'ULC2_8', 'ULC2_9', 'ULC2_10', 'ULC2_11', 'ULC2_12']", "timestamp": "2025-09-04T20:32:52.524405", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_6 in zone 01-06", "timestamp": "2025-09-04T20:32:52.524544", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_7 in zone 01-06", "timestamp": "2025-09-04T20:32:52.524651", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_8 in zone 01-06", "timestamp": "2025-09-04T20:32:52.524750", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_9 in zone 01-06", "timestamp": "2025-09-04T20:32:52.524847", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_10 in zone 01-06", "timestamp": "2025-09-04T20:32:52.524944", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC2_11 in zone 01-06", "timestamp": "2025-09-04T20:32:52.525040", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.525145", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-06", "interlock": "MCM01", "dcs_list": ["ULC2_12_EPC1_DCS_CTRL.O1", "ULC2_12_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-07 candidates: ['ULC3_1']", "timestamp": "2025-09-04T20:32:52.525395", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC3_1 in zone 01-07", "timestamp": "2025-09-04T20:32:52.525512", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.525630", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-07", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-08 candidates: ['ULC3_1', 'ULC3_3', 'ULC3_4']", "timestamp": "2025-09-04T20:32:52.525916", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC3_1 in zone 01-08", "timestamp": "2025-09-04T20:32:52.526041", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC3_4 in zone 01-08", "timestamp": "2025-09-04T20:32:52.526145", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.526246", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-08", "interlock": "MCM01", "dcs_list": ["ULC3_3_EPC1_DCS_CTRL.O1", "ULC3_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-09 candidates: ['ULC3_4', 'ULC3_5', 'ULC3_6']", "timestamp": "2025-09-04T20:32:52.526496", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC3_4 in zone 01-09", "timestamp": "2025-09-04T20:32:52.526672", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC3_5 in zone 01-09", "timestamp": "2025-09-04T20:32:52.526808", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.526977", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-09", "interlock": "MCM01", "dcs_list": ["ULC3_6_EPC1_DCS_CTRL.O1", "ULC3_6_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-10 candidates: ['ULC4_1']", "timestamp": "2025-09-04T20:32:52.527291", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC4_1 in zone 01-10", "timestamp": "2025-09-04T20:32:52.527451", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.527584", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-10", "interlock": "MCM01", "dcs_list": []} {"level": "DEBUG", "message": "Zone 01-11 candidates: ['ULC4_1', 'ULC4_3', 'ULC4_4']", "timestamp": "2025-09-04T20:32:52.527845", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC4_1 in zone 01-11", "timestamp": "2025-09-04T20:32:52.527991", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC4_4 in zone 01-11", "timestamp": "2025-09-04T20:32:52.528104", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.528207", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-11", "interlock": "MCM01", "dcs_list": ["ULC4_3_EPC1_DCS_CTRL.O1", "ULC4_3_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 01-12 candidates: ['ULC4_4', 'ULC4_5', 'ULC4_6']", "timestamp": "2025-09-04T20:32:52.528458", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC4_4 in zone 01-12", "timestamp": "2025-09-04T20:32:52.528578", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No DCS controllers found for base ULC4_5 in zone 01-12", "timestamp": "2025-09-04T20:32:52.528683", "module": "src.routines.zones", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: rung", "timestamp": "2025-09-04T20:32:52.528792", "module": "src.routines.zones", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "zone": "01-12", "interlock": "MCM01", "dcs_list": ["ULC4_6_EPC1_DCS_CTRL.O1", "ULC4_6_EPC2_DCS_CTRL.O1"]} {"level": "INFO", "message": "Successfully generated routine: zones", "timestamp": "2025-09-04T20:32:52.528917", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: estops", "timestamp": "2025-09-04T20:32:52.529041", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: estops", "timestamp": "2025-09-04T20:32:52.530718", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True}", "timestamp": "2025-09-04T20:32:52.530954", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag map with 17 tags", "timestamp": "2025-09-04T20:32:52.534815", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES", "timestamp": "2025-09-04T20:32:52.534966", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R010_INPUTS: 47 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-09-04T20:32:52.535088", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_01_02_OK)[OTE(ULC1_3_VFD1:SO.STOOutput),OTE(ULC1_4_VFD1:SO.STOOutput),OTE(ULC1_5_VFD1:SO.STOOutput),OTE(ULC1_6_VFD1:SO.STOOutput)];", "timestamp": "2025-09-04T20:32:52.535208", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R012_RESETS: 16 rungs | example: [XIC(SFT_ULC1_3_SS1_SPB) ,XIC(SFT_MCM_S_PB)]OTE(RST_ULC1_3_EPC1_ESTOP);", "timestamp": "2025-09-04T20:32:52.535317", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R030_ZONES: 13 rungs | example: OTE(EStop_01_01_OK);", "timestamp": "2025-09-04T20:32:52.535422", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R020_ESTOPS: 16 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB);", "timestamp": "2025-09-04T20:32:52.535524", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_INPUTS,0) ,JSR(R011_OUTPUTS,0) ,JSR(R012_RESETS,0) ,JSR(R020_ESTOPS,0) ,JSR(R030_ZONES,0) ];", "timestamp": "2025-09-04T20:32:52.535635", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "Successfully completed ModernSafetyProgramGenerator generation", "timestamp": "2025-09-04T20:32:52.535742", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Written ModernSafetyProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyProgram_Generated.L5X", "timestamp": "2025-09-04T20:32:52.537758", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "[SUCCESS] SafetyProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyProgram_Generated.L5X", "timestamp": "2025-09-04T20:32:52.664499", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Generating MainProgram L5X...", "timestamp": "2025-09-04T20:32:52.664708", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "WARNING", "message": "LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator", "timestamp": "2025-09-04T20:32:52.664877", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Starting ModernMainProgramGenerator generation", "timestamp": "2025-09-04T20:32:52.665065", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Creating MainProgram XML structure", "timestamp": "2025-09-04T20:32:52.665227", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Adding controller tags...", "timestamp": "2025-09-04T20:32:52.665382", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Zones: subsystem key", "timestamp": "2025-09-04T20:32:52.710382", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "subsystem": "DEFAULT", "found": false} {"level": "DEBUG", "message": "Zones: heuristic best match", "timestamp": "2025-09-04T20:32:52.718756", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "best_key": "MCM01", "score": 24} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-04T20:32:52.719187", "module": "src.data_loader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "rows": 13} {"level": "DEBUG", "message": "Extracting FPE data", "timestamp": "2025-09-04T20:32:52.838257", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "FPE"} {"level": "INFO", "message": "Data: FPE count=4", "timestamp": "2025-09-04T20:32:52.839128", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE processing ULC1_2_PE1 base=ULC1_2", "timestamp": "2025-09-04T20:32:52.839420", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No VFD found for ULC1_2", "timestamp": "2025-09-04T20:32:52.839866", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE ULC1_2_PE1: conveyor=ULC1_2_VFD1.CTRL parent_fault=ULC1_2_VFD1:I.ConnectionFaulted input=ULC1_3_VFD1:I.In_2 beacon=ULC1_2_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2", "timestamp": "2025-09-04T20:32:52.840881", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE processing ULC2_2_PE1 base=ULC2_2", "timestamp": "2025-09-04T20:32:52.841183", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No VFD found for ULC2_2", "timestamp": "2025-09-04T20:32:52.841572", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE ULC2_2_PE1: conveyor=ULC2_2_VFD1.CTRL parent_fault=ULC2_2_VFD1:I.ConnectionFaulted input=ULC2_3_VFD1:I.In_2 beacon=ULC2_2_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2", "timestamp": "2025-09-04T20:32:52.842606", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE processing ULC4_7_PE1 base=ULC4_7", "timestamp": "2025-09-04T20:32:52.842837", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No VFD found for ULC4_7", "timestamp": "2025-09-04T20:32:52.843204", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE ULC4_7_PE1: conveyor=ULC4_7_VFD1.CTRL parent_fault=ULC4_7_VFD1:I.ConnectionFaulted input=ULC4_6_VFD1:I.In_3 beacon=ULC4_7_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2", "timestamp": "2025-09-04T20:32:52.844138", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE processing ULC3_7_PE1 base=ULC3_7", "timestamp": "2025-09-04T20:32:52.844339", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "No VFD found for ULC3_7", "timestamp": "2025-09-04T20:32:52.844669", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "FPE ULC3_7_PE1: conveyor=ULC3_7_VFD1.CTRL parent_fault=ULC3_7_VFD1:I.ConnectionFaulted input=ULC3_6_VFD1:I.In_3 beacon=ULC3_7_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2", "timestamp": "2025-09-04T20:32:52.845526", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Data: FPE configs=4", "timestamp": "2025-09-04T20:32:52.845801", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Extracting PMM data", "timestamp": "2025-09-04T20:32:52.845958", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "PMM"} {"level": "INFO", "message": "Data: PMM entries=0", "timestamp": "2025-09-04T20:32:52.846738", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Data: PMM configs=0", "timestamp": "2025-09-04T20:32:52.846891", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Extracting CB_MONITOR data", "timestamp": "2025-09-04T20:32:52.847006", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "CB_MONITOR"} {"level": "INFO", "message": "Data: CB PDPs=1", "timestamp": "2025-09-04T20:32:52.848153", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "CB_MONITOR PDP1: CBs=26 FIOs=2", "timestamp": "2025-09-04T20:32:52.848371", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB1 (CB1) to position 0", "timestamp": "2025-09-04T20:32:52.848533", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB2 (CB2) to position 1", "timestamp": "2025-09-04T20:32:52.848686", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB3 (CB3) to position 2", "timestamp": "2025-09-04T20:32:52.849061", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB4 (CB4) to position 3", "timestamp": "2025-09-04T20:32:52.849270", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB5 (CB5) to position 4", "timestamp": "2025-09-04T20:32:52.849434", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB6 (CB6) to position 5", "timestamp": "2025-09-04T20:32:52.849606", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB7 (CB7) to position 6", "timestamp": "2025-09-04T20:32:52.849745", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB8 (CB8) to position 7", "timestamp": "2025-09-04T20:32:52.849849", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB9 (CB9) to position 8", "timestamp": "2025-09-04T20:32:52.849951", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB10 (CB10) to position 9", "timestamp": "2025-09-04T20:32:52.850073", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB11 (CB11) to position 10", "timestamp": "2025-09-04T20:32:52.850245", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB12 (CB12) to position 11", "timestamp": "2025-09-04T20:32:52.850389", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB13 (CB13) to position 12", "timestamp": "2025-09-04T20:32:52.850528", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB14 (CB14) to position 13", "timestamp": "2025-09-04T20:32:52.850693", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB15 (CB15) to position 14", "timestamp": "2025-09-04T20:32:52.850837", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB16 (CB16) to position 15", "timestamp": "2025-09-04T20:32:52.850998", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB17 (CB17) to position 16", "timestamp": "2025-09-04T20:32:52.851206", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB18 (CB18) to position 17", "timestamp": "2025-09-04T20:32:52.851383", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB19 (CB19) to position 18", "timestamp": "2025-09-04T20:32:52.851538", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB20 (CB20) to position 19", "timestamp": "2025-09-04T20:32:52.851720", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB21 (CB21) to position 20", "timestamp": "2025-09-04T20:32:52.851850", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB22 (CB22) to position 21", "timestamp": "2025-09-04T20:32:52.851980", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB23 (CB23) to position 22", "timestamp": "2025-09-04T20:32:52.852118", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB24 (CB24) to position 23", "timestamp": "2025-09-04T20:32:52.852257", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB25 (CB25) to position 24", "timestamp": "2025-09-04T20:32:52.852378", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Mapped PDP1_CB26 (CB26) to position 25", "timestamp": "2025-09-04T20:32:52.852519", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "CB_MONITOR PDP1: configured CBs=26 entries=['PDP1_CB1', 'PDP1_CB2', 'PDP1_CB3', 'PDP1_CB4', 'PDP1_CB5', 'PDP1_CB6', 'PDP1_CB7', 'PDP1_CB8', 'PDP1_CB9', 'PDP1_CB10', 'PDP1_CB11', 'PDP1_CB12', 'PDP1_CB13', 'PDP1_CB14', 'PDP1_CB15', 'PDP1_CB16', 'PDP1_CB17', 'PDP1_CB18', 'PDP1_CB19', 'PDP1_CB20', 'PDP1_CB21', 'PDP1_CB22', 'PDP1_CB23', 'PDP1_CB24', 'PDP1_CB25', 'PDP1_CB26'] fault=PDP1_FIOH1:I.ConnectionFaulted", "timestamp": "2025-09-04T20:32:52.852684", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Data: CB configs=1", "timestamp": "2025-09-04T20:32:52.852833", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Tags created: total=299 | standard=33 safety=95 dcs=17 modules=146", "timestamp": "2025-09-04T20:32:52.853808", "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 299 controller tags", "timestamp": "2025-09-04T20:32:52.854305", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Generating main program routines...", "timestamp": "2025-09-04T20:32:52.854681", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: mcm", "timestamp": "2025-09-04T20:32:52.855083", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: mcm", "timestamp": "2025-09-04T20:32:52.855427", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: rack", "timestamp": "2025-09-04T20:32:52.855760", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: rack", "timestamp": "2025-09-04T20:32:52.855989", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: dpm", "timestamp": "2025-09-04T20:32:52.856289", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: dpm", "timestamp": "2025-09-04T20:32:52.857456", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: fiom", "timestamp": "2025-09-04T20:32:52.857738", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: fiom", "timestamp": "2025-09-04T20:32:52.858977", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: fioh", "timestamp": "2025-09-04T20:32:52.859464", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: fioh", "timestamp": "2025-09-04T20:32:52.860503", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: apf", "timestamp": "2025-09-04T20:32:52.861383", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: apf", "timestamp": "2025-09-04T20:32:52.863248", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: flow_ctrl", "timestamp": "2025-09-04T20:32:52.863918", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: flow_ctrl", "timestamp": "2025-09-04T20:32:52.865247", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Extracting SPEED_CTRL data", "timestamp": "2025-09-04T20:32:52.865699", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "SPEED_CTRL"} {"level": "INFO", "message": "Data: SPEED_CTRL VFDs=28", "timestamp": "2025-09-04T20:32:52.866170", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "SPEED_CTRL sample=ULC1_3_VFD1, ULC1_4_VFD1, ULC1_5_VFD1, ULC1_6_VFD1, ULC1_7_VFD1...", "timestamp": "2025-09-04T20:32:52.866859", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Data: SPEED_CTRL count=28", "timestamp": "2025-09-04T20:32:52.867040", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: speed_ctrl", "timestamp": "2025-09-04T20:32:52.867189", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: speed_ctrl", "timestamp": "2025-09-04T20:32:52.867400", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: estop_check", "timestamp": "2025-09-04T20:32:52.867546", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: estop_check", "timestamp": "2025-09-04T20:32:52.870034", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: encoder", "timestamp": "2025-09-04T20:32:52.870309", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: encoder", "timestamp": "2025-09-04T20:32:52.870674", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: safety_tag_map", "timestamp": "2025-09-04T20:32:52.870875", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Safety tag map: RST data has 17 rows", "timestamp": "2025-09-04T20:32:52.871073", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: MCM01 -> Local:5:I.Data.0", "timestamp": "2025-09-04T20:32:52.871328", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC1_12_S2_SPB -> ULC1_10_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.871588", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC1_12_S1_SPB -> ULC1_12_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.871875", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC1_3_SS2_SPB -> ULC1_3_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.872156", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC2_12_S2_SPB -> ULC2_10_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.872427", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC2_12_S1_SPB -> ULC2_12_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.872703", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC2_3_SS2_SPB -> ULC2_3_VFD1:I.IO_0", "timestamp": "2025-09-04T20:32:52.872904", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC1_3_SS1_SPB -> ULC1_4_FIO1:I.Pt02.Data", "timestamp": "2025-09-04T20:32:52.873121", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC2_3_SS1_SPB -> ULC2_4_FIO1:I.Pt02.Data", "timestamp": "2025-09-04T20:32:52.873370", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC3_3_SS1_SPB -> ULC3_4_FIO1:I.Pt08.Data", "timestamp": "2025-09-04T20:32:52.873761", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC3_3_SS2_SPB -> ULC3_4_FIO1:I.Pt12.Data", "timestamp": "2025-09-04T20:32:52.874115", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC3_6_SS1_SPB -> ULC3_6_FIO1:I.Pt08.Data", "timestamp": "2025-09-04T20:32:52.874512", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC3_6_SS2_SPB -> ULC3_6_FIO1:I.Pt12.Data", "timestamp": "2025-09-04T20:32:52.874777", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC4_3_SS1_SPB -> ULC4_4_FIO1:I.Pt08.Data", "timestamp": "2025-09-04T20:32:52.875004", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC4_3_SS2_SPB -> ULC4_4_FIO1:I.Pt12.Data", "timestamp": "2025-09-04T20:32:52.875301", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC4_6_SS1_SPB -> ULC4_6_FIO1:I.Pt10.Data", "timestamp": "2025-09-04T20:32:52.875518", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Added safety tag mapping: ULC4_6_SS2_SPB -> ULC4_6_FIO1:I.Pt14.Data", "timestamp": "2025-09-04T20:32:52.875814", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Safety tag map: Generating 17 rungs", "timestamp": "2025-09-04T20:32:52.876011", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM01);", "timestamp": "2025-09-04T20:32:52.876247", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 2: XIC(ULC1_4_FIO1:I.Pt02.Data)OTE(ULC1_3_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.876378", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 3: XIC(ULC1_3_VFD1:I.IO_0)OTE(ULC1_3_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.876555", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 4: XIC(ULC1_12_VFD1:I.IO_0)OTE(ULC1_12_S1_SPB);", "timestamp": "2025-09-04T20:32:52.876679", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 5: XIC(ULC1_10_VFD1:I.IO_0)OTE(ULC1_12_S2_SPB);", "timestamp": "2025-09-04T20:32:52.876859", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 6: XIC(ULC2_4_FIO1:I.Pt02.Data)OTE(ULC2_3_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.876981", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 7: XIC(ULC2_3_VFD1:I.IO_0)OTE(ULC2_3_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.877152", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 8: XIC(ULC2_12_VFD1:I.IO_0)OTE(ULC2_12_S1_SPB);", "timestamp": "2025-09-04T20:32:52.877312", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 9: XIC(ULC2_10_VFD1:I.IO_0)OTE(ULC2_12_S2_SPB);", "timestamp": "2025-09-04T20:32:52.877580", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 10: XIC(ULC3_4_FIO1:I.Pt08.Data)OTE(ULC3_3_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.877735", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 11: XIC(ULC3_4_FIO1:I.Pt12.Data)OTE(ULC3_3_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.878003", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 12: XIC(ULC3_6_FIO1:I.Pt08.Data)OTE(ULC3_6_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.878151", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 13: XIC(ULC3_6_FIO1:I.Pt12.Data)OTE(ULC3_6_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.878419", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 14: XIC(ULC4_4_FIO1:I.Pt08.Data)OTE(ULC4_3_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.878571", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 15: XIC(ULC4_4_FIO1:I.Pt12.Data)OTE(ULC4_3_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.878790", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 16: XIC(ULC4_6_FIO1:I.Pt10.Data)OTE(ULC4_6_SS1_SPB);", "timestamp": "2025-09-04T20:32:52.878945", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generated rung 17: XIC(ULC4_6_FIO1:I.Pt14.Data)OTE(ULC4_6_SS2_SPB);", "timestamp": "2025-09-04T20:32:52.879139", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Safety tag map: Generated 17 total rungs", "timestamp": "2025-09-04T20:32:52.879291", "module": "src.routines.safety_tag_map", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: safety_tag_map", "timestamp": "2025-09-04T20:32:52.879483", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: station_jr_pb", "timestamp": "2025-09-04T20:32:52.879688", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: station_jr_pb", "timestamp": "2025-09-04T20:32:52.880047", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Plugin station_s_pb cannot generate with current data", "timestamp": "2025-09-04T20:32:52.880254", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: station_ss_pb", "timestamp": "2025-09-04T20:32:52.880461", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: station_ss_pb", "timestamp": "2025-09-04T20:32:52.880811", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: station_epc", "timestamp": "2025-09-04T20:32:52.881030", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: station_epc", "timestamp": "2025-09-04T20:32:52.881480", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: jpe", "timestamp": "2025-09-04T20:32:52.881704", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: jpe", "timestamp": "2025-09-04T20:32:52.882245", "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: fpe", "timestamp": "2025-09-04T20:32:52.882498", "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: fpe", "timestamp": "2025-09-04T20:32:52.882884", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Plugin pmm cannot generate with current data", "timestamp": "2025-09-04T20:32:52.883189", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: cb_monitor", "timestamp": "2025-09-04T20:32:52.883459", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: cb_monitor", "timestamp": "2025-09-04T20:32:52.883758", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: belt_tracking", "timestamp": "2025-09-04T20:32:52.884349", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: belt_tracking", "timestamp": "2025-09-04T20:32:52.885698", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: main_routine", "timestamp": "2025-09-04T20:32:52.886027", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Generating MainRoutine with JSR calls", "timestamp": "2025-09-04T20:32:52.886187", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated MainRoutine", "timestamp": "2025-09-04T20:32:52.886340", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: main_routine", "timestamp": "2025-09-04T20:32:52.886461", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'fiom': True, 'fioh': True, 'apf': True, 'flow_ctrl': True, 'speed_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': False, 'station_ss_pb': True, 'station_epc': True, 'jpe': True, 'fpe': True, 'pmm': False, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True}", "timestamp": "2025-09-04T20:32:52.886581", "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 (19): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R031_FIOH, R040_APF, R050_FLOW_CTRL, R051_SPEED_CTRL, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R092_STATION_SS_PB, R093_STATION_EPC, R100_JPE, R101_FPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking", "timestamp": "2025-09-04T20:32:52.886711", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R010_MCM: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.886837", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R011_RACK: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.886955", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R020_DPM: 4 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.887070", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R030_FIOM: 8 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.887231", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R031_FIOH: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.887351", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R040_APF: 29 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.887467", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R050_FLOW_CTRL: 24 rungs | example: XIC(ULC1_4_VFD1.CTRL.STS.Enabled)OTE(ULC1_3_VFD1.CTRL.CMD.Interlock);", "timestamp": "2025-09-04T20:32:52.887582", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R051_SPEED_CTRL: 1 rungs | example: [MOVE(Speed_350_FPM,ULC1_3_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,ULC1_4_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,ULC1_5_VFD1.CTRL.CMD.Speed_FPM) ,...", "timestamp": "2025-09-04T20:32:52.887699", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R120_ESTOP_CHECK: 16 rungs | example: [XIO(ULC1_3_VFD1:SI.In00Data) ,XIO(ULC1_3_VFD1:SI.In01Data) ]XIO(ULC1_3_VFD1:SO.STOOutput)XIO(ULC1_4_VFD1:SO.STOOutput)XIO(ULC1_5_VFD1:SO.STOOutput)XIO(ULC1_...", "timestamp": "2025-09-04T20:32:52.887817", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R080_ENCODER: 12 rungs | example: AOI_ENCODER(ULC1_10_ENCODER.AOI,ULC1_10_ENCODER.HMI,ULC1_10_ENCODER.CTRL,ULC1_10_VFD1.CTRL,NO_UPSTREAM,ULC1_11_VFD1.CTRL,ULC1_10_VFD1:I.In_1,ULC1_10_VFD1:I.C...", "timestamp": "2025-09-04T20:32:52.887935", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R130_SAFETY_TAG_MAP: 18 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-09-04T20:32:52.888075", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R090_STATION_JR_PB: 8 rungs | example: AOI_STATION_JR_PB(ULC1_7_JR1_PB.AOI,ULC1_7_JR1_PB.HMI,ULC1_7_JR1_PB.CTRL,NO_PARTNER,ULC1_7_VFD1:I.IO_0,ULC1_7_VFD1:O.IO_1,MCM.CTRL)MOVE(ULC1_7_JR1_PB.CTRL.ST...", "timestamp": "2025-09-04T20:32:52.888191", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R092_STATION_SS_PB: 10 rungs | example: AOI_STATION_SS_PB(ULC1_3_SS1_STATION.AOI,ULC1_3_SS1_STATION.HMI,ULC1_3_SS1_STATION.CTRL,ULC1_3_VFD1.CTRL,ULC1_4_FIO1:I.ConnectionFaulted,ULC1_4_FIO1:I.Pt02.D...", "timestamp": "2025-09-04T20:32:52.888308", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R093_STATION_EPC: 14 rungs | example: AOI_STATION_EPC(ULC1_3_EPC1_STATION.AOI,MCM.CTRL,ULC1_3_EPC1_STATION.HMI,ULC1_3_SS2_STATION.CTRL,ULC1_3_VFD1:I.ConnectionFaulted,ULC1_3_VFD1:SI.In00Data,ULC1...", "timestamp": "2025-09-04T20:32:52.888426", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R100_JPE: 30 rungs | example: AOI_JPE(ULC1_4_TPE1.AOI,ULC1_4_TPE1.HMI,ULC1_4_TPE1.CTRL,ULC1_4_VFD1.CTRL,ULC1_7_JR1_PB.CTRL,ULC1_4_VFD1:I.ConnectionFaulted,ULC1_4_VFD1:I.In_2,YES,ULC1_4_FI...", "timestamp": "2025-09-04T20:32:52.888544", "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": "- R101_FPE: 4 rungs | example: AOI_FPE(ULC1_2_PE1.AOI,ULC1_2_PE1.HMI,ULC1_2_PE1.CTRL,ULC1_2_VFD1.CTRL,ULC1_2_VFD1:I.ConnectionFaulted,ULC1_3_VFD1:I.In_2,ULC1_2_FIOH1:O.ProcessDataOut.Conne...", "timestamp": "2025-09-04T20:32:52.888661", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R070_CB_MONITOR: 2 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.888775", "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: 29 rungs | example: NOP();", "timestamp": "2025-09-04T20:32:52.889011", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R030_FIOM,0) ,JSR(R031_FIOH,0) ,JSR(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R051_SPEED_CTRL,0) ,JSR(...", "timestamp": "2025-09-04T20:32:52.889284", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "Successfully completed ModernMainProgramGenerator generation", "timestamp": "2025-09-04T20:32:52.889452", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Written ModernMainProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/MainProgram_Generated.L5X", "timestamp": "2025-09-04T20:32:52.898535", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "[SUCCESS] MainProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/MainProgram_Generated.L5X", "timestamp": "2025-09-04T20:32:52.898856", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Generating safety tag mapping...", "timestamp": "2025-09-04T20:32:52.899102", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Creating MappingWriter wrapper", "timestamp": "2025-09-04T20:32:52.899500", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Creating DataLoader instance", "timestamp": "2025-09-04T20:32:52.899784", "module": "src.container", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/DESC_IP_MERGED.xlsx"} {"level": "INFO", "message": "[SUCCESS] Safety tag mapping written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyTagMapping.txt", "timestamp": "2025-09-04T20:32:52.946730", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": " - Safety tags: 17", "timestamp": "2025-09-04T20:32:52.946962", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "=== All artifacts generated successfully! ===", "timestamp": "2025-09-04T20:32:52.947103", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} === Step 2: Routines Generator stdout === Found JPE config for ULC1_10_TPE1 (station from config, beacon from config) Found JPE config for ULC1_10_TPE2 (station from config, beacon from config) Found JPE config for ULC1_11_TPE1 (station from config, beacon from config) Found JPE config for ULC1_12_TPE1 (station from config, beacon from config) Found JPE config for ULC1_4_TPE1 (station from config) Found JPE config for ULC2_10_TPE1 (station from config, beacon from config) Found JPE config for ULC2_10_TPE2 (station from config, beacon from config) Found JPE config for ULC2_11_TPE1 (station from config, beacon from config) Found JPE config for ULC2_12_TPE1 (station from config, beacon from config) Found JPE config for ULC2_4_TPE1 (station from config) Found JPE config for ULC2_8_TPE2 (station from config, beacon from config) Found JPE config for ULC3_3_JPE1 (station from config) Found JPE config for ULC4_3_JPE1 (station from config) Found JPE config for ULC4_6_TPE2 (station from config) Found JPE config for ULC1_8_TPE1 (station from config, beacon from config) Found JPE config for ULC1_8_TPE2 (station from config, beacon from config) Found JPE config for ULC2_6_TPE1 (station from config, beacon from config) Found JPE config for ULC2_8_TPE1 (station from config, beacon from config) Found JPE config for ULC3_6_TPE2 Found JPE config for ULC1_6_TPE1 (station from config, beacon from config) Found JPE config for ULC1_5_TPE1 (station from config, beacon from config) Found JPE config for ULC2_5_TPE1 (station from config, beacon from config) Found JPE config for ULC3_4_JPE1 (station from config, beacon from config) Found JPE config for ULC3_6_TPE1 Found JPE config for ULC4_4_JPE1 (beacon from config) Found JPE config for ULC4_6_TPE1 (station from config) Found JPE config for ULC1_4_TPE2 (station from config) Found JPE config for ULC2_4_TPE2 (station from config) Found JPE config for ULC3_3_JPE2 (station from config) Found JPE config for ULC4_3_JPE2 (station from config) Looking for red beacon with base ULC1_12, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC1_12_BCN1_R with IO_PATH: ULC1_11_VFD1:O.IO_0 No SO in red beacon ULC1_12_BCN1_R: ULC1_11_VFD1:O.IO_0 Found STATION_EPC config for ULC1_12_EPC1 Looking for red beacon with base ULC1_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 0 red beacon entries Found STATION_EPC config for ULC1_3_EPC1 Looking for red beacon with base ULC2_12, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC2_12_BCN1_R with IO_PATH: ULC2_11_VFD1:O.IO_0 No SO in red beacon ULC2_12_BCN1_R: ULC2_11_VFD1:O.IO_0 Found STATION_EPC config for ULC2_12_EPC1 Looking for red beacon with base ULC2_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 0 red beacon entries Found STATION_EPC config for ULC2_3_EPC1 Looking for red beacon with base ULC3_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC3_3_BCN1_R with IO_PATH: ULC3_4_FIO1:O.Pt02.Data No SO in red beacon ULC3_3_BCN1_R: ULC3_4_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_3_EPC1 Looking for red beacon with base ULC4_6, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC4_6_BCN2_R with IO_PATH: ULC4_6_FIO1:O.Pt04.Data No SO in red beacon ULC4_6_BCN2_R: ULC4_6_FIO1:O.Pt04.Data Found STATION_EPC config for ULC4_6_EPC1 Looking for red beacon with base ULC3_6, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC3_6_BCN2_R with IO_PATH: ULC3_6_FIO1:O.Pt02.Data No SO in red beacon ULC3_6_BCN2_R: ULC3_6_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_6_EPC1 Looking for red beacon with base ULC1_12, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC1_12_BCN2_R with IO_PATH: ULC1_9A_VFD1:O.IO_0 No SO in red beacon ULC1_12_BCN2_R: ULC1_9A_VFD1:O.IO_0 Found STATION_EPC config for ULC1_12_EPC2 Looking for red beacon with base ULC1_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 0 red beacon entries Found STATION_EPC config for ULC1_3_EPC2 Looking for red beacon with base ULC2_12, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC2_12_BCN2_R with IO_PATH: ULC2_9A_VFD1:O.IO_0 No SO in red beacon ULC2_12_BCN2_R: ULC2_9A_VFD1:O.IO_0 Found STATION_EPC config for ULC2_12_EPC2 Looking for red beacon with base ULC2_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 0 red beacon entries Found STATION_EPC config for ULC2_3_EPC2 Looking for red beacon with base ULC3_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC3_3_BCN2_R with IO_PATH: ULC3_4_FIO1:O.Pt05.Data No SO in red beacon ULC3_3_BCN2_R: ULC3_4_FIO1:O.Pt05.Data Found STATION_EPC config for ULC3_3_EPC2 Looking for red beacon with base ULC4_6, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC4_6_BCN2_R with IO_PATH: ULC4_6_FIO1:O.Pt04.Data No SO in red beacon ULC4_6_BCN2_R: ULC4_6_FIO1:O.Pt04.Data Found STATION_EPC config for ULC4_6_EPC2 Looking for red beacon with base ULC3_6, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC3_6_BCN2_R with IO_PATH: ULC3_6_FIO1:O.Pt02.Data No SO in red beacon ULC3_6_BCN2_R: ULC3_6_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_6_EPC2 [DEBUG] Found 0 SO beacon tags for safety mapping Found STATION_SS_PB config for ULC1_3_SS2 Found STATION_SS_PB config for ULC1_3_SS1 Found STATION_SS_PB config for ULC2_3_SS1 Found STATION_SS_PB config for ULC3_3_SS1 Found STATION_SS_PB config for ULC3_3_SS2 Found STATION_SS_PB config for ULC3_6_SS1 Found STATION_SS_PB config for ULC3_6_SS2 Found STATION_SS_PB config for ULC4_3_SS2 Found STATION_SS_PB config for ULC4_6_SS1 Found STATION_SS_PB config for ULC4_6_SS2 Found STATION_JR_PB config for ULC1_7_JR1_PB Found STATION_JR_PB config for ULC2_7_JR2_PB Found STATION_JR_PB config for ULC2_7_JR1_PB Found STATION_JR_PB config for ULC3_6_JR2_PB Found STATION_JR_PB config for ULC1_7_JR2_PB Found STATION_JR_PB config for ULC3_6_JR1_PB Found STATION_JR_PB config for ULC4_4_JR1_PB Found STATION_JR_PB config for ULC4_4_JR2_PB Created SafetyTagMapping.txt with 19 mappings File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyTagMapping.txt Found JPE config for ULC1_10_TPE1 (station from config, beacon from config) Found JPE config for ULC1_10_TPE2 (station from config, beacon from config) Found JPE config for ULC1_11_TPE1 (station from config, beacon from config) Found JPE config for ULC1_12_TPE1 (station from config, beacon from config) Found JPE config for ULC1_4_TPE1 (station from config) Found JPE config for ULC2_10_TPE1 (station from config, beacon from config) Found JPE config for ULC2_10_TPE2 (station from config, beacon from config) Found JPE config for ULC2_11_TPE1 (station from config, beacon from config) Found JPE config for ULC2_12_TPE1 (station from config, beacon from config) Found JPE config for ULC2_4_TPE1 (station from config) Found JPE config for ULC2_8_TPE2 (station from config, beacon from config) Found JPE config for ULC3_3_JPE1 (station from config) Found JPE config for ULC4_3_JPE1 (station from config) Found JPE config for ULC4_6_TPE2 (station from config) Found JPE config for ULC1_8_TPE1 (station from config, beacon from config) Found JPE config for ULC1_8_TPE2 (station from config, beacon from config) Found JPE config for ULC2_6_TPE1 (station from config, beacon from config) Found JPE config for ULC2_8_TPE1 (station from config, beacon from config) Found JPE config for ULC3_6_TPE2 Found JPE config for ULC1_6_TPE1 (station from config, beacon from config) Found JPE config for ULC1_5_TPE1 (station from config, beacon from config) Found JPE config for ULC2_5_TPE1 (station from config, beacon from config) Found JPE config for ULC3_4_JPE1 (station from config, beacon from config) Found JPE config for ULC3_6_TPE1 Found JPE config for ULC4_4_JPE1 (beacon from config) Found JPE config for ULC4_6_TPE1 (station from config) Found JPE config for ULC1_4_TPE2 (station from config) Found JPE config for ULC2_4_TPE2 (station from config) Found JPE config for ULC3_3_JPE2 (station from config) Found JPE config for ULC4_3_JPE2 (station from config) Looking for red beacon with base ULC1_12, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC1_12_BCN1_R with IO_PATH: ULC1_11_VFD1:O.IO_0 No SO in red beacon ULC1_12_BCN1_R: ULC1_11_VFD1:O.IO_0 Found STATION_EPC config for ULC1_12_EPC1 Looking for red beacon with base ULC1_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 0 red beacon entries Found STATION_EPC config for ULC1_3_EPC1 Looking for red beacon with base ULC2_12, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC2_12_BCN1_R with IO_PATH: ULC2_11_VFD1:O.IO_0 No SO in red beacon ULC2_12_BCN1_R: ULC2_11_VFD1:O.IO_0 Found STATION_EPC config for ULC2_12_EPC1 Looking for red beacon with base ULC2_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 0 red beacon entries Found STATION_EPC config for ULC2_3_EPC1 Looking for red beacon with base ULC3_3, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC3_3_BCN1_R with IO_PATH: ULC3_4_FIO1:O.Pt02.Data No SO in red beacon ULC3_3_BCN1_R: ULC3_4_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_3_EPC1 Looking for red beacon with base ULC4_6, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC4_6_BCN2_R with IO_PATH: ULC4_6_FIO1:O.Pt04.Data No SO in red beacon ULC4_6_BCN2_R: ULC4_6_FIO1:O.Pt04.Data Found STATION_EPC config for ULC4_6_EPC1 Looking for red beacon with base ULC3_6, EPC channel EPC1 Beacon mask pattern: f'{base}_BCN.*_R$' Found 2 red beacon entries Found red beacon: ULC3_6_BCN2_R with IO_PATH: ULC3_6_FIO1:O.Pt02.Data No SO in red beacon ULC3_6_BCN2_R: ULC3_6_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_6_EPC1 Looking for red beacon with base ULC1_12, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC1_12_BCN2_R with IO_PATH: ULC1_9A_VFD1:O.IO_0 No SO in red beacon ULC1_12_BCN2_R: ULC1_9A_VFD1:O.IO_0 Found STATION_EPC config for ULC1_12_EPC2 Looking for red beacon with base ULC1_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 0 red beacon entries Found STATION_EPC config for ULC1_3_EPC2 Looking for red beacon with base ULC2_12, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC2_12_BCN2_R with IO_PATH: ULC2_9A_VFD1:O.IO_0 No SO in red beacon ULC2_12_BCN2_R: ULC2_9A_VFD1:O.IO_0 Found STATION_EPC config for ULC2_12_EPC2 Looking for red beacon with base ULC2_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 0 red beacon entries Found STATION_EPC config for ULC2_3_EPC2 Looking for red beacon with base ULC3_3, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC3_3_BCN2_R with IO_PATH: ULC3_4_FIO1:O.Pt05.Data No SO in red beacon ULC3_3_BCN2_R: ULC3_4_FIO1:O.Pt05.Data Found STATION_EPC config for ULC3_3_EPC2 Looking for red beacon with base ULC4_6, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC4_6_BCN2_R with IO_PATH: ULC4_6_FIO1:O.Pt04.Data No SO in red beacon ULC4_6_BCN2_R: ULC4_6_FIO1:O.Pt04.Data Found STATION_EPC config for ULC4_6_EPC2 Looking for red beacon with base ULC3_6, EPC channel EPC2 Beacon mask pattern: f'{base}_BCN2_R$' Found 1 red beacon entries Found red beacon: ULC3_6_BCN2_R with IO_PATH: ULC3_6_FIO1:O.Pt02.Data No SO in red beacon ULC3_6_BCN2_R: ULC3_6_FIO1:O.Pt02.Data Found STATION_EPC config for ULC3_6_EPC2 Found STATION_JR_PB config for ULC1_7_JR1_PB Found STATION_JR_PB config for ULC2_7_JR2_PB Found STATION_JR_PB config for ULC2_7_JR1_PB Found STATION_JR_PB config for ULC3_6_JR2_PB Found STATION_JR_PB config for ULC1_7_JR2_PB Found STATION_JR_PB config for ULC3_6_JR1_PB Found STATION_JR_PB config for ULC4_4_JR1_PB Found STATION_JR_PB config for ULC4_4_JR2_PB Found STATION_SS_PB config for ULC1_3_SS2 Found STATION_SS_PB config for ULC1_3_SS1 Found STATION_SS_PB config for ULC2_3_SS1 Found STATION_SS_PB config for ULC3_3_SS1 Found STATION_SS_PB config for ULC3_3_SS2 Found STATION_SS_PB config for ULC3_6_SS1 Found STATION_SS_PB config for ULC3_6_SS2 Found STATION_SS_PB config for ULC4_3_SS2 Found STATION_SS_PB config for ULC4_6_SS1 Found STATION_SS_PB config for ULC4_6_SS2 Found ENCODER config for ULC1_10_ENCODER (upstream: NO_UPSTREAM, downstream: ULC1_11_VFD1.CTRL) Found ENCODER config for ULC1_11_ENCODER (upstream: ULC1_10_VFD1.CTRL, downstream: ULC1_12_VFD1.CTRL) Found ENCODER config for ULC1_12_ENCODER (upstream: ULC1_11_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for ULC2_10_ENCODER (upstream: NO_UPSTREAM, downstream: ULC2_11_VFD1.CTRL) Found ENCODER config for ULC2_11_ENCODER (upstream: ULC2_10_VFD1.CTRL, downstream: ULC2_12_VFD1.CTRL) Found ENCODER config for ULC2_12_ENCODER (upstream: ULC2_11_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for ULC3_3_ENCODER (upstream: NO_UPSTREAM, downstream: ULC3_4_VFD1.CTRL) Found ENCODER config for ULC4_3_ENCODER (upstream: NO_UPSTREAM, downstream: ULC4_4_VFD1.CTRL) Found ENCODER config for ULC4_6_ENCODER (upstream: NO_UPSTREAM, downstream: NO_DOWNSTREAM) Found ENCODER config for ULC3_6_ENCODER (upstream: NO_UPSTREAM, downstream: NO_DOWNSTREAM) Found ENCODER config for ULC3_4_ENCODER (upstream: ULC3_3_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for ULC4_4_ENCODER (upstream: ULC4_3_VFD1.CTRL, downstream: NO_DOWNSTREAM) FIOM PDP1_FIOM1 -> DPM DPM1_ULC3-6 FIOM ULC1_4_FIO1 -> DPM DPM1_ULC1_8 FIOM ULC2_4_FIO1 -> DPM DPM1_ULC2_8 FIOM ULC3_4_FIO1 -> DPM DPM1_ULC3-6 FIOM ULC3_6_FIO1 -> DPM DPM1_ULC3-6 FIOM ULC4_4_FIO1 -> DPM DPM1_ULC3-6 FIOM ULC4_6_FIO1 -> DPM DPM1_ULC3-6 FIOH PDP1_FIOH1 -> FIO PDP1_FIOM1 APF ULC1_3_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_4_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_5_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_6_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_7_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_8_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_9A_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_9B_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_10_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_11_VFD1 -> DPM DPM1_ULC1_8 APF ULC1_12_VFD1 -> DPM DPM1_ULC1_8 APF ULC2_3_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_4_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_5_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_6_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_7_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_8_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_9A_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_9B_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_10_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_11_VFD1 -> DPM DPM1_ULC2_8 APF ULC2_12_VFD1 -> DPM DPM1_ULC2_8 APF ULC3_3_VFD1 -> DPM DPM1_ULC3-6 APF ULC3_4_VFD1 -> DPM DPM1_ULC3-6 APF ULC3_6_VFD1 -> DPM DPM1_ULC3-6 APF ULC4_3_VFD1 -> DPM DPM1_ULC3-6 APF ULC4_4_VFD1 -> DPM DPM1_ULC3-6 APF ULC4_6_VFD1 -> DPM DPM1_ULC3-6 - Added 16 E-stop check rungs [R090_STATION_JR_PB] Starting STATION_JR_PB routine generation... Found 8 STATION_JR_PB configurations Generated 8 STATION_JR_PB rungs [R0100_JPE] Starting JPE routine generation... Found 30 JPE configurations Generated 30 JPE rungs [R101_FPE] Starting FPE routine generation... Found 4 FPE configurations Generated 4 FPE rungs Belt tracking for ULC1_3_VFD1 -> zzz_ULC1_3Tracking Belt tracking for ULC1_4_VFD1 -> zzz_ULC1_4Tracking Belt tracking for ULC1_5_VFD1 -> zzz_ULC1_5Tracking Belt tracking for ULC1_6_VFD1 -> zzz_ULC1_6Tracking Belt tracking for ULC1_7_VFD1 -> zzz_ULC1_7Tracking Belt tracking for ULC1_8_VFD1 -> zzz_ULC1_8Tracking Belt tracking for ULC1_9A_VFD1 -> zzz_ULC1_9ATracking Belt tracking for ULC1_9B_VFD1 -> zzz_ULC1_9BTracking Belt tracking for ULC1_10_VFD1 -> zzz_ULC1_10Tracking Belt tracking for ULC1_11_VFD1 -> zzz_ULC1_11Tracking Belt tracking for ULC1_12_VFD1 -> zzz_ULC1_12Tracking Belt tracking for ULC2_3_VFD1 -> zzz_ULC2_3Tracking Belt tracking for ULC2_4_VFD1 -> zzz_ULC2_4Tracking Belt tracking for ULC2_5_VFD1 -> zzz_ULC2_5Tracking Belt tracking for ULC2_6_VFD1 -> zzz_ULC2_6Tracking Belt tracking for ULC2_7_VFD1 -> zzz_ULC2_7Tracking Belt tracking for ULC2_8_VFD1 -> zzz_ULC2_8Tracking Belt tracking for ULC2_9A_VFD1 -> zzz_ULC2_9ATracking Belt tracking for ULC2_9B_VFD1 -> zzz_ULC2_9BTracking Belt tracking for ULC2_10_VFD1 -> zzz_ULC2_10Tracking Belt tracking for ULC2_11_VFD1 -> zzz_ULC2_11Tracking Belt tracking for ULC2_12_VFD1 -> zzz_ULC2_12Tracking Belt tracking for ULC3_3_VFD1 -> zzz_ULC3_3Tracking Belt tracking for ULC3_4_VFD1 -> zzz_ULC3_4Tracking Belt tracking for ULC3_6_VFD1 -> zzz_ULC3_6Tracking Belt tracking for ULC4_3_VFD1 -> zzz_ULC4_3Tracking Belt tracking for ULC4_4_VFD1 -> zzz_ULC4_4Tracking Belt tracking for ULC4_6_VFD1 -> zzz_ULC4_6Tracking - Added 28 belt tracking AOI calls Created safety tag mapping file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyTagMapping.txt === Step 2: Routines Generator stderr === [20:32:51] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_SAT9_MCM01_20250904_203246.log [20:32:51] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts === [20:32:51] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X... [20:32:51] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator [20:32:51] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation [20:32:51] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: belt_tracking (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: encoder (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_mapping (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_epc (safety) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_ss_pb (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_s_pb (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: taching_belts (device) [20:32:51] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety) [20:32:51] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines... [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC1_12: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC1_3: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC2_12: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC2_3: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC3_3: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC3_6: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC4_3: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for ULC4_6: {'EPC2', 'EPC1'} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Available DCS controllers: {'ULC1_12': {'EPC2', 'EPC1'}, 'ULC1_3': {'EPC2', 'EPC1'}, 'ULC2_12': {'EPC2', 'EPC1'}, 'ULC2_3': {'EPC2', 'EPC1'}, 'ULC3_3': {'EPC2', 'EPC1'}, 'ULC3_6': {'EPC2', 'EPC1'}, 'ULC4_3': {'EPC2', 'EPC1'}, 'ULC4_6': {'EPC2', 'EPC1'}} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-01 candidates: ['ULC1_1'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_1 in zone 01-01 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-02 candidates: ['ULC1_1', 'ULC1_3', 'ULC1_4', 'ULC1_5', 'ULC1_6'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_1 in zone 01-02 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_4 in zone 01-02 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_5 in zone 01-02 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_6 in zone 01-02 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-03 candidates: ['ULC1_6', 'ULC1_7', 'ULC1_8', 'ULC1_9', 'ULC1_10', 'ULC1_11', 'ULC1_12'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_6 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_7 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_8 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_9 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_10 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC1_11 in zone 01-03 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-04 candidates: ['ULC2_1'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_1 in zone 01-04 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-05 candidates: ['ULC2_1', 'ULC2_3', 'ULC2_4', 'ULC2_5', 'ULC2_6'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_1 in zone 01-05 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_4 in zone 01-05 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_5 in zone 01-05 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_6 in zone 01-05 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-06 candidates: ['ULC2_6', 'ULC2_7', 'ULC2_8', 'ULC2_9', 'ULC2_10', 'ULC2_11', 'ULC2_12'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_6 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_7 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_8 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_9 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_10 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC2_11 in zone 01-06 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-07 candidates: ['ULC3_1'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_1 in zone 01-07 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-08 candidates: ['ULC3_1', 'ULC3_3', 'ULC3_4'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_1 in zone 01-08 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_4 in zone 01-08 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-09 candidates: ['ULC3_4', 'ULC3_5', 'ULC3_6'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_4 in zone 01-09 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC3_5 in zone 01-09 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-10 candidates: ['ULC4_1'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_1 in zone 01-10 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-11 candidates: ['ULC4_1', 'ULC4_3', 'ULC4_4'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_1 in zone 01-11 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_4 in zone 01-11 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Zone 01-12 candidates: ['ULC4_4', 'ULC4_5', 'ULC4_6'] [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_4 in zone 01-12 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base ULC4_5 in zone 01-12 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True} [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 17 tags [20:32:52] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 47 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 8 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_01_02_OK)[OTE(ULC1_3_VFD1:SO.STOOutput),OTE(ULC1_4_VFD1:SO.STOOutput),OTE(ULC1_5_VFD1:SO.STOOutput),OTE(ULC1_6_VFD1:SO.STOOutput)]; [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 16 rungs | example: [XIC(SFT_ULC1_3_SS1_SPB) ,XIC(SFT_MCM_S_PB)]OTE(RST_ULC1_3_EPC1_ESTOP); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 13 rungs | example: OTE(EStop_01_01_OK); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 16 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - MainRoutine: 1 rungs | example: [JSR(R010_INPUTS,0) ,JSR(R011_OUTPUTS,0) ,JSR(R012_RESETS,0) ,JSR(R020_ESTOPS,0) ,JSR(R030_ZONES,0) ]; [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyProgram_Generated.L5X [20:32:52] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyProgram_Generated.L5X [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X... [20:32:52] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags... [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Extracting FPE data [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: FPE count=4 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE processing ULC1_2_PE1 base=ULC1_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No VFD found for ULC1_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE ULC1_2_PE1: conveyor=ULC1_2_VFD1.CTRL parent_fault=ULC1_2_VFD1:I.ConnectionFaulted input=ULC1_3_VFD1:I.In_2 beacon=ULC1_2_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE processing ULC2_2_PE1 base=ULC2_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No VFD found for ULC2_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE ULC2_2_PE1: conveyor=ULC2_2_VFD1.CTRL parent_fault=ULC2_2_VFD1:I.ConnectionFaulted input=ULC2_3_VFD1:I.In_2 beacon=ULC2_2_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE processing ULC4_7_PE1 base=ULC4_7 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No VFD found for ULC4_7 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE ULC4_7_PE1: conveyor=ULC4_7_VFD1.CTRL parent_fault=ULC4_7_VFD1:I.ConnectionFaulted input=ULC4_6_VFD1:I.In_3 beacon=ULC4_7_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE processing ULC3_7_PE1 base=ULC3_7 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] No VFD found for ULC3_7 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] FPE ULC3_7_PE1: conveyor=ULC3_7_VFD1.CTRL parent_fault=ULC3_7_VFD1:I.ConnectionFaulted input=ULC3_6_VFD1:I.In_3 beacon=ULC3_7_FIOH1:O.ProcessDataOut.Connector_1_B_Pin_2 [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: FPE configs=4 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Extracting PMM data [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: PMM entries=0 [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: PMM configs=0 [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Extracting CB_MONITOR data [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: CB PDPs=1 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP1: CBs=26 FIOs=2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB1 (CB1) to position 0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB2 (CB2) to position 1 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB3 (CB3) to position 2 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB4 (CB4) to position 3 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB5 (CB5) to position 4 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB6 (CB6) to position 5 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB7 (CB7) to position 6 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB8 (CB8) to position 7 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB9 (CB9) to position 8 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB10 (CB10) to position 9 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB11 (CB11) to position 10 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB12 (CB12) to position 11 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB13 (CB13) to position 12 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB14 (CB14) to position 13 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB15 (CB15) to position 14 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB16 (CB16) to position 15 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB17 (CB17) to position 16 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB18 (CB18) to position 17 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB19 (CB19) to position 18 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB20 (CB20) to position 19 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB21 (CB21) to position 20 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB22 (CB22) to position 21 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB23 (CB23) to position 22 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB24 (CB24) to position 23 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB25 (CB25) to position 24 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Mapped PDP1_CB26 (CB26) to position 25 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP1: configured CBs=26 entries=['PDP1_CB1', 'PDP1_CB2', 'PDP1_CB3', 'PDP1_CB4', 'PDP1_CB5', 'PDP1_CB6', 'PDP1_CB7', 'PDP1_CB8', 'PDP1_CB9', 'PDP1_CB10', 'PDP1_CB11', 'PDP1_CB12', 'PDP1_CB13', 'PDP1_CB14', 'PDP1_CB15', 'PDP1_CB16', 'PDP1_CB17', 'PDP1_CB18', 'PDP1_CB19', 'PDP1_CB20', 'PDP1_CB21', 'PDP1_CB22', 'PDP1_CB23', 'PDP1_CB24', 'PDP1_CB25', 'PDP1_CB26'] fault=PDP1_FIOH1:I.ConnectionFaulted [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: CB configs=1 [20:32:52] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=299 | standard=33 safety=95 dcs=17 modules=146 [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Added 299 controller tags [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines... [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fiom [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fiom [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fioh [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fioh [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: flow_ctrl [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: flow_ctrl [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Extracting SPEED_CTRL data [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: SPEED_CTRL VFDs=28 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] SPEED_CTRL sample=ULC1_3_VFD1, ULC1_4_VFD1, ULC1_5_VFD1, ULC1_6_VFD1, ULC1_7_VFD1... [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Data: SPEED_CTRL count=28 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: speed_ctrl [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: speed_ctrl [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: encoder [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: encoder [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: RST data has 17 rows [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: MCM01 -> Local:5:I.Data.0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_12_S2_SPB -> ULC1_10_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_12_S1_SPB -> ULC1_12_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_3_SS2_SPB -> ULC1_3_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_12_S2_SPB -> ULC2_10_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_12_S1_SPB -> ULC2_12_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_3_SS2_SPB -> ULC2_3_VFD1:I.IO_0 [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC1_3_SS1_SPB -> ULC1_4_FIO1:I.Pt02.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC2_3_SS1_SPB -> ULC2_4_FIO1:I.Pt02.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_3_SS1_SPB -> ULC3_4_FIO1:I.Pt08.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_3_SS2_SPB -> ULC3_4_FIO1:I.Pt12.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_6_SS1_SPB -> ULC3_6_FIO1:I.Pt08.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC3_6_SS2_SPB -> ULC3_6_FIO1:I.Pt12.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_3_SS1_SPB -> ULC4_4_FIO1:I.Pt08.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_3_SS2_SPB -> ULC4_4_FIO1:I.Pt12.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_6_SS1_SPB -> ULC4_6_FIO1:I.Pt10.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: ULC4_6_SS2_SPB -> ULC4_6_FIO1:I.Pt14.Data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generating 17 rungs [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM01); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 2: XIC(ULC1_4_FIO1:I.Pt02.Data)OTE(ULC1_3_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 3: XIC(ULC1_3_VFD1:I.IO_0)OTE(ULC1_3_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 4: XIC(ULC1_12_VFD1:I.IO_0)OTE(ULC1_12_S1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 5: XIC(ULC1_10_VFD1:I.IO_0)OTE(ULC1_12_S2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 6: XIC(ULC2_4_FIO1:I.Pt02.Data)OTE(ULC2_3_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 7: XIC(ULC2_3_VFD1:I.IO_0)OTE(ULC2_3_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 8: XIC(ULC2_12_VFD1:I.IO_0)OTE(ULC2_12_S1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 9: XIC(ULC2_10_VFD1:I.IO_0)OTE(ULC2_12_S2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 10: XIC(ULC3_4_FIO1:I.Pt08.Data)OTE(ULC3_3_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 11: XIC(ULC3_4_FIO1:I.Pt12.Data)OTE(ULC3_3_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 12: XIC(ULC3_6_FIO1:I.Pt08.Data)OTE(ULC3_6_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 13: XIC(ULC3_6_FIO1:I.Pt12.Data)OTE(ULC3_6_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 14: XIC(ULC4_4_FIO1:I.Pt08.Data)OTE(ULC4_3_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 15: XIC(ULC4_4_FIO1:I.Pt12.Data)OTE(ULC4_3_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 16: XIC(ULC4_6_FIO1:I.Pt10.Data)OTE(ULC4_6_SS1_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 17: XIC(ULC4_6_FIO1:I.Pt14.Data)OTE(ULC4_6_SS2_SPB); [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generated 17 total rungs [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_jr_pb [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_jr_pb [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Plugin station_s_pb cannot generate with current data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_ss_pb [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_ss_pb [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_epc [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_epc [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: jpe [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: jpe [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fpe [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fpe [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Plugin pmm cannot generate with current data [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: cb_monitor [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: cb_monitor [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: belt_tracking [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: belt_tracking [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'fiom': True, 'fioh': True, 'apf': True, 'flow_ctrl': True, 'speed_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': False, 'station_ss_pb': True, 'station_epc': True, 'jpe': True, 'fpe': True, 'pmm': False, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True} [20:32:52] [INFO] [logging_config.py:126:_log_with_context] Routines created (19): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R031_FIOH, R040_APF, R050_FLOW_CTRL, R051_SPEED_CTRL, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R092_STATION_SS_PB, R093_STATION_EPC, R100_JPE, R101_FPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 4 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R030_FIOM: 8 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R031_FIOH: 2 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 29 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R050_FLOW_CTRL: 24 rungs | example: XIC(ULC1_4_VFD1.CTRL.STS.Enabled)OTE(ULC1_3_VFD1.CTRL.CMD.Interlock); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R051_SPEED_CTRL: 1 rungs | example: [MOVE(Speed_350_FPM,ULC1_3_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,ULC1_4_VFD1.CTRL.CMD.Speed_FPM) ,MOVE(Speed_350_FPM,ULC1_5_VFD1.CTRL.CMD.Speed_FPM) ,... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 16 rungs | example: [XIO(ULC1_3_VFD1:SI.In00Data) ,XIO(ULC1_3_VFD1:SI.In01Data) ]XIO(ULC1_3_VFD1:SO.STOOutput)XIO(ULC1_4_VFD1:SO.STOOutput)XIO(ULC1_5_VFD1:SO.STOOutput)XIO(ULC1_... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R080_ENCODER: 12 rungs | example: AOI_ENCODER(ULC1_10_ENCODER.AOI,ULC1_10_ENCODER.HMI,ULC1_10_ENCODER.CTRL,ULC1_10_VFD1.CTRL,NO_UPSTREAM,ULC1_11_VFD1.CTRL,ULC1_10_VFD1:I.In_1,ULC1_10_VFD1:I.C... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 18 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R090_STATION_JR_PB: 8 rungs | example: AOI_STATION_JR_PB(ULC1_7_JR1_PB.AOI,ULC1_7_JR1_PB.HMI,ULC1_7_JR1_PB.CTRL,NO_PARTNER,ULC1_7_VFD1:I.IO_0,ULC1_7_VFD1:O.IO_1,MCM.CTRL)MOVE(ULC1_7_JR1_PB.CTRL.ST... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R092_STATION_SS_PB: 10 rungs | example: AOI_STATION_SS_PB(ULC1_3_SS1_STATION.AOI,ULC1_3_SS1_STATION.HMI,ULC1_3_SS1_STATION.CTRL,ULC1_3_VFD1.CTRL,ULC1_4_FIO1:I.ConnectionFaulted,ULC1_4_FIO1:I.Pt02.D... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R093_STATION_EPC: 14 rungs | example: AOI_STATION_EPC(ULC1_3_EPC1_STATION.AOI,MCM.CTRL,ULC1_3_EPC1_STATION.HMI,ULC1_3_SS2_STATION.CTRL,ULC1_3_VFD1:I.ConnectionFaulted,ULC1_3_VFD1:SI.In00Data,ULC1... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R100_JPE: 30 rungs | example: AOI_JPE(ULC1_4_TPE1.AOI,ULC1_4_TPE1.HMI,ULC1_4_TPE1.CTRL,ULC1_4_VFD1.CTRL,ULC1_7_JR1_PB.CTRL,ULC1_4_VFD1:I.ConnectionFaulted,ULC1_4_VFD1:I.In_2,YES,ULC1_4_FI... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R101_FPE: 4 rungs | example: AOI_FPE(ULC1_2_PE1.AOI,ULC1_2_PE1.HMI,ULC1_2_PE1.CTRL,ULC1_2_VFD1.CTRL,ULC1_2_VFD1:I.ConnectionFaulted,ULC1_3_VFD1:I.In_2,ULC1_2_FIOH1:O.ProcessDataOut.Conne... [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - R070_CB_MONITOR: 2 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_BeltTracking: 29 rungs | example: NOP(); [20:32:52] [INFO] [logging_config.py:126:_log_with_context] - MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R030_FIOM,0) ,JSR(R031_FIOH,0) ,JSR(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R051_SPEED_CTRL,0) ,JSR(... [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/MainProgram_Generated.L5X [20:32:52] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/MainProgram_Generated.L5X [20:32:52] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping... [20:32:52] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper [20:32:52] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance [20:32:52] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SafetyTagMapping.txt [20:32:52] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 17 [20:32:52] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! === {"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-09-04T20:32:53.007672", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} === Step 3: IO Tree Generator stdout === Enhanced MCM Generator - Project: SAT9_MCM01 - Excel: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/DESC_IP_MERGED.xlsx - Boilerplate: SAT9_boilerplate - Mode: Single file -------------------------------------------------- INFO: Found 1 rows with empty PARTNUMBER (will attempt inference): Row 2: TAGNAME='ULC1_3_PLC', PARTNUMBER='[EMPTY]', DESC='', TERM='' Created 1 FIOH modules based on TERM analysis Found 7 IOLM modules Found 28 APF modules Found 3 DPM modules WARNING: 6 unknown modules found 1. PDP1_PMM1 - POWER MONITOR MODULE (11.200.1.83) 2. ULC1_1_TIPPER - PIONEER (11.200.1.30) 3. ULC1_3_PLC - (11.200.1.43) 4. ULC2_1_TIPPER - PIONEER (11.200.1.50) 5. ULC3_1_TIPPER - PIONEER (11.200.1.70) 6. ULC4_1_TIPPER - PIONEER (11.200.1.74) Created 7 IOLM modules with boilerplate selection: Device 'PDP1_FIOM1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) PDP1_FIOM1 (FIO PDP_FIO): Using variant boilerplate PDP_FIO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIO_Module.L5X Device 'ULC1_4_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC1_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC1_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC1_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC1_4_FIO1_Module.L5X Device 'ULC2_4_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC2_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC2_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC2_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC2_4_FIO1_Module.L5X Device 'ULC3_4_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC3_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC3_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_4_FIO1_Module.L5X Device 'ULC3_6_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC3_6_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC3_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC3_6_FIO1_Module.L5X Device 'ULC4_4_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC4_4_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC4_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_4_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_4_FIO1_Module.L5X Device 'ULC4_6_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) ULC4_6_FIO1 (FIO D2CMaster): Using module-specific boilerplate ULC4_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_6_FIO1_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/ULC4_6_FIO1_Module.L5X Device 'ULC1_10_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_11_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_12_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Device 'ULC1_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_5_HP.L5X Device 'ULC1_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Device 'ULC1_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Device 'ULC1_9A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC1_9B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_10_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_11_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_12_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Device 'ULC2_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Device 'ULC2_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Device 'ULC2_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_9A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC2_9B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC3_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC3_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Device 'ULC3_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_3_HP.L5X Device 'ULC4_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Device 'ULC4_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_7_5_HP.L5X Device 'ULC4_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: SAT9_boilerplate/APF_Module_2_HP.L5X PDP1_FIOH1 (FIOH PDP_FIOH): Using variant boilerplate PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/PDP_FIOH_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT5_IB16_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT7_IB16S_Module.L5X Successfully loaded boilerplate: SAT9_boilerplate/SLOT6_OB16E_Module.L5X No EN4TR modules registered for creation Importing AOIs/DataTypes from MCM base: SAT9_boilerplate/MCM01.L5X Archived old L5X: SAT9_MCM01_20250904_202147.L5X Programs already exist (2 programs found), skipping empty program creation OK: Generated project: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SAT9_MCM01_20250904_203256.L5X Single file generation complete - ['/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SAT9_MCM01_20250904_203256.L5X'] === Step 3 Batch Script Creation === Creating project folder compilation for: SAT9_MCM01 Source L5X: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01/SAT9_MCM01_20250904_203256.L5X Project directory: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/SAT9_MCM01 Generated batch file: compile_SAT9_MCM01.bat SUCCESS: Project compilation ready! To compile on Windows: cd "C:\\Users\\ilia.gurielidze\\Projects\\PLC Generation\\generated_projects\\SAT9_MCM01" compile_SAT9_MCM01.bat