Add README and execution log for ObtainIOFromProjectTia and XML Parser to SCL

- Created a README file for the ObtainIOFromProjectTia script group detailing the directory structure and file organization.
- Added a detailed execution log for the x4_cross_reference.py script, including timestamps, output summaries, and error logs.
This commit is contained in:
Miguel 2025-05-12 12:05:14 +02:00
parent 1f64cdf448
commit 88ff4a25a2
21 changed files with 5407 additions and 3476 deletions

View File

@ -1,22 +1,22 @@
--- Log de Ejecución: x1.py ---
Grupo: EmailCrono
Directorio de Trabajo: C:\Trabajo\SIDEL\EMAILs\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS
Inicio: 2025-05-03 17:15:12
Fin: 2025-05-03 17:15:14
Duración: 0:00:01.628641
Directorio de Trabajo: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email
Inicio: 2025-05-09 16:58:28
Fin: 2025-05-09 16:58:29
Duración: 0:00:00.434600
Estado: SUCCESS (Código de Salida: 0)
--- SALIDA ESTÁNDAR (STDOUT) ---
Working directory: C:\Trabajo\SIDEL\EMAILs\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS
Input directory: C:\Trabajo\SIDEL\EMAILs\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS
Output directory: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/00 - MASTER/EMAILs
Cronologia file: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/00 - MASTER/EMAILs\cronologia.md
Attachments directory: C:\Trabajo\SIDEL\EMAILs\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS\adjuntos
Working directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email
Input directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email
Output directory: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463
Cronologia file: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463\cronologia.md
Attachments directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email\adjuntos
Beautify rules file: D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\EmailCrono\config\beautify_rules.json
Found 1 .eml files
Loaded 0 existing messages
Processing C:\Trabajo\SIDEL\EMAILs\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS.eml
Processing C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email\R_ {EXT} E5.006894 - Modifica O&U - SAE463 New Analyzer.eml
Aplicando reglas de prioridad 1
Aplicando reglas de prioridad 2
Aplicando reglas de prioridad 3
@ -27,7 +27,7 @@ Estadísticas de procesamiento:
- Mensajes únicos añadidos: 1
- Mensajes duplicados ignorados: 0
Writing 1 messages to C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/00 - MASTER/EMAILs\cronologia.md
Writing 1 messages to C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463\cronologia.md
--- ERRORES (STDERR) ---
Ninguno

View File

@ -8,7 +8,7 @@
"cronologia_file": "cronologia.md"
},
"level3": {
"output_directory": "C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/00 - MASTER/EMAILs"
"output_directory": "C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463"
},
"working_directory": "C:\\Trabajo\\SIDEL\\EMAILs\\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS"
"working_directory": "C:\\Trabajo\\SIDEL\\10 - E5.007095 - Modifica O&U - SAE463\\Reporte\\Email"
}

View File

@ -1,6 +1,8 @@
{
"path": "C:\\Trabajo\\SIDEL\\EMAILs\\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS",
"path": "C:\\Trabajo\\SIDEL\\10 - E5.007095 - Modifica O&U - SAE463\\Reporte\\Email",
"history": [
"C:\\Trabajo\\SIDEL\\10 - E5.007095 - Modifica O&U - SAE463\\Reporte\\Email",
"C:\\Trabajo\\SIDEL\\08 - Masselli TEST\\Reporte\\EMAILs",
"C:\\Trabajo\\SIDEL\\EMAILs\\I_ E5.007727 _ Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS",
"C:\\Estudio",
"C:\\Trabajo\\VM\\40 - 93040 - HENKEL - NEXT2 Problem\\Reporte\\EmailTody",

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
--- Log de Ejecución: x2.py ---
Grupo: ObtainIOFromProjectTia
Directorio de Trabajo: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Inicio: 2025-05-02 23:34:21
Fin: 2025-05-02 23:36:20
Duración: 0:01:58.373747
Inicio: 2025-05-05 12:39:16
Fin: 2025-05-05 12:40:41
Duración: 0:01:25.846312
Estado: SUCCESS (Código de Salida: 0)
--- SALIDA ESTÁNDAR (STDOUT) ---
@ -16,17 +16,17 @@ Will generate summary to: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE19
Export log file: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Export.log
Connecting to TIA Portal V18.0...
2025-05-02 23:34:30,132 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
2025-05-02 23:34:30,155 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
2025-05-05 12:39:20,828 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
2025-05-05 12:39:20,847 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
Connected.
Opening project: SAE196_c0.2.ap18...
2025-05-02 23:35:01,950 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\InLavoro\PLC\SAE196_c0.2\SAE196_c0.2.ap18
2025-05-05 12:39:43,534 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\InLavoro\PLC\SAE196_c0.2\SAE196_c0.2.ap18
Project opened.
Exporting CAx data for the project to C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Export.aml...
CAx data exported successfully.
Closing TIA Portal...
2025-05-02 23:36:15,947 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
2025-05-05 12:40:38,187 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
TIA Portal closed.
Parsing AML file: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Export.aml
Markdown summary written to: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Summary.md

View File

@ -1,9 +1,9 @@
--- Log de Ejecución: x3.py ---
Grupo: ObtainIOFromProjectTia
Directorio de Trabajo: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Inicio: 2025-05-02 23:43:07
Fin: 2025-05-02 23:43:12
Duración: 0:00:05.235415
Inicio: 2025-05-05 12:48:16
Fin: 2025-05-05 12:48:22
Duración: 0:00:06.125698
Estado: SUCCESS (Código de Salida: 0)
--- SALIDA ESTÁNDAR (STDOUT) ---
@ -17,22 +17,22 @@ Output IO Debug Tree MD: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196
Processing AML file: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Export.aml
Pass 1: Found 203 InternalElement(s). Populating device dictionary...
Pass 2: Identifying PLCs and Networks (Refined v2)...
Identified Network: PROFIBUS_1 (bcc6f2bd-3d71-4407-90f2-bccff6064051) Type: Profibus
Identified Network: ETHERNET_1 (c6d49787-a076-4592-994d-876eea123dfd) Type: Ethernet/Profinet
Identified Network: PROFIBUS_1 (17667a38-6bbe-481a-a234-6c9ac582adb9) Type: Profibus
Identified Network: ETHERNET_1 (4fa8d8c4-4fb5-4df5-a82e-ec6829530c2e) Type: Ethernet/Profinet
Identified PLC: PLC (a48e038f-0bcc-4b48-8373-033da316c62b) - Type: CPU 1516F-3 PN/DP OrderNo: 6ES7 516-3FP03-0AB0
Pass 3: Processing InternalLinks (Robust Network Mapping & IO)...
Found 118 InternalLink(s).
Mapping Device/Node 'E1' (NodeID:1643b51f-7067-4565-8f8e-109a1a775fed, Addr:10.1.33.11) to Network 'ETHERNET_1'
Mapping Device/Node 'E1' (NodeID:e15ed19e-b5e1-4cc2-9690-ee5b2132ed74, Addr:10.1.33.11) to Network 'ETHERNET_1'
--> Associating Network 'ETHERNET_1' with PLC 'PLC' (via Node 'E1' Addr: 10.1.33.11)
Mapping Device/Node 'P1' (NodeID:5aff409b-2573-485f-82bf-0e08c9200086, Addr:1) to Network 'PROFIBUS_1'
Mapping Device/Node 'P1' (NodeID:d9426769-3159-4c09-af54-e00a677183fd, Addr:1) to Network 'PROFIBUS_1'
--> Associating Network 'PROFIBUS_1' with PLC 'PLC' (via Node 'P1' Addr: 1)
Mapping Device/Node 'PB1' (NodeID:c796e175-c770-43f0-8191-fc91996c0147, Addr:12) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:0b44f55a-63c1-49e8-beea-24dc5d3226e3, Addr:20) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:25cfc251-f946-40c5-992d-ad6387677acb, Addr:21) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:57999375-ec72-46ef-8ec2-6c3178e8acf8, Addr:22) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:54e8db6a-9443-41a4-a85b-cf0722c1d299, Addr:10) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:4786bab6-4097-4651-ac19-6cadfc7ea735, Addr:8) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:1f08afcb-111f-428f-915e-69363af1b09a, Addr:40) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:086deb3e-1f8a-471c-8d00-879d11991c6d, Addr:12) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:7cf9f331-96fd-4a89-bf31-7faf501077cd, Addr:20) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:d5a8a086-5c97-4c7d-b488-823e7d75370e, Addr:21) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:e2893de8-90e6-42e6-9e83-7838a57f5038, Addr:22) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:af0f7eb6-720e-42c3-9a97-bf75183d0dc2, Addr:10) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:bfff87c4-b07c-441c-b977-58e967b96587, Addr:8) to Network 'PROFIBUS_1'
Mapping Device/Node 'PB1' (NodeID:69c65f28-7810-44e6-aae6-fcecb035f91b, Addr:40) to Network 'PROFIBUS_1'
Data extraction and structuring complete.
Generating JSON output: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\SAE196_c0.2_CAx_Export.hierarchical.json
JSON data written successfully.

View File

@ -1,33 +1,33 @@
--- Log de Ejecución: x4.py ---
Grupo: ObtainIOFromProjectTia
Directorio de Trabajo: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Inicio: 2025-05-05 12:09:26
Fin: 2025-05-05 12:16:20
Duración: 0:06:53.110393
Inicio: 2025-05-05 13:26:23
Fin: 2025-05-05 13:35:16
Duración: 0:08:53.119788
Estado: SUCCESS (Código de Salida: 0)
--- SALIDA ESTÁNDAR (STDOUT) ---
--- TIA Portal Cross-Reference Exporter ---
Selected Project: C:/Trabajo/SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/InLavoro/PLC/SAE196_c0.2/SAE196_c0.2.ap18
Using Export Directory: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref
Using Base Export Directory: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Connecting to TIA Portal V18.0...
2025-05-05 12:09:30,267 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
2025-05-05 12:09:30,279 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
2025-05-05 13:26:29,175 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
2025-05-05 13:26:29,200 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
Connected to TIA Portal.
2025-05-05 12:09:48,418 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal GetProcessId - Process id: 24284
Portal Process ID: 24284
2025-05-05 13:27:07,831 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal GetProcessId - Process id: 5272
Portal Process ID: 5272
Opening project: SAE196_c0.2.ap18...
2025-05-05 12:09:48,668 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\InLavoro\PLC\SAE196_c0.2\SAE196_c0.2.ap18
2025-05-05 13:27:08,303 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\InLavoro\PLC\SAE196_c0.2\SAE196_c0.2.ap18
Project opened successfully.
2025-05-05 12:10:06,156 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Project GetPlcs - Found plc PLC with parent name S71500/ET200MP station_1
2025-05-05 13:27:39,932 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Project GetPlcs - Found plc PLC with parent name S71500/ET200MP station_1
Found 1 PLC(s). Starting cross-reference export process...
--- Processing PLC: PLC ---
[PLC: PLC] Exporting Program Block Cross-References...
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\ProgramBlocks_CR
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\ProgramBlocks_CR
Found 380 program blocks.
Processing block: _CYCL_EXC...
Exporting cross-references for _CYCL_EXC...
@ -305,284 +305,10 @@ Found 1 PLC(s). Starting cross-reference export process...
Exporting cross-references for CIPLocal_ProgStepUp...
Processing block: CIPReportManager...
Exporting cross-references for CIPReportManager...
Processing block: CPU_DP Global Diag...
Exporting cross-references for CPU_DP Global Diag...
Processing block: CVQ_1p7_8_Perc...
Exporting cross-references for CVQ_1p7_8_Perc...
Processing block: DELETE...
Exporting cross-references for DELETE...
Processing block: EQ_STRNG...
Exporting cross-references for EQ_STRNG...
Processing block: FillerControl...
Exporting cross-references for FillerControl...
Processing block: FillerControl_DataSend...
Exporting cross-references for FillerControl_DataSend...
Processing block: FillingTime...
Exporting cross-references for FillingTime...
Processing block: Input_CheckFlowMetersSta...
Exporting cross-references for Input_CheckFlowMetersSta...
Processing block: Input_DigitalCtrl...
Exporting cross-references for Input_DigitalCtrl...
Processing block: Input_DigitalScanner...
Exporting cross-references for Input_DigitalScanner...
Processing block: Instrument_Scanner...
Exporting cross-references for Instrument_Scanner...
Processing block: Interlocking_Panel...
Exporting cross-references for Interlocking_Panel...
Processing block: Maselli_PA_Ctrl_Read...
Exporting cross-references for Maselli_PA_Ctrl_Read...
Processing block: MaxCarboCO2 Vol...
Exporting cross-references for MaxCarboCO2 Vol...
Processing block: MessageScroll...
Exporting cross-references for MessageScroll...
Processing block: mPDS_SYR_PA_Ctrl_Read...
Exporting cross-references for mPDS_SYR_PA_Ctrl_Read...
Processing block: Output_CO2InjPress...
Exporting cross-references for Output_CO2InjPress...
Processing block: Pneumatic Valve Fault...
Exporting cross-references for Pneumatic Valve Fault...
Processing block: PPM O2...
Exporting cross-references for PPM O2...
Processing block: PPM303_VFC_Ctrl...
Exporting cross-references for PPM303_VFC_Ctrl...
Processing block: PPM305_VFC_Ctrl...
Exporting cross-references for PPM305_VFC_Ctrl...
Processing block: PPM307_VFC_Ctrl...
Exporting cross-references for PPM307_VFC_Ctrl...
Processing block: PPN301_VFC_Ctrl...
Exporting cross-references for PPN301_VFC_Ctrl...
Processing block: PPP302_VFC_Ctrl...
Exporting cross-references for PPP302_VFC_Ctrl...
Processing block: ProdBrixRecovery_BrixCal...
Exporting cross-references for ProdBrixRecovery_BrixCal...
Processing block: ProdReportManager...
Exporting cross-references for ProdReportManager...
Processing block: ProductQuality_Messages...
Exporting cross-references for ProductQuality_Messages...
Processing block: Profibus Network...
Exporting cross-references for Profibus Network...
Processing block: QCO Monitor...
Exporting cross-references for QCO Monitor...
Processing block: ReadAnalogIn...
Exporting cross-references for ReadAnalogIn...
Processing block: RecipeCalculation...
Exporting cross-references for RecipeCalculation...
Processing block: REPLACE_Mod...
Exporting cross-references for REPLACE_Mod...
Processing block: SyrBrix_SyrupCorrPerc...
Exporting cross-references for SyrBrix_SyrupCorrPerc...
Processing block: Syrup Rinse QCO_Seq...
Exporting cross-references for Syrup Rinse QCO_Seq...
Processing block: SyrupRoomCtrl_UpdateVal...
Exporting cross-references for SyrupRoomCtrl_UpdateVal...
Processing block: T_Timer...
Exporting cross-references for T_Timer...
Processing block: TankLevelToHeight...
Exporting cross-references for TankLevelToHeight...
Processing block: VacuumCtrl...
Exporting cross-references for VacuumCtrl...
Processing block: ValveFlow...
Exporting cross-references for ValveFlow...
Processing block: BlenderPID__Main...
Exporting cross-references for BlenderPID__Main...
Processing block: BlenderPID_BlendingFault...
Exporting cross-references for BlenderPID_BlendingFault...
Processing block: BlenderPID_PIDFFCalc...
Exporting cross-references for BlenderPID_PIDFFCalc...
Processing block: BlenderPID_PIDInitParam...
Exporting cross-references for BlenderPID_PIDInitParam...
Processing block: BlenderPID_PIDSPCalc...
Exporting cross-references for BlenderPID_PIDSPCalc...
Processing block: BlenderPIDCtrl_Monitor...
Exporting cross-references for BlenderPIDCtrl_Monitor...
Processing block: BlenderPIDCtrl_ReadAnIn...
Exporting cross-references for BlenderPIDCtrl_ReadAnIn...
Processing block: BlenderPIDCtrl_SaveInteg...
Exporting cross-references for BlenderPIDCtrl_SaveInteg...
Processing block: BlenderRun_MeasFilSpeed...
Exporting cross-references for BlenderRun_MeasFilSpeed...
Processing block: BrixTracking_ProdSamples...
Exporting cross-references for BrixTracking_ProdSamples...
Processing block: BrixTracking_SampleTime...
Exporting cross-references for BrixTracking_SampleTime...
Processing block: CIPRecipeManagement...
Exporting cross-references for CIPRecipeManagement...
Processing block: Co2_Counters...
Exporting cross-references for Co2_Counters...
Processing block: CO2Tracking...
Exporting cross-references for CO2Tracking...
Processing block: CO2Tracking_ProdSamples...
Exporting cross-references for CO2Tracking_ProdSamples...
Processing block: CO2Tracking_SampleTime...
Exporting cross-references for CO2Tracking_SampleTime...
Processing block: Default_SupervisionFB...
Exporting cross-references for Default_SupervisionFB...
Processing block: Delay...
Exporting cross-references for Delay...
Processing block: Input...
Exporting cross-references for Input...
Processing block: Integral...
Exporting cross-references for Integral...
Processing block: Key Read & Write...
Exporting cross-references for Key Read & Write...
Processing block: LowPassFilter...
Exporting cross-references for LowPassFilter...
Processing block: MFMAnalogValues...
Exporting cross-references for MFMAnalogValues...
Processing block: MSE Slope...
Exporting cross-references for MSE Slope...
Processing block: PID_Filling_Head_Calc...
Exporting cross-references for PID_Filling_Head_Calc...
Processing block: PID_RMM301...
Exporting cross-references for PID_RMM301...
Processing block: PID_RMM303...
Exporting cross-references for PID_RMM303...
Processing block: PID_RMM304...
Exporting cross-references for PID_RMM304...
Processing block: PID_RMP302...
Exporting cross-references for PID_RMP302...
Processing block: PID_RVM301...
Exporting cross-references for PID_RVM301...
Processing block: PID_RVM319_PRD...
Exporting cross-references for PID_RVM319_PRD...
Processing block: PID_RVN302...
Exporting cross-references for PID_RVN302...
Processing block: PID_RVP303...
Exporting cross-references for PID_RVP303...
Processing block: PID_RVS318...
Exporting cross-references for PID_RVS318...
Processing block: PIDControl...
Exporting cross-references for PIDControl...
Processing block: Procedure...
Exporting cross-references for Procedure...
Processing block: ProcedureBlendFill StartUp...
Exporting cross-references for ProcedureBlendFill StartUp...
Processing block: ProcedureBrixTracking...
Exporting cross-references for ProcedureBrixTracking...
Processing block: ProcedureCarboWaterLine...
Exporting cross-references for ProcedureCarboWaterLine...
Processing block: ProcedureDeaireator StartUp...
Exporting cross-references for ProcedureDeaireator StartUp...
Processing block: ProcedureFirstProduction...
Exporting cross-references for ProcedureFirstProduction...
Processing block: ProcedureProdBrixRecovery...
Exporting cross-references for ProcedureProdBrixRecovery...
Processing block: ProcedureProdTankDrain...
Exporting cross-references for ProcedureProdTankDrain...
Processing block: ProcedureProdTankRunOut...
Exporting cross-references for ProcedureProdTankRunOut...
Processing block: ProcedureSyrup RunOut...
Exporting cross-references for ProcedureSyrup RunOut...
Processing block: ProcedureSyrupLineMFMPrep...
Exporting cross-references for ProcedureSyrupLineMFMPrep...
Processing block: ProcedureSyrupMFMStartUp...
Exporting cross-references for ProcedureSyrupMFMStartUp...
Processing block: ProductAvailable...
Exporting cross-references for ProductAvailable...
Processing block: ProductPipeDrain...
Exporting cross-references for ProductPipeDrain...
Processing block: ProductPipeRunOut...
Exporting cross-references for ProductPipeRunOut...
Processing block: Signal Gen...
Exporting cross-references for Signal Gen...
Processing block: SlewLimit...
Exporting cross-references for SlewLimit...
Processing block: Statistical_Analisys...
Exporting cross-references for Statistical_Analisys...
Processing block: SubCarb...
Exporting cross-references for SubCarb...
Processing block: SyrBrix Autocorrection...
Exporting cross-references for SyrBrix Autocorrection...
Processing block: System_Run_Out...
Exporting cross-references for System_Run_Out...
Processing block: Blender_Constants...
Exporting cross-references for Blender_Constants...
Processing block: Blender_Variables...
Exporting cross-references for Blender_Variables...
Processing block: Blender_Variables_Pers...
Exporting cross-references for Blender_Variables_Pers...
Processing block: Blocco_dati_Test...
Exporting cross-references for Blocco_dati_Test...
Processing block: CIP_Program_Variables...
Exporting cross-references for CIP_Program_Variables...
Processing block: CIPRecipe#01...
Exporting cross-references for CIPRecipe#01...
Processing block: CIPRecipe#02...
Exporting cross-references for CIPRecipe#02...
Processing block: CIPRecipe#03...
Exporting cross-references for CIPRecipe#03...
Processing block: CIPRecipe#04...
Exporting cross-references for CIPRecipe#04...
Processing block: CIPRecipe#05...
Exporting cross-references for CIPRecipe#05...
Processing block: CIPRecipe#06...
Exporting cross-references for CIPRecipe#06...
Processing block: CIPRecipe#07...
Exporting cross-references for CIPRecipe#07...
Processing block: CIPRecipe#08...
Exporting cross-references for CIPRecipe#08...
Processing block: CIPRecipe#09...
Exporting cross-references for CIPRecipe#09...
Processing block: CIPRecipe#10...
Exporting cross-references for CIPRecipe#10...
Processing block: CIPRecipe#11...
Exporting cross-references for CIPRecipe#11...
Processing block: CIPRecipe#12...
Exporting cross-references for CIPRecipe#12...
Processing block: CIPRecipe#13...
Exporting cross-references for CIPRecipe#13...
Processing block: CIPRecipe#14...
Exporting cross-references for CIPRecipe#14...
Processing block: CIPRecipe#15...
Exporting cross-references for CIPRecipe#15...
Processing block: CIPRecipe#16...
Exporting cross-references for CIPRecipe#16...
Processing block: CIPRecipe#17...
Exporting cross-references for CIPRecipe#17...
Processing block: CIPRecipe#18...
Exporting cross-references for CIPRecipe#18...
Processing block: CIPRecipe#19...
Exporting cross-references for CIPRecipe#19...
Processing block: CIPRecipe#20...
Exporting cross-references for CIPRecipe#20...
Processing block: CIPRecipe#21...
Exporting cross-references for CIPRecipe#21...
Processing block: CIPRecipe#22...
Exporting cross-references for CIPRecipe#22...
Processing block: CIPRecipe#23...
Exporting cross-references for CIPRecipe#23...
Processing block: CIPRecipe#24...
Exporting cross-references for CIPRecipe#24...
Processing block: CIPRecipe#25...
Exporting cross-references for CIPRecipe#25...
Processing block: CIPRecipe#26...
Exporting cross-references for CIPRecipe#26...
Processing block: CIPRecipe#27...
Exporting cross-references for CIPRecipe#27...
Processing block: CIPRecipe#28...
Exporting cross-references for CIPRecipe#28...
Processing block: CIPRecipe#29...
Exporting cross-references for CIPRecipe#29...
Processing block: CIPRecipe#30...
Exporting cross-references for CIPRecipe#30...
Processing block: CIPReportDB...
Exporting cross-references for CIPReportDB...
Processing block: Filler_Head_Variables...
Exporting cross-references for Filler_Head_Variables...
Processing block: GLOBAL_DIAG_DB...
Exporting cross-references for GLOBAL_DIAG_DB...
Processing block: HMI CPU_DP Diag...
Exporting cross-references for HMI CPU_DP Diag...
Processing block: HMI Key User...
Exporting cross-references for HMI Key User...
Processing block: HMI_Alarms...
Exporting cross-references for HMI_Alarms...
Processing block: HMI_Digital...
Exporting cross-references for HMI_Digital...
ERROR accessing Program Blocks for cross-reference export: RemotingException: El objeto '/7a4a4a73_a97d_46f2_83b4_4f5e9d0e966e/df6uqosgttpdtg38rqj6huml_447.rem' se desconectó o no existe en el servidor.
ERROR accessing Program Blocks for cross-reference export: RemotingException: El objeto '/460a527c_f027_40c0_bbfb_2f9184c04002/hwhq0szmkxqfz2pc1xmghz0a_310.rem' se desconectó o no existe en el servidor.
[PLC: PLC] Exporting PLC Tag Table Cross-References...
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\PlcTags_CR
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\PlcTags_CR
Found 10 Tag Tables.
Processing Tag Table: Memories...
Exporting cross-references for Memories...
@ -607,7 +333,7 @@ Found 1 PLC(s). Starting cross-reference export process...
Tag Table CR Export Summary: Exported=10, Skipped/Errors=0
[PLC: PLC] Exporting PLC Data Type (UDT) Cross-References...
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\PlcDataTypes_CR
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\PlcDataTypes_CR
Found 24 UDTs.
Processing UDT: AnalogInstrument...
Exporting cross-references for AnalogInstrument...
@ -660,7 +386,7 @@ Found 1 PLC(s). Starting cross-reference export process...
UDT CR Export Summary: Exported=24, Skipped/Errors=0
[PLC: PLC] Attempting to Export System Block Cross-References...
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\SystemBlocks_CR
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\SystemBlocks_CR
Found 9 system blocks (using get_system_blocks).
Processing System Block: T_301...
Exporting cross-references for T_301...
@ -683,7 +409,7 @@ Found 1 PLC(s). Starting cross-reference export process...
System Block CR Export Summary: Exported=9, Skipped/Errors=0
[PLC: PLC] Attempting to Export Software Unit Cross-References...
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\SoftwareUnits_CR
Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\SoftwareUnits_CR
Found 0 Software Units.
Software Unit CR Export Summary: Exported=0, Skipped/Errors=0
@ -692,16 +418,16 @@ Found 1 PLC(s). Starting cross-reference export process...
Cross-reference export process completed.
Closing TIA Portal...
2025-05-05 12:16:12,051 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
2025-05-05 13:35:02,332 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
TIA Portal closed.
Script finished.
--- ERRORES (STDERR) ---
Traceback (most recent call last):
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 100, in export_plc_cross_references
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 99, in export_plc_cross_references
block_name = block.get_name()
^^^^^^^^^^^^^^^^
ValueError: RemotingException: El objeto '/7a4a4a73_a97d_46f2_83b4_4f5e9d0e966e/df6uqosgttpdtg38rqj6huml_447.rem' se desconectó o no existe en el servidor.
ValueError: RemotingException: El objeto '/460a527c_f027_40c0_bbfb_2f9184c04002/hwhq0szmkxqfz2pc1xmghz0a_310.rem' se desconectó o no existe en el servidor.
--- FIN DEL LOG ---

View File

@ -0,0 +1,39 @@
### Directory structure
<working_directory>/
├── <PLC1_Name>/
│ ├── ProgramBlocks_XML/
│ │ └── ... (archivos XML de bloques)
│ ├── ProgramBlocks_SCL/
│ │ └── ... (archivos SCL de bloques)
│ ├── ProgramBlocks_CR/
│ │ └── ... (archivos XML de referencias cruzadas de bloques)
│ ├── PlcTags/
│ │ └── ... (archivos XML de tablas de tags)
│ ├── PlcTags_CR/
│ │ └── ... (archivos XML de referencias cruzadas de tablas de tags)
│ ├── PlcDataTypes_CR/
│ │ └── ... (archivos XML de referencias cruzadas de UDTs)
│ ├── SystemBlocks_CR/
│ │ └── ...
│ └── SoftwareUnits_CR/
│ └── ...
│ └── Documentation/
│ └── Source
│ └── ... (archivos md de bloques de programa)
│ └── JSON
│ └── ... (archivos JSON temporales)
│ └── xref_calls_tree.md
│ └── xref_db_usage_summary.md
│ └── xref_plc_tags_summary.md
│ └── full_project_representation.md
│ └── SAE196_c0.2_CAx_Export_Hardware_Tree.md
├── <PLC2_Name>/
│ ├── ProgramBlocks_XML/
│ │ └── ...
│ └── ...
└── ...

View File

@ -12,8 +12,8 @@
"hidden": false
},
"x3.py": {
"display_name": "3: Exportar IOs desde CAx",
"short_description": "Extrae IOs de un proyecto TIA Portal y genera un archivo Markdown.",
"display_name": "3: Procesar la exportación AML y generar documentación de IOs",
"short_description": "Extrae IOs de un archivo AML exportado del TIA Portal y genera un archivo Markdown.",
"long_description": "Este script procesa un archivo AML exportado desde TIA Portal para extraer información de los IOs y generar un archivo Markdown con un resumen detallado.\n***\n**Lógica Principal:**\n\n1. **Selección de Archivo AML:** Abre un cuadro de diálogo para seleccionar el archivo AML exportado desde TIA Portal.\n2. **Procesamiento de Datos:**\n * Extrae información de dispositivos, redes y conexiones desde el archivo AML.\n * Identifica PLCs, redes y módulos IO.\n * Genera una estructura jerárquica de los dispositivos y sus conexiones.\n3. **Generación de Markdown:**\n * Crea un archivo Markdown con un resumen jerárquico de hardware y conexiones IO.\n * Incluye un árbol de conexiones IO hacia arriba para depuración.\n4. **Salida:** Guarda los resultados en archivos Markdown y JSON en el directorio configurado.",
"hidden": false
},

View File

@ -18,7 +18,6 @@ from backend.script_utils import load_configuration
# --- Configuration ---
TIA_PORTAL_VERSION = "18.0" # Target TIA Portal version (e.g., "18.0")
CROSS_REF_SUBFOLDER = "cross_ref" # Subfolder name within working_directory
# Filter for cross-references. Based on documentation:
# 1: 'AllObjects', 2: 'ObjectsWithReferences', 3: 'ObjectsWithoutReferences', 4: 'UnusedObjects'
# Using 1 to export all. 0 might also work as a default in some API versions.
@ -346,13 +345,13 @@ if __name__ == "__main__":
project_file = select_project_file()
# 2. Define Export Directory using working_directory and subfolder
export_dir = Path(working_directory) / CROSS_REF_SUBFOLDER
# The export base directory is the working directory. PLC-specific folders will be created inside.
export_base_dir = Path(working_directory)
try:
export_dir.mkdir(parents=True, exist_ok=True)
# Ensure the base working directory exists (it should, but check doesn't hurt)
export_base_dir.mkdir(parents=True, exist_ok=True)
print(f"\nSelected Project: {project_file}")
print(
f"Using Export Directory: {export_dir.resolve()}"
) # Use resolve() for absolute path
print(f"Using Base Export Directory: {export_base_dir.resolve()}")
except Exception as e:
print(f"ERROR: Could not create export directory '{export_dir}'. Error: {e}")
sys.exit(1)
@ -397,7 +396,7 @@ if __name__ == "__main__":
for plc_device in plcs:
export_plc_cross_references(
plc=plc_device,
export_base_dir=export_dir, # Pass the specific cross-ref dir
export_base_dir=export_base_dir, # Pass the base directory
)
print("\nCross-reference export process completed.")

View File

@ -1,11 +1,11 @@
{
"scl_output_dir": "scl_output",
"xref_output_dir": "xref_output",
"xref_source_subdir": "source",
"aggregated_filename": "full_project_representation.md",
"call_xref_filename": "xref_calls_tree.md",
"db_usage_xref_filename": "xref_db_usage_summary.md",
"max_call_depth": "10",
"max_users_list": "20",
"plc_tag_xref_filename": "xref_plc_tags_summary.md",
"max_call_depth": 5,
"max_users_list": 20,
"aggregated_filename": "full_project_representation.md"
"scl_output_dir": "scl_output",
"xref_output_dir": "xref_output",
"xref_source_subdir": "source"
}

View File

@ -14,7 +14,7 @@ try:
processors_dir = os.path.join(project_base_dir, 'processors')
if processors_dir not in sys.path:
sys.path.insert(0, processors_dir) # Añadir al path si no está
from processor_utils import format_variable_name
from processors.processor_utils import format_variable_name
except ImportError:
print("Advertencia: No se pudo importar 'format_variable_name' desde processors.processor_utils.")
print("Usando una implementación local básica.")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
--- Log de Ejecución: x4_cross_reference.py ---
Grupo: XML Parser to SCL
Directorio de Trabajo: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport
Inicio: 2025-05-05 16:34:28
Fin: 2025-05-05 16:34:30
Duración: 0:00:01.642768
Estado: SUCCESS (Código de Salida: 0)
--- SALIDA ESTÁNDAR (STDOUT) ---
(x4 - Standalone) Ejecutando generación de referencias cruzadas...
--- Iniciando Generación de Referencias Cruzadas y Fuentes MD (x4) ---
Buscando archivos JSON procesados en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC
Directorio de salida XRef: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\xref_output
Directorio fuente SCL/MD (para análisis DB/Tag y copia): scl_output
Subdirectorio fuentes MD para XRef: source
Copiando y preparando archivos fuente para Obsidian en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\xref_output\source
Archivos fuente preparados: 378 SCL convertidos, 30 MD copiados.
Buscando archivos XML XRef en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\ProgramBlocks_CR
Archivos JSON encontrados: 342
Datos cargados para 342 bloques.
Mapa InstanciaDB -> FB creado con 0 entradas.
Datos cargados para 342 bloques (1793 PLC Tags globales).
Construyendo grafo de llamadas desde archivos XML XRef...
Archivos XML XRef encontrados: 138
Generando ÁRBOL XRef de llamadas en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\xref_output\xref_calls_tree.md
Generando RESUMEN XRef de uso de DBs en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\xref_output\xref_db_usage_summary.md
Generando RESUMEN XRef de uso de PLC Tags en: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC\xref_output\xref_plc_tags_summary.md
--- Generación de Referencias Cruzadas y Fuentes MD (x4) Completada ---
(x4 - Standalone) Proceso completado exitosamente.
--- ERRORES (STDERR) ---
Ninguno
--- FIN DEL LOG ---

View File

@ -10,6 +10,44 @@ El proceso se divide en tres etapas principales, cada una manejada por un script
2. **Procesamiento Semántico (`process.py`):** Lee el JSON enriquecido y, de forma iterativa, traduce cada instrucción LAD a su equivalente SCL, manejando dependencias, propagando el estado lógico (RLO), y agrupando lógica paralela. El SCL generado se almacena *dentro* del propio JSON.
3. **Generación de SCL Final (`generate_scl.py`):** Lee el JSON completamente procesado y ensambla el código SCL final en un archivo `.scl` formateado, incluyendo declaraciones de variables y el cuerpo del programa.
### Directory structure
<working_directory>/
├── <PLC1_Name>/
│ ├── ProgramBlocks_XML/
│ │ └── ... (archivos XML de bloques)
│ ├── ProgramBlocks_SCL/
│ │ └── ... (archivos SCL de bloques)
│ ├── ProgramBlocks_CR/
│ │ └── ... (archivos XML de referencias cruzadas de bloques)
│ ├── PlcTags/
│ │ └── ... (archivos XML de tablas de tags)
│ ├── PlcTags_CR/
│ │ └── ... (archivos XML de referencias cruzadas de tablas de tags)
│ ├── PlcDataTypes_CR/
│ │ └── ... (archivos XML de referencias cruzadas de UDTs)
│ ├── SystemBlocks_CR/
│ │ └── ...
│ └── SoftwareUnits_CR/
│ └── ...
│ └── Documentation/
│ └── Source
│ └── ... (archivos md de bloques de programa)
│ └── JSON
│ └── ... (archivos JSON temporales)
│ └── xref_calls_tree.md
│ └── xref_db_usage_summary.md
│ └── xref_plc_tags_summary.md
│ └── full_project_representation.md
│ └── SAE196_c0.2_CAx_Export_Hardware_Tree.md
├── <PLC2_Name>/
│ ├── ProgramBlocks_XML/
│ │ └── ...
│ └── ...
└── ...
## 2. Etapas del Pipeline
### Etapa 1: XML a JSON Enriquecido (`x1_to_json.py`)

View File

@ -4,15 +4,15 @@
"model": "gpt-3.5-turbo"
},
"level2": {
"scl_output_dir": "scl_output",
"xref_output_dir": "xref_output",
"xref_source_subdir": "source",
"aggregated_filename": "full_project_representation.md",
"call_xref_filename": "xref_calls_tree.md",
"db_usage_xref_filename": "xref_db_usage_summary.md",
"max_call_depth": "10",
"max_users_list": "20",
"plc_tag_xref_filename": "xref_plc_tags_summary.md",
"max_call_depth": 5,
"max_users_list": 20,
"aggregated_filename": "full_project_representation.md"
"scl_output_dir": "scl_output",
"xref_output_dir": "xref_output",
"xref_source_subdir": "source"
},
"level3": {},
"working_directory": "C:\\Trabajo\\SIDEL\\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\\Reporte\\IOExport"

View File

@ -1,6 +1,6 @@
{
"x0_main.py": {
"display_name": "Procesar Exportación XML",
"display_name": "1: Procesar Exportación XML",
"short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL",
"long_description": "Este script es el punto de entrada y orquestador principal para el proceso de conversión de archivos XML de Siemens TIA Portal (LAD/FUP) a código SCL y la generación de documentación relacionada.\n\n**Lógica Principal:**\n\n1. **Configuración:** Carga parámetros desde `ParamManagerScripts` (directorio de trabajo, nombres de carpetas de salida, etc.).\n2. **Logging:** Inicia un archivo `log.txt` para registrar detalladamente el progreso y los errores.\n3. **Descubrimiento:** Busca recursivamente todos los archivos `.xml` dentro del subdirectorio `PLC` del directorio de trabajo configurado.\n4. **Procesamiento Individual (Pasos x1-x3):**\n * Itera sobre cada archivo XML encontrado.\n * Implementa lógica para **saltar** pasos si el XML no ha cambiado y las salidas ya existen y están actualizadas.\n * Llama a funciones de `x1_to_json.py`, `x2_process.py`, y `x3_generate_scl.py` para convertir XML -> JSON intermedio -> JSON procesado -> archivo SCL/Markdown final.\n5. **Referencias Cruzadas (Paso x4):** Llama a una función de `x4_cross_reference.py` para generar análisis de llamadas, uso de DBs, etc., basándose en los archivos procesados.\n6. **Agregación (Paso x5):** Llama a una función de `x5_aggregate.py` para combinar las salidas SCL/Markdown y las referencias cruzadas en un único archivo Markdown resumen.\n7. **Resumen y Salida:** Registra un resumen final del proceso (éxitos, saltos, fallos) y finaliza con un código de estado (0 para éxito, 1 si hubo errores).\n",
"hidden": false
@ -24,10 +24,10 @@
"hidden": true
},
"x4_cross_reference.py": {
"display_name": "x4_cross_reference",
"display_name": "4: Generar Cross References",
"short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL",
"long_description": "",
"hidden": true
"hidden": false
},
"x5_aggregate.py": {
"display_name": "x5_aggregate",

View File

@ -14,7 +14,9 @@ import traceback
import glob
import re
import urllib.parse
import xml.etree.ElementTree as ET # <-- NUEVO: Para parsear XML
import shutil # <-- NUEVO: Para copiar archivos
from generators.generator_utils import format_variable_name
from collections import defaultdict
script_root = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
@ -22,44 +24,8 @@ script_root = os.path.dirname(
sys.path.append(script_root)
from backend.script_utils import load_configuration
# --- Importar format_variable_name (sin cambios) ---
try:
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
if parent_dir not in sys.path:
sys.path.insert(0, parent_dir)
from generators.generator_utils import format_variable_name
print("INFO: format_variable_name importado desde generators.generator_utils")
except ImportError:
print(
"ADVERTENCIA: No se pudo importar format_variable_name desde generators. Usando copia local."
)
def format_variable_name(name): # Fallback
if not name:
return "_INVALID_NAME_"
if name.startswith('"') and name.endswith('"'):
return name
prefix = "#" if name.startswith("#") else ""
if prefix:
name = name[1:]
if name and name[0].isdigit():
name = "_" + name
name = re.sub(r"[^a-zA-Z0-9_]", "_", name)
return prefix + name
# --- Constantes ---
# SCL_OUTPUT_DIRNAME = "scl_output" # Se leerá de config
# XREF_SOURCE_SUBDIR = "source" # Se leerá de config
# CALL_XREF_FILENAME = "xref_calls_tree.md" # Se leerá de config
# DB_USAGE_XREF_FILENAME = "xref_db_usage_summary.md" # Se leerá de config
# PLC_TAG_XREF_FILENAME = "xref_plc_tags_summary.md" # Se leerá de config
# MAX_CALL_DEPTH = 5 # Se leerá de config
INDENT_STEP = " "
# MAX_USERS_LIST = 20 # Se leerá de config
# --- Funciones de Análisis (find_calls_in_scl, find_db_tag_usage, find_plc_tag_usage sin cambios) ---
# <-- MODIFICADO: Añadir instance_db_to_fb_map como parámetro -->
@ -376,7 +342,7 @@ def build_call_tree_recursive( # Añadido max_call_depth, xref_source_subdir
visited_in_path.add(current_node)
if current_node in call_graph:
callees = sorted(call_graph[current_node].keys())
callees = sorted(call_graph[current_node])
for callee in callees:
# Llamada recursiva
build_call_tree_recursive(
@ -505,6 +471,84 @@ def generate_plc_tag_summary_output(plc_tag_users, max_users_list): # Añadido m
output_lines.append("")
return output_lines
# --- NUEVA FUNCION: Parseador de XML XRef ---
def parse_xref_xml_for_calls(xml_file_path):
"""
Parsea un archivo _XRef.xml de TIA Portal y extrae las relaciones de llamada (Caller -> Callee).
Se basa en la estructura descrita en xref_info.md.
Devuelve un diccionario: {caller_name: [callee_name1, callee_name2, ...]}
"""
calls = defaultdict(list)
try:
tree = ET.parse(xml_file_path)
root = tree.getroot()
# Determinar el namespace (puede variar, esto es un intento común)
# Si el namespace es diferente, habrá que ajustarlo aquí.
ns_match = re.match(r'\{([^}]+)\}', root.tag)
ns = {'ns': ns_match.group(1)} if ns_match else {}
ns_prefix = f"{{{ns['ns']}}}" if ns else ""
# Encuentra el SourceObject (el llamador en este archivo)
source_object = root.find(f'.//{ns_prefix}SourceObject')
if source_object is None:
print(f"Advertencia: No se encontró SourceObject en {xml_file_path}", file=sys.stderr)
return {} # Devuelve diccionario vacío si no hay SourceObject
caller_name_elem = source_object.find(f'{ns_prefix}Name')
caller_name = caller_name_elem.text if caller_name_elem is not None and caller_name_elem.text else f"UnknownCaller_{os.path.basename(xml_file_path)}"
# Itera sobre los objetos referenciados (potenciales llamados)
references = source_object.find(f'{ns_prefix}References')
if references is not None:
for ref_object in references.findall(f'{ns_prefix}ReferenceObject'):
ref_name_elem = ref_object.find(f'{ns_prefix}Name')
ref_name = ref_name_elem.text if ref_name_elem is not None and ref_name_elem.text else None
ref_type_name_elem = ref_object.find(f'{ns_prefix}TypeName')
ref_type_name = ref_type_name_elem.text if ref_type_name_elem is not None and ref_type_name_elem.text else ""
if not ref_name: continue # Saltar si el objeto referenciado no tiene nombre
# Itera sobre las localizaciones de la referencia
locations = ref_object.find(f'{ns_prefix}Locations')
if locations is not None:
for location in locations.findall(f'{ns_prefix}Location'):
# <-- NUEVO: Comprobar primero el ReferenceType -->
ref_type_elem = location.find(f'{ns_prefix}ReferenceType')
ref_type_text = ref_type_elem.text if ref_type_elem is not None else ""
# Solo procesar si el SourceObject 'Uses' el ReferenceObject en esta Location
if ref_type_text == 'Uses':
access_elem = location.find(f'{ns_prefix}Access')
access_type = access_elem.text if access_elem is not None and access_elem.text else ""
callee_name = None
if access_type == 'Call':
# Llamada directa a FC
callee_name = ref_name
elif access_type == 'InstanceDB':
# Llamada a FB via DB de Instancia
# Extraer nombre/número del FB desde TypeName (ej: "Instance DB of BlockName [FB123]")
match = re.search(r'Instance DB of\s+(.*?)\s+\[([A-Za-z]+[0-9]+)\]', ref_type_name)
if match:
# Preferir nombre simbólico si existe, si no, el número (FBxxx)
callee_name = match.group(1) if match.group(1) else match.group(2)
elif 'Instance DB of' in ref_type_name: # Fallback si regex falla
callee_name = ref_type_name.split('Instance DB of ')[-1].strip()
if callee_name and callee_name not in calls[caller_name]:
calls[caller_name].append(callee_name)
except ET.ParseError as e:
print(f"Error parseando XML {xml_file_path}: {e}", file=sys.stderr)
except FileNotFoundError:
print(f"Error: Archivo XML no encontrado {xml_file_path}", file=sys.stderr)
except Exception as e:
print(f"Error inesperado procesando XML {xml_file_path}: {e}", file=sys.stderr)
traceback.print_exc(file=sys.stderr)
return dict(calls) # Convertir de defaultdict a dict
# --- Función Principal (MODIFICADA para llamar a copy_and_prepare_source_files) ---
def generate_cross_references(
@ -526,13 +570,21 @@ def generate_cross_references(
print(f"--- Iniciando Generación de Referencias Cruzadas y Fuentes MD (x4) ---")
print(f"Buscando archivos JSON procesados en: {project_root_dir}")
print(f"Directorio de salida XRef: {output_dir}")
print(f"Directorio fuente SCL/MD: {scl_output_dirname}")
print(f"Directorio fuente SCL/MD (para análisis DB/Tag y copia): {scl_output_dirname}")
print(f"Subdirectorio fuentes MD para XRef: {xref_source_subdir}")
output_dir_abs = os.path.abspath(output_dir)
# <-- NUEVO: Crear directorio y preparar archivos fuente ANTES de generar XRefs -->
# Pasar los nombres de directorios leídos de la config
copy_and_prepare_source_files(project_root_dir, output_dir_abs, scl_output_dirname, xref_source_subdir)
# <-- NUEVO: Definir directorio donde buscar los XML de XRef -->
# <-- MODIFICADO: Buscar dentro del directorio del PLC actual (project_root_dir) -->
# xref_xml_dir = os.path.join(os.path.dirname(project_root_dir), "cross_ref", "PLC", "ProgramBlocks_CR") # Ruta anterior incorrecta
xref_xml_dir = os.path.join(project_root_dir, "ProgramBlocks_CR") # Ruta correcta: <working_dir>/<PLC_Name>/ProgramBlocks_CR/
print(f"Buscando archivos XML XRef en: {xref_xml_dir}")
# <-- FIN NUEVO -->
json_files = glob.glob(
os.path.join(project_root_dir, "**", "*_processed.json"), recursive=True
@ -542,7 +594,7 @@ def generate_cross_references(
return False
print(f"Archivos JSON encontrados: {len(json_files)}")
# 1. Cargar datos (sin cambios)
# 1. Cargar datos de JSON (sigue siendo útil para metadatos, enlaces, y análisis DB/Tag)
block_data = {}
all_db_names = set()
plc_tag_names = set()
@ -591,11 +643,26 @@ def generate_cross_references(
f"Datos cargados para {len(block_data)} bloques ({len(plc_tag_names)} PLC Tags globales)."
)
# 2. Analizar datos (sin cambios)
call_graph = defaultdict(lambda: defaultdict(int))
# 2. Construir Grafo de Llamadas desde XML XRef
print("Construyendo grafo de llamadas desde archivos XML XRef...")
call_graph = defaultdict(list) # Usamos lista, no necesitamos contar llamadas múltiples aquí
xref_xml_files = glob.glob(os.path.join(xref_xml_dir, "*_XRef.xml"))
if not xref_xml_files:
print(f"ADVERTENCIA: No se encontraron archivos '*_XRef.xml' en {xref_xml_dir}. El árbol de llamadas estará vacío.", file=sys.stderr)
else:
print(f"Archivos XML XRef encontrados: {len(xref_xml_files)}")
for xml_file in xref_xml_files:
file_calls = parse_xref_xml_for_calls(xml_file)
for caller, callees in file_calls.items():
if caller not in call_graph:
call_graph[caller] = []
for callee in callees:
if callee not in call_graph[caller]: # Evitar duplicados si un bloque llama varias veces al mismo
call_graph[caller].append(callee)
# 3. Analizar uso de DBs y PLC Tags desde SCL (esta parte no cambia)
db_users = defaultdict(set)
plc_tag_users = defaultdict(set)
print("Analizando llamadas y uso de DBs/PLC Tags...")
for block_name, block_entry in block_data.items():
data = block_entry["data"]
block_type = data.get("block_type")
@ -603,7 +670,7 @@ def generate_cross_references(
continue
caller_name = block_name
# <-- MODIFICADO: Leer el archivo SCL completo en lugar de reconstruir desde JSON -->
# Leer el archivo SCL para análisis de DB/Tags
scl_filename = format_variable_name(caller_name) + ".scl"
# Construir la ruta al archivo SCL dentro del directorio scl_output
scl_filepath = os.path.join(project_root_dir, scl_output_dirname, scl_filename)
@ -618,13 +685,8 @@ def generate_cross_references(
print(f" Advertencia: No se encontró el archivo SCL '{scl_filepath}' para análisis. El bloque podría no tener código ejecutable o hubo un error previo.", file=sys.stderr)
if full_scl_content:
# <-- MODIFICADO: Pasar el mapa a find_calls_in_scl -->
calls_found = find_calls_in_scl(full_scl_content, block_data, instance_db_to_fb_map)
for callee_name, count in calls_found.items():
if callee_name in block_data and block_data[callee_name]["data"].get(
"block_type"
) in ["FC", "FB"]:
call_graph[caller_name][callee_name] += count
# Ya no usamos find_calls_in_scl para el grafo principal
# Analizar uso de DBs
db_usage_found = find_db_tag_usage(full_scl_content)
for db_tag, access_counts in db_usage_found.items():
db_name_part = db_tag.split(".")[0].strip('"') # Limpiar comillas
@ -633,10 +695,11 @@ def generate_cross_references(
):
db_users[db_name_part].add(caller_name)
plc_usage_found = find_plc_tag_usage(full_scl_content, plc_tag_names)
# Analizar uso de PLC Tags
for plc_tag, access_counts in plc_usage_found.items():
plc_tag_users[plc_tag].add(caller_name)
# 3. Generar Archivos de Salida XRef (MODIFICADO para usar la nueva función de árbol)
# 4. Generar Archivos de Salida XRef
os.makedirs(output_dir_abs, exist_ok=True)
call_xref_path = os.path.join(output_dir_abs, call_xref_filename) # Usar parámetro
db_usage_xref_path = os.path.join(output_dir_abs, db_usage_xref_filename) # Usar parámetro
@ -645,7 +708,7 @@ def generate_cross_references(
print(f"Generando ÁRBOL XRef de llamadas en: {call_xref_path}")
try:
# <-- MODIFICADO: Llamar a la nueva función sin project_root_dir -->
call_tree_lines = generate_call_tree_output( # Pasar parámetros
call_tree_lines = generate_call_tree_output( # Pasar parámetros (el grafo ya está construido desde XML)
call_graph, block_data, output_dir_abs, max_call_depth, xref_source_subdir # <-- Pasar max_call_depth
)
with open(call_xref_path, "w", encoding="utf-8") as f:
@ -705,8 +768,17 @@ if __name__ == "__main__":
cfg_call_xref_filename = group_config.get("call_xref_filename", "xref_calls_tree.md")
cfg_db_usage_xref_filename = group_config.get("db_usage_xref_filename", "xref_db_usage_summary.md")
cfg_plc_tag_xref_filename = group_config.get("plc_tag_xref_filename", "xref_plc_tags_summary.md")
cfg_max_call_depth = group_config.get("max_call_depth", 5)
cfg_max_users_list = group_config.get("max_users_list", 20)
# <-- MODIFICADO: Convertir a int y manejar posible error -->
try:
cfg_max_call_depth = int(group_config.get("max_call_depth", 5))
except (ValueError, TypeError):
print("Advertencia: Valor inválido para 'max_call_depth' en la configuración. Usando valor por defecto 5.", file=sys.stderr)
cfg_max_call_depth = 5
try:
cfg_max_users_list = int(group_config.get("max_users_list", 20))
except (ValueError, TypeError):
print("Advertencia: Valor inválido para 'max_users_list' en la configuración. Usando valor por defecto 20.", file=sys.stderr)
cfg_max_users_list = 20
# Calcular rutas
if not working_directory:
@ -716,7 +788,10 @@ if __name__ == "__main__":
# Calcular rutas basadas en la configuración
plc_subdir_name = "PLC" # Asumir nombre estándar
project_root_dir = os.path.join(working_directory, plc_subdir_name)
xref_output_dir = os.path.join(project_root_dir, cfg_xref_output_dirname) # Usar nombre de dir leído
# El directorio de salida XRef ahora estará probablemente al mismo nivel que 'PLC'
# o dentro de él, según la configuración. Usemos la configuración directamente.
# xref_output_dir = os.path.join(working_directory, cfg_xref_output_dirname) # <-- Opción 1: Al nivel de working_dir
xref_output_dir = os.path.join(project_root_dir, cfg_xref_output_dirname) # <-- Opción 2: Dentro de PLC (como estaba antes) - Mantenemos esta por consistencia con el código original
if not os.path.isdir(project_root_dir):
print(f"Error: Directorio del proyecto '{project_root_dir}' no encontrado.", file=sys.stderr)

View File

@ -1,680 +1,21 @@
[12:09:26] Iniciando ejecución de x4.py en C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport...
[12:09:27] --- TIA Portal Cross-Reference Exporter ---
[12:09:29] Selected Project: C:/Trabajo/SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/InLavoro/PLC/SAE196_c0.2/SAE196_c0.2.ap18
[12:09:29] Using Export Directory: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref
[12:09:29] Connecting to TIA Portal V18.0...
[12:09:30] 2025-05-05 12:09:30,267 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
[12:09:30] 2025-05-05 12:09:30,279 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
[12:09:48] Connected to TIA Portal.
[12:09:48] 2025-05-05 12:09:48,418 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal GetProcessId - Process id: 24284
[12:09:48] Portal Process ID: 24284
[12:09:48] Opening project: SAE196_c0.2.ap18...
[12:09:48] 2025-05-05 12:09:48,668 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\InLavoro\PLC\SAE196_c0.2\SAE196_c0.2.ap18
[12:10:02] Project opened successfully.
[12:10:06] 2025-05-05 12:10:06,156 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Project GetPlcs - Found plc PLC with parent name S71500/ET200MP station_1
[12:10:08] Found 1 PLC(s). Starting cross-reference export process...
[12:10:08] --- Processing PLC: PLC ---
[12:10:08] [PLC: PLC] Exporting Program Block Cross-References...
[12:10:08] Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\ProgramBlocks_CR
[12:10:08] Found 380 program blocks.
[12:10:09] Processing block: _CYCL_EXC...
[12:10:09] Exporting cross-references for _CYCL_EXC...
[12:10:11] Processing block: COMPLETE RESTART...
[12:10:11] Exporting cross-references for COMPLETE RESTART...
[12:10:12] Processing block: I/O_FLT1...
[12:10:12] Exporting cross-references for I/O_FLT1...
[12:10:12] Processing block: MOD_ERR...
[12:10:12] Exporting cross-references for MOD_ERR...
[12:10:12] Processing block: ProDiagOB...
[12:10:12] Exporting cross-references for ProDiagOB...
[12:10:12] Processing block: Programming error...
[12:10:12] Exporting cross-references for Programming error...
[12:10:12] Processing block: RACK_FLT...
[12:10:12] Exporting cross-references for RACK_FLT...
[12:10:12] Processing block: Time error interrupt...
[12:10:12] Exporting cross-references for Time error interrupt...
[12:10:12] Processing block: Baialage...
[12:10:12] Exporting cross-references for Baialage...
[12:10:13] Processing block: BlenderCtrl__Main...
[12:10:13] Exporting cross-references for BlenderCtrl__Main...
[12:10:16] Processing block: BlenderCtrl_CIPModeInit...
[12:10:16] Exporting cross-references for BlenderCtrl_CIPModeInit...
[12:10:16] Processing block: BlenderCtrl_ProdModeInit...
[12:10:16] Exporting cross-references for BlenderCtrl_ProdModeInit...
[12:10:16] Processing block: BlenderCtrl_ResetSPWord...
[12:10:16] Exporting cross-references for BlenderCtrl_ResetSPWord...
[12:10:17] Processing block: BlenderCtrl_UpdatePWord...
[12:10:17] Exporting cross-references for BlenderCtrl_UpdatePWord...
[12:10:18] Processing block: BlenderPID_NextRecipe...
[12:10:18] Exporting cross-references for BlenderPID_NextRecipe...
[12:10:19] Processing block: BlenderRinse...
[12:10:19] Exporting cross-references for BlenderRinse...
[12:10:19] Processing block: BlenderRinse_Done...
[12:10:19] Exporting cross-references for BlenderRinse_Done...
[12:10:19] Processing block: BlenderRun_ProdTime...
[12:10:19] Exporting cross-references for BlenderRun_ProdTime...
[12:10:19] Processing block: BlenderRun_Stopping...
[12:10:19] Exporting cross-references for BlenderRun_Stopping...
[12:10:19] Processing block: Blocco_1...
[12:10:19] Exporting cross-references for Blocco_1...
[12:10:19] Processing block: Block_compare...
[12:10:19] Exporting cross-references for Block_compare...
[12:10:20] Processing block: Block_move...
[12:10:20] Exporting cross-references for Block_move...
[12:10:20] Processing block: CarboWaterLine_Seq...
[12:10:20] Exporting cross-references for CarboWaterLine_Seq...
[12:10:20] Processing block: Cetrifugal_Head...
[12:10:20] Exporting cross-references for Cetrifugal_Head...
[12:10:21] Processing block: CIP CVQ...
[12:10:21] Exporting cross-references for CIP CVQ...
[12:10:21] Processing block: CIP FlipFlop...
[12:10:21] Exporting cross-references for CIP FlipFlop...
[12:10:21] Processing block: CIPLocal_ProgInizialize...
[12:10:21] Exporting cross-references for CIPLocal_ProgInizialize...
[12:10:21] Processing block: CIPLocal_WaitEvent_Ctrl...
[12:10:21] Exporting cross-references for CIPLocal_WaitEvent_Ctrl...
[12:10:22] Processing block: CIPMain...
[12:10:22] Exporting cross-references for CIPMain...
[12:10:22] Processing block: CIPMain_Flood...
[12:10:22] Exporting cross-references for CIPMain_Flood...
[12:10:22] Processing block: CIPMain_Total Drain...
[12:10:22] Exporting cross-references for CIPMain_Total Drain...
[12:10:23] Processing block: Clock Signal...
[12:10:23] Exporting cross-references for Clock Signal...
[12:10:23] Processing block: CO2 Solubility...
[12:10:23] Exporting cross-references for CO2 Solubility...
[12:10:23] Processing block: CO2EqPress...
[12:10:23] Exporting cross-references for CO2EqPress...
[12:10:23] Processing block: CO2InjPressure...
[12:10:23] Exporting cross-references for CO2InjPressure...
[12:10:23] Processing block: CTRLCoolingSystem...
[12:10:23] Exporting cross-references for CTRLCoolingSystem...
[12:10:23] Processing block: DeairCO2TempComp...
[12:10:23] Exporting cross-references for DeairCO2TempComp...
[12:10:23] Processing block: DeaireationValve...
[12:10:23] Exporting cross-references for DeaireationValve...
[12:10:24] Processing block: Deaireator StartUp_Seq...
[12:10:24] Exporting cross-references for Deaireator StartUp_Seq...
[12:10:25] Processing block: DeltaP...
[12:10:25] Exporting cross-references for DeltaP...
[12:10:25] Processing block: FeedForward...
[12:10:25] Exporting cross-references for FeedForward...
[12:10:25] Processing block: Flow_To_Press_Loss...
[12:10:25] Exporting cross-references for Flow_To_Press_Loss...
[12:10:25] Processing block: Freq_To_mmH2O...
[12:10:25] Exporting cross-references for Freq_To_mmH2O...
[12:10:25] Processing block: FrictionLoss...
[12:10:25] Exporting cross-references for FrictionLoss...
[12:10:25] Processing block: FW_DRand...
[12:10:25] Exporting cross-references for FW_DRand...
[12:10:25] Processing block: GetProdBrixCO2_Anal_Inpt...
[12:10:25] Exporting cross-references for GetProdBrixCO2_Anal_Inpt...
[12:10:25] Processing block: Interlocking_Panel_1...
[12:10:25] Exporting cross-references for Interlocking_Panel_1...
[12:10:26] Processing block: ITC Communic CIPRoom...
[12:10:26] Exporting cross-references for ITC Communic CIPRoom...
[12:10:26] Processing block: ITC Communic Filler...
[12:10:26] Exporting cross-references for ITC Communic Filler...
[12:10:26] Processing block: ITC Communic MainRoutine...
[12:10:26] Exporting cross-references for ITC Communic MainRoutine...
[12:10:26] Processing block: ITC Communic ProdRoom...
[12:10:26] Exporting cross-references for ITC Communic ProdRoom...
[12:10:27] Processing block: ITC DataIn...
[12:10:27] Exporting cross-references for ITC DataIn...
[12:10:27] Processing block: ITC DataOut...
[12:10:27] Exporting cross-references for ITC DataOut...
[12:10:27] Processing block: ITC Exchange MainRoutine...
[12:10:27] Exporting cross-references for ITC Exchange MainRoutine...
[12:10:27] Processing block: ITC MainRoutine...
[12:10:27] Exporting cross-references for ITC MainRoutine...
[12:10:27] Processing block: LIMIT_I...
[12:10:27] Exporting cross-references for LIMIT_I...
[12:10:27] Processing block: LIMIT_R...
[12:10:27] Exporting cross-references for LIMIT_R...
[12:10:27] Processing block: Maselli_PA_Control...
[12:10:27] Exporting cross-references for Maselli_PA_Control...
[12:10:27] Processing block: Maselli_PA_Ctrl_Transfer...
[12:10:27] Exporting cross-references for Maselli_PA_Ctrl_Transfer...
[12:10:28] Processing block: Maselli_PA_Ctrl_Write...
[12:10:28] Exporting cross-references for Maselli_PA_Ctrl_Write...
[12:10:28] Processing block: MFMAnalogValues_Totalize...
[12:10:28] Exporting cross-references for MFMAnalogValues_Totalize...
[12:10:28] Processing block: mmH2O_TO_Freq...
[12:10:28] Exporting cross-references for mmH2O_TO_Freq...
[12:10:28] Processing block: ModValveFault...
[12:10:28] Exporting cross-references for ModValveFault...
[12:10:29] Processing block: mPDS_SYR_PA_Control...
[12:10:29] Exporting cross-references for mPDS_SYR_PA_Control...
[12:10:29] Processing block: ONS_R...
[12:10:29] Exporting cross-references for ONS_R...
[12:10:29] Processing block: Prod Tank RunOut_Seq...
[12:10:29] Exporting cross-references for Prod Tank RunOut_Seq...
[12:10:30] Processing block: ProductLiterInTank...
[12:10:30] Exporting cross-references for ProductLiterInTank...
[12:10:30] Processing block: ProductPipeDrain_Seq...
[12:10:30] Exporting cross-references for ProductPipeDrain_Seq...
[12:10:30] Processing block: ProductPipeRunOut_Seq...
[12:10:30] Exporting cross-references for ProductPipeRunOut_Seq...
[12:10:31] Processing block: ProductQuality...
[12:10:31] Exporting cross-references for ProductQuality...
[12:10:31] Processing block: SEL_I...
[12:10:31] Exporting cross-references for SEL_I...
[12:10:31] Processing block: SEL_R...
[12:10:31] Exporting cross-references for SEL_R...
[12:10:32] Processing block: SelCheckBrixSource...
[12:10:32] Exporting cross-references for SelCheckBrixSource...
[12:10:32] Processing block: SLIM_Block...
[12:10:32] Exporting cross-references for SLIM_Block...
[12:10:32] Processing block: SpeedAdjust...
[12:10:32] Exporting cross-references for SpeedAdjust...
[12:10:33] Processing block: Syrup Line MFM Prep_Seq...
[12:10:33] Exporting cross-references for Syrup Line MFM Prep_Seq...
[12:10:33] Processing block: Syrup MFM StartUp_Seq...
[12:10:33] Exporting cross-references for Syrup MFM StartUp_Seq...
[12:10:34] Processing block: SyrupDensity...
[12:10:34] Exporting cross-references for SyrupDensity...
[12:10:34] Processing block: SyrupRoomCtrl...
[12:10:34] Exporting cross-references for SyrupRoomCtrl...
[12:10:34] Processing block: WaterDensity...
[12:10:34] Exporting cross-references for WaterDensity...
[12:10:34] Processing block: WritePeripheral...
[12:10:34] Exporting cross-references for WritePeripheral...
[12:10:34] Processing block: CIPRecipeManagement_Data...
[12:10:34] Exporting cross-references for CIPRecipeManagement_Data...
[12:10:36] Processing block: Co2_Counters_DB...
[12:10:36] Exporting cross-references for Co2_Counters_DB...
[12:10:36] Processing block: Default_SupervisionDB...
[12:10:36] Exporting cross-references for Default_SupervisionDB...
[12:10:37] Processing block: ITC Communic CIP DI...
[12:10:37] Exporting cross-references for ITC Communic CIP DI...
[12:10:41] Processing block: ITC Communic Filler DI...
[12:10:41] Exporting cross-references for ITC Communic Filler DI...
[12:10:46] Processing block: ITC Communic Mixer DI...
[12:10:46] Exporting cross-references for ITC Communic Mixer DI...
[12:10:50] Processing block: ITC Communic Product Room DI...
[12:10:50] Exporting cross-references for ITC Communic Product Room DI...
[12:10:54] Processing block: Key Read & Write Data...
[12:10:54] Exporting cross-references for Key Read & Write Data...
[12:10:55] Processing block: mPPM303StartUpRamp...
[12:10:55] Exporting cross-references for mPPM303StartUpRamp...
[12:10:55] Processing block: PID_RMM304_Data...
[12:10:55] Exporting cross-references for PID_RMM304_Data...
[12:10:56] Processing block: PID_RVN302_Data...
[12:10:56] Exporting cross-references for PID_RVN302_Data...
[12:10:56] Processing block: PID_RVS318_Data...
[12:10:56] Exporting cross-references for PID_RVS318_Data...
[12:10:57] Processing block: ProdBrixRecovery_DB...
[12:10:57] Exporting cross-references for ProdBrixRecovery_DB...
[12:10:57] Processing block: Prod Tank Drain_Seq...
[12:10:57] Exporting cross-references for Prod Tank Drain_Seq...
[12:10:58] Processing block: _StepMove...
[12:10:58] Exporting cross-references for _StepMove...
[12:10:58] Processing block: _StepMove_Test...
[12:10:58] Exporting cross-references for _StepMove_Test...
[12:10:58] Processing block: RecipeManagement_Data...
[12:10:58] Exporting cross-references for RecipeManagement_Data...
[12:11:00] Processing block: Blender_Procedure Data...
[12:11:00] Exporting cross-references for Blender_Procedure Data...
[12:11:03] Processing block: BlenderPID__Main_Data...
[12:11:03] Exporting cross-references for BlenderPID__Main_Data...
[12:11:06] Processing block: BlenderRun_MeasFil_Data...
[12:11:06] Exporting cross-references for BlenderRun_MeasFil_Data...
[12:11:07] Processing block: BrixTracking_Data...
[12:11:07] Exporting cross-references for BrixTracking_Data...
[12:11:09] Processing block: CO2Tracking_Data...
[12:11:09] Exporting cross-references for CO2Tracking_Data...
[12:11:12] Processing block: FirstProduction_Data...
[12:11:12] Exporting cross-references for FirstProduction_Data...
[12:11:13] Processing block: Input_Data...
[12:11:13] Exporting cross-references for Input_Data...
[12:11:22] Processing block: ISOonTCP_or_TCP_Protocol_DB...
[12:11:22] Exporting cross-references for ISOonTCP_or_TCP_Protocol_DB...
[12:11:28] Processing block: MFM_Analog_Value_Data...
[12:11:28] Exporting cross-references for MFM_Analog_Value_Data...
[12:11:32] Processing block: PID MAIN Data...
[12:11:32] Exporting cross-references for PID MAIN Data...
[12:11:46] Processing block: PID_Filling_Head_Data...
[12:11:46] Exporting cross-references for PID_Filling_Head_Data...
[12:11:47] Processing block: PID_RMM301_Data...
[12:11:47] Exporting cross-references for PID_RMM301_Data...
[12:11:48] Processing block: PID_RMM303_Data...
[12:11:48] Exporting cross-references for PID_RMM303_Data...
[12:11:49] Processing block: PID_RMP302_Data...
[12:11:49] Exporting cross-references for PID_RMP302_Data...
[12:11:49] Processing block: PID_RVM301_Data...
[12:11:49] Exporting cross-references for PID_RVM301_Data...
[12:11:50] Processing block: PID_RVM319_Data...
[12:11:50] Exporting cross-references for PID_RVM319_Data...
[12:11:51] Processing block: PID_RVP303_Data...
[12:11:51] Exporting cross-references for PID_RVP303_Data...
[12:11:51] Processing block: Sel_Check_Brix_Data...
[12:11:51] Exporting cross-references for Sel_Check_Brix_Data...
[12:11:52] Processing block: Signal_Gen_Data...
[12:11:52] Exporting cross-references for Signal_Gen_Data...
[12:11:52] Processing block: System_Run_Out_Data...
[12:11:52] Exporting cross-references for System_Run_Out_Data...
[12:11:54] Processing block: SubCarb_DB...
[12:11:54] Exporting cross-references for SubCarb_DB...
[12:11:55] Processing block: CYC_INT5...
[12:11:55] Exporting cross-references for CYC_INT5...
[12:11:55] Processing block: BlenderCtrl_All Auto...
[12:11:55] Exporting cross-references for BlenderCtrl_All Auto...
[12:11:55] Processing block: BlenderCtrl_InitErrors...
[12:11:55] Exporting cross-references for BlenderCtrl_InitErrors...
[12:11:55] Processing block: BlenderCtrl_ManualActive...
[12:11:55] Exporting cross-references for BlenderCtrl_ManualActive...
[12:11:55] Processing block: BlenderCtrl_MFM Command...
[12:11:55] Exporting cross-references for BlenderCtrl_MFM Command...
[12:11:55] Processing block: BlenderPID_FlowMeterErro...
[12:11:55] Exporting cross-references for BlenderPID_FlowMeterErro...
[12:11:56] Processing block: BlenderPID_PIDResInteg...
[12:11:56] Exporting cross-references for BlenderPID_PIDResInteg...
[12:11:56] Processing block: BlenderPIDCtrl_PresRelea...
[12:11:56] Exporting cross-references for BlenderPIDCtrl_PresRelea...
[12:11:56] Processing block: BlenderPIDCtrl_SaveValve...
[12:11:56] Exporting cross-references for BlenderPIDCtrl_SaveValve...
[12:11:56] Processing block: BlenderRun__Control...
[12:11:56] Exporting cross-references for BlenderRun__Control...
[12:11:58] Processing block: BlenderRun_SelectConstan...
[12:11:58] Exporting cross-references for BlenderRun_SelectConstan...
[12:11:58] Processing block: BlendFill StartUp_Seq...
[12:11:58] Exporting cross-references for BlendFill StartUp_Seq...
[12:11:59] Processing block: CIP_SimpleProgr_Init...
[12:11:59] Exporting cross-references for CIP_SimpleProgr_Init...
[12:12:01] Processing block: CIPLocal...
[12:12:01] Exporting cross-references for CIPLocal...
[12:12:03] Processing block: CIPLocal_ExecSimpleCIP...
[12:12:03] Exporting cross-references for CIPLocal_ExecSimpleCIP...
[12:12:03] Processing block: CIPLocal_ExecStep...
[12:12:03] Exporting cross-references for CIPLocal_ExecStep...
[12:12:04] Processing block: CIPLocal_ProgStepDown...
[12:12:04] Exporting cross-references for CIPLocal_ProgStepDown...
[12:12:05] Processing block: CIPLocal_ProgStepUp...
[12:12:05] Exporting cross-references for CIPLocal_ProgStepUp...
[12:12:05] Processing block: CIPReportManager...
[12:12:05] Exporting cross-references for CIPReportManager...
[12:12:06] Processing block: CPU_DP Global Diag...
[12:12:06] Exporting cross-references for CPU_DP Global Diag...
[12:12:06] Processing block: CVQ_1p7_8_Perc...
[12:12:06] Exporting cross-references for CVQ_1p7_8_Perc...
[12:12:06] Processing block: DELETE...
[12:12:06] Exporting cross-references for DELETE...
[12:12:07] Processing block: EQ_STRNG...
[12:12:07] Exporting cross-references for EQ_STRNG...
[12:12:07] Processing block: FillerControl...
[12:12:07] Exporting cross-references for FillerControl...
[12:12:10] Processing block: FillerControl_DataSend...
[12:12:10] Exporting cross-references for FillerControl_DataSend...
[12:12:11] Processing block: FillingTime...
[12:12:11] Exporting cross-references for FillingTime...
[12:12:12] Processing block: Input_CheckFlowMetersSta...
[12:12:12] Exporting cross-references for Input_CheckFlowMetersSta...
[12:12:13] Processing block: Input_DigitalCtrl...
[12:12:13] Exporting cross-references for Input_DigitalCtrl...
[12:12:14] Processing block: Input_DigitalScanner...
[12:12:14] Exporting cross-references for Input_DigitalScanner...
[12:12:14] Processing block: Instrument_Scanner...
[12:12:14] Exporting cross-references for Instrument_Scanner...
[12:12:15] Processing block: Interlocking_Panel...
[12:12:15] Exporting cross-references for Interlocking_Panel...
[12:12:17] Processing block: Maselli_PA_Ctrl_Read...
[12:12:17] Exporting cross-references for Maselli_PA_Ctrl_Read...
[12:12:18] Processing block: MaxCarboCO2 Vol...
[12:12:18] Exporting cross-references for MaxCarboCO2 Vol...
[12:12:18] Processing block: MessageScroll...
[12:12:18] Exporting cross-references for MessageScroll...
[12:12:18] Processing block: mPDS_SYR_PA_Ctrl_Read...
[12:12:18] Exporting cross-references for mPDS_SYR_PA_Ctrl_Read...
[12:12:19] Processing block: Output_CO2InjPress...
[12:12:19] Exporting cross-references for Output_CO2InjPress...
[12:12:19] Processing block: Pneumatic Valve Fault...
[12:12:19] Exporting cross-references for Pneumatic Valve Fault...
[12:12:19] Processing block: PPM O2...
[12:12:19] Exporting cross-references for PPM O2...
[12:12:19] Processing block: PPM303_VFC_Ctrl...
[12:12:19] Exporting cross-references for PPM303_VFC_Ctrl...
[12:12:20] Processing block: PPM305_VFC_Ctrl...
[12:12:20] Exporting cross-references for PPM305_VFC_Ctrl...
[12:12:20] Processing block: PPM307_VFC_Ctrl...
[12:12:20] Exporting cross-references for PPM307_VFC_Ctrl...
[12:12:20] Processing block: PPN301_VFC_Ctrl...
[12:12:20] Exporting cross-references for PPN301_VFC_Ctrl...
[12:12:20] Processing block: PPP302_VFC_Ctrl...
[12:12:20] Exporting cross-references for PPP302_VFC_Ctrl...
[12:12:21] Processing block: ProdBrixRecovery_BrixCal...
[12:12:21] Exporting cross-references for ProdBrixRecovery_BrixCal...
[12:12:21] Processing block: ProdReportManager...
[12:12:21] Exporting cross-references for ProdReportManager...
[12:12:24] Processing block: ProductQuality_Messages...
[12:12:24] Exporting cross-references for ProductQuality_Messages...
[12:12:24] Processing block: Profibus Network...
[12:12:24] Exporting cross-references for Profibus Network...
[12:12:25] Processing block: QCO Monitor...
[12:12:25] Exporting cross-references for QCO Monitor...
[12:12:26] Processing block: ReadAnalogIn...
[12:12:26] Exporting cross-references for ReadAnalogIn...
[12:12:26] Processing block: RecipeCalculation...
[12:12:26] Exporting cross-references for RecipeCalculation...
[12:12:27] Processing block: REPLACE_Mod...
[12:12:27] Exporting cross-references for REPLACE_Mod...
[12:12:27] Processing block: SyrBrix_SyrupCorrPerc...
[12:12:27] Exporting cross-references for SyrBrix_SyrupCorrPerc...
[12:12:27] Processing block: Syrup Rinse QCO_Seq...
[12:12:27] Exporting cross-references for Syrup Rinse QCO_Seq...
[12:12:27] Processing block: SyrupRoomCtrl_UpdateVal...
[12:12:27] Exporting cross-references for SyrupRoomCtrl_UpdateVal...
[12:12:27] Processing block: T_Timer...
[12:12:27] Exporting cross-references for T_Timer...
[12:12:28] Processing block: TankLevelToHeight...
[12:12:28] Exporting cross-references for TankLevelToHeight...
[12:12:28] Processing block: VacuumCtrl...
[12:12:28] Exporting cross-references for VacuumCtrl...
[12:12:28] Processing block: ValveFlow...
[12:12:28] Exporting cross-references for ValveFlow...
[12:12:28] Processing block: BlenderPID__Main...
[12:12:28] Exporting cross-references for BlenderPID__Main...
[12:12:29] Processing block: BlenderPID_BlendingFault...
[12:12:29] Exporting cross-references for BlenderPID_BlendingFault...
[12:12:30] Processing block: BlenderPID_PIDFFCalc...
[12:12:30] Exporting cross-references for BlenderPID_PIDFFCalc...
[12:12:30] Processing block: BlenderPID_PIDInitParam...
[12:12:30] Exporting cross-references for BlenderPID_PIDInitParam...
[12:12:31] Processing block: BlenderPID_PIDSPCalc...
[12:12:31] Exporting cross-references for BlenderPID_PIDSPCalc...
[12:12:32] Processing block: BlenderPIDCtrl_Monitor...
[12:12:32] Exporting cross-references for BlenderPIDCtrl_Monitor...
[12:12:33] Processing block: BlenderPIDCtrl_ReadAnIn...
[12:12:33] Exporting cross-references for BlenderPIDCtrl_ReadAnIn...
[12:12:33] Processing block: BlenderPIDCtrl_SaveInteg...
[12:12:33] Exporting cross-references for BlenderPIDCtrl_SaveInteg...
[12:12:34] Processing block: BlenderRun_MeasFilSpeed...
[12:12:34] Exporting cross-references for BlenderRun_MeasFilSpeed...
[12:12:35] Processing block: BrixTracking_ProdSamples...
[12:12:35] Exporting cross-references for BrixTracking_ProdSamples...
[12:12:35] Processing block: BrixTracking_SampleTime...
[12:12:35] Exporting cross-references for BrixTracking_SampleTime...
[12:12:36] Processing block: CIPRecipeManagement...
[12:12:36] Exporting cross-references for CIPRecipeManagement...
[12:12:37] Processing block: Co2_Counters...
[12:12:37] Exporting cross-references for Co2_Counters...
[12:12:37] Processing block: CO2Tracking...
[12:12:37] Exporting cross-references for CO2Tracking...
[12:12:37] Processing block: CO2Tracking_ProdSamples...
[12:12:37] Exporting cross-references for CO2Tracking_ProdSamples...
[12:12:38] Processing block: CO2Tracking_SampleTime...
[12:12:38] Exporting cross-references for CO2Tracking_SampleTime...
[12:12:38] Processing block: Default_SupervisionFB...
[12:12:38] Exporting cross-references for Default_SupervisionFB...
[12:12:38] Processing block: Delay...
[12:12:38] Exporting cross-references for Delay...
[12:12:38] Processing block: Input...
[12:12:38] Exporting cross-references for Input...
[12:12:41] Processing block: Integral...
[12:12:41] Exporting cross-references for Integral...
[12:12:41] Processing block: Key Read & Write...
[12:12:41] Exporting cross-references for Key Read & Write...
[12:12:46] Processing block: LowPassFilter...
[12:12:46] Exporting cross-references for LowPassFilter...
[12:12:46] Processing block: MFMAnalogValues...
[12:12:46] Exporting cross-references for MFMAnalogValues...
[12:12:48] Processing block: MSE Slope...
[12:12:48] Exporting cross-references for MSE Slope...
[12:12:48] Processing block: PID_Filling_Head_Calc...
[12:12:48] Exporting cross-references for PID_Filling_Head_Calc...
[12:12:48] Processing block: PID_RMM301...
[12:12:48] Exporting cross-references for PID_RMM301...
[12:12:49] Processing block: PID_RMM303...
[12:12:49] Exporting cross-references for PID_RMM303...
[12:12:49] Processing block: PID_RMM304...
[12:12:49] Exporting cross-references for PID_RMM304...
[12:12:50] Processing block: PID_RMP302...
[12:12:50] Exporting cross-references for PID_RMP302...
[12:12:50] Processing block: PID_RVM301...
[12:12:50] Exporting cross-references for PID_RVM301...
[12:12:50] Processing block: PID_RVM319_PRD...
[12:12:50] Exporting cross-references for PID_RVM319_PRD...
[12:12:51] Processing block: PID_RVN302...
[12:12:51] Exporting cross-references for PID_RVN302...
[12:12:52] Processing block: PID_RVP303...
[12:12:52] Exporting cross-references for PID_RVP303...
[12:12:52] Processing block: PID_RVS318...
[12:12:52] Exporting cross-references for PID_RVS318...
[12:12:52] Processing block: PIDControl...
[12:12:52] Exporting cross-references for PIDControl...
[12:12:53] Processing block: Procedure...
[12:12:53] Exporting cross-references for Procedure...
[12:12:53] Processing block: ProcedureBlendFill StartUp...
[12:12:53] Exporting cross-references for ProcedureBlendFill StartUp...
[12:12:54] Processing block: ProcedureBrixTracking...
[12:12:54] Exporting cross-references for ProcedureBrixTracking...
[12:12:54] Processing block: ProcedureCarboWaterLine...
[12:12:54] Exporting cross-references for ProcedureCarboWaterLine...
[12:12:55] Processing block: ProcedureDeaireator StartUp...
[12:12:55] Exporting cross-references for ProcedureDeaireator StartUp...
[12:12:56] Processing block: ProcedureFirstProduction...
[12:12:56] Exporting cross-references for ProcedureFirstProduction...
[12:12:56] Processing block: ProcedureProdBrixRecovery...
[12:12:56] Exporting cross-references for ProcedureProdBrixRecovery...
[12:12:57] Processing block: ProcedureProdTankDrain...
[12:12:57] Exporting cross-references for ProcedureProdTankDrain...
[12:12:57] Processing block: ProcedureProdTankRunOut...
[12:12:57] Exporting cross-references for ProcedureProdTankRunOut...
[12:12:58] Processing block: ProcedureSyrup RunOut...
[12:12:58] Exporting cross-references for ProcedureSyrup RunOut...
[12:12:58] Processing block: ProcedureSyrupLineMFMPrep...
[12:12:58] Exporting cross-references for ProcedureSyrupLineMFMPrep...
[12:12:59] Processing block: ProcedureSyrupMFMStartUp...
[12:12:59] Exporting cross-references for ProcedureSyrupMFMStartUp...
[12:13:00] Processing block: ProductAvailable...
[12:13:00] Exporting cross-references for ProductAvailable...
[12:13:00] Processing block: ProductPipeDrain...
[12:13:00] Exporting cross-references for ProductPipeDrain...
[12:13:00] Processing block: ProductPipeRunOut...
[12:13:00] Exporting cross-references for ProductPipeRunOut...
[12:13:01] Processing block: Signal Gen...
[12:13:01] Exporting cross-references for Signal Gen...
[12:13:01] Processing block: SlewLimit...
[12:13:01] Exporting cross-references for SlewLimit...
[12:13:01] Processing block: Statistical_Analisys...
[12:13:01] Exporting cross-references for Statistical_Analisys...
[12:13:02] Processing block: SubCarb...
[12:13:02] Exporting cross-references for SubCarb...
[12:13:02] Processing block: SyrBrix Autocorrection...
[12:13:02] Exporting cross-references for SyrBrix Autocorrection...
[12:13:03] Processing block: System_Run_Out...
[12:13:03] Exporting cross-references for System_Run_Out...
[12:13:04] Processing block: Blender_Constants...
[12:13:04] Exporting cross-references for Blender_Constants...
[12:13:06] Processing block: Blender_Variables...
[12:13:06] Exporting cross-references for Blender_Variables...
[12:13:12] Processing block: Blender_Variables_Pers...
[12:13:12] Exporting cross-references for Blender_Variables_Pers...
[12:13:14] Processing block: Blocco_dati_Test...
[12:13:14] Exporting cross-references for Blocco_dati_Test...
[12:13:16] Processing block: CIP_Program_Variables...
[12:13:16] Exporting cross-references for CIP_Program_Variables...
[12:13:30] Processing block: CIPRecipe#01...
[12:13:30] Exporting cross-references for CIPRecipe#01...
[12:13:32] Processing block: CIPRecipe#02...
[12:13:32] Exporting cross-references for CIPRecipe#02...
[12:13:34] Processing block: CIPRecipe#03...
[12:13:34] Exporting cross-references for CIPRecipe#03...
[12:13:36] Processing block: CIPRecipe#04...
[12:13:36] Exporting cross-references for CIPRecipe#04...
[12:13:38] Processing block: CIPRecipe#05...
[12:13:38] Exporting cross-references for CIPRecipe#05...
[12:13:40] Processing block: CIPRecipe#06...
[12:13:40] Exporting cross-references for CIPRecipe#06...
[12:13:42] Processing block: CIPRecipe#07...
[12:13:42] Exporting cross-references for CIPRecipe#07...
[12:13:44] Processing block: CIPRecipe#08...
[12:13:44] Exporting cross-references for CIPRecipe#08...
[12:13:46] Processing block: CIPRecipe#09...
[12:13:46] Exporting cross-references for CIPRecipe#09...
[12:13:48] Processing block: CIPRecipe#10...
[12:13:48] Exporting cross-references for CIPRecipe#10...
[12:13:49] Processing block: CIPRecipe#11...
[12:13:49] Exporting cross-references for CIPRecipe#11...
[12:13:51] Processing block: CIPRecipe#12...
[12:13:51] Exporting cross-references for CIPRecipe#12...
[12:13:54] Processing block: CIPRecipe#13...
[12:13:54] Exporting cross-references for CIPRecipe#13...
[12:13:56] Processing block: CIPRecipe#14...
[12:13:56] Exporting cross-references for CIPRecipe#14...
[12:13:58] Processing block: CIPRecipe#15...
[12:13:58] Exporting cross-references for CIPRecipe#15...
[12:14:01] Processing block: CIPRecipe#16...
[12:14:01] Exporting cross-references for CIPRecipe#16...
[12:14:03] Processing block: CIPRecipe#17...
[12:14:03] Exporting cross-references for CIPRecipe#17...
[12:14:05] Processing block: CIPRecipe#18...
[12:14:05] Exporting cross-references for CIPRecipe#18...
[12:14:07] Processing block: CIPRecipe#19...
[12:14:07] Exporting cross-references for CIPRecipe#19...
[12:14:09] Processing block: CIPRecipe#20...
[12:14:09] Exporting cross-references for CIPRecipe#20...
[12:14:11] Processing block: CIPRecipe#21...
[12:14:11] Exporting cross-references for CIPRecipe#21...
[12:14:13] Processing block: CIPRecipe#22...
[12:14:13] Exporting cross-references for CIPRecipe#22...
[12:14:15] Processing block: CIPRecipe#23...
[12:14:15] Exporting cross-references for CIPRecipe#23...
[12:14:17] Processing block: CIPRecipe#24...
[12:14:17] Exporting cross-references for CIPRecipe#24...
[12:14:19] Processing block: CIPRecipe#25...
[12:14:19] Exporting cross-references for CIPRecipe#25...
[12:14:21] Processing block: CIPRecipe#26...
[12:14:21] Exporting cross-references for CIPRecipe#26...
[12:14:24] Processing block: CIPRecipe#27...
[12:14:24] Exporting cross-references for CIPRecipe#27...
[12:14:27] Processing block: CIPRecipe#28...
[12:14:27] Exporting cross-references for CIPRecipe#28...
[12:14:30] Processing block: CIPRecipe#29...
[12:14:30] Exporting cross-references for CIPRecipe#29...
[12:14:32] Processing block: CIPRecipe#30...
[12:14:32] Exporting cross-references for CIPRecipe#30...
[12:14:34] Processing block: CIPReportDB...
[12:14:34] Exporting cross-references for CIPReportDB...
[12:14:39] Processing block: Filler_Head_Variables...
[12:14:39] Exporting cross-references for Filler_Head_Variables...
[12:14:40] Processing block: GLOBAL_DIAG_DB...
[12:14:40] Exporting cross-references for GLOBAL_DIAG_DB...
[12:14:41] Processing block: HMI CPU_DP Diag...
[12:14:41] Exporting cross-references for HMI CPU_DP Diag...
[12:14:44] Processing block: HMI Key User...
[12:14:44] Exporting cross-references for HMI Key User...
[12:15:10] Processing block: HMI_Alarms...
[12:15:10] Exporting cross-references for HMI_Alarms...
[12:15:14] Processing block: HMI_Digital...
[12:15:14] Exporting cross-references for HMI_Digital...
[12:15:17] ERROR accessing Program Blocks for cross-reference export: RemotingException: El objeto '/7a4a4a73_a97d_46f2_83b4_4f5e9d0e966e/df6uqosgttpdtg38rqj6huml_447.rem' se desconectó o no existe en el servidor.
[12:15:17] [PLC: PLC] Exporting PLC Tag Table Cross-References...
[12:15:17] Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\PlcTags_CR
[12:15:17] Found 10 Tag Tables.
[12:15:17] Processing Tag Table: Memories...
[12:15:17] Exporting cross-references for Memories...
[12:15:17] Processing Tag Table: Tabella delle variabili standard...
[12:15:17] Exporting cross-references for Tabella delle variabili standard...
[12:15:17] Processing Tag Table: Timers_Counters...
[12:15:17] Exporting cross-references for Timers_Counters...
[12:15:17] Processing Tag Table: Inputs...
[12:15:17] Exporting cross-references for Inputs...
[12:15:17] Processing Tag Table: Outputs...
[12:15:17] Exporting cross-references for Outputs...
[12:15:17] Processing Tag Table: Tabella delle variabili_1...
[12:15:17] Exporting cross-references for Tabella delle variabili_1...
[12:15:17] Processing Tag Table: Tabella delle variabili_2...
[12:15:17] Exporting cross-references for Tabella delle variabili_2...
[12:15:17] Processing Tag Table: OutputsFesto...
[12:15:17] Exporting cross-references for OutputsFesto...
[12:15:17] Processing Tag Table: InputsMaster...
[12:15:17] Exporting cross-references for InputsMaster...
[12:15:17] Processing Tag Table: OutputsMaster...
[12:15:17] Exporting cross-references for OutputsMaster...
[12:15:17] Tag Table CR Export Summary: Exported=10, Skipped/Errors=0
[12:15:17] [PLC: PLC] Exporting PLC Data Type (UDT) Cross-References...
[12:15:17] Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\PlcDataTypes_CR
[12:15:17] Found 24 UDTs.
[12:15:17] Processing UDT: AnalogInstrument...
[12:15:17] Exporting cross-references for AnalogInstrument...
[12:15:17] Processing UDT: CIP_Link_Type...
[12:15:17] Exporting cross-references for CIP_Link_Type...
[12:15:20] Processing UDT: CIP_Simple_Type...
[12:15:20] Exporting cross-references for CIP_Simple_Type...
[12:15:20] Processing UDT: CIP_Step_Type...
[12:15:20] Exporting cross-references for CIP_Step_Type...
[12:15:20] Processing UDT: CIP_WaitEvent_Type...
[12:15:20] Exporting cross-references for CIP_WaitEvent_Type...
[12:15:21] Processing UDT: Device...
[12:15:21] Exporting cross-references for Device...
[12:15:21] Processing UDT: DigitalInstrument...
[12:15:21] Exporting cross-references for DigitalInstrument...
[12:15:21] Processing UDT: FunctionButton...
[12:15:21] Exporting cross-references for FunctionButton...
[12:15:21] Processing UDT: PID...
[12:15:21] Exporting cross-references for PID...
[12:15:22] Processing UDT: QCO Phase...
[12:15:22] Exporting cross-references for QCO Phase...
[12:15:22] Processing UDT: QCO Spare...
[12:15:22] Exporting cross-references for QCO Spare...
[12:15:22] Processing UDT: QCO Timer...
[12:15:22] Exporting cross-references for QCO Timer...
[12:15:23] Processing UDT: QCO Timer_Array_1...
[12:15:23] Exporting cross-references for QCO Timer_Array_1...
[12:15:26] Processing UDT: Recipe_Prod...
[12:15:26] Exporting cross-references for Recipe_Prod...
[12:15:28] Processing UDT: ReportCIPSimpleData...
[12:15:28] Exporting cross-references for ReportCIPSimpleData...
[12:15:28] Processing UDT: TADDR_PAR...
[12:15:28] Exporting cross-references for TADDR_PAR...
[12:15:28] Processing UDT: TCON_PAR...
[12:15:28] Exporting cross-references for TCON_PAR...
[12:15:28] Processing UDT: TCON_PAR_LF...
[12:15:28] Exporting cross-references for TCON_PAR_LF...
[12:15:29] Processing UDT: Tipo di dati utente_1...
[12:15:29] Exporting cross-references for Tipo di dati utente_1...
[12:15:29] Processing UDT: Tipo di dati utente_2...
[12:15:29] Exporting cross-references for Tipo di dati utente_2...
[12:16:10] Processing UDT: ASLeds...
[12:16:10] Exporting cross-references for ASLeds...
[12:16:10] Processing UDT: IFLeds...
[12:16:10] Exporting cross-references for IFLeds...
[12:16:10] Processing UDT: SV_FB_State...
[12:16:10] Exporting cross-references for SV_FB_State...
[12:16:10] Processing UDT: SV_State...
[12:16:10] Exporting cross-references for SV_State...
[12:16:11] UDT CR Export Summary: Exported=24, Skipped/Errors=0
[12:16:11] [PLC: PLC] Attempting to Export System Block Cross-References...
[12:16:11] Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\SystemBlocks_CR
[12:16:11] Found 9 system blocks (using get_system_blocks).
[12:16:11] Processing System Block: T_301...
[12:16:11] Exporting cross-references for T_301...
[12:16:11] Processing System Block: IEC_Timer_0_DB_9...
[12:16:11] Exporting cross-references for IEC_Timer_0_DB_9...
[12:16:11] Processing System Block: T_302...
[12:16:11] Exporting cross-references for T_302...
[12:16:11] Processing System Block: GET_Reciver...
[12:16:11] Exporting cross-references for GET_Reciver...
[12:16:11] Processing System Block: PUT_Send_Filler...
[12:16:11] Exporting cross-references for PUT_Send_Filler...
[12:16:11] Processing System Block: LED...
[12:16:11] Exporting cross-references for LED...
[12:16:11] Processing System Block: SCALE...
[12:16:11] Exporting cross-references for SCALE...
[12:16:11] Processing System Block: CONT_C...
[12:16:11] Exporting cross-references for CONT_C...
[12:16:11] Processing System Block: DeviceStates...
[12:16:11] Exporting cross-references for DeviceStates...
[12:16:12] System Block CR Export Summary: Exported=9, Skipped/Errors=0
[12:16:12] [PLC: PLC] Attempting to Export Software Unit Cross-References...
[12:16:12] Target: C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\cross_ref\PLC\SoftwareUnits_CR
[12:16:12] Found 0 Software Units.
[12:16:12] Software Unit CR Export Summary: Exported=0, Skipped/Errors=0
[12:16:12] --- Finished processing PLC: PLC ---
[12:16:12] Cross-reference export process completed.
[12:16:12] Closing TIA Portal...
[12:16:12] 2025-05-05 12:16:12,051 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
[12:16:15] TIA Portal closed.
[12:16:15] Script finished.
[12:16:20] Ejecución de x4.py finalizada (success). Duración: 0:06:53.110393. Se detectaron errores (ver log).
[12:16:20] Log completo guardado en: D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\log_x4.txt
[16:58:28] Iniciando ejecución de x1.py en C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email...
[16:58:29] Working directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email
[16:58:29] Input directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email
[16:58:29] Output directory: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463
[16:58:29] Cronologia file: C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463\cronologia.md
[16:58:29] Attachments directory: C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email\adjuntos
[16:58:29] Beautify rules file: D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\EmailCrono\config\beautify_rules.json
[16:58:29] Found 1 .eml files
[16:58:29] Loaded 0 existing messages
[16:58:29] Processing C:\Trabajo\SIDEL\10 - E5.007095 - Modifica O&U - SAE463\Reporte\Email\R_ {EXT} E5.006894 - Modifica O&U - SAE463 New Analyzer.eml
[16:58:29] Aplicando reglas de prioridad 1
[16:58:29] Aplicando reglas de prioridad 2
[16:58:29] Aplicando reglas de prioridad 3
[16:58:29] Aplicando reglas de prioridad 4
[16:58:29] Estadísticas de procesamiento:
[16:58:29] - Total mensajes encontrados: 1
[16:58:29] - Mensajes únicos añadidos: 1
[16:58:29] - Mensajes duplicados ignorados: 0
[16:58:29] Writing 1 messages to C:/Users/migue/OneDrive/Miguel/Obsidean/Trabajo/VM/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463\cronologia.md
[16:58:29] Ejecución de x1.py finalizada (success). Duración: 0:00:00.434600.
[16:58:29] Log completo guardado en: D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\EmailCrono\log_x1.txt