{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-09-01T14:18:58.953063", "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/MTN6_MCM06.xlsx", "project_name": "MTN6_MCM06"} {"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-09-01T14:18:58.953363", "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: ['Templates', 'Devices', 'Instructions', 'NETWORK(IOLINK)', 'NETWORK(EIP)', 'Part Number', 'IO Assignment MCM06', 'MCM06_DESC', 'DESC_PLC', 'NETWORK_PLC'] Found DESC sheet: DESC_PLC Found NETWORK sheet: NETWORK_PLC DESC columns: ['TAGNAME', 'TERM', 'DESCA', 'DESCB', 'Unnamed: 4'] NETWORK columns: ['DPM', 'DPM_IP', 'Name', 'PartNumber', 'IP'] Classifying signals and adding IO paths... Signal classification results: I: 582 SPARE: 573 O: 276 IOLink: 204 Device type distribution: M12DR: 640 Hub: 528 APF: 387 SIO: 32 IB16: 16 OB16E: 16 IB16S: 16 IO Path mapping results: Successful mappings: 1610/1635 (98.5%) Found 25 entries with missing IO path mappings. Found 3 TAGNAMEs present in DESC but not in NETWORK_PLC. Adding unique DPM names not present in DESC or NETWORK_PLC.Name: ['NCP1_15_DPM1', 'NCS1_6_DPM1', 'NCS1_DPM1', 'NCS1_DPM2', 'NCS2_4_DPM1', 'NCS2_DPM1', 'NCS2_DPM2'] ================================================================================ WARNING: The following issues were found but processing will continue: ================================================================================ - On device 'S02_1_SIO1' (SIO), cannot connect signal 'I' to channel number 'IO4'. (DESCA: 'S02_1_ENC1') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO5'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO6'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO7'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO8'. (DESCA: 'S02_1_VFD1_STO') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO9'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO10'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO11'. (DESCA: 'SPARE') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO12'. (DESCA: 'S02_1_BCN1_A') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO13'. (DESCA: 'S02_1_BCN1_B') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO14'. (DESCA: 'S02_1_BCN1_H') - On device 'S02_1_SIO1' (SIO), cannot connect signal 'I' to channel number 'IO15'. (DESCA: 'S02_1CH_JPE1') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'I' to channel number 'IO4'. (DESCA: 'S02_2_ENC1') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO5'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO6'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO7'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO8'. (DESCA: 'S02_2_VFD1_STO') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO9'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO10'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'SPARE' to channel number 'IO11'. (DESCA: 'SPARE') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO12'. (DESCA: 'S02_2_BCN1_A') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO13'. (DESCA: 'S02_2_BCN1_B') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'O' to channel number 'IO14'. (DESCA: 'S02_2_BCN1_H') - On device 'S02_2_SIO1' (SIO), cannot connect signal 'I' to channel number 'IO15'. (DESCA: 'S02_2CH_JPE1') - On device 'NCP1_20_FIO1' (M12DR), cannot connect signal 'I' to channel number 'IO15'. (DESCA: 'NCP1_20_PE5') - 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 1646 rows Sample of merged data: TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH 0 S02_1_SIO1 IO0 S02_1_TPE1 ... I SIO S02_1_SIO1_Data.Inputs.X7_A 1 S02_1_SIO1 IO1 SPARE ... SPARE SIO S02_1_SIO1_Data.Inputs.X7_B 2 S02_1_SIO1 IO10 SPARE ... SPARE SIO None 3 S02_1_SIO1 IO11 SPARE ... SPARE SIO None 4 S02_1_SIO1 IO12 SPARE ... SPARE SIO None 5 S02_1_SIO1 IO13 SPARE ... SPARE SIO None 6 S02_1_SIO1 IO14 SPARE ... SPARE SIO None 7 S02_1_SIO1 IO15 SPARE ... SPARE SIO None 8 S02_1_SIO1 IO2 S02_1_BDS2 ... I SIO S02_1_SIO1_Data.Inputs.X8_A 9 S02_1_SIO1 IO3 SPARE ... SPARE SIO S02_1_SIO1_Data.Inputs.X8_B [10 rows x 12 columns] New Excel file created: MTN6_MCM06_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/MTN6_MCM06.xlsx DEBUG: Full project pattern matched: MTN6_MCM06 DEBUG: Final subsystem name: MTN6_MCM06 Reading input file: MTN6_MCM06_DESC_IP_MERGED.xlsx Removed 32 SPARE rows following FIO[number]H entries Removed 171 SPARE rows following IOLink SOL entries Removed 204 IOLink rows (including beacons, FIOH channels, and all other IOLink entries) Added 2736 rows for solenoid valves Removed 11 blank name/description rows Saving output file: MTN6_MCM06_OUTPUT.csv Processing complete! Created standard output file: DESC_IP_MERGED.xlsx === Step 1: PLC Data Generator stderr === === Step 1 File Copy === Copied MTN6_MCM06_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-01T14:19:02.468793", "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-01T14:19:02.469006", "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_MTN6_MCM06_20250901_141858.log", "timestamp": "2025-09-01T14:19:04.057909", "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-01T14:19:04.059834", "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-01T14:19:04.060028", "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-01T14:19:04.072501", "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-01T14:19:04.072774", "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-01T14:19:04.072951", "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-01T14:19:04.082910", "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-01T14:19:04.087693", "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-01T14:19:04.090835", "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-01T14:19:04.093920", "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-01T14:19:04.097416", "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-01T14:19:04.101225", "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-01T14:19:04.104527", "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-01T14:19:04.111106", "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-01T14:19:04.115209", "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-01T14:19:04.118749", "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-01T14:19:04.121961", "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-01T14:19:04.125470", "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-01T14:19:04.128973", "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-01T14:19:04.132491", "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-01T14:19:04.136080", "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-01T14:19:04.139246", "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-01T14:19:04.142611", "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-01T14:19:04.146105", "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-01T14:19:04.149333", "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-01T14:19:04.152757", "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-01T14:19:04.155957", "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-01T14:19:04.159534", "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-01T14:19:04.163015", "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-01T14:19:04.166931", "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-01T14:19:04.170630", "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-01T14:19:04.174312", "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-01T14:19:04.178502", "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-01T14:19:04.182197", "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-01T14:19:04.186042", "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-01T14:19:04.189379", "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-01T14:19:04.192841", "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-01T14:19:04.193064", "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-01T14:19:04.955098", "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-01T14:19:04.962507", "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-01T14:19:04.966362", "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-01T14:19:04.967965", "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-01T14:19:05.035314", "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": "MCM06", "score": 12} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-01T14:19:05.035857", "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": 6} {"level": "INFO", "message": "Successfully generated routine: outputs", "timestamp": "2025-09-01T14:19:05.037075", "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-01T14:19:05.037260", "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-01T14:19:05.042293", "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-01T14:19:05.042627", "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 NCP1_15: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.043746", "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 NCP1_21: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.044253", "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 NCP1_9: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.044662", "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 NCS1_4: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.044989", "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 NCS1_4: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.045311", "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 S02_1: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.045621", "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 NCS2_2: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.045970", "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 S02_2: {'EPC2', 'EPC1'}", "timestamp": "2025-09-01T14:19:05.046308", "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: {'NCP1_15': {'EPC2', 'EPC1'}, 'NCP1_21': {'EPC2', 'EPC1'}, 'NCP1_9': {'EPC2', 'EPC1'}, 'NCS1_4': {'EPC2', 'EPC1'}, 'S02_1': {'EPC2', 'EPC1'}, 'NCS2_2': {'EPC2', 'EPC1'}, 'S02_2': {'EPC2', 'EPC1'}}", "timestamp": "2025-09-01T14:19:05.046461", "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 06-01 candidates: ['NCP1_9', 'NCP1_10', 'NCP1_11', 'NCP1_12', 'NCP1_13', 'NCP1_14', 'NCP1_15', 'NCP1_16', 'NCP1_17', 'NCP1_18', 'NCP1_19', 'NCP1_20']", "timestamp": "2025-09-01T14:19:05.046968", "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 NCP1_10 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047152", "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 NCP1_11 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047273", "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 NCP1_12 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047383", "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 NCP1_13 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047485", "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 NCP1_14 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047586", "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 NCP1_16 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047692", "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 NCP1_17 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047793", "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 NCP1_18 in zone 06-01", "timestamp": "2025-09-01T14:19:05.047906", "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 NCP1_19 in zone 06-01", "timestamp": "2025-09-01T14:19:05.048062", "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 NCP1_20 in zone 06-01", "timestamp": "2025-09-01T14:19:05.048179", "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-01T14:19:05.048294", "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": "06-01", "interlock": "MCM06", "dcs_list": ["NCP1_9_EPC1_DCS_CTRL.O1", "NCP1_9_EPC2_DCS_CTRL.O1", "NCP1_15_EPC1_DCS_CTRL.O1", "NCP1_15_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 06-02 candidates: ['NCS1_1', 'NCS1_2', 'NCS1_3', 'NCS1_4', 'NCS1_5', 'NCS1_6', 'NCS1_7', 'NCS1_8', 'NCS1_9']", "timestamp": "2025-09-01T14:19:05.048620", "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 NCS1_1 in zone 06-02", "timestamp": "2025-09-01T14:19:05.048757", "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 NCS1_2 in zone 06-02", "timestamp": "2025-09-01T14:19:05.048868", "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 NCS1_3 in zone 06-02", "timestamp": "2025-09-01T14:19:05.048973", "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 NCS1_5 in zone 06-02", "timestamp": "2025-09-01T14:19:05.049082", "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 NCS1_6 in zone 06-02", "timestamp": "2025-09-01T14:19:05.049186", "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 NCS1_7 in zone 06-02", "timestamp": "2025-09-01T14:19:05.049290", "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 NCS1_8 in zone 06-02", "timestamp": "2025-09-01T14:19:05.049406", "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 NCS1_9 in zone 06-02", "timestamp": "2025-09-01T14:19:05.049509", "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-01T14:19:05.049619", "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": "06-02", "interlock": "MCM06", "dcs_list": ["NCS1_4_EPC1_DCS_CTRL.O1", "NCS1_4_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 06-03 candidates: ['NCP1_21', 'NCS2_1', 'NCS2_2', 'NCS2_3', 'NCS2_4', 'NCS2_5', 'NCS2_6', 'NCS2_7']", "timestamp": "2025-09-01T14:19:05.049992", "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 NCS2_1 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050194", "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 NCS2_3 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050322", "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 NCS2_4 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050427", "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 NCS2_5 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050532", "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 NCS2_6 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050635", "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 NCS2_7 in zone 06-03", "timestamp": "2025-09-01T14:19:05.050738", "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-01T14:19:05.050844", "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": "06-03", "interlock": "MCM06", "dcs_list": ["NCP1_21_EPC1_DCS_CTRL.O1", "NCP1_21_EPC2_DCS_CTRL.O1", "NCS2_2_EPC1_DCS_CTRL.O1", "NCS2_2_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 06-04 candidates: ['S02_1']", "timestamp": "2025-09-01T14:19:05.051131", "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-01T14:19:05.051286", "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": "06-04", "interlock": "MCM06", "dcs_list": ["S02_1_EPC1_DCS_CTRL.O1", "S02_1_EPC2_DCS_CTRL.O1"]} {"level": "DEBUG", "message": "Zone 06-05 candidates: ['S02_2']", "timestamp": "2025-09-01T14:19:05.051557", "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-01T14:19:05.051697", "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": "06-05", "interlock": "MCM06", "dcs_list": ["S02_2_EPC1_DCS_CTRL.O1", "S02_2_EPC2_DCS_CTRL.O1"]} {"level": "INFO", "message": "Successfully generated routine: zones", "timestamp": "2025-09-01T14:19:05.051843", "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-01T14:19:05.051982", "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-01T14:19:05.054267", "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-01T14:19:05.054523", "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 11 tags", "timestamp": "2025-09-01T14:19:05.058658", "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-01T14:19:05.058884", "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: 49 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-09-01T14:19:05.059058", "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: 3 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_06_01_OK)[OTE(NCP1_9_VFD1:SO.STOOutput),OTE(NCP1_10A_VFD1:SO.STOOutput),OTE(NCP1_10B_VFD1:SO.STOOutput),OTE(NCP1_11_VFD1:SO.STOOut...", "timestamp": "2025-09-01T14:19:05.059178", "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: 14 rungs | example: [XIC(SFT_NCP1_9_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_NCP1_9_EPC1_ESTOP);", "timestamp": "2025-09-01T14:19:05.059318", "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: 6 rungs | example: XIC(NCP1_9_EPC1_DCS_CTRL.O1)XIC(NCP1_9_EPC2_DCS_CTRL.O1)XIC(NCP1_15_EPC1_DCS_CTRL.O1)XIC(NCP1_15_EPC2_DCS_CTRL.O1)OTE(EStop_06_01_OK);", "timestamp": "2025-09-01T14:19:05.059483", "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: 17 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-01T14:19:05.059745", "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-01T14:19:05.059916", "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-01T14:19:05.060054", "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/MTN6_MCM06/SafetyProgram_Generated.L5X", "timestamp": "2025-09-01T14:19:05.062411", "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/MTN6_MCM06/SafetyProgram_Generated.L5X", "timestamp": "2025-09-01T14:19:05.062592", "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-01T14:19:05.062754", "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-01T14:19:05.062894", "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-01T14:19:05.063136", "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-01T14:19:05.063311", "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-01T14:19:05.063509", "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-01T14:19:05.209215", "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-01T14:19:05.278622", "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": "MCM06", "score": 12} {"level": "DEBUG", "message": "Zones: loaded", "timestamp": "2025-09-01T14:19:05.279262", "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": 6} {"level": "DEBUG", "message": "Extracting PMM data", "timestamp": "2025-09-01T14:19:05.460997", "module": "DataLoader", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "data_extraction", "type": "PMM"} {"level": "INFO", "message": "Data: PMM entries=1", "timestamp": "2025-09-01T14:19:05.462311", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "PMM processing PDP8_PMM1", "timestamp": "2025-09-01T14:19:05.462750", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "PMM PDP8_PMM1 DPM=NCS1_6_DPM1", "timestamp": "2025-09-01T14:19:05.462985", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "PMM PDP8_PMM1 PWM fault IO PDP8_FIO1:I.Pt12.Data", "timestamp": "2025-09-01T14:19:05.463767", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "PMM PDP8_PMM1 configuration stored", "timestamp": "2025-09-01T14:19:05.463951", "module": "DataLoader", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Data: PMM configs=1", "timestamp": "2025-09-01T14:19:05.464130", "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-01T14:19:05.464299", "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-01T14:19:05.466079", "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 PDP8: CBs=26 FIOs=2", "timestamp": "2025-09-01T14:19:05.466259", "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 PDP8: configured CBs=26 positions=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] fault=PDP8_FIO1:I.ConnectionFaulted", "timestamp": "2025-09-01T14:19:05.466546", "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-01T14:19:05.466728", "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=327 | standard=25 safety=78 dcs=15 modules=201", "timestamp": "2025-09-01T14:19:05.467751", "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 327 controller tags", "timestamp": "2025-09-01T14:19:05.468010", "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-01T14:19:05.468224", "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-01T14:19:05.468425", "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-01T14:19:05.468593", "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-01T14:19:05.468762", "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-01T14:19:05.468948", "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-01T14:19:05.469134", "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-01T14:19:05.470436", "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-01T14:19:05.470671", "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-01T14:19:05.473167", "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-01T14:19:05.473871", "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-01T14:19:05.475831", "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-01T14:19:05.476290", "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-01T14:19:05.477800", "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-01T14:19:05.478217", "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-01T14:19:05.481454", "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-01T14:19:05.481664", "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-01T14:19:05.482092", "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-01T14:19:05.482278", "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 11 rows", "timestamp": "2025-09-01T14:19:05.482477", "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: MCM06 -> Local:5:I.Data.0", "timestamp": "2025-09-01T14:19:05.482776", "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: NCP1_9_S1_PB -> NCP1_10A_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.483188", "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: NCP1_9_S2_PB -> NCP1_10B_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.483490", "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: NCP1_15_S2_PB -> NCP1_14B_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.483733", "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: NCP1_15_S1_PB -> NCP1_14C_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.483965", "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: NCP1_21_S2_PB -> NCP1_18B_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.484208", "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: NCP1_21_S1_PB -> NCP1_19_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.484431", "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: NCS1_4_S1_PB -> NCS1_2_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.484642", "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: NCS1_4_S2_PB -> NCS1_5B_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.484879", "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: NCS2_2_S1_PB -> NCS2_2_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.485104", "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: NCS2_2_S2_PB -> NCS2_3A_VFD1:I.IO_0", "timestamp": "2025-09-01T14:19:05.485329", "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 11 rungs", "timestamp": "2025-09-01T14:19:05.485512", "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(MCM06);", "timestamp": "2025-09-01T14:19:05.485659", "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(NCP1_10A_VFD1:I.IO_0)OTE(NCP1_9_S1_PB);", "timestamp": "2025-09-01T14:19:05.485821", "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(NCP1_10B_VFD1:I.IO_0)OTE(NCP1_9_S2_PB);", "timestamp": "2025-09-01T14:19:05.485982", "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(NCP1_14C_VFD1:I.IO_0)OTE(NCP1_15_S1_PB);", "timestamp": "2025-09-01T14:19:05.486129", "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(NCP1_14B_VFD1:I.IO_0)OTE(NCP1_15_S2_PB);", "timestamp": "2025-09-01T14:19:05.486293", "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(NCP1_19_VFD1:I.IO_0)OTE(NCP1_21_S1_PB);", "timestamp": "2025-09-01T14:19:05.486415", "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(NCP1_18B_VFD1:I.IO_0)OTE(NCP1_21_S2_PB);", "timestamp": "2025-09-01T14:19:05.486555", "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(NCS1_2_VFD1:I.IO_0)OTE(NCS1_4_S1_PB);", "timestamp": "2025-09-01T14:19:05.486720", "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(NCS1_5B_VFD1:I.IO_0)OTE(NCS1_4_S2_PB);", "timestamp": "2025-09-01T14:19:05.486890", "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(NCS2_2_VFD1:I.IO_0)OTE(NCS2_2_S1_PB);", "timestamp": "2025-09-01T14:19:05.487193", "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(NCS2_3A_VFD1:I.IO_0)OTE(NCS2_2_S2_PB);", "timestamp": "2025-09-01T14:19:05.487362", "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 11 total rungs", "timestamp": "2025-09-01T14:19:05.487586", "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-01T14:19:05.487773", "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-01T14:19:05.487968", "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-01T14:19:05.488312", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: station_s_pb", "timestamp": "2025-09-01T14:19:05.488488", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: station_s_pb", "timestamp": "2025-09-01T14:19:05.488769", "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_ss_pb cannot generate with current data", "timestamp": "2025-09-01T14:19:05.488922", "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-01T14:19:05.489096", "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-01T14:19:05.489470", "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-01T14:19:05.489642", "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-01T14:19:05.490075", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "DEBUG", "message": "Generating routine: pmm", "timestamp": "2025-09-01T14:19:05.490243", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} {"level": "INFO", "message": "Successfully generated routine: pmm", "timestamp": "2025-09-01T14:19:05.490483", "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-01T14:19:05.490661", "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-01T14:19:05.490927", "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-01T14:19:05.491434", "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-01T14:19:05.492788", "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-01T14:19:05.492987", "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-01T14:19:05.493430", "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-01T14:19:05.493644", "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-01T14:19:05.493830", "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, 'apf': True, 'flow_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': True, 'station_ss_pb': False, 'station_epc': True, 'jpe': True, 'pmm': True, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True}", "timestamp": "2025-09-01T14:19:05.494005", "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 (17): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R040_APF, R050_FLOW_CTRL, R060_PMM, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R095_STATION_S_PB, R097_STATION_EPC, R100_JPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking", "timestamp": "2025-09-01T14:19:05.494183", "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-01T14:19:05.494346", "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-01T14:19:05.494500", "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: 8 rungs | example: NOP();", "timestamp": "2025-09-01T14:19:05.494630", "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: 43 rungs | example: NOP();", "timestamp": "2025-09-01T14:19:05.494758", "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: 37 rungs | example: NOP();", "timestamp": "2025-09-01T14:19:05.494911", "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: 26 rungs | example: XIC(NCP1_11_VFD1.CTRL.STS.Enabled)OTE(NCP1_9_VFD1.CTRL.CMD.Interlock);", "timestamp": "2025-09-01T14:19:05.495035", "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(NCP1_9_VFD1:SI.In00Data) ,XIO(NCP1_9_VFD1:SI.In01Data) ]XIO(NCP1_9_VFD1:SO.STOOutput)XIO(NCP1_10A_VFD1:SO.STOOutput)XIO(NCP1_10B_VFD1:SO.STOOutput)XIO(N...", "timestamp": "2025-09-01T14:19:05.495184", "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: 17 rungs | example: AOI_ENCODER(NCP1_13_ENCODER.AOI,NCP1_13_ENCODER.HMI,NCP1_13_ENCODER.CTRL,NCP1_13_VFD1.CTRL,NCP1_12_VFD1.CTRL,NO_DOWNSTREAM,NCP1_13_VFD1:I.In_1,NCP1_13_VFD1:I...", "timestamp": "2025-09-01T14:19:05.495349", "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: 12 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-09-01T14:19:05.495491", "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: 6 rungs | example: AOI_STATION_JR_PB(NCP1_16_JR1_PB.AOI,NCP1_16_JR1_PB.HMI,NCP1_16_JR1_PB.CTRL,NO_PARTNER,NCP1_16_VFD1:I.IO_0,NCP1_16_VFD1:O.IO_1)MOVE(NCP1_16_JR1_PB.CTRL.STS.L...", "timestamp": "2025-09-01T14:19:05.495625", "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": "- R095_STATION_S_PB: 10 rungs | example: AOI_STATION_S_PB(NCP1_15_S1_PB_STATION.AOI,NCP1_15_S1_PB_STATION.HMI,NCP1_15_S1_PB_STATION.CTRL,NCP1_15_VFD1.CTRL,NCP1_14C_VFD1:I.IO_0,NCP1_14C_VFD1:O.IO_1);", "timestamp": "2025-09-01T14:19:05.495770", "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": "- R097_STATION_EPC: 14 rungs | example: AOI_STATION_EPC(NCP1_15_EPC1_STATION.AOI,MCM.CTRL,NCP1_15_EPC1_STATION.HMI,NCP1_15_S2_PB_STATION.CTRL,NCP1_15_VFD1:I.ConnectionFaulted,NCP1_15_VFD1:SI.In00Da...", "timestamp": "2025-09-01T14:19:05.495909", "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: 29 rungs | example: AOI_JPE(NCP1_12_TPE1.AOI,NCP1_12_TPE1.HMI,NCP1_12_TPE1.CTRL,NCP1_12_VFD1.CTRL,?,NCP1_12_VFD1:I.ConnectionFaulted,NCP1_12_VFD1:I.In_2,YES,?);", "timestamp": "2025-09-01T14:19:05.496074", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"} {"level": "INFO", "message": "- R060_PMM: 2 rungs | example: NOP();", "timestamp": "2025-09-01T14:19:05.496231", "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-01T14:19:05.496398", "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: 39 rungs | example: NOP();", "timestamp": "2025-09-01T14:19:05.496564", "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(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R080_ENCODER,0) ,...", "timestamp": "2025-09-01T14:19:05.496722", "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-01T14:19:05.496867", "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/MTN6_MCM06/MainProgram_Generated.L5X", "timestamp": "2025-09-01T14:19:05.504453", "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/MTN6_MCM06/MainProgram_Generated.L5X", "timestamp": "2025-09-01T14:19:05.504633", "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-01T14:19:05.504805", "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-01T14:19:05.505002", "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-01T14:19:05.505166", "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/MTN6_MCM06/SafetyTagMapping.txt", "timestamp": "2025-09-01T14:19:05.641515", "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: 11", "timestamp": "2025-09-01T14:19:05.641735", "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-01T14:19:05.641914", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"} === Step 2: Routines Generator stdout === Found STATION_JR_PB config for NCP1_16_JR2_PB Found STATION_JR_PB config for NCP1_16_JR1_PB Found STATION_JR_PB config for NCS1_3_JR1_PB Found STATION_JR_PB config for S02_1_JR1_PB Found STATION_JR_PB config for S02_1_JR2_PB Found STATION_JR_PB config for S02_2_JR1_PB Found STATION_S_PB config for NCP1_9_S1_PB Found STATION_S_PB config for NCP1_9_S2_PB Found STATION_S_PB config for NCP1_15_S2_PB Found STATION_S_PB config for NCP1_15_S1_PB Found STATION_S_PB config for NCP1_21_S2_PB Found STATION_S_PB config for NCP1_21_S1_PB Found STATION_S_PB config for NCS1_4_S1_PB Found STATION_S_PB config for NCS1_4_S2_PB Found STATION_S_PB config for NCS2_2_S1_PB Found STATION_S_PB config for NCS2_2_S2_PB Found STATION_EPC config for NCP1_9_EPC1 Found STATION_EPC config for NCS1_4_EPC1 Found STATION_EPC config for S02_1_EPC1 Found STATION_EPC config for NCS2_2_EPC1 Found STATION_EPC config for S02_2_EPC1 Found STATION_EPC config for NCP1_15_EPC1 Found STATION_EPC config for NCP1_21_EPC1 Found STATION_EPC config for NCP1_9_EPC2 Found STATION_EPC config for NCS1_4_EPC2 Found STATION_EPC config for S02_1_EPC2 Found STATION_EPC config for NCS2_2_EPC2 Found STATION_EPC config for S02_2_EPC2 Found STATION_EPC config for NCP1_15_EPC2 Found STATION_EPC config for NCP1_21_EPC2 Found ENCODER config for NCP1_13_ENCODER (upstream: NCP1_12_VFD1.CTRL, downstream: NO_DOWNSTREAM) [WARNING] No VFD found for encoder NCP1_14_ENCODER with name NCP1_14_VFD1 Found ENCODER config for NCP1_17_ENCODER (upstream: NCP1_16_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for NCP1_19_ENCODER (upstream: NO_UPSTREAM, downstream: NCP1_20_VFD1.CTRL) Found ENCODER config for NCS1_2_ENCODER (upstream: NCS1_1_VFD1.CTRL, downstream: NCS1_3_VFD1.CTRL) Found ENCODER config for NCS1_4_ENCODER (upstream: NCS1_3_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for NCS1_6_ENCODER (upstream: NO_UPSTREAM, downstream: NCS1_7_VFD1.CTRL) Found ENCODER config for NCS1_7_ENCODER (upstream: NCS1_6_VFD1.CTRL, downstream: NCS1_8_VFD1.CTRL) Found ENCODER config for NCS1_8_ENCODER (upstream: NCS1_7_VFD1.CTRL, downstream: NCS1_9_VFD1.CTRL) Found ENCODER config for NCS1_9_ENCODER (upstream: NCS1_8_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for NCS2_2_ENCODER (upstream: NCS2_1_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for NCS2_4_ENCODER (upstream: NO_UPSTREAM, downstream: NCS2_5_VFD1.CTRL) Found ENCODER config for NCS2_5_ENCODER (upstream: NCS2_4_VFD1.CTRL, downstream: NCS2_6_VFD1.CTRL) Found ENCODER config for NCS2_6_ENCODER (upstream: NCS2_5_VFD1.CTRL, downstream: NCS2_7_VFD1.CTRL) Found ENCODER config for NCS2_7_ENCODER (upstream: NCS2_6_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found ENCODER config for NCP1_20_ENCODER (upstream: NCP1_19_VFD1.CTRL, downstream: NCP1_21_VFD1.CTRL) Found ENCODER config for NCP1_15_ENCODER (upstream: NO_UPSTREAM, downstream: NCP1_16_VFD1.CTRL) Found ENCODER config for NCP1_21_ENCODER (upstream: NCP1_20_VFD1.CTRL, downstream: NO_DOWNSTREAM) Found JPE config for S02_1_TPE1 Found JPE config for S02_2_TPE1 Found JPE config for NCP1_12_TPE1 (missing station, missing beacon) Found JPE config for NCP1_13_TPE1 (missing station, missing beacon) Found JPE config for NCP1_17_TPE1 (missing station, missing beacon) Found JPE config for NCP1_17_TPE2 (missing station, missing beacon) Found JPE config for NCP1_19_TPE1 (missing station, missing beacon) Found JPE config for NCP1_19_TPE2 (missing station, missing beacon) Found JPE config for NCP1_9_TPE1 (missing station, missing beacon) Found JPE config for NCS1_2_TPE1 (missing station, missing beacon) Found JPE config for NCS1_1_TPE1 (missing station, missing beacon) Found JPE config for NCS1_4_TPE1 (missing station, missing beacon) Found JPE config for NCS1_4_TPE2 (missing station, missing beacon) Found JPE config for NCS1_6_TPE1 (missing station, missing beacon) Found JPE config for NCS1_6_TPE2 (missing station, missing beacon) Found JPE config for NCS1_7_TPE1 (missing station, missing beacon) Found JPE config for NCS1_8_TPE1 (missing station, missing beacon) Found JPE config for NCS1_9_TPE1 (missing station, missing beacon) Found JPE config for NCS2_2_TPE1 (missing station) Found JPE config for NCS2_2_TPE2 (missing station) Found JPE config for NCS2_4_TPE1 (missing station, missing beacon) Found JPE config for NCS2_4_TPE2 (missing station, missing beacon) Found JPE config for NCS2_5_TPE1 (missing station, missing beacon) Found JPE config for NCS2_6_TPE1 (missing station, missing beacon) Found JPE config for NCS2_7_TPE1 (missing station, missing beacon) Found JPE config for NCP1_15_TPE1 (missing station) Found JPE config for NCP1_15_TPE2 (missing station) Found JPE config for NCP1_21_TPE1 (missing station, missing beacon) Found JPE config for NCP1_21_TPE2 (missing station, missing beacon) FIOM NCP1_20_FIO1 -> DPM NCP1_15_DPM1 FIOM PDP8_FIO1 -> DPM NCS1_6_DPM1 FIOM S02_1_FIO1 -> DPM NCS1_DPM1 FIOM S02_1_FIO2 -> DPM NCS1_DPM1 FIOM S02_1_FIO3 -> DPM NCS1_DPM1 FIOM S02_1_FIO4 -> DPM NCS1_DPM1 FIOM S02_1_FIO5 -> DPM NCS1_DPM2 FIOM S02_1_FIO6 -> DPM NCS1_DPM2 FIOM S02_1_FIO7 -> DPM NCS1_DPM2 FIOM S02_1_FIO8 -> DPM NCS1_DPM2 FIOM S02_1_FIO9 -> DPM NCS1_DPM1 FIOM S02_1_FIO10 -> DPM NCS1_DPM1 FIOM S02_1_FIO11 -> DPM NCS1_DPM1 FIOM S02_1_FIO12 -> DPM NCS1_DPM1 FIOM S02_1_FIO13 -> DPM NCS1_DPM1 FIOM S02_1_FIO14 -> DPM NCS1_DPM1 FIOM S02_1_FIO15 -> DPM NCS1_DPM2 FIOM S02_1_FIO16 -> DPM NCS1_DPM2 FIOM S02_1_FIO17 -> DPM NCS1_DPM2 FIOM S02_1_FIO18 -> DPM NCS1_DPM2 FIOM S02_1_FIO19 -> DPM NCS1_DPM2 FIOM S02_1_FIO20 -> DPM NCS1_DPM2 FIOM S02_2_FIO1 -> DPM NCS2_DPM1 FIOM S02_2_FIO2 -> DPM NCS2_DPM1 FIOM S02_2_FIO3 -> DPM NCS2_DPM1 FIOM S02_2_FIO4 -> DPM NCS2_DPM1 FIOM S02_2_FIO5 -> DPM NCS2_DPM2 FIOM S02_2_FIO6 -> DPM NCS2_DPM2 FIOM S02_2_FIO7 -> DPM NCS2_DPM2 FIOM S02_2_FIO8 -> DPM NCS2_DPM2 FIOM S02_2_FIO9 -> DPM NCS2_DPM1 FIOM S02_2_FIO10 -> DPM NCS2_DPM1 FIOM S02_2_FIO11 -> DPM NCS2_DPM1 FIOM S02_2_FIO12 -> DPM NCS2_DPM1 FIOM S02_2_FIO13 -> DPM NCS2_DPM1 FIOM S02_2_FIO14 -> DPM NCS2_DPM1 FIOM S02_2_FIO15 -> DPM NCS2_DPM2 FIOM S02_2_FIO16 -> DPM NCS2_DPM2 FIOM S02_2_FIO17 -> DPM NCS2_DPM2 FIOM S02_2_FIO18 -> DPM NCS2_DPM2 FIOM S02_2_FIO19 -> DPM NCS2_DPM2 FIOM S02_2_FIO20 -> DPM NCS2_DPM2 APF NCP1_9_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_10A_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_10B_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_11_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_12_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_13_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_14A_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_14B_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_14C_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_14D_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_15_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_16_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_17_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_18A_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_18B_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_19_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_20_VFD1 -> DPM NCP1_15_DPM1 APF NCP1_21_VFD1 -> DPM NCP1_15_DPM1 APF NCS1_1_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_2_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_3_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_4_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_5A_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_5B_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_6_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_7_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_8_VFD1 -> DPM NCS1_6_DPM1 APF NCS1_9_VFD1 -> DPM NCS1_6_DPM1 APF NCS2_1_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_2_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_3A_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_3B_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_4_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_5_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_6_VFD1 -> DPM NCS2_4_DPM1 APF NCS2_7_VFD1 -> DPM NCS2_4_DPM1 - Added 16 E-stop check rungs [R090_STATION_JR_PB] Starting STATION_JR_PB routine generation... Found 6 STATION_JR_PB configurations Generated 6 STATION_JR_PB rungs [R0100_JPE] Starting JPE routine generation... Found 29 JPE configurations Generated 29 JPE rungs Belt tracking for NCP1_9_VFD1 -> zzz_NCP1_9Tracking Belt tracking for NCP1_10A_VFD1 -> zzz_NCP1_10ATracking Belt tracking for NCP1_10B_VFD1 -> zzz_NCP1_10BTracking Belt tracking for NCP1_11_VFD1 -> zzz_NCP1_11Tracking Belt tracking for NCP1_12_VFD1 -> zzz_NCP1_12Tracking Belt tracking for NCP1_13_VFD1 -> zzz_NCP1_13Tracking Belt tracking for NCP1_14A_VFD1 -> zzz_NCP1_14ATracking Belt tracking for NCP1_14B_VFD1 -> zzz_NCP1_14BTracking Belt tracking for NCP1_14C_VFD1 -> zzz_NCP1_14CTracking Belt tracking for NCP1_14D_VFD1 -> zzz_NCP1_14DTracking Belt tracking for NCP1_15_VFD1 -> zzz_NCP1_15Tracking Belt tracking for NCP1_16_VFD1 -> zzz_NCP1_16Tracking Belt tracking for NCP1_17_VFD1 -> zzz_NCP1_17Tracking Belt tracking for NCP1_18A_VFD1 -> zzz_NCP1_18ATracking Belt tracking for NCP1_18B_VFD1 -> zzz_NCP1_18BTracking Belt tracking for NCP1_19_VFD1 -> zzz_NCP1_19Tracking Belt tracking for NCP1_20_VFD1 -> zzz_NCP1_20Tracking Belt tracking for NCP1_21_VFD1 -> zzz_NCP1_21Tracking Belt tracking for NCS1_1_VFD1 -> zzz_NCS1_1Tracking Belt tracking for NCS1_2_VFD1 -> zzz_NCS1_2Tracking Belt tracking for NCS1_3_VFD1 -> zzz_NCS1_3Tracking Belt tracking for NCS1_4_VFD1 -> zzz_NCS1_4Tracking Belt tracking for NCS1_5A_VFD1 -> zzz_NCS1_5ATracking Belt tracking for NCS1_5B_VFD1 -> zzz_NCS1_5BTracking Belt tracking for NCS1_6_VFD1 -> zzz_NCS1_6Tracking Belt tracking for NCS1_7_VFD1 -> zzz_NCS1_7Tracking Belt tracking for NCS1_8_VFD1 -> zzz_NCS1_8Tracking Belt tracking for NCS1_9_VFD1 -> zzz_NCS1_9Tracking Belt tracking for NCS2_1_VFD1 -> zzz_NCS2_1Tracking Belt tracking for NCS2_2_VFD1 -> zzz_NCS2_2Tracking Belt tracking for NCS2_3A_VFD1 -> zzz_NCS2_3ATracking Belt tracking for NCS2_3B_VFD1 -> zzz_NCS2_3BTracking Belt tracking for NCS2_4_VFD1 -> zzz_NCS2_4Tracking Belt tracking for NCS2_5_VFD1 -> zzz_NCS2_5Tracking Belt tracking for NCS2_6_VFD1 -> zzz_NCS2_6Tracking Belt tracking for NCS2_7_VFD1 -> zzz_NCS2_7Tracking Belt tracking for S02_1_VFD1 -> zzz_S02_1Tracking Belt tracking for S02_2_VFD1 -> zzz_S02_2Tracking - Added 38 belt tracking AOI calls Created safety tag mapping file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/SafetyTagMapping.txt === Step 2: Routines Generator stderr === [14:19:04] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_MTN6_MCM06_20250901_141858.log [14:19:04] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts === [14:19:04] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X... [14:19:04] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator [14:19:04] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation [14:19:04] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: belt_tracking (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: encoder (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_epc (safety) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_ss_pb (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_s_pb (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: taching_belts (device) [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety) [14:19:04] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines... [14:19:04] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs [14:19:04] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs [14:19:04] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs [14:19:04] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCP1_15: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCP1_21: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCP1_9: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCS1_4: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCS1_4: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for S02_1: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for NCS2_2: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Found DCS controllers for S02_2: {'EPC2', 'EPC1'} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Available DCS controllers: {'NCP1_15': {'EPC2', 'EPC1'}, 'NCP1_21': {'EPC2', 'EPC1'}, 'NCP1_9': {'EPC2', 'EPC1'}, 'NCS1_4': {'EPC2', 'EPC1'}, 'S02_1': {'EPC2', 'EPC1'}, 'NCS2_2': {'EPC2', 'EPC1'}, 'S02_2': {'EPC2', 'EPC1'}} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Zone 06-01 candidates: ['NCP1_9', 'NCP1_10', 'NCP1_11', 'NCP1_12', 'NCP1_13', 'NCP1_14', 'NCP1_15', 'NCP1_16', 'NCP1_17', 'NCP1_18', 'NCP1_19', 'NCP1_20'] [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_10 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_11 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_12 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_13 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_14 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_16 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_17 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_18 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_19 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCP1_20 in zone 06-01 [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Zone 06-02 candidates: ['NCS1_1', 'NCS1_2', 'NCS1_3', 'NCS1_4', 'NCS1_5', 'NCS1_6', 'NCS1_7', 'NCS1_8', 'NCS1_9'] [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_1 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_2 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_3 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_5 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_6 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_7 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_8 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS1_9 in zone 06-02 [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Zone 06-03 candidates: ['NCP1_21', 'NCS2_1', 'NCS2_2', 'NCS2_3', 'NCS2_4', 'NCS2_5', 'NCS2_6', 'NCS2_7'] [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_1 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_3 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_4 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_5 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_6 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] No DCS controllers found for base NCS2_7 in zone 06-03 [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Zone 06-04 candidates: ['S02_1'] [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Zone 06-05 candidates: ['S02_2'] [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: rung [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True} [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 11 tags [14:19:05] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 49 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 3 rungs | example: XIC(EStop_MCM_OK)XIC(EStop_06_01_OK)[OTE(NCP1_9_VFD1:SO.STOOutput),OTE(NCP1_10A_VFD1:SO.STOOutput),OTE(NCP1_10B_VFD1:SO.STOOutput),OTE(NCP1_11_VFD1:SO.STOOut... [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 14 rungs | example: [XIC(SFT_NCP1_9_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_NCP1_9_EPC1_ESTOP); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 6 rungs | example: XIC(NCP1_9_EPC1_DCS_CTRL.O1)XIC(NCP1_9_EPC2_DCS_CTRL.O1)XIC(NCP1_15_EPC1_DCS_CTRL.O1)XIC(NCP1_15_EPC2_DCS_CTRL.O1)OTE(EStop_06_01_OK); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 17 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); [14:19:05] [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) ]; [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/SafetyProgram_Generated.L5X [14:19:05] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/SafetyProgram_Generated.L5X [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X... [14:19:05] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags... [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: subsystem key [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: heuristic best match [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Zones: loaded [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Extracting PMM data [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Data: PMM entries=1 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] PMM processing PDP8_PMM1 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP8_PMM1 DPM=NCS1_6_DPM1 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP8_PMM1 PWM fault IO PDP8_FIO1:I.Pt12.Data [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] PMM PDP8_PMM1 configuration stored [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Data: PMM configs=1 [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Extracting CB_MONITOR data [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Data: CB PDPs=1 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP8: CBs=26 FIOs=2 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] CB_MONITOR PDP8: configured CBs=26 positions=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] fault=PDP8_FIO1:I.ConnectionFaulted [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Data: CB configs=1 [14:19:05] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=327 | standard=25 safety=78 dcs=15 modules=201 [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Added 327 controller tags [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines... [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: fiom [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: fiom [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: flow_ctrl [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: flow_ctrl [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: encoder [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: encoder [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: RST data has 11 rows [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: MCM06 -> Local:5:I.Data.0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_9_S1_PB -> NCP1_10A_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_9_S2_PB -> NCP1_10B_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_15_S2_PB -> NCP1_14B_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_15_S1_PB -> NCP1_14C_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_21_S2_PB -> NCP1_18B_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCP1_21_S1_PB -> NCP1_19_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCS1_4_S1_PB -> NCS1_2_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCS1_4_S2_PB -> NCS1_5B_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCS2_2_S1_PB -> NCS2_2_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag mapping: NCS2_2_S2_PB -> NCS2_3A_VFD1:I.IO_0 [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generating 11 rungs [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 1: XIC(Local:5:I.Data.0)OTE(MCM06); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 2: XIC(NCP1_10A_VFD1:I.IO_0)OTE(NCP1_9_S1_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 3: XIC(NCP1_10B_VFD1:I.IO_0)OTE(NCP1_9_S2_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 4: XIC(NCP1_14C_VFD1:I.IO_0)OTE(NCP1_15_S1_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 5: XIC(NCP1_14B_VFD1:I.IO_0)OTE(NCP1_15_S2_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 6: XIC(NCP1_19_VFD1:I.IO_0)OTE(NCP1_21_S1_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 7: XIC(NCP1_18B_VFD1:I.IO_0)OTE(NCP1_21_S2_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 8: XIC(NCS1_2_VFD1:I.IO_0)OTE(NCS1_4_S1_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 9: XIC(NCS1_5B_VFD1:I.IO_0)OTE(NCS1_4_S2_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 10: XIC(NCS2_2_VFD1:I.IO_0)OTE(NCS2_2_S1_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generated rung 11: XIC(NCS2_3A_VFD1:I.IO_0)OTE(NCS2_2_S2_PB); [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Safety tag map: Generated 11 total rungs [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_jr_pb [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_jr_pb [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_s_pb [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_s_pb [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Plugin station_ss_pb cannot generate with current data [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: station_epc [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: station_epc [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: jpe [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: jpe [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: pmm [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: pmm [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: cb_monitor [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: cb_monitor [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: belt_tracking [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: belt_tracking [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'fiom': True, 'apf': True, 'flow_ctrl': True, 'estop_check': True, 'encoder': True, 'safety_tag_map': True, 'station_jr_pb': True, 'station_s_pb': True, 'station_ss_pb': False, 'station_epc': True, 'jpe': True, 'pmm': True, 'cb_monitor': True, 'belt_tracking': True, 'main_routine': True} [14:19:05] [INFO] [logging_config.py:126:_log_with_context] Routines created (17): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R030_FIOM, R040_APF, R050_FLOW_CTRL, R060_PMM, R070_CB_MONITOR, R080_ENCODER, R090_STATION_JR_PB, R095_STATION_S_PB, R097_STATION_EPC, R100_JPE, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP, ZZZ_BeltTracking [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 8 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R030_FIOM: 43 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 37 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R050_FLOW_CTRL: 26 rungs | example: XIC(NCP1_11_VFD1.CTRL.STS.Enabled)OTE(NCP1_9_VFD1.CTRL.CMD.Interlock); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 16 rungs | example: [XIO(NCP1_9_VFD1:SI.In00Data) ,XIO(NCP1_9_VFD1:SI.In01Data) ]XIO(NCP1_9_VFD1:SO.STOOutput)XIO(NCP1_10A_VFD1:SO.STOOutput)XIO(NCP1_10B_VFD1:SO.STOOutput)XIO(N... [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R080_ENCODER: 17 rungs | example: AOI_ENCODER(NCP1_13_ENCODER.AOI,NCP1_13_ENCODER.HMI,NCP1_13_ENCODER.CTRL,NCP1_13_VFD1.CTRL,NCP1_12_VFD1.CTRL,NO_DOWNSTREAM,NCP1_13_VFD1:I.In_1,NCP1_13_VFD1:I... [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 12 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R090_STATION_JR_PB: 6 rungs | example: AOI_STATION_JR_PB(NCP1_16_JR1_PB.AOI,NCP1_16_JR1_PB.HMI,NCP1_16_JR1_PB.CTRL,NO_PARTNER,NCP1_16_VFD1:I.IO_0,NCP1_16_VFD1:O.IO_1)MOVE(NCP1_16_JR1_PB.CTRL.STS.L... [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R095_STATION_S_PB: 10 rungs | example: AOI_STATION_S_PB(NCP1_15_S1_PB_STATION.AOI,NCP1_15_S1_PB_STATION.HMI,NCP1_15_S1_PB_STATION.CTRL,NCP1_15_VFD1.CTRL,NCP1_14C_VFD1:I.IO_0,NCP1_14C_VFD1:O.IO_1); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R097_STATION_EPC: 14 rungs | example: AOI_STATION_EPC(NCP1_15_EPC1_STATION.AOI,MCM.CTRL,NCP1_15_EPC1_STATION.HMI,NCP1_15_S2_PB_STATION.CTRL,NCP1_15_VFD1:I.ConnectionFaulted,NCP1_15_VFD1:SI.In00Da... [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R100_JPE: 29 rungs | example: AOI_JPE(NCP1_12_TPE1.AOI,NCP1_12_TPE1.HMI,NCP1_12_TPE1.CTRL,NCP1_12_VFD1.CTRL,?,NCP1_12_VFD1:I.ConnectionFaulted,NCP1_12_VFD1:I.In_2,YES,?); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R060_PMM: 2 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - R070_CB_MONITOR: 2 rungs | example: NOP(); [14:19:05] [INFO] [logging_config.py:126:_log_with_context] - ZZZ_BeltTracking: 39 rungs | example: NOP(); [14:19:05] [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(R040_APF,0) ,JSR(R050_FLOW_CTRL,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R080_ENCODER,0) ,... [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/MainProgram_Generated.L5X [14:19:05] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/MainProgram_Generated.L5X [14:19:05] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping... [14:19:05] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper [14:19:05] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance [14:19:05] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/SafetyTagMapping.txt [14:19:05] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 11 [14:19:05] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! === {"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-09-01T14:19:05.700707", "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: MTN6_MCM06 - Excel: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/DESC_IP_MERGED.xlsx - Boilerplate: MTN6_boilerplate - Mode: Single file -------------------------------------------------- Created 33 FIOH modules based on TERM analysis Found 42 IOLM modules Found 171 Solenoid modules Found 36 APF modules Found 7 DPM modules Found 1 PMM modules WARNING: 2 unknown modules found 1. S2_1_VFD1 - 25B-D043N114 (11.200.1.115) 2. S2_2_VFD1 - 25B-D043N114 (11.200.1.137) Created 42 IOLM modules with boilerplate selection: Device 'NCP1_20_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) NCP1_20_FIO1 (FIO D2CMaster): Using module-specific boilerplate NCP1_20_FIO1_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/NCP1_20_FIO1_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/NCP1_20_FIO1_Module.L5X Device 'PDP8_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) PDP8_FIO1 (FIO PDP_FIO): Using variant boilerplate PDP_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/PDP_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/PDP_FIO_Module.L5X Device 'S02_1_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO1 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO10' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO10 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO11' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO11 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO12' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO12 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO13' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO13 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO14' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO14 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO15' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO15 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO16' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO16 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO17' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO17 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO18' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO18 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO19' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO19 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_1_FIO2' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO2 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO20' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO20 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO3' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO3 (FIO Sorter): Using module-specific boilerplate S02_1_FIO3_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_1_FIO3_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_1_FIO3_Module.L5X Device 'S02_1_FIO4' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO4 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO5' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO5 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO6' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO6 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO7' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO7 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO8' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO8 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_1_FIO9' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_1_FIO9 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO1 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO10' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO10 (FIO Sorter_Solenoid): Using module-specific boilerplate S02_2_FIO10_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_2_FIO10_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_2_FIO10_Module.L5X Device 'S02_2_FIO11' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO11 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO12' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO12 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO13' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO13 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO14' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO14 (FIO Sorter_Solenoid): Using module-specific boilerplate S02_2_FIO14_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_2_FIO14_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/S02_2_FIO14_Module.L5X Device 'S02_2_FIO15' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO15 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO16' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO16 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO17' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO17 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO18' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO18 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO19' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO19 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'S02_2_FIO2' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO2 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO20' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO20 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO3' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO3 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO4' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO4 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO5' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO5 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO6' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO6 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO7' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO7 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO8' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO8 (FIO Sorter): Using variant boilerplate Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOM_Module.L5X Device 'S02_2_FIO9' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) S02_2_FIO9 (FIO Sorter_Solenoid): Using variant boilerplate Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_Solenoid_FIO_Module.L5X Device 'NCP1_10A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_10B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_11_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_12_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_13_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_14A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_14B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_14C_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_14D_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_15_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X Device 'NCP1_16_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Device 'NCP1_17_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_18A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_18B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_19_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCP1_20_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Device 'NCP1_21_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X Device 'NCP1_9_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_3_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Device 'NCS1_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_5A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_5B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_8_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS1_9_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_1_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X Device 'NCS2_2_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_3A_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_3B_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_4_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_5_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_6_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Device 'NCS2_7_VFD1' matched no patterns, using fallback parent: SLOT2_EN4TR (Slot 2, IP 11.200.1.1) Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X Successfully loaded boilerplate: MTN6_boilerplate/PMM_Module.L5X PDP8_FIOH1 (FIOH PDP_FIOH): Using variant boilerplate PDP_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/PDP_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/PDP_FIOH_Module.L5X S02_1_FIO1H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO1H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO2H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO2H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO3H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO3H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO4H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO4H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO5H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO5H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO6H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO6H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO7H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO7H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO8H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_1_FIO8H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO1H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO1H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO2H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO2H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO3H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO3H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO4H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO4H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO5H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO5H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO6H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO6H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO7H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO7H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO8H1 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X S02_2_FIO8H2 (FIOH Sorter): Using variant boilerplate Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/Sorter_FIOH_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/SLOT5_IB16_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/SLOT7_IB16S_Module.L5X Successfully loaded boilerplate: MTN6_boilerplate/SLOT6_OB16E_Module.L5X No EN4TR modules registered for creation Importing AOIs/DataTypes from base: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/IO Tree Configuration Generator/BaseProgram.L5X Archived old L5X: MTN6_MCM06_20250831_222621.L5X Programs already exist (2 programs found), skipping empty program creation OK: Generated project: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/MTN6_MCM06_20250901_141910.L5X Single file generation complete - ['/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/MTN6_MCM06_20250901_141910.L5X'] === Step 3 Batch Script Creation === Creating project folder compilation for: MTN6_MCM06 Source L5X: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06/MTN6_MCM06_20250901_141910.L5X Project directory: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/generated_projects/MTN6_MCM06 Generated batch file: compile_MTN6_MCM06.bat SUCCESS: Project compilation ready! To compile on Windows: cd "C:\\Users\\ilia.gurielidze\\Projects\\PLC Generation\\generated_projects\\MTN6_MCM06" compile_MTN6_MCM06.bat