PLC_Generation/logs/workflow_MTN6_MCM02_20250818_123210.log
2025-08-18 13:20:34 +04:00

798 lines
81 KiB
Plaintext

{"level": "INFO", "message": "PLC Generation Workflow started", "timestamp": "2025-08-18T12:32:10.596021", "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": "PLC Data Generator/data/IO Assignment_MTN6_MCM02_COMPLETE.xlsm", "project_name": "MTN6_MCM02"}
{"level": "INFO", "message": "Starting data processing step", "timestamp": "2025-08-18T12:32:10.596280", "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', 'Part Number', 'IO Assignment MCM02', 'MCM02_DESC', 'DESC_PLC', 'NETWORK_PLC']
Found DESC sheet: DESC_PLC
Found NETWORK sheet: NETWORK_PLC
DESC columns: ['TAGNAME', 'TERM', 'DESCA', 'DESCB']
NETWORK columns: ['DPM', 'DPM_IP', 'Name', 'PartNumber', 'IP']
NOTE: Ignored 4 rows from DESC sheet with an empty TAGNAME.
Classifying signals and adding IO paths...
Signal classification results:
SPARE: 1014
I: 638
O: 150
IOLink: 30
Device type distribution:
APF: 1496
M12DR: 240
Hub: 48
IB16: 16
OB16E: 16
IB16S: 16
IO Path mapping results:
Successful mappings: 1832/1832 (100.0%)
Found 3 TAGNAMEs present in DESC but not in NETWORK_PLC.
Adding unique DPM names not present in DESC or NETWORK_PLC.Name: ['PS5_7_DPM1', 'PS6_7_DPM1', 'PS7_7_DPM1', 'UL13_8_DPM1', 'UL15_4_DPM1', 'UL16_2_DPM1', 'UL18_4_DPM1', 'UL19_2_DPM1', 'UL21_11_DPM1']
================================================================================
WARNING: The following issues were found but processing will continue:
================================================================================
- TAGNAME 'SLOT5_IB16' from DESC sheet not found in NETWORK_PLC sheet.
- TAGNAME 'SLOT6_OB16E' from DESC sheet not found in NETWORK_PLC sheet.
- TAGNAME 'SLOT7_IB16S' from DESC sheet not found in NETWORK_PLC sheet.
================================================================================
Continuing with processing...
Normalizing TAGNAME, DESC, and IO_PATH columns for VFDs only in the final output...
Final result has 1850 rows
Sample of merged data:
TAGNAME TERM DESCA ... SIGNAL DEVICE_TYPE IO_PATH
0 PDP3_PMM1 ... NaN NaN NaN
1 PDP4_PMM1 ... NaN NaN NaN
2 PDP7_PMM1 ... NaN NaN NaN
3 SLOT5_IB16 I0 MCM02 ... I IB16 Local:5:I.Data.0
4 SLOT5_IB16 I1 MCM02 ... I IB16 Local:5:I.Data.1
5 SLOT5_IB16 I10 SPARE ... SPARE IB16 Local:5:I.Data.10
6 SLOT5_IB16 I11 SPARE ... SPARE IB16 Local:5:I.Data.11
7 SLOT5_IB16 I12 SPARE ... SPARE IB16 Local:5:I.Data.12
8 SLOT5_IB16 I13 SPARE ... SPARE IB16 Local:5:I.Data.13
9 SLOT5_IB16 I14 SPARE ... SPARE IB16 Local:5:I.Data.14
[10 rows x 11 columns]
New Excel file created: MCM02_DESC_IP_MERGED.xlsx
The file contains all original sheets plus the new 'DESC_IP' sheet with merged data.
Reading input file: MCM02_DESC_IP_MERGED.xlsx
Removed 3 SPARE rows following FIOH entries
Removed 9 SPARE rows following IOLink SOL entries
Removed 30 IOLink rows (including beacons, FIOH channels, and all other IOLink entries)
Removed 18 blank name/description rows
Saving output file: MCM02_OUTPUT.csv
Processing complete!
Created standard output file: DESC_IP_MERGED.xlsx
=== Step 1: PLC Data Generator stderr ===
{"level": "INFO", "message": "Data processing completed successfully", "timestamp": "2025-08-18T12:32:14.332151", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting routine generation step", "timestamp": "2025-08-18T12:32:14.332495", "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_MCM02_20250818_123210.log", "timestamp": "2025-08-18T12:32:16.069345", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "=== Generating All PLC Artifacts ===", "timestamp": "2025-08-18T12:32:16.071091", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating SafetyProgram L5X...", "timestamp": "2025-08-18T12:32:16.071292", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "WARNING", "message": "LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator", "timestamp": "2025-08-18T12:32:16.082620", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting ModernSafetyProgramGenerator generation", "timestamp": "2025-08-18T12:32:16.082870", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating SafetyProgram XML structure", "timestamp": "2025-08-18T12:32:16.083087", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Registered plugin: main_routine (core)", "timestamp": "2025-08-18T12:32:16.094653", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: apf (device)", "timestamp": "2025-08-18T12:32:16.100306", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: cb_monitor (device)", "timestamp": "2025-08-18T12:32:16.104052", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: d2c_chute (device)", "timestamp": "2025-08-18T12:32:16.107854", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: dpm (device)", "timestamp": "2025-08-18T12:32:16.111506", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: estops (safety)", "timestamp": "2025-08-18T12:32:16.118974", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: estop_check (safety)", "timestamp": "2025-08-18T12:32:16.123038", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: extendo (device)", "timestamp": "2025-08-18T12:32:16.126477", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fioh (device)", "timestamp": "2025-08-18T12:32:16.129778", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fiom (device)", "timestamp": "2025-08-18T12:32:16.133491", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: flow_ctrl (device)", "timestamp": "2025-08-18T12:32:16.137155", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: fpe (device)", "timestamp": "2025-08-18T12:32:16.141322", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: inputs (safety)", "timestamp": "2025-08-18T12:32:16.145385", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: jpe (device)", "timestamp": "2025-08-18T12:32:16.148777", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: mcm (core)", "timestamp": "2025-08-18T12:32:16.152613", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: outputs (safety)", "timestamp": "2025-08-18T12:32:16.156919", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: pb_chute (device)", "timestamp": "2025-08-18T12:32:16.160345", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: pmm (device)", "timestamp": "2025-08-18T12:32:16.163800", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: rack (core)", "timestamp": "2025-08-18T12:32:16.167077", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: resets (safety)", "timestamp": "2025-08-18T12:32:16.171070", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: safety_tag_map (core)", "timestamp": "2025-08-18T12:32:16.174513", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: speed_ctrl (device)", "timestamp": "2025-08-18T12:32:16.177917", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_jr_chute (device)", "timestamp": "2025-08-18T12:32:16.181574", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: station_jr_pb (device)", "timestamp": "2025-08-18T12:32:16.185505", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "DEBUG", "message": "Registered plugin: zones (safety)", "timestamp": "2025-08-18T12:32:16.189448", "module": "src.plugin_system", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "plugin_discovery"}
{"level": "INFO", "message": "Generating safety routines...", "timestamp": "2025-08-18T12:32:16.189737", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: inputs", "timestamp": "2025-08-18T12:32:17.008929", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: inputs", "timestamp": "2025-08-18T12:32:17.020114", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: outputs", "timestamp": "2025-08-18T12:32:17.023699", "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: outputs", "timestamp": "2025-08-18T12:32:17.026922", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: resets", "timestamp": "2025-08-18T12:32:17.027132", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: resets", "timestamp": "2025-08-18T12:32:17.054292", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: zones", "timestamp": "2025-08-18T12:32:17.054742", "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: zones", "timestamp": "2025-08-18T12:32:17.057906", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: estops", "timestamp": "2025-08-18T12:32:17.058125", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: estops", "timestamp": "2025-08-18T12:32:17.062107", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True}", "timestamp": "2025-08-18T12:32:17.062356", "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 50 tags", "timestamp": "2025-08-18T12:32:17.066980", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES", "timestamp": "2025-08-18T12:32:17.067155", "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: 157 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);", "timestamp": "2025-08-18T12:32:17.067334", "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: 0 rungs", "timestamp": "2025-08-18T12:32:17.067498", "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: 52 rungs | example: [XIC(SFT_PS5_1_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS5_1_EPC1_ESTOP);", "timestamp": "2025-08-18T12:32:17.067658", "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: 1 rungs | example: XIC(MCM_EPB_DCS_CTRL.O1)OTE(EStop_MCM_OK);", "timestamp": "2025-08-18T12:32:17.067796", "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: 53 rungs | example: DCS(MCM_EPB_DCS_CTRL,EMERGENCY STOP,EQUIVALENT - ACTIVE HIGH,500,MANUAL,AUTOMATIC,Local:7:I.Pt02.Data,Local:7:I.Pt03.Data,MCM_EPB_STATUS,SFT_MCM_S_PB);", "timestamp": "2025-08-18T12:32:17.067939", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_INPUTS,0) ,JSR(R011_OUTPUTS,0) ,JSR(R012_RESETS,0) ,JSR(R020_ESTOPS,0) ,JSR(R030_ZONES,0) ];", "timestamp": "2025-08-18T12:32:17.068067", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "Successfully completed ModernSafetyProgramGenerator generation", "timestamp": "2025-08-18T12:32:17.068206", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Written ModernSafetyProgramGenerator to SafetyProgram_Generated.L5X", "timestamp": "2025-08-18T12:32:17.071312", "module": "ModernSafetyProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "[SUCCESS] SafetyProgram written to SafetyProgram_Generated.L5X", "timestamp": "2025-08-18T12:32:17.071491", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating MainProgram L5X...", "timestamp": "2025-08-18T12:32:17.071652", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "WARNING", "message": "LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator", "timestamp": "2025-08-18T12:32:17.071808", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Starting ModernMainProgramGenerator generation", "timestamp": "2025-08-18T12:32:17.072014", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating MainProgram XML structure", "timestamp": "2025-08-18T12:32:17.072151", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Adding controller tags...", "timestamp": "2025-08-18T12:32:17.072305", "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": "Tags created: total=656 | standard=148 safety=306 dcs=53 modules=145", "timestamp": "2025-08-18T12:32:17.273050", "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 656 controller tags", "timestamp": "2025-08-18T12:32:17.273371", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating main program routines...", "timestamp": "2025-08-18T12:32:17.273605", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: mcm", "timestamp": "2025-08-18T12:32:17.273797", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: mcm", "timestamp": "2025-08-18T12:32:17.273936", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: rack", "timestamp": "2025-08-18T12:32:17.274097", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: rack", "timestamp": "2025-08-18T12:32:17.274256", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: dpm", "timestamp": "2025-08-18T12:32:17.274411", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: dpm", "timestamp": "2025-08-18T12:32:17.275729", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: apf", "timestamp": "2025-08-18T12:32:17.276419", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: apf", "timestamp": "2025-08-18T12:32:17.281806", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: estop_check", "timestamp": "2025-08-18T12:32:17.282114", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: estop_check", "timestamp": "2025-08-18T12:32:17.294183", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: safety_tag_map", "timestamp": "2025-08-18T12:32:17.294458", "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: safety_tag_map", "timestamp": "2025-08-18T12:32:17.296268", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Generating routine: main_routine", "timestamp": "2025-08-18T12:32:17.296486", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating MainRoutine with JSR calls", "timestamp": "2025-08-18T12:32:17.296675", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated MainRoutine", "timestamp": "2025-08-18T12:32:17.296924", "module": "src.routines.main_routine_plugin.MainRoutinePlugin", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Successfully generated routine: main_routine", "timestamp": "2025-08-18T12:32:17.297050", "module": "src.plugin_system", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'apf': True, 'estop_check': True, 'safety_tag_map': True, 'main_routine': True}", "timestamp": "2025-08-18T12:32:17.297166", "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 (7): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP", "timestamp": "2025-08-18T12:32:17.297293", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R010_MCM: 2 rungs | example: NOP();", "timestamp": "2025-08-18T12:32:17.297478", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- R011_RACK: 2 rungs | example: NOP();", "timestamp": "2025-08-18T12:32:17.297621", "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: 10 rungs | example: NOP();", "timestamp": "2025-08-18T12:32:17.297736", "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: 137 rungs | example: NOP();", "timestamp": "2025-08-18T12:32:17.297844", "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: 52 rungs | example: [XIO(PS5_1_VFD1:SI.In00Data) ,XIO(PS5_1_VFD1:SI.In01Data) ]XIO(PS5_1_VFD1:SO.STOOutput)XIO(PS5_2_VFD1:SO.STOOutput)XIO(PS5_3_VFD1:SO.STOOutput)XIO(PS5_4_VFD1...", "timestamp": "2025-08-18T12:32:17.297950", "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: 50 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);", "timestamp": "2025-08-18T12:32:17.298055", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "- MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R040_APF,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R130_SAFETY_TAG_MAP,0) ];", "timestamp": "2025-08-18T12:32:17.298158", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "stage": "summary"}
{"level": "INFO", "message": "Successfully completed ModernMainProgramGenerator generation", "timestamp": "2025-08-18T12:32:17.298261", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Written ModernMainProgramGenerator to MainProgram_Generated.L5X", "timestamp": "2025-08-18T12:32:17.315601", "module": "ModernMainProgramGenerator", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "[SUCCESS] MainProgram written to MainProgram_Generated.L5X", "timestamp": "2025-08-18T12:32:17.315808", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "Generating safety tag mapping...", "timestamp": "2025-08-18T12:32:17.315976", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating MappingWriter wrapper", "timestamp": "2025-08-18T12:32:17.316127", "module": "src.container", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "DEBUG", "message": "Creating DataLoader instance", "timestamp": "2025-08-18T12:32:17.316286", "module": "src.container", "file": "logging_config.py", "line": 126, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py", "excel_file": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/DESC_IP_MERGED.xlsx"}
{"level": "INFO", "message": "[SUCCESS] Safety tag mapping written to SafetyTagMapping.txt", "timestamp": "2025-08-18T12:32:17.461915", "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: 50", "timestamp": "2025-08-18T12:32:17.462119", "module": "__main__", "file": "logging_config.py", "line": 128, "function": "_log_with_context", "pathname": "/mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/Routines Generator/src/logging_config.py"}
{"level": "INFO", "message": "=== All artifacts generated successfully! ===", "timestamp": "2025-08-18T12:32:17.462277", "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 ===
APF PS5_1_VFD1 -> DPM PS5_7_DPM1
APF PS5_2_VFD1 -> DPM PS5_7_DPM1
APF PS5_3_VFD1 -> DPM PS5_7_DPM1
APF PS5_4_VFD1 -> DPM PS5_7_DPM1
APF PS5_5_VFD1 -> DPM PS5_7_DPM1
APF PS5_6_VFD1 -> DPM PS5_7_DPM1
APF PS5_7_VFD1 -> DPM PS5_7_DPM1
APF PS5_8_VFD1 -> DPM PS5_7_DPM1
APF PS5_9_VFD1 -> DPM PS5_7_DPM1
APF PS5_10_VFD1 -> DPM PS5_7_DPM1
APF PS5_11_VFD1 -> DPM PS5_7_DPM1
APF PS5_12_VFD1 -> DPM PS5_7_DPM1
APF PS5_13_VFD1 -> DPM PS5_7_DPM1
APF PS6_1_VFD1 -> DPM PS6_7_DPM1
APF PS6_2_VFD1 -> DPM PS6_7_DPM1
APF PS6_3_VFD1 -> DPM PS6_7_DPM1
APF PS6_4_VFD1 -> DPM PS6_7_DPM1
APF PS6_5_VFD1 -> DPM PS6_7_DPM1
APF PS6_6_VFD1 -> DPM PS6_7_DPM1
APF PS6_7_VFD1 -> DPM PS6_7_DPM1
APF PS6_8_VFD1 -> DPM PS6_7_DPM1
APF PS6_9_VFD1 -> DPM PS6_7_DPM1
APF PS6_10_VFD1 -> DPM PS6_7_DPM1
APF PS6_11_VFD1 -> DPM PS6_7_DPM1
APF PS6_12_VFD1 -> DPM PS6_7_DPM1
APF PS6_13_VFD1 -> DPM PS6_7_DPM1
APF PS7_1_VFD1 -> DPM PS7_7_DPM1
APF PS7_2_VFD1 -> DPM PS7_7_DPM1
APF PS7_3_VFD1 -> DPM PS7_7_DPM1
APF PS7_4_VFD1 -> DPM PS7_7_DPM1
APF PS7_5_VFD1 -> DPM PS7_7_DPM1
APF PS7_6_VFD1 -> DPM PS7_7_DPM1
APF PS7_7_VFD1 -> DPM PS7_7_DPM1
APF PS7_8_VFD1 -> DPM PS7_7_DPM1
APF PS7_9_VFD1 -> DPM PS7_7_DPM1
APF PS7_10_VFD1 -> DPM PS7_7_DPM1
APF PS7_11_VFD1 -> DPM PS7_7_DPM1
APF PS7_12_VFD1 -> DPM PS7_7_DPM1
APF PS7_13_VFD1 -> DPM PS7_7_DPM1
APF PS7_14_VFD1 -> DPM PS7_7_DPM1
APF UL13_1_VFD1 -> DPM UL13_8_DPM1
APF UL13_2_VFD1 -> DPM UL13_8_DPM1
APF UL13_3_VFD1 -> DPM UL13_8_DPM1
APF UL13_4_VFD1 -> DPM UL13_8_DPM1
APF UL13_5_VFD1 -> DPM UL13_8_DPM1
APF UL13_6_VFD1 -> DPM UL13_8_DPM1
APF UL13_7_VFD1 -> DPM UL13_8_DPM1
APF UL13_8_VFD1 -> DPM UL13_8_DPM1
APF UL13_9A_VFD1 -> DPM UL13_8_DPM1
APF UL13_9B_VFD1 -> DPM UL13_8_DPM1
APF UL13_10_VFD1 -> DPM UL13_8_DPM1
APF UL13_11_VFD1 -> DPM UL13_8_DPM1
APF UL13_12_VFD1 -> DPM UL13_8_DPM1
APF UL14_3_VFD1 -> DPM UL13_8_DPM1
APF UL14_4_VFD1 -> DPM UL13_8_DPM1
APF UL14_5_VFD1 -> DPM UL13_8_DPM1
APF UL14_6_VFD1 -> DPM UL13_8_DPM1
APF UL14_7_VFD1 -> DPM UL13_8_DPM1
APF UL14_8_VFD1 -> DPM UL13_8_DPM1
APF UL14_9_VFD1 -> DPM UL13_8_DPM1
APF UL14_10_VFD1 -> DPM UL13_8_DPM1
APF UL15_3_VFD1 -> DPM UL15_4_DPM1
APF UL15_4_VFD1 -> DPM UL15_4_DPM1
APF UL15_5_VFD1 -> DPM UL15_4_DPM1
APF UL15_6_VFD1 -> DPM UL15_4_DPM1
APF UL15_7_VFD1 -> DPM UL15_4_DPM1
APF UL15_8_VFD1 -> DPM UL15_4_DPM1
APF UL15_9_VFD1 -> DPM UL15_4_DPM1
APF UL15_10_VFD1 -> DPM UL15_4_DPM1
APF UL15_11_VFD1 -> DPM UL15_4_DPM1
APF UL16_1_VFD1 -> DPM UL16_2_DPM1
APF UL16_2_VFD1 -> DPM UL16_2_DPM1
APF UL16_3_VFD1 -> DPM UL16_2_DPM1
APF UL16_4_VFD1 -> DPM UL16_2_DPM1
APF UL16_5_VFD1 -> DPM UL16_2_DPM1
APF UL16_6_VFD1 -> DPM UL16_2_DPM1
APF UL16_7_VFD1 -> DPM UL16_2_DPM1
APF UL16_8_VFD1 -> DPM UL16_2_DPM1
APF UL16_9_VFD1 -> DPM UL16_2_DPM1
APF UL17_3_VFD1 -> DPM UL16_2_DPM1
APF UL17_4_VFD1 -> DPM UL16_2_DPM1
APF UL17_5_VFD1 -> DPM UL16_2_DPM1
APF UL17_6_VFD1 -> DPM UL16_2_DPM1
APF UL17_7_VFD1 -> DPM UL16_2_DPM1
APF UL17_8_VFD1 -> DPM UL16_2_DPM1
APF UL17_9_VFD1 -> DPM UL16_2_DPM1
APF UL17_10_VFD1 -> DPM UL16_2_DPM1
APF UL18_3_VFD1 -> DPM UL18_4_DPM1
APF UL18_4_VFD1 -> DPM UL18_4_DPM1
APF UL18_5_VFD1 -> DPM UL18_4_DPM1
APF UL18_6_VFD1 -> DPM UL18_4_DPM1
APF UL18_7_VFD1 -> DPM UL18_4_DPM1
APF UL18_8_VFD1 -> DPM UL18_4_DPM1
APF UL18_9_VFD1 -> DPM UL18_4_DPM1
APF UL18_10_VFD1 -> DPM UL18_4_DPM1
APF UL18_11_VFD1 -> DPM UL18_4_DPM1
APF UL18_12_VFD1 -> DPM UL18_4_DPM1
APF UL18_13A_VFD1 -> DPM UL18_4_DPM1
APF UL18_13B_VFD1 -> DPM UL18_4_DPM1
APF UL18_14_VFD1 -> DPM UL18_4_DPM1
APF UL18_15_VFD1 -> DPM UL18_4_DPM1
APF UL18_16_VFD1 -> DPM UL18_4_DPM1
APF UL19_1_VFD1 -> DPM UL19_2_DPM1
APF UL19_2_VFD1 -> DPM UL19_2_DPM1
APF UL19_3_VFD1 -> DPM UL19_2_DPM1
APF UL19_4_VFD1 -> DPM UL19_2_DPM1
APF UL19_5_VFD1 -> DPM UL19_2_DPM1
APF UL19_6_VFD1 -> DPM UL19_2_DPM1
APF UL19_7_VFD1 -> DPM UL19_2_DPM1
APF UL19_8_VFD1 -> DPM UL19_2_DPM1
APF UL19_9_VFD1 -> DPM UL19_2_DPM1
APF UL20_3_VFD1 -> DPM UL19_2_DPM1
APF UL20_4_VFD1 -> DPM UL19_2_DPM1
APF UL20_5_VFD1 -> DPM UL19_2_DPM1
APF UL20_6_VFD1 -> DPM UL19_2_DPM1
APF UL20_7_VFD1 -> DPM UL19_2_DPM1
APF UL20_8_VFD1 -> DPM UL19_2_DPM1
APF UL20_9_VFD1 -> DPM UL19_2_DPM1
APF UL20_10_VFD1 -> DPM UL19_2_DPM1
APF UL20_11_VFD1 -> DPM UL19_2_DPM1
APF UL21_3_VFD1 -> DPM UL21_11_DPM1
APF UL21_4_VFD1 -> DPM UL21_11_DPM1
APF UL21_5_VFD1 -> DPM UL21_11_DPM1
APF UL21_6_VFD1 -> DPM UL21_11_DPM1
APF UL21_7_VFD1 -> DPM UL21_11_DPM1
APF UL21_8_VFD1 -> DPM UL21_11_DPM1
APF UL21_9_VFD1 -> DPM UL21_11_DPM1
APF UL21_10_VFD1 -> DPM UL21_11_DPM1
APF UL21_11_VFD1 -> DPM UL21_11_DPM1
APF UL21_12_VFD1 -> DPM UL21_11_DPM1
APF UL21_13_VFD1 -> DPM UL21_11_DPM1
APF UL21_14A_VFD1 -> DPM UL21_11_DPM1
APF UL21_14B_VFD1 -> DPM UL21_11_DPM1
APF UL21_15_VFD1 -> DPM UL21_11_DPM1
APF UL21_16_VFD1 -> DPM UL21_11_DPM1
APF UL21_17_VFD1 -> DPM UL21_11_DPM1
- Added 52 E-stop check rungs
Created safety tag mapping file: SafetyTagMapping.txt
=== Step 2: Routines Generator stderr ===
[12:32:16] [INFO] [logging_config.py:128:_log_with_context] Logging to file: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/logs/workflow_MTN6_MCM02_20250818_123210.log
[12:32:16] [INFO] [logging_config.py:128:_log_with_context] === Generating All PLC Artifacts ===
[12:32:16] [INFO] [logging_config.py:128:_log_with_context] Generating SafetyProgram L5X...
[12:32:16] [WARNING] [logging_config.py:128:_log_with_context] LimitedSafetyProgramGenerator is deprecated; using ModernSafetyProgramGenerator
[12:32:16] [INFO] [logging_config.py:128:_log_with_context] Starting ModernSafetyProgramGenerator generation
[12:32:16] [DEBUG] [logging_config.py:128:_log_with_context] Creating SafetyProgram XML structure
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: main_routine (core)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: apf (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: cb_monitor (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: d2c_chute (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: dpm (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estops (safety)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: estop_check (safety)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: extendo (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fioh (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fiom (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: flow_ctrl (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: fpe (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: inputs (safety)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: jpe (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: mcm (core)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: outputs (safety)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pb_chute (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: pmm (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: rack (core)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: resets (safety)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: safety_tag_map (core)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: speed_ctrl (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_chute (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: station_jr_pb (device)
[12:32:16] [DEBUG] [logging_config.py:126:_log_with_context] Registered plugin: zones (safety)
[12:32:16] [INFO] [logging_config.py:128:_log_with_context] Generating safety routines...
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: inputs
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: inputs
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: outputs
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: outputs
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: resets
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: resets
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: zones
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: zones
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estops
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estops
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Safety routine generation results: {'inputs': True, 'outputs': True, 'resets': True, 'zones': True, 'estops': True}
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Added safety tag map with 50 tags
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] Routines created (6): MainRoutine, R010_INPUTS, R011_OUTPUTS, R012_RESETS, R020_ESTOPS, R030_ZONES
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R010_INPUTS: 157 rungs | example: XIC(Local:7:I.Pt02.Status)XIC(Local:7:I.Pt03.Status)OTE(MCM_EPB_STATUS);
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R011_OUTPUTS: 0 rungs
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R012_RESETS: 52 rungs | example: [XIC(SFT_PS5_1_S1_PB) ,XIC(SFT_MCM_S_PB)]OTE(RST_PS5_1_EPC1_ESTOP);
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R030_ZONES: 1 rungs | example: XIC(MCM_EPB_DCS_CTRL.O1)OTE(EStop_MCM_OK);
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R020_ESTOPS: 53 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);
[12:32:17] [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) ];
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernSafetyProgramGenerator generation
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Written ModernSafetyProgramGenerator to SafetyProgram_Generated.L5X
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] SafetyProgram written to SafetyProgram_Generated.L5X
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Generating MainProgram L5X...
[12:32:17] [WARNING] [logging_config.py:128:_log_with_context] LimitedMainProgramGenerator is deprecated; using ModernMainProgramGenerator
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Starting ModernMainProgramGenerator generation
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Creating MainProgram XML structure
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Adding controller tags...
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] Tags created: total=656 | standard=148 safety=306 dcs=53 modules=145
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Added 656 controller tags
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Generating main program routines...
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: mcm
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: mcm
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: rack
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: rack
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: dpm
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: dpm
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: apf
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: apf
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: estop_check
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: estop_check
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: safety_tag_map
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: safety_tag_map
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Generating routine: main_routine
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Generating MainRoutine with JSR calls
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated MainRoutine
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully generated routine: main_routine
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Main routine generation results: {'mcm': True, 'rack': True, 'dpm': True, 'apf': True, 'estop_check': True, 'safety_tag_map': True, 'main_routine': True}
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] Routines created (7): MainRoutine, R010_MCM, R011_RACK, R020_DPM, R040_APF, R120_ESTOP_CHECK, R130_SAFETY_TAG_MAP
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R010_MCM: 2 rungs | example: NOP();
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R011_RACK: 2 rungs | example: NOP();
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R020_DPM: 10 rungs | example: NOP();
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R040_APF: 137 rungs | example: NOP();
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R120_ESTOP_CHECK: 52 rungs | example: [XIO(PS5_1_VFD1:SI.In00Data) ,XIO(PS5_1_VFD1:SI.In01Data) ]XIO(PS5_1_VFD1:SO.STOOutput)XIO(PS5_2_VFD1:SO.STOOutput)XIO(PS5_3_VFD1:SO.STOOutput)XIO(PS5_4_VFD1...
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - R130_SAFETY_TAG_MAP: 50 rungs | example: XIC(Local:5:I.Data.0)OTE(MCM_S_PB);
[12:32:17] [INFO] [logging_config.py:126:_log_with_context] - MainRoutine: 1 rungs | example: [JSR(R010_MCM,0) ,JSR(R011_RACK,0) ,JSR(R020_DPM,0) ,JSR(R040_APF,0) ,JSR(R120_ESTOP_CHECK,0) ,JSR(R130_SAFETY_TAG_MAP,0) ];
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Successfully completed ModernMainProgramGenerator generation
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Written ModernMainProgramGenerator to MainProgram_Generated.L5X
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] MainProgram written to MainProgram_Generated.L5X
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] Generating safety tag mapping...
[12:32:17] [DEBUG] [logging_config.py:128:_log_with_context] Creating MappingWriter wrapper
[12:32:17] [DEBUG] [logging_config.py:126:_log_with_context] Creating DataLoader instance
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] [SUCCESS] Safety tag mapping written to SafetyTagMapping.txt
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] - Safety tags: 50
[12:32:17] [INFO] [logging_config.py:128:_log_with_context] === All artifacts generated successfully! ===
{"level": "INFO", "message": "Routine generation completed successfully", "timestamp": "2025-08-18T12:32:17.522691", "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_MCM02
- Excel: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/PLC Data Generator/DESC_IP_MERGED.xlsx
- Boilerplate: MTN6_boilerplate
- Mode: Single file
--------------------------------------------------
Created 3 FIOH modules based on TERM analysis
Found 15 IOLM modules
WARNING: 6 unknown modules found
Created 15 IOLM modules with boilerplate selection:
PDP3_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
PDP4_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
PDP7_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
UL13_12_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL13_2_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL14_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL15_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL16_2_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL17_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL18_16_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL18_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL19_2_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL20_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL21_17_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
UL21_3_FIO1 (FIO D2CMaster): Using variant boilerplate D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/D2CMaster_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
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/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_10_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
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/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_7_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
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/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
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/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_2_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_5_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/APF_Module_3_HP.L5X
Successfully loaded boilerplate: MTN6_boilerplate/PMM_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/PMM_Module.L5X
Successfully loaded boilerplate: MTN6_boilerplate/PMM_Module.L5X
PDP3_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
PDP4_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
PDP7_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
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
Importing AOIs/DataTypes from base: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/IO Tree Configuration Generator/BaseProgram.L5X
Programs already exist (2 programs found), skipping empty program creation
OK: Generated project: generated_projects/MTN6_MCM02.L5X
Single file generation complete
- ['generated_projects/MTN6_MCM02.L5X']
=== Step 4: L5X2ACD Compiler output ===
🚀 Setting up compilation for project: MTN6_MCM02
📂 Compilation directory: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler
📄 Source L5X: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/IO Tree Configuration Generator/generated_projects/MTN6_MCM02.L5X
🧹 Wiping existing compilation files...
✓ Removed file: compile_MTN6_MCM02.bat
✓ Removed file: MTN6_MCM02.L5X
🧹 Cleanup complete: 2 files, 0 directories removed
📁 Copying L5X file: MTN6_MCM02.L5X → MTN6_MCM02.L5X
✓ Copied successfully (5.93 MB)
🔧 Generating batch file: compile_MTN6_MCM02.bat
✓ Generated successfully
✅ Compilation setup complete!
L5X File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/MTN6_MCM02.L5X
Batch File: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_MTN6_MCM02.bat
🪟 To compile on Windows:
1. Run: /mnt/c/Users/ilia.gurielidze/Projects/PLC Generation/L5X2ACD Compiler/compile_MTN6_MCM02.bat
2. Or double-click: compile_MTN6_MCM02.bat