Actualización de directorios de trabajo y logs en el script de obtención de IO de TIA Portal
- Se modificaron los directorios de trabajo en `script_config.json` y `work_dir.json` para apuntar a la nueva ubicación de los archivos del proyecto 98050. - Se actualizaron los logs de ejecución en `log_x1.txt` y `log_x4.txt` para reflejar las nuevas fechas, duraciones y resultados de los procesos de exportación. - Se registraron errores en `log_x4.txt` relacionados con el acceso al proyecto, indicando que ya estaba abierto por otro usuario.
This commit is contained in:
parent
99e3628955
commit
26bc892243
File diff suppressed because it is too large
Load Diff
|
@ -1,949 +1,65 @@
|
|||
--- Log de Ejecución: x4.py ---
|
||||
Grupo: ObtainIOFromProjectTia
|
||||
Directorio de Trabajo: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia
|
||||
Inicio: 2025-06-19 16:35:31
|
||||
Fin: 2025-06-19 16:44:16
|
||||
Duración: 0:08:45.122899
|
||||
Directorio de Trabajo: D:\Trabajo\VM\44 - 98050 - Fiera\Reporte\ExportsTia\Source
|
||||
Inicio: 2025-06-19 19:05:36
|
||||
Fin: 2025-06-19 19:06:33
|
||||
Duración: 0:00:57.281042
|
||||
Estado: SUCCESS (Código de Salida: 0)
|
||||
|
||||
--- SALIDA ESTÁNDAR (STDOUT) ---
|
||||
--- Exportador de Referencias Cruzadas de TIA Portal ---
|
||||
Versión de TIA Portal detectada: 18.0 (de la extensión .ap18)
|
||||
Versión de TIA Portal detectada: 19.0 (de la extensión .ap19)
|
||||
|
||||
Proyecto seleccionado: C:/Trabajo/SIDEL/13 - E5.007560 - Modifica O&U - SAE235/InLavoro/PLC/SSAE0235/_NEW/SAE235_v0.1/SAE235_v0.1.ap18
|
||||
Usando directorio base de exportación: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia
|
||||
Proyecto seleccionado: D:/Trabajo/VM/44 - 98050 - Fiera/InLavoro/PLC/98050_PLC_11/98050_PLC_11.ap19
|
||||
Usando directorio base de exportación: D:\Trabajo\VM\44 - 98050 - Fiera\Reporte\ExportsTia\Source
|
||||
|
||||
Conectando a TIA Portal V18.0...
|
||||
2025-06-19 16:35:35,853 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
|
||||
2025-06-19 16:35:35,863 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
|
||||
Conectando a TIA Portal V19.0...
|
||||
2025-06-19 19:05:42,182 [1] INFO Siemens.TiaPortal.OpennessApi19.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
|
||||
2025-06-19 19:05:42,202 [1] INFO Siemens.TiaPortal.OpennessApi19.Implementations.Global OpenPortal - With user interface
|
||||
Conectado a TIA Portal.
|
||||
2025-06-19 16:35:50,144 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal GetProcessId - Process id: 3904
|
||||
ID del proceso del Portal: 3904
|
||||
2025-06-19 16:35:50,594 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:/Trabajo/SIDEL/13 - E5.007560 - Modifica O&U - SAE235/InLavoro/PLC/SSAE0235/_NEW/SAE235_v0.1/SAE235_v0.1.ap18
|
||||
2025-06-19 16:36:03,525 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Project GetPlcs - Found plc PLC with parent name S71500/ET200MP station_1
|
||||
Se encontraron 1 PLC(s). Iniciando proceso de exportación de referencias cruzadas...
|
||||
2025-06-19 19:05:52,371 [1] INFO Siemens.TiaPortal.OpennessApi19.Implementations.Portal GetProcessId - Process id: 24972
|
||||
ID del proceso del Portal: 24972
|
||||
2025-06-19 19:05:52,710 [1] INFO Siemens.TiaPortal.OpennessApi19.Implementations.Portal OpenProject - Open project... D:/Trabajo/VM/44 - 98050 - Fiera/InLavoro/PLC/98050_PLC_11/98050_PLC_11.ap19
|
||||
|
||||
--- Procesando PLC: PLC ---
|
||||
Ocurrió un error inesperado: OpennessAccessException: Error when calling method 'OpenWithUpgrade' of type 'Siemens.Engineering.ProjectComposition'.
|
||||
|
||||
[PLC: PLC] Exportando referencias cruzadas de bloques de programa...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\ProgramBlocks_CR
|
||||
Se encontraron 380 bloques de programa.
|
||||
Procesando bloque: _CYCL_EXC...
|
||||
Exportando referencias cruzadas para _CYCL_EXC...
|
||||
Procesando bloque: COMPLETE RESTART...
|
||||
Exportando referencias cruzadas para COMPLETE RESTART...
|
||||
Procesando bloque: I/O_FLT1...
|
||||
Exportando referencias cruzadas para I/O_FLT1...
|
||||
Procesando bloque: MOD_ERR...
|
||||
Exportando referencias cruzadas para MOD_ERR...
|
||||
Procesando bloque: ProDiagOB...
|
||||
Exportando referencias cruzadas para ProDiagOB...
|
||||
Procesando bloque: Programming error...
|
||||
Exportando referencias cruzadas para Programming error...
|
||||
Procesando bloque: RACK_FLT...
|
||||
Exportando referencias cruzadas para RACK_FLT...
|
||||
Procesando bloque: Time error interrupt...
|
||||
Exportando referencias cruzadas para Time error interrupt...
|
||||
Procesando bloque: Baialage...
|
||||
Exportando referencias cruzadas para Baialage...
|
||||
Procesando bloque: BlenderCtrl__Main...
|
||||
Exportando referencias cruzadas para BlenderCtrl__Main...
|
||||
Procesando bloque: BlenderCtrl_CIPModeInit...
|
||||
Exportando referencias cruzadas para BlenderCtrl_CIPModeInit...
|
||||
Procesando bloque: BlenderCtrl_ProdModeInit...
|
||||
Exportando referencias cruzadas para BlenderCtrl_ProdModeInit...
|
||||
Procesando bloque: BlenderCtrl_ResetSPWord...
|
||||
Exportando referencias cruzadas para BlenderCtrl_ResetSPWord...
|
||||
Procesando bloque: BlenderCtrl_UpdatePWord...
|
||||
Exportando referencias cruzadas para BlenderCtrl_UpdatePWord...
|
||||
Procesando bloque: BlenderPID_NextRecipe...
|
||||
Exportando referencias cruzadas para BlenderPID_NextRecipe...
|
||||
Procesando bloque: BlenderRinse...
|
||||
Exportando referencias cruzadas para BlenderRinse...
|
||||
Procesando bloque: BlenderRinse_Done...
|
||||
Exportando referencias cruzadas para BlenderRinse_Done...
|
||||
Procesando bloque: BlenderRun_ProdTime...
|
||||
Exportando referencias cruzadas para BlenderRun_ProdTime...
|
||||
Procesando bloque: BlenderRun_Stopping...
|
||||
Exportando referencias cruzadas para BlenderRun_Stopping...
|
||||
Procesando bloque: Blocco_1...
|
||||
Exportando referencias cruzadas para Blocco_1...
|
||||
Procesando bloque: Block_compare...
|
||||
Exportando referencias cruzadas para Block_compare...
|
||||
Procesando bloque: Block_move...
|
||||
Exportando referencias cruzadas para Block_move...
|
||||
Procesando bloque: CarboWaterLine_Seq...
|
||||
Exportando referencias cruzadas para CarboWaterLine_Seq...
|
||||
Procesando bloque: Cetrifugal_Head...
|
||||
Exportando referencias cruzadas para Cetrifugal_Head...
|
||||
Procesando bloque: CIP CVQ...
|
||||
Exportando referencias cruzadas para CIP CVQ...
|
||||
Procesando bloque: CIP FlipFlop...
|
||||
Exportando referencias cruzadas para CIP FlipFlop...
|
||||
Procesando bloque: CIPLocal_ProgInizialize...
|
||||
Exportando referencias cruzadas para CIPLocal_ProgInizialize...
|
||||
Procesando bloque: CIPLocal_WaitEvent_Ctrl...
|
||||
Exportando referencias cruzadas para CIPLocal_WaitEvent_Ctrl...
|
||||
Procesando bloque: CIPMain...
|
||||
Exportando referencias cruzadas para CIPMain...
|
||||
Procesando bloque: CIPMain_Flood...
|
||||
Exportando referencias cruzadas para CIPMain_Flood...
|
||||
Procesando bloque: CIPMain_Total Drain...
|
||||
Exportando referencias cruzadas para CIPMain_Total Drain...
|
||||
Procesando bloque: Clock Signal...
|
||||
Exportando referencias cruzadas para Clock Signal...
|
||||
Procesando bloque: CO2 Solubility...
|
||||
Exportando referencias cruzadas para CO2 Solubility...
|
||||
Procesando bloque: CO2EqPress...
|
||||
Exportando referencias cruzadas para CO2EqPress...
|
||||
Procesando bloque: CO2InjPressure...
|
||||
Exportando referencias cruzadas para CO2InjPressure...
|
||||
Procesando bloque: CTRLCoolingSystem...
|
||||
Exportando referencias cruzadas para CTRLCoolingSystem...
|
||||
Procesando bloque: DeairCO2TempComp...
|
||||
Exportando referencias cruzadas para DeairCO2TempComp...
|
||||
Procesando bloque: DeaireationValve...
|
||||
Exportando referencias cruzadas para DeaireationValve...
|
||||
Procesando bloque: Deaireator StartUp_Seq...
|
||||
Exportando referencias cruzadas para Deaireator StartUp_Seq...
|
||||
Procesando bloque: DeltaP...
|
||||
Exportando referencias cruzadas para DeltaP...
|
||||
Procesando bloque: FeedForward...
|
||||
Exportando referencias cruzadas para FeedForward...
|
||||
Procesando bloque: Flow_To_Press_Loss...
|
||||
Exportando referencias cruzadas para Flow_To_Press_Loss...
|
||||
Procesando bloque: Freq_To_mmH2O...
|
||||
Exportando referencias cruzadas para Freq_To_mmH2O...
|
||||
Procesando bloque: FrictionLoss...
|
||||
Exportando referencias cruzadas para FrictionLoss...
|
||||
Procesando bloque: FW_DRand...
|
||||
Exportando referencias cruzadas para FW_DRand...
|
||||
Procesando bloque: GetProdBrixCO2_Anal_Inpt...
|
||||
Exportando referencias cruzadas para GetProdBrixCO2_Anal_Inpt...
|
||||
Procesando bloque: Interlocking_Panel_1...
|
||||
Exportando referencias cruzadas para Interlocking_Panel_1...
|
||||
Procesando bloque: ITC Communic CIPRoom...
|
||||
Exportando referencias cruzadas para ITC Communic CIPRoom...
|
||||
Procesando bloque: ITC Communic Filler...
|
||||
Exportando referencias cruzadas para ITC Communic Filler...
|
||||
Procesando bloque: ITC Communic MainRoutine...
|
||||
Exportando referencias cruzadas para ITC Communic MainRoutine...
|
||||
Procesando bloque: ITC Communic ProdRoom...
|
||||
Exportando referencias cruzadas para ITC Communic ProdRoom...
|
||||
Procesando bloque: ITC DataIn...
|
||||
Exportando referencias cruzadas para ITC DataIn...
|
||||
Procesando bloque: ITC DataOut...
|
||||
Exportando referencias cruzadas para ITC DataOut...
|
||||
Procesando bloque: ITC Exchange MainRoutine...
|
||||
Exportando referencias cruzadas para ITC Exchange MainRoutine...
|
||||
Procesando bloque: ITC MainRoutine...
|
||||
Exportando referencias cruzadas para ITC MainRoutine...
|
||||
Procesando bloque: LIMIT_I...
|
||||
Exportando referencias cruzadas para LIMIT_I...
|
||||
Procesando bloque: LIMIT_R...
|
||||
Exportando referencias cruzadas para LIMIT_R...
|
||||
Procesando bloque: Maselli_PA_Control...
|
||||
Exportando referencias cruzadas para Maselli_PA_Control...
|
||||
Procesando bloque: Maselli_PA_Ctrl_Transfer...
|
||||
Exportando referencias cruzadas para Maselli_PA_Ctrl_Transfer...
|
||||
Procesando bloque: Maselli_PA_Ctrl_Write...
|
||||
Exportando referencias cruzadas para Maselli_PA_Ctrl_Write...
|
||||
Procesando bloque: MFMAnalogValues_Totalize...
|
||||
Exportando referencias cruzadas para MFMAnalogValues_Totalize...
|
||||
Procesando bloque: mmH2O_TO_Freq...
|
||||
Exportando referencias cruzadas para mmH2O_TO_Freq...
|
||||
Procesando bloque: ModValveFault...
|
||||
Exportando referencias cruzadas para ModValveFault...
|
||||
Procesando bloque: mPDS_SYR_PA_Control...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Control...
|
||||
Procesando bloque: ONS_R...
|
||||
Exportando referencias cruzadas para ONS_R...
|
||||
Procesando bloque: Prod Tank RunOut_Seq...
|
||||
Exportando referencias cruzadas para Prod Tank RunOut_Seq...
|
||||
Procesando bloque: ProductLiterInTank...
|
||||
Exportando referencias cruzadas para ProductLiterInTank...
|
||||
Procesando bloque: ProductPipeDrain_Seq...
|
||||
Exportando referencias cruzadas para ProductPipeDrain_Seq...
|
||||
Procesando bloque: ProductPipeRunOut_Seq...
|
||||
Exportando referencias cruzadas para ProductPipeRunOut_Seq...
|
||||
Procesando bloque: ProductQuality...
|
||||
Exportando referencias cruzadas para ProductQuality...
|
||||
Procesando bloque: SEL_I...
|
||||
Exportando referencias cruzadas para SEL_I...
|
||||
Procesando bloque: SEL_R...
|
||||
Exportando referencias cruzadas para SEL_R...
|
||||
Procesando bloque: SelCheckBrixSource...
|
||||
Exportando referencias cruzadas para SelCheckBrixSource...
|
||||
Procesando bloque: SLIM_Block...
|
||||
Exportando referencias cruzadas para SLIM_Block...
|
||||
Procesando bloque: SpeedAdjust...
|
||||
Exportando referencias cruzadas para SpeedAdjust...
|
||||
Procesando bloque: Syrup Line MFM Prep_Seq...
|
||||
Exportando referencias cruzadas para Syrup Line MFM Prep_Seq...
|
||||
Procesando bloque: Syrup MFM StartUp_Seq...
|
||||
Exportando referencias cruzadas para Syrup MFM StartUp_Seq...
|
||||
Procesando bloque: SyrupDensity...
|
||||
Exportando referencias cruzadas para SyrupDensity...
|
||||
Procesando bloque: SyrupRoomCtrl...
|
||||
Exportando referencias cruzadas para SyrupRoomCtrl...
|
||||
Procesando bloque: WaterDensity...
|
||||
Exportando referencias cruzadas para WaterDensity...
|
||||
Procesando bloque: WritePeripheral...
|
||||
Exportando referencias cruzadas para WritePeripheral...
|
||||
Procesando bloque: CIPRecipeManagement_Data...
|
||||
Exportando referencias cruzadas para CIPRecipeManagement_Data...
|
||||
Procesando bloque: Co2_Counters_DB...
|
||||
Exportando referencias cruzadas para Co2_Counters_DB...
|
||||
Procesando bloque: Default_SupervisionDB...
|
||||
Exportando referencias cruzadas para Default_SupervisionDB...
|
||||
Procesando bloque: ITC Communic CIP DI...
|
||||
Exportando referencias cruzadas para ITC Communic CIP DI...
|
||||
Procesando bloque: ITC Communic Filler DI...
|
||||
Exportando referencias cruzadas para ITC Communic Filler DI...
|
||||
Procesando bloque: ITC Communic Mixer DI...
|
||||
Exportando referencias cruzadas para ITC Communic Mixer DI...
|
||||
Procesando bloque: ITC Communic Product Room DI...
|
||||
Exportando referencias cruzadas para ITC Communic Product Room DI...
|
||||
Procesando bloque: Key Read & Write Data...
|
||||
Exportando referencias cruzadas para Key Read & Write Data...
|
||||
Procesando bloque: mPPM303StartUpRamp...
|
||||
Exportando referencias cruzadas para mPPM303StartUpRamp...
|
||||
Procesando bloque: PID_RMM304_Data...
|
||||
Exportando referencias cruzadas para PID_RMM304_Data...
|
||||
Procesando bloque: PID_RVN302_Data...
|
||||
Exportando referencias cruzadas para PID_RVN302_Data...
|
||||
Procesando bloque: PID_RVS318_Data...
|
||||
Exportando referencias cruzadas para PID_RVS318_Data...
|
||||
Procesando bloque: ProdBrixRecovery_DB...
|
||||
Exportando referencias cruzadas para ProdBrixRecovery_DB...
|
||||
Procesando bloque: Prod Tank Drain_Seq...
|
||||
Exportando referencias cruzadas para Prod Tank Drain_Seq...
|
||||
Procesando bloque: _StepMove...
|
||||
Exportando referencias cruzadas para _StepMove...
|
||||
Procesando bloque: _StepMove_Test...
|
||||
Exportando referencias cruzadas para _StepMove_Test...
|
||||
Procesando bloque: RecipeManagement_Data...
|
||||
Exportando referencias cruzadas para RecipeManagement_Data...
|
||||
Procesando bloque: Blender_Procedure Data...
|
||||
Exportando referencias cruzadas para Blender_Procedure Data...
|
||||
Procesando bloque: BlenderPID__Main_Data...
|
||||
Exportando referencias cruzadas para BlenderPID__Main_Data...
|
||||
Procesando bloque: BlenderRun_MeasFil_Data...
|
||||
Exportando referencias cruzadas para BlenderRun_MeasFil_Data...
|
||||
Procesando bloque: BrixTracking_Data...
|
||||
Exportando referencias cruzadas para BrixTracking_Data...
|
||||
Procesando bloque: CO2Tracking_Data...
|
||||
Exportando referencias cruzadas para CO2Tracking_Data...
|
||||
Procesando bloque: FirstProduction_Data...
|
||||
Exportando referencias cruzadas para FirstProduction_Data...
|
||||
Procesando bloque: Input_Data...
|
||||
Exportando referencias cruzadas para Input_Data...
|
||||
Procesando bloque: ISOonTCP_or_TCP_Protocol_DB...
|
||||
Exportando referencias cruzadas para ISOonTCP_or_TCP_Protocol_DB...
|
||||
Procesando bloque: MFM_Analog_Value_Data...
|
||||
Exportando referencias cruzadas para MFM_Analog_Value_Data...
|
||||
Procesando bloque: PID MAIN Data...
|
||||
Exportando referencias cruzadas para PID MAIN Data...
|
||||
Procesando bloque: PID_Filling_Head_Data...
|
||||
Exportando referencias cruzadas para PID_Filling_Head_Data...
|
||||
Procesando bloque: PID_RMM301_Data...
|
||||
Exportando referencias cruzadas para PID_RMM301_Data...
|
||||
Procesando bloque: PID_RMM303_Data...
|
||||
Exportando referencias cruzadas para PID_RMM303_Data...
|
||||
Procesando bloque: PID_RMP302_Data...
|
||||
Exportando referencias cruzadas para PID_RMP302_Data...
|
||||
Procesando bloque: PID_RVM301_Data...
|
||||
Exportando referencias cruzadas para PID_RVM301_Data...
|
||||
Procesando bloque: PID_RVM319_Data...
|
||||
Exportando referencias cruzadas para PID_RVM319_Data...
|
||||
Procesando bloque: PID_RVP303_Data...
|
||||
Exportando referencias cruzadas para PID_RVP303_Data...
|
||||
Procesando bloque: Sel_Check_Brix_Data...
|
||||
Exportando referencias cruzadas para Sel_Check_Brix_Data...
|
||||
Procesando bloque: Signal_Gen_Data...
|
||||
Exportando referencias cruzadas para Signal_Gen_Data...
|
||||
Procesando bloque: System_Run_Out_Data...
|
||||
Exportando referencias cruzadas para System_Run_Out_Data...
|
||||
Procesando bloque: SubCarb_DB...
|
||||
Exportando referencias cruzadas para SubCarb_DB...
|
||||
Procesando bloque: CYC_INT5...
|
||||
Exportando referencias cruzadas para CYC_INT5...
|
||||
Procesando bloque: BlenderCtrl_All Auto...
|
||||
Exportando referencias cruzadas para BlenderCtrl_All Auto...
|
||||
Procesando bloque: BlenderCtrl_InitErrors...
|
||||
Exportando referencias cruzadas para BlenderCtrl_InitErrors...
|
||||
Procesando bloque: BlenderCtrl_ManualActive...
|
||||
Exportando referencias cruzadas para BlenderCtrl_ManualActive...
|
||||
Procesando bloque: BlenderCtrl_MFM Command...
|
||||
Exportando referencias cruzadas para BlenderCtrl_MFM Command...
|
||||
Procesando bloque: BlenderPID_FlowMeterErro...
|
||||
Exportando referencias cruzadas para BlenderPID_FlowMeterErro...
|
||||
Procesando bloque: BlenderPID_PIDResInteg...
|
||||
Exportando referencias cruzadas para BlenderPID_PIDResInteg...
|
||||
Procesando bloque: BlenderPIDCtrl_PresRelea...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_PresRelea...
|
||||
Procesando bloque: BlenderPIDCtrl_SaveValve...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_SaveValve...
|
||||
Procesando bloque: BlenderRun__Control...
|
||||
Exportando referencias cruzadas para BlenderRun__Control...
|
||||
Procesando bloque: BlenderRun_SelectConstan...
|
||||
Exportando referencias cruzadas para BlenderRun_SelectConstan...
|
||||
Procesando bloque: BlendFill StartUp_Seq...
|
||||
Exportando referencias cruzadas para BlendFill StartUp_Seq...
|
||||
Procesando bloque: CIP_SimpleProgr_Init...
|
||||
Exportando referencias cruzadas para CIP_SimpleProgr_Init...
|
||||
Procesando bloque: CIPLocal...
|
||||
Exportando referencias cruzadas para CIPLocal...
|
||||
Procesando bloque: CIPLocal_ExecSimpleCIP...
|
||||
Exportando referencias cruzadas para CIPLocal_ExecSimpleCIP...
|
||||
Procesando bloque: CIPLocal_ExecStep...
|
||||
Exportando referencias cruzadas para CIPLocal_ExecStep...
|
||||
Procesando bloque: CIPLocal_ProgStepDown...
|
||||
Exportando referencias cruzadas para CIPLocal_ProgStepDown...
|
||||
Procesando bloque: CIPLocal_ProgStepUp...
|
||||
Exportando referencias cruzadas para CIPLocal_ProgStepUp...
|
||||
Procesando bloque: CIPReportManager...
|
||||
Exportando referencias cruzadas para CIPReportManager...
|
||||
Procesando bloque: CPU_DP Global Diag...
|
||||
Exportando referencias cruzadas para CPU_DP Global Diag...
|
||||
Procesando bloque: CVQ_1p7_8_Perc...
|
||||
Exportando referencias cruzadas para CVQ_1p7_8_Perc...
|
||||
Procesando bloque: DELETE...
|
||||
Exportando referencias cruzadas para DELETE...
|
||||
Procesando bloque: EQ_STRNG...
|
||||
Exportando referencias cruzadas para EQ_STRNG...
|
||||
Procesando bloque: FillerControl...
|
||||
Exportando referencias cruzadas para FillerControl...
|
||||
Procesando bloque: FillerControl_DataSend...
|
||||
Exportando referencias cruzadas para FillerControl_DataSend...
|
||||
Procesando bloque: FillingTime...
|
||||
Exportando referencias cruzadas para FillingTime...
|
||||
Procesando bloque: Input_CheckFlowMetersSta...
|
||||
Exportando referencias cruzadas para Input_CheckFlowMetersSta...
|
||||
Procesando bloque: Input_DigitalCtrl...
|
||||
Exportando referencias cruzadas para Input_DigitalCtrl...
|
||||
Procesando bloque: Input_DigitalScanner...
|
||||
Exportando referencias cruzadas para Input_DigitalScanner...
|
||||
Procesando bloque: Instrument_Scanner...
|
||||
Exportando referencias cruzadas para Instrument_Scanner...
|
||||
Procesando bloque: Interlocking_Panel...
|
||||
Exportando referencias cruzadas para Interlocking_Panel...
|
||||
Procesando bloque: Maselli_PA_Ctrl_Read...
|
||||
Exportando referencias cruzadas para Maselli_PA_Ctrl_Read...
|
||||
Procesando bloque: MaxCarboCO2 Vol...
|
||||
Exportando referencias cruzadas para MaxCarboCO2 Vol...
|
||||
Procesando bloque: MessageScroll...
|
||||
Exportando referencias cruzadas para MessageScroll...
|
||||
Procesando bloque: mPDS_SYR_PA_Ctrl_Read...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Ctrl_Read...
|
||||
Procesando bloque: Output_CO2InjPress...
|
||||
Exportando referencias cruzadas para Output_CO2InjPress...
|
||||
Procesando bloque: Pneumatic Valve Fault...
|
||||
Exportando referencias cruzadas para Pneumatic Valve Fault...
|
||||
Procesando bloque: PPM O2...
|
||||
Exportando referencias cruzadas para PPM O2...
|
||||
Procesando bloque: PPM303_VFC_Ctrl...
|
||||
Exportando referencias cruzadas para PPM303_VFC_Ctrl...
|
||||
Procesando bloque: PPM305_VFC_Ctrl...
|
||||
Exportando referencias cruzadas para PPM305_VFC_Ctrl...
|
||||
Procesando bloque: PPM307_VFC_Ctrl...
|
||||
Exportando referencias cruzadas para PPM307_VFC_Ctrl...
|
||||
Procesando bloque: PPN301_VFC_Ctrl...
|
||||
Exportando referencias cruzadas para PPN301_VFC_Ctrl...
|
||||
Procesando bloque: PPP302_VFC_Ctrl...
|
||||
Exportando referencias cruzadas para PPP302_VFC_Ctrl...
|
||||
Procesando bloque: ProdBrixRecovery_BrixCal...
|
||||
Exportando referencias cruzadas para ProdBrixRecovery_BrixCal...
|
||||
Procesando bloque: ProdReportManager...
|
||||
Exportando referencias cruzadas para ProdReportManager...
|
||||
Procesando bloque: ProductQuality_Messages...
|
||||
Exportando referencias cruzadas para ProductQuality_Messages...
|
||||
Procesando bloque: Profibus Network...
|
||||
Exportando referencias cruzadas para Profibus Network...
|
||||
Procesando bloque: QCO Monitor...
|
||||
Exportando referencias cruzadas para QCO Monitor...
|
||||
Procesando bloque: ReadAnalogIn...
|
||||
Exportando referencias cruzadas para ReadAnalogIn...
|
||||
Procesando bloque: RecipeCalculation...
|
||||
Exportando referencias cruzadas para RecipeCalculation...
|
||||
Procesando bloque: REPLACE_Mod...
|
||||
Exportando referencias cruzadas para REPLACE_Mod...
|
||||
Procesando bloque: SyrBrix_SyrupCorrPerc...
|
||||
Exportando referencias cruzadas para SyrBrix_SyrupCorrPerc...
|
||||
Procesando bloque: Syrup Rinse QCO_Seq...
|
||||
Exportando referencias cruzadas para Syrup Rinse QCO_Seq...
|
||||
Procesando bloque: SyrupRoomCtrl_UpdateVal...
|
||||
Exportando referencias cruzadas para SyrupRoomCtrl_UpdateVal...
|
||||
Procesando bloque: T_Timer...
|
||||
Exportando referencias cruzadas para T_Timer...
|
||||
Procesando bloque: TankLevelToHeight...
|
||||
Exportando referencias cruzadas para TankLevelToHeight...
|
||||
Procesando bloque: VacuumCtrl...
|
||||
Exportando referencias cruzadas para VacuumCtrl...
|
||||
Procesando bloque: ValveFlow...
|
||||
Exportando referencias cruzadas para ValveFlow...
|
||||
Procesando bloque: BlenderPID__Main...
|
||||
Exportando referencias cruzadas para BlenderPID__Main...
|
||||
Procesando bloque: BlenderPID_BlendingFault...
|
||||
Exportando referencias cruzadas para BlenderPID_BlendingFault...
|
||||
Procesando bloque: BlenderPID_PIDFFCalc...
|
||||
Exportando referencias cruzadas para BlenderPID_PIDFFCalc...
|
||||
Procesando bloque: BlenderPID_PIDInitParam...
|
||||
Exportando referencias cruzadas para BlenderPID_PIDInitParam...
|
||||
Procesando bloque: BlenderPID_PIDSPCalc...
|
||||
Exportando referencias cruzadas para BlenderPID_PIDSPCalc...
|
||||
Procesando bloque: BlenderPIDCtrl_Monitor...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_Monitor...
|
||||
Procesando bloque: BlenderPIDCtrl_ReadAnIn...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_ReadAnIn...
|
||||
Procesando bloque: BlenderPIDCtrl_SaveInteg...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_SaveInteg...
|
||||
Procesando bloque: BlenderRun_MeasFilSpeed...
|
||||
Exportando referencias cruzadas para BlenderRun_MeasFilSpeed...
|
||||
Procesando bloque: BrixTracking_ProdSamples...
|
||||
Exportando referencias cruzadas para BrixTracking_ProdSamples...
|
||||
Procesando bloque: BrixTracking_SampleTime...
|
||||
Exportando referencias cruzadas para BrixTracking_SampleTime...
|
||||
Procesando bloque: CIPRecipeManagement...
|
||||
Exportando referencias cruzadas para CIPRecipeManagement...
|
||||
Procesando bloque: Co2_Counters...
|
||||
Exportando referencias cruzadas para Co2_Counters...
|
||||
Procesando bloque: CO2Tracking...
|
||||
Exportando referencias cruzadas para CO2Tracking...
|
||||
Procesando bloque: CO2Tracking_ProdSamples...
|
||||
Exportando referencias cruzadas para CO2Tracking_ProdSamples...
|
||||
Procesando bloque: CO2Tracking_SampleTime...
|
||||
Exportando referencias cruzadas para CO2Tracking_SampleTime...
|
||||
Procesando bloque: Default_SupervisionFB...
|
||||
Exportando referencias cruzadas para Default_SupervisionFB...
|
||||
Procesando bloque: Delay...
|
||||
Exportando referencias cruzadas para Delay...
|
||||
Procesando bloque: Input...
|
||||
Exportando referencias cruzadas para Input...
|
||||
Procesando bloque: Integral...
|
||||
Exportando referencias cruzadas para Integral...
|
||||
Procesando bloque: Key Read & Write...
|
||||
Exportando referencias cruzadas para Key Read & Write...
|
||||
Procesando bloque: LowPassFilter...
|
||||
Exportando referencias cruzadas para LowPassFilter...
|
||||
Procesando bloque: MFMAnalogValues...
|
||||
Exportando referencias cruzadas para MFMAnalogValues...
|
||||
Procesando bloque: MSE Slope...
|
||||
Exportando referencias cruzadas para MSE Slope...
|
||||
Procesando bloque: PID_Filling_Head_Calc...
|
||||
Exportando referencias cruzadas para PID_Filling_Head_Calc...
|
||||
Procesando bloque: PID_RMM301...
|
||||
Exportando referencias cruzadas para PID_RMM301...
|
||||
Procesando bloque: PID_RMM303...
|
||||
Exportando referencias cruzadas para PID_RMM303...
|
||||
Procesando bloque: PID_RMM304...
|
||||
Exportando referencias cruzadas para PID_RMM304...
|
||||
Procesando bloque: PID_RMP302...
|
||||
Exportando referencias cruzadas para PID_RMP302...
|
||||
Procesando bloque: PID_RVM301...
|
||||
Exportando referencias cruzadas para PID_RVM301...
|
||||
Procesando bloque: PID_RVM319_PRD...
|
||||
Exportando referencias cruzadas para PID_RVM319_PRD...
|
||||
Procesando bloque: PID_RVN302...
|
||||
Exportando referencias cruzadas para PID_RVN302...
|
||||
Procesando bloque: PID_RVP303...
|
||||
Exportando referencias cruzadas para PID_RVP303...
|
||||
Procesando bloque: PID_RVS318...
|
||||
Exportando referencias cruzadas para PID_RVS318...
|
||||
Procesando bloque: PIDControl...
|
||||
Exportando referencias cruzadas para PIDControl...
|
||||
Procesando bloque: Procedure...
|
||||
Exportando referencias cruzadas para Procedure...
|
||||
Procesando bloque: ProcedureBlendFill StartUp...
|
||||
Exportando referencias cruzadas para ProcedureBlendFill StartUp...
|
||||
Procesando bloque: ProcedureBrixTracking...
|
||||
Exportando referencias cruzadas para ProcedureBrixTracking...
|
||||
Procesando bloque: ProcedureCarboWaterLine...
|
||||
Exportando referencias cruzadas para ProcedureCarboWaterLine...
|
||||
Procesando bloque: ProcedureDeaireator StartUp...
|
||||
Exportando referencias cruzadas para ProcedureDeaireator StartUp...
|
||||
Procesando bloque: ProcedureFirstProduction...
|
||||
Exportando referencias cruzadas para ProcedureFirstProduction...
|
||||
Procesando bloque: ProcedureProdBrixRecovery...
|
||||
Exportando referencias cruzadas para ProcedureProdBrixRecovery...
|
||||
Procesando bloque: ProcedureProdTankDrain...
|
||||
Exportando referencias cruzadas para ProcedureProdTankDrain...
|
||||
Procesando bloque: ProcedureProdTankRunOut...
|
||||
Exportando referencias cruzadas para ProcedureProdTankRunOut...
|
||||
Procesando bloque: ProcedureSyrup RunOut...
|
||||
Exportando referencias cruzadas para ProcedureSyrup RunOut...
|
||||
Procesando bloque: ProcedureSyrupLineMFMPrep...
|
||||
Exportando referencias cruzadas para ProcedureSyrupLineMFMPrep...
|
||||
Procesando bloque: ProcedureSyrupMFMStartUp...
|
||||
Exportando referencias cruzadas para ProcedureSyrupMFMStartUp...
|
||||
Procesando bloque: ProductAvailable...
|
||||
Exportando referencias cruzadas para ProductAvailable...
|
||||
Procesando bloque: ProductPipeDrain...
|
||||
Exportando referencias cruzadas para ProductPipeDrain...
|
||||
Procesando bloque: ProductPipeRunOut...
|
||||
Exportando referencias cruzadas para ProductPipeRunOut...
|
||||
Procesando bloque: Signal Gen...
|
||||
Exportando referencias cruzadas para Signal Gen...
|
||||
Procesando bloque: SlewLimit...
|
||||
Exportando referencias cruzadas para SlewLimit...
|
||||
Procesando bloque: Statistical_Analisys...
|
||||
Exportando referencias cruzadas para Statistical_Analisys...
|
||||
Procesando bloque: SubCarb...
|
||||
Exportando referencias cruzadas para SubCarb...
|
||||
Procesando bloque: SyrBrix Autocorrection...
|
||||
Exportando referencias cruzadas para SyrBrix Autocorrection...
|
||||
Procesando bloque: System_Run_Out...
|
||||
Exportando referencias cruzadas para System_Run_Out...
|
||||
Procesando bloque: Blender_Constants...
|
||||
Exportando referencias cruzadas para Blender_Constants...
|
||||
Procesando bloque: Blender_Variables...
|
||||
Exportando referencias cruzadas para Blender_Variables...
|
||||
Procesando bloque: Blender_Variables_Pers...
|
||||
Exportando referencias cruzadas para Blender_Variables_Pers...
|
||||
Procesando bloque: Blocco_dati_Test...
|
||||
Exportando referencias cruzadas para Blocco_dati_Test...
|
||||
Procesando bloque: CIP_Program_Variables...
|
||||
Exportando referencias cruzadas para CIP_Program_Variables...
|
||||
Procesando bloque: CIPRecipe#01...
|
||||
Exportando referencias cruzadas para CIPRecipe#01...
|
||||
Procesando bloque: CIPRecipe#02...
|
||||
Exportando referencias cruzadas para CIPRecipe#02...
|
||||
Procesando bloque: CIPRecipe#03...
|
||||
Exportando referencias cruzadas para CIPRecipe#03...
|
||||
Procesando bloque: CIPRecipe#04...
|
||||
Exportando referencias cruzadas para CIPRecipe#04...
|
||||
Procesando bloque: CIPRecipe#05...
|
||||
Exportando referencias cruzadas para CIPRecipe#05...
|
||||
Procesando bloque: CIPRecipe#06...
|
||||
Exportando referencias cruzadas para CIPRecipe#06...
|
||||
Procesando bloque: CIPRecipe#07...
|
||||
Exportando referencias cruzadas para CIPRecipe#07...
|
||||
Procesando bloque: CIPRecipe#08...
|
||||
Exportando referencias cruzadas para CIPRecipe#08...
|
||||
Procesando bloque: CIPRecipe#09...
|
||||
Exportando referencias cruzadas para CIPRecipe#09...
|
||||
Procesando bloque: CIPRecipe#10...
|
||||
Exportando referencias cruzadas para CIPRecipe#10...
|
||||
Procesando bloque: CIPRecipe#11...
|
||||
Exportando referencias cruzadas para CIPRecipe#11...
|
||||
Procesando bloque: CIPRecipe#12...
|
||||
Exportando referencias cruzadas para CIPRecipe#12...
|
||||
Procesando bloque: CIPRecipe#13...
|
||||
Exportando referencias cruzadas para CIPRecipe#13...
|
||||
Procesando bloque: CIPRecipe#14...
|
||||
Exportando referencias cruzadas para CIPRecipe#14...
|
||||
Procesando bloque: CIPRecipe#15...
|
||||
Exportando referencias cruzadas para CIPRecipe#15...
|
||||
Procesando bloque: CIPRecipe#16...
|
||||
Exportando referencias cruzadas para CIPRecipe#16...
|
||||
Procesando bloque: CIPRecipe#17...
|
||||
Exportando referencias cruzadas para CIPRecipe#17...
|
||||
Procesando bloque: CIPRecipe#18...
|
||||
Exportando referencias cruzadas para CIPRecipe#18...
|
||||
Procesando bloque: CIPRecipe#19...
|
||||
Exportando referencias cruzadas para CIPRecipe#19...
|
||||
Procesando bloque: CIPRecipe#20...
|
||||
Exportando referencias cruzadas para CIPRecipe#20...
|
||||
Procesando bloque: CIPRecipe#21...
|
||||
Exportando referencias cruzadas para CIPRecipe#21...
|
||||
Procesando bloque: CIPRecipe#22...
|
||||
Exportando referencias cruzadas para CIPRecipe#22...
|
||||
Procesando bloque: CIPRecipe#23...
|
||||
Exportando referencias cruzadas para CIPRecipe#23...
|
||||
Procesando bloque: CIPRecipe#24...
|
||||
Exportando referencias cruzadas para CIPRecipe#24...
|
||||
Procesando bloque: CIPRecipe#25...
|
||||
Exportando referencias cruzadas para CIPRecipe#25...
|
||||
Procesando bloque: CIPRecipe#26...
|
||||
Exportando referencias cruzadas para CIPRecipe#26...
|
||||
Procesando bloque: CIPRecipe#27...
|
||||
Exportando referencias cruzadas para CIPRecipe#27...
|
||||
Procesando bloque: CIPRecipe#28...
|
||||
Exportando referencias cruzadas para CIPRecipe#28...
|
||||
Procesando bloque: CIPRecipe#29...
|
||||
Exportando referencias cruzadas para CIPRecipe#29...
|
||||
Procesando bloque: CIPRecipe#30...
|
||||
Exportando referencias cruzadas para CIPRecipe#30...
|
||||
Procesando bloque: CIPReportDB...
|
||||
Exportando referencias cruzadas para CIPReportDB...
|
||||
Procesando bloque: Filler_Head_Variables...
|
||||
Exportando referencias cruzadas para Filler_Head_Variables...
|
||||
Procesando bloque: GLOBAL_DIAG_DB...
|
||||
Exportando referencias cruzadas para GLOBAL_DIAG_DB...
|
||||
Procesando bloque: HMI CPU_DP Diag...
|
||||
Exportando referencias cruzadas para HMI CPU_DP Diag...
|
||||
Procesando bloque: HMI Key User...
|
||||
Exportando referencias cruzadas para HMI Key User...
|
||||
Procesando bloque: HMI_Alarms...
|
||||
Exportando referencias cruzadas para HMI_Alarms...
|
||||
Procesando bloque: HMI_Digital...
|
||||
Exportando referencias cruzadas para HMI_Digital...
|
||||
Procesando bloque: HMI_Instrument...
|
||||
Exportando referencias cruzadas para HMI_Instrument...
|
||||
Procesando bloque: HMI_IO_Showing...
|
||||
Exportando referencias cruzadas para HMI_IO_Showing...
|
||||
Procesando bloque: HMI_Local_CIP_Variables...
|
||||
Exportando referencias cruzadas para HMI_Local_CIP_Variables...
|
||||
Procesando bloque: HMI_PID...
|
||||
Exportando referencias cruzadas para HMI_PID...
|
||||
Procesando bloque: HMI_Recipe_Edit...
|
||||
Exportando referencias cruzadas para HMI_Recipe_Edit...
|
||||
Procesando bloque: HMI_Recipe_Name...
|
||||
Exportando referencias cruzadas para HMI_Recipe_Name...
|
||||
Procesando bloque: HMI_Refrige_IO_Showing...
|
||||
Exportando referencias cruzadas para HMI_Refrige_IO_Showing...
|
||||
Procesando bloque: HMI_Service...
|
||||
Exportando referencias cruzadas para HMI_Service...
|
||||
Procesando bloque: HMI_Variables_Cmd...
|
||||
Exportando referencias cruzadas para HMI_Variables_Cmd...
|
||||
Procesando bloque: HMI_Variables_Status...
|
||||
Exportando referencias cruzadas para HMI_Variables_Status...
|
||||
Procesando bloque: Interlocking_Variables...
|
||||
Exportando referencias cruzadas para Interlocking_Variables...
|
||||
ERROR GENERAL al exportar referencias cruzadas para el bloque Interlocking_Variables: OpennessAccessException: Unexpected exception - no exception message available.
|
||||
ERROR al acceder a los bloques de programa para exportar referencias cruzadas: OpennessAccessException: Unexpected exception - no exception message available.
|
||||
Cerrando instancia actual de TIA Portal...
|
||||
2025-06-19 16:41:11,092 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
|
||||
Re-abriendo TIA Portal (intento 1/5)...
|
||||
|
||||
Conectando a TIA Portal V18.0...
|
||||
2025-06-19 16:41:11,295 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - Start TIA Portal, please acknowledge the security dialog.
|
||||
2025-06-19 16:41:11,296 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Global OpenPortal - With user interface
|
||||
Conectado a TIA Portal.
|
||||
2025-06-19 16:41:26,719 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal GetProcessId - Process id: 28872
|
||||
ID del proceso del Portal: 28872
|
||||
2025-06-19 16:41:26,921 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal OpenProject - Open project... C:/Trabajo/SIDEL/13 - E5.007560 - Modifica O&U - SAE235/InLavoro/PLC/SSAE0235/_NEW/SAE235_v0.1/SAE235_v0.1.ap18
|
||||
2025-06-19 16:41:38,022 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Project GetPlcs - Found plc PLC with parent name S71500/ET200MP station_1
|
||||
|
||||
--- Procesando PLC: PLC ---
|
||||
Unable to open the project under path 'D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19'.
|
||||
|
||||
[PLC: PLC] Exportando referencias cruzadas de bloques de programa...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\ProgramBlocks_CR
|
||||
Se encontraron 380 bloques de programa.
|
||||
Omitiendo bloque problemático previamente detectado: Interlocking_Variables
|
||||
Procesando bloque: ITC Communic MainData...
|
||||
Exportando referencias cruzadas para ITC Communic MainData...
|
||||
Procesando bloque: Machine_Co2_Cons...
|
||||
Exportando referencias cruzadas para Machine_Co2_Cons...
|
||||
Procesando bloque: Maselli_PA_Data...
|
||||
Exportando referencias cruzadas para Maselli_PA_Data...
|
||||
Procesando bloque: PID_Variables...
|
||||
Exportando referencias cruzadas para PID_Variables...
|
||||
Procesando bloque: Pneumatic Valve Fault DB...
|
||||
Exportando referencias cruzadas para Pneumatic Valve Fault DB...
|
||||
Procesando bloque: Procedure_Variables...
|
||||
Exportando referencias cruzadas para Procedure_Variables...
|
||||
Procesando bloque: ProdReportDB...
|
||||
Exportando referencias cruzadas para ProdReportDB...
|
||||
Procesando bloque: Profibus_Variables...
|
||||
Exportando referencias cruzadas para Profibus_Variables...
|
||||
Procesando bloque: QCO Timing DB...
|
||||
Exportando referencias cruzadas para QCO Timing DB...
|
||||
Procesando bloque: ReadAnalogIn_Fault_DB...
|
||||
Exportando referencias cruzadas para ReadAnalogIn_Fault_DB...
|
||||
Procesando bloque: RecipeEditDataSave...
|
||||
Exportando referencias cruzadas para RecipeEditDataSave...
|
||||
Procesando bloque: SLIM_Variables...
|
||||
Exportando referencias cruzadas para SLIM_Variables...
|
||||
Procesando bloque: System_RunOut_Variables...
|
||||
Exportando referencias cruzadas para System_RunOut_Variables...
|
||||
Procesando bloque: BlenderCtrl_MachineInit...
|
||||
Exportando referencias cruzadas para BlenderCtrl_MachineInit...
|
||||
Procesando bloque: Pneumatic Valve Ctrl...
|
||||
Exportando referencias cruzadas para Pneumatic Valve Ctrl...
|
||||
Procesando bloque: PumpsControl...
|
||||
Exportando referencias cruzadas para PumpsControl...
|
||||
Procesando bloque: Safeties...
|
||||
Exportando referencias cruzadas para Safeties...
|
||||
Procesando bloque: HMI_Device...
|
||||
Exportando referencias cruzadas para HMI_Device...
|
||||
Procesando bloque: Prod Tank PressCtrl...
|
||||
Exportando referencias cruzadas para Prod Tank PressCtrl...
|
||||
Procesando bloque: BlenderPIDCtrl__Loop...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl__Loop...
|
||||
Procesando bloque: PID_Filling_Head...
|
||||
Exportando referencias cruzadas para PID_Filling_Head...
|
||||
Procesando bloque: TankLevel...
|
||||
Exportando referencias cruzadas para TankLevel...
|
||||
Procesando bloque: BlenderPID_ActualRecipe...
|
||||
Exportando referencias cruzadas para BlenderPID_ActualRecipe...
|
||||
Procesando bloque: RecipeManagement - Prod...
|
||||
Exportando referencias cruzadas para RecipeManagement - Prod...
|
||||
Procesando bloque: Output...
|
||||
Exportando referencias cruzadas para Output...
|
||||
Procesando bloque: Recipe #03...
|
||||
Exportando referencias cruzadas para Recipe #03...
|
||||
Procesando bloque: HMI_Blender_Parameters...
|
||||
Exportando referencias cruzadas para HMI_Blender_Parameters...
|
||||
Procesando bloque: BlenderPIDCtrl_WriteAnOu...
|
||||
Exportando referencias cruzadas para BlenderPIDCtrl_WriteAnOu...
|
||||
Procesando bloque: ISOonTCP_or_TCP_Protocol...
|
||||
Exportando referencias cruzadas para ISOonTCP_or_TCP_Protocol...
|
||||
Procesando bloque: mPDS_PA_Control...
|
||||
Exportando referencias cruzadas para mPDS_PA_Control...
|
||||
Procesando bloque: mPDS_PA_Ctrl_Parameters...
|
||||
Exportando referencias cruzadas para mPDS_PA_Ctrl_Parameters...
|
||||
Procesando bloque: mPDS_PA_Ctrl_Read...
|
||||
Exportando referencias cruzadas para mPDS_PA_Ctrl_Read...
|
||||
Procesando bloque: mPDS_PA_Ctrl_Transfer...
|
||||
Exportando referencias cruzadas para mPDS_PA_Ctrl_Transfer...
|
||||
Procesando bloque: mPDS_PA_Ctrl_Write...
|
||||
Exportando referencias cruzadas para mPDS_PA_Ctrl_Write...
|
||||
Procesando bloque: Output_AnalogValueToHMI...
|
||||
Exportando referencias cruzadas para Output_AnalogValueToHMI...
|
||||
Procesando bloque: mPDS_PA_Data...
|
||||
Exportando referencias cruzadas para mPDS_PA_Data...
|
||||
Procesando bloque: mPDS_SYR_PA_Ctrl_Write...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Ctrl_Write...
|
||||
Procesando bloque: mPDS_SYR_PA_Ctrl_Trans...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Ctrl_Trans...
|
||||
Procesando bloque: mPDS_SYR_PA_Ctrl_Param...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Ctrl_Param...
|
||||
Procesando bloque: mPDS_SYR_PA_Data...
|
||||
Exportando referencias cruzadas para mPDS_SYR_PA_Data...
|
||||
Procesando bloque: Recipe #02...
|
||||
Exportando referencias cruzadas para Recipe #02...
|
||||
Procesando bloque: Recipe #01...
|
||||
Exportando referencias cruzadas para Recipe #01...
|
||||
Procesando bloque: Recipe #04...
|
||||
Exportando referencias cruzadas para Recipe #04...
|
||||
Procesando bloque: Recipe #05...
|
||||
Exportando referencias cruzadas para Recipe #05...
|
||||
Procesando bloque: Recipe #06...
|
||||
Exportando referencias cruzadas para Recipe #06...
|
||||
Procesando bloque: Recipe #07...
|
||||
Exportando referencias cruzadas para Recipe #07...
|
||||
Procesando bloque: Recipe #08...
|
||||
Exportando referencias cruzadas para Recipe #08...
|
||||
Procesando bloque: Recipe #09...
|
||||
Exportando referencias cruzadas para Recipe #09...
|
||||
Procesando bloque: Recipe #10...
|
||||
Exportando referencias cruzadas para Recipe #10...
|
||||
Procesando bloque: Recipe #11...
|
||||
Exportando referencias cruzadas para Recipe #11...
|
||||
Procesando bloque: Recipe #12...
|
||||
Exportando referencias cruzadas para Recipe #12...
|
||||
Procesando bloque: Recipe #13...
|
||||
Exportando referencias cruzadas para Recipe #13...
|
||||
Procesando bloque: Recipe #14...
|
||||
Exportando referencias cruzadas para Recipe #14...
|
||||
Procesando bloque: Recipe #15...
|
||||
Exportando referencias cruzadas para Recipe #15...
|
||||
Procesando bloque: Recipe #16...
|
||||
Exportando referencias cruzadas para Recipe #16...
|
||||
Procesando bloque: Recipe #17...
|
||||
Exportando referencias cruzadas para Recipe #17...
|
||||
Procesando bloque: Recipe #18...
|
||||
Exportando referencias cruzadas para Recipe #18...
|
||||
Procesando bloque: Recipe #19...
|
||||
Exportando referencias cruzadas para Recipe #19...
|
||||
Procesando bloque: Recipe #20...
|
||||
Exportando referencias cruzadas para Recipe #20...
|
||||
Procesando bloque: Recipe #21...
|
||||
Exportando referencias cruzadas para Recipe #21...
|
||||
Procesando bloque: Recipe #22...
|
||||
Exportando referencias cruzadas para Recipe #22...
|
||||
Procesando bloque: Recipe #23...
|
||||
Exportando referencias cruzadas para Recipe #23...
|
||||
Procesando bloque: Recipe #24...
|
||||
Exportando referencias cruzadas para Recipe #24...
|
||||
Procesando bloque: Recipe #25...
|
||||
Exportando referencias cruzadas para Recipe #25...
|
||||
Procesando bloque: Recipe #26...
|
||||
Exportando referencias cruzadas para Recipe #26...
|
||||
Procesando bloque: Recipe #27...
|
||||
Exportando referencias cruzadas para Recipe #27...
|
||||
Procesando bloque: Recipe #28...
|
||||
Exportando referencias cruzadas para Recipe #28...
|
||||
Procesando bloque: Recipe #29...
|
||||
Exportando referencias cruzadas para Recipe #29...
|
||||
Procesando bloque: Recipe #30...
|
||||
Exportando referencias cruzadas para Recipe #30...
|
||||
Procesando bloque: Recipe #31...
|
||||
Exportando referencias cruzadas para Recipe #31...
|
||||
Procesando bloque: Recipe #32...
|
||||
Exportando referencias cruzadas para Recipe #32...
|
||||
Procesando bloque: Recipe #33...
|
||||
Exportando referencias cruzadas para Recipe #33...
|
||||
Procesando bloque: Recipe #34...
|
||||
Exportando referencias cruzadas para Recipe #34...
|
||||
Procesando bloque: Recipe #35...
|
||||
Exportando referencias cruzadas para Recipe #35...
|
||||
Procesando bloque: Recipe #36...
|
||||
Exportando referencias cruzadas para Recipe #36...
|
||||
Procesando bloque: Recipe #37...
|
||||
Exportando referencias cruzadas para Recipe #37...
|
||||
Procesando bloque: Recipe #38...
|
||||
Exportando referencias cruzadas para Recipe #38...
|
||||
Procesando bloque: Recipe #39...
|
||||
Exportando referencias cruzadas para Recipe #39...
|
||||
Procesando bloque: Recipe #40...
|
||||
Exportando referencias cruzadas para Recipe #40...
|
||||
Procesando bloque: Recipe #41...
|
||||
Exportando referencias cruzadas para Recipe #41...
|
||||
Procesando bloque: Recipe #42...
|
||||
Exportando referencias cruzadas para Recipe #42...
|
||||
Procesando bloque: Recipe #43...
|
||||
Exportando referencias cruzadas para Recipe #43...
|
||||
Procesando bloque: Recipe #44...
|
||||
Exportando referencias cruzadas para Recipe #44...
|
||||
Procesando bloque: Recipe #45...
|
||||
Exportando referencias cruzadas para Recipe #45...
|
||||
Procesando bloque: Recipe #46...
|
||||
Exportando referencias cruzadas para Recipe #46...
|
||||
Procesando bloque: Recipe #47...
|
||||
Exportando referencias cruzadas para Recipe #47...
|
||||
Procesando bloque: Recipe #48...
|
||||
Exportando referencias cruzadas para Recipe #48...
|
||||
Procesando bloque: Recipe #49...
|
||||
Exportando referencias cruzadas para Recipe #49...
|
||||
Procesando bloque: Recipe #50...
|
||||
Exportando referencias cruzadas para Recipe #50...
|
||||
Procesando bloque: GNS PLCdia MainRoutine...
|
||||
Exportando referencias cruzadas para GNS PLCdia MainRoutine...
|
||||
Procesando bloque: GNS PLCdia Profinet...
|
||||
Exportando referencias cruzadas para GNS PLCdia Profinet...
|
||||
Procesando bloque: GNS PLCdia Profibus...
|
||||
Exportando referencias cruzadas para GNS PLCdia Profibus...
|
||||
Procesando bloque: GNS PLCdia ProfibusData...
|
||||
Exportando referencias cruzadas para GNS PLCdia ProfibusData...
|
||||
Procesando bloque: GNS PLCdia ProfinetData...
|
||||
Exportando referencias cruzadas para GNS PLCdia ProfinetData...
|
||||
Resumen de exportación de referencias cruzadas de bloques: Exportados=94, Omitidos/Errores=1
|
||||
|
||||
[PLC: PLC] Exportando referencias cruzadas de tablas de variables...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\PlcTags_CR
|
||||
Se encontraron 10 tablas de variables.
|
||||
Procesando tabla de variables: Memories...
|
||||
Exportando referencias cruzadas para Memories...
|
||||
Procesando tabla de variables: Tabella delle variabili standard...
|
||||
Exportando referencias cruzadas para Tabella delle variabili standard...
|
||||
Procesando tabla de variables: Timers_Counters...
|
||||
Exportando referencias cruzadas para Timers_Counters...
|
||||
Procesando tabla de variables: Inputs...
|
||||
Exportando referencias cruzadas para Inputs...
|
||||
Procesando tabla de variables: Outputs...
|
||||
Exportando referencias cruzadas para Outputs...
|
||||
Procesando tabla de variables: Tabella delle variabili_1...
|
||||
Exportando referencias cruzadas para Tabella delle variabili_1...
|
||||
Procesando tabla de variables: Tabella delle variabili_2...
|
||||
Exportando referencias cruzadas para Tabella delle variabili_2...
|
||||
Procesando tabla de variables: OutputsFesto...
|
||||
Exportando referencias cruzadas para OutputsFesto...
|
||||
Procesando tabla de variables: InputsMaster...
|
||||
Exportando referencias cruzadas para InputsMaster...
|
||||
Procesando tabla de variables: OutputsMaster...
|
||||
Exportando referencias cruzadas para OutputsMaster...
|
||||
Resumen de exportación de referencias cruzadas de tablas: Exportados=10, Omitidos/Errores=0
|
||||
|
||||
[PLC: PLC] Exportando referencias cruzadas de tipos de datos PLC (UDTs)...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\PlcDataTypes_CR
|
||||
Se encontraron 24 UDTs.
|
||||
Procesando UDT: AnalogInstrument...
|
||||
Exportando referencias cruzadas para AnalogInstrument...
|
||||
Procesando UDT: CIP_Link_Type...
|
||||
Exportando referencias cruzadas para CIP_Link_Type...
|
||||
Procesando UDT: CIP_Simple_Type...
|
||||
Exportando referencias cruzadas para CIP_Simple_Type...
|
||||
Procesando UDT: CIP_Step_Type...
|
||||
Exportando referencias cruzadas para CIP_Step_Type...
|
||||
Procesando UDT: CIP_WaitEvent_Type...
|
||||
Exportando referencias cruzadas para CIP_WaitEvent_Type...
|
||||
Procesando UDT: Device...
|
||||
Exportando referencias cruzadas para Device...
|
||||
Procesando UDT: DigitalInstrument...
|
||||
Exportando referencias cruzadas para DigitalInstrument...
|
||||
Procesando UDT: FunctionButton...
|
||||
Exportando referencias cruzadas para FunctionButton...
|
||||
Procesando UDT: PID...
|
||||
Exportando referencias cruzadas para PID...
|
||||
Procesando UDT: QCO Phase...
|
||||
Exportando referencias cruzadas para QCO Phase...
|
||||
Procesando UDT: QCO Spare...
|
||||
Exportando referencias cruzadas para QCO Spare...
|
||||
Procesando UDT: QCO Timer...
|
||||
Exportando referencias cruzadas para QCO Timer...
|
||||
Procesando UDT: QCO Timer_Array_1...
|
||||
Exportando referencias cruzadas para QCO Timer_Array_1...
|
||||
Procesando UDT: Recipe_Prod...
|
||||
Exportando referencias cruzadas para Recipe_Prod...
|
||||
Procesando UDT: ReportCIPSimpleData...
|
||||
Exportando referencias cruzadas para ReportCIPSimpleData...
|
||||
Procesando UDT: TADDR_PAR...
|
||||
Exportando referencias cruzadas para TADDR_PAR...
|
||||
Procesando UDT: TCON_PAR...
|
||||
Exportando referencias cruzadas para TCON_PAR...
|
||||
Procesando UDT: TCON_PAR_LF...
|
||||
Exportando referencias cruzadas para TCON_PAR_LF...
|
||||
Procesando UDT: Tipo di dati utente_1...
|
||||
Exportando referencias cruzadas para Tipo di dati utente_1...
|
||||
Procesando UDT: Tipo di dati utente_2...
|
||||
Exportando referencias cruzadas para Tipo di dati utente_2...
|
||||
Procesando UDT: ASLeds...
|
||||
Exportando referencias cruzadas para ASLeds...
|
||||
Procesando UDT: IFLeds...
|
||||
Exportando referencias cruzadas para IFLeds...
|
||||
Procesando UDT: SV_FB_State...
|
||||
Exportando referencias cruzadas para SV_FB_State...
|
||||
Procesando UDT: SV_State...
|
||||
Exportando referencias cruzadas para SV_State...
|
||||
Resumen de exportación de referencias cruzadas de UDTs: Exportados=24, Omitidos/Errores=0
|
||||
An error occurred while opening the project
|
||||
|
||||
[PLC: PLC] Intentando exportar referencias cruzadas de bloques de sistema...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\SystemBlocks_CR
|
||||
Se encontraron 9 bloques de sistema.
|
||||
Procesando bloque de sistema: T_301...
|
||||
Exportando referencias cruzadas para T_301...
|
||||
Procesando bloque de sistema: IEC_Timer_0_DB_9...
|
||||
Exportando referencias cruzadas para IEC_Timer_0_DB_9...
|
||||
Procesando bloque de sistema: T_302...
|
||||
Exportando referencias cruzadas para T_302...
|
||||
Procesando bloque de sistema: GET_Reciver...
|
||||
Exportando referencias cruzadas para GET_Reciver...
|
||||
Procesando bloque de sistema: PUT_Send_Filler...
|
||||
Exportando referencias cruzadas para PUT_Send_Filler...
|
||||
Procesando bloque de sistema: LED...
|
||||
Exportando referencias cruzadas para LED...
|
||||
Procesando bloque de sistema: SCALE...
|
||||
Exportando referencias cruzadas para SCALE...
|
||||
Procesando bloque de sistema: CONT_C...
|
||||
Exportando referencias cruzadas para CONT_C...
|
||||
Procesando bloque de sistema: DeviceStates...
|
||||
Exportando referencias cruzadas para DeviceStates...
|
||||
Resumen de exportación de referencias cruzadas de bloques de sistema: Exportados=9, Omitidos/Errores=0
|
||||
|
||||
[PLC: PLC] Intentando exportar referencias cruzadas de unidades de software...
|
||||
Destino: C:\Trabajo\SIDEL\13 - E5.007560 - Modifica O&U - SAE235\Reporte\ExportTia\PLC\SoftwareUnits_CR
|
||||
Se encontraron 0 unidades de software.
|
||||
Resumen de exportación de referencias cruzadas de unidades de software: Exportados=0, Omitidos/Errores=0
|
||||
|
||||
--- Finalizado el procesamiento del PLC: PLC ---
|
||||
|
||||
Proceso de exportación de referencias cruzadas completado.
|
||||
|
||||
Cerrando TIA Portal...
|
||||
2025-06-19 16:44:12,492 [1] INFO Siemens.TiaPortal.OpennessApi18.Implementations.Portal ClosePortal - Close TIA Portal
|
||||
TIA Portal cerrado.
|
||||
The project/library D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19 cannot be accessed. It has already been opened by user Miguel on computer CSANUC. Note: If the application was not correctly closed, the open projects and libraries can only be opened again after a 2 minute delay.
|
||||
|
||||
Script finalizado.
|
||||
|
||||
--- ERRORES (STDERR) ---
|
||||
2025-06-19 16:41:11,087 [1] ERROR Siemens.TiaPortal.OpennessApi18.Implementations.ProgramBlock ExportCrossReferences -
|
||||
Siemens.TiaPortal.OpennessContracts.OpennessAccessException: Unexpected exception - no exception message available.
|
||||
Traceback (most recent call last):
|
||||
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 175, in export_plc_cross_references
|
||||
block.export_cross_references(
|
||||
ValueError: OpennessAccessException: Unexpected exception - no exception message available.
|
||||
Traceback (most recent call last):
|
||||
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 175, in export_plc_cross_references
|
||||
block.export_cross_references(
|
||||
ValueError: OpennessAccessException: Unexpected exception - no exception message available.
|
||||
2025-06-19 19:05:53,136 [1] ERROR Siemens.TiaPortal.OpennessApi19.Implementations.Portal OpenProject -
|
||||
Siemens.TiaPortal.OpennessContracts.OpennessAccessException: Error when calling method 'OpenWithUpgrade' of type 'Siemens.Engineering.ProjectComposition'.
|
||||
|
||||
During handling of the above exception, another exception occurred:
|
||||
Unable to open the project under path 'D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19'.
|
||||
|
||||
An error occurred while opening the project
|
||||
The project/library D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19 cannot be accessed. It has already been opened by user Miguel on computer CSANUC. Note: If the application was not correctly closed, the open projects and libraries can only be opened again after a 2 minute delay.
|
||||
Traceback (most recent call last):
|
||||
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 196, in export_plc_cross_references
|
||||
raise PortalDisposedException(block_ex, failed_block=block_name)
|
||||
PortalDisposedException: OpennessAccessException: Unexpected exception - no exception message available.
|
||||
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 455, in <module>
|
||||
portal_instance, project_object = open_portal_and_project(tia_version, project_file)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\Proyectos\Scripts\ParamManagerScripts\backend\script_groups\ObtainIOFromProjectTia\x4.py", line 413, in open_portal_and_project
|
||||
project_obj = portal.open_project(project_file_path=str(project_file_path))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
ValueError: OpennessAccessException: Error when calling method 'OpenWithUpgrade' of type 'Siemens.Engineering.ProjectComposition'.
|
||||
|
||||
|
||||
|
||||
Unable to open the project under path 'D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19'.
|
||||
|
||||
|
||||
|
||||
An error occurred while opening the project
|
||||
|
||||
The project/library D:\Trabajo\VM\44 - 98050 - Fiera\InLavoro\PLC\98050_PLC_11\98050_PLC_11.ap19 cannot be accessed. It has already been opened by user Miguel on computer CSANUC. Note: If the application was not correctly closed, the open projects and libraries can only be opened again after a 2 minute delay.
|
||||
|
||||
--- FIN DEL LOG ---
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
},
|
||||
"level2": {},
|
||||
"level3": {},
|
||||
"working_directory": "C:\\Trabajo\\SIDEL\\13 - E5.007560 - Modifica O&U - SAE235\\Reporte\\ExportTia"
|
||||
"working_directory": "D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source"
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
{
|
||||
"path": "C:\\Trabajo\\SIDEL\\13 - E5.007560 - Modifica O&U - SAE235\\Reporte\\ExportTia",
|
||||
"path": "D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source",
|
||||
"history": [
|
||||
"D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source",
|
||||
"D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia",
|
||||
"C:\\Trabajo\\SIDEL\\13 - E5.007560 - Modifica O&U - SAE235\\Reporte\\ExportTia",
|
||||
"D:\\Trabajo\\VM\\22 - 93841 - Sidel - Tilting\\Reporte\\TiaExports",
|
||||
"D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source",
|
||||
"C:\\Trabajo\\SIDEL\\09 - SAE452 - Diet as Regular - San Giovanni in Bosco\\Reporte\\SourceDoc\\SourcdSD",
|
||||
"C:\\Trabajo\\SIDEL\\09 - SAE452 - Diet as Regular - San Giovanni in Bosco\\Reporte\\SourceDoc\\SourceXML"
|
||||
]
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Agregar el directorio padre al path
|
||||
sys.path.append('.')
|
||||
|
||||
# Importar el convertidor
|
||||
from x1_lad_converter import SimpleLadConverter
|
||||
|
||||
def test_arraytoreal():
|
||||
"""Probar específicamente ARRAYTOREAL.EXP para verificar preservación de indentación"""
|
||||
print("=== TEST: ARRAYTOREAL.EXP - Preservación de indentación ST ===")
|
||||
print("-" * 60)
|
||||
|
||||
# Buscar el archivo
|
||||
possible_paths = [
|
||||
"ExportTwinCat/ARRAYTOREAL.EXP",
|
||||
"../ExportTwinCat/ARRAYTOREAL.EXP",
|
||||
"../../ExportTwinCat/ARRAYTOREAL.EXP",
|
||||
"C:/Trabajo/SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Reporte/ExportTwinCat/ARRAYTOREAL.EXP"
|
||||
]
|
||||
|
||||
test_file = None
|
||||
for path in possible_paths:
|
||||
if os.path.exists(path):
|
||||
test_file = path
|
||||
break
|
||||
|
||||
if test_file is None:
|
||||
print(f"❌ Error: No se encontró ARRAYTOREAL.EXP")
|
||||
return
|
||||
|
||||
print(f"✓ Archivo encontrado: {test_file}")
|
||||
print("-" * 60)
|
||||
|
||||
# Leer archivo original para mostrar indentación
|
||||
print("📄 CÓDIGO ORIGINAL:")
|
||||
with open(test_file, 'r', encoding='utf-8', errors='ignore') as f:
|
||||
original_lines = f.readlines()
|
||||
|
||||
# Mostrar solo las líneas de código ST (después de (* @END_DECLARATION := '0' *))
|
||||
st_start = False
|
||||
for i, line in enumerate(original_lines):
|
||||
if "@END_DECLARATION" in line:
|
||||
st_start = True
|
||||
continue
|
||||
if st_start and line.strip() and not line.strip().startswith("END_FUNCTION"):
|
||||
print(f" {i+1:2d}: '{line.rstrip()}'")
|
||||
|
||||
print("-" * 60)
|
||||
|
||||
# Crear convertidor
|
||||
converter = SimpleLadConverter()
|
||||
|
||||
# Parsear archivo
|
||||
print("🔍 PARSEANDO ARCHIVO...")
|
||||
converter.parse_file(test_file)
|
||||
|
||||
print(f"\n📊 INFORMACIÓN DETECTADA:")
|
||||
print(f" ✓ Tipo: {getattr(converter, 'program_type', 'PROGRAM')}")
|
||||
print(f" ✓ Nombre: {converter.program_name}")
|
||||
print(f" ✓ Path: {converter.program_path}")
|
||||
print(f" ✓ Variables: {list(converter.var_sections.keys())}")
|
||||
print(f" ✓ Código ST: {'Sí' if converter.st_main_code else 'No'}")
|
||||
|
||||
if converter.st_main_code:
|
||||
print(f"\n📝 CÓDIGO ST EXTRAÍDO ({len(converter.st_main_code)} caracteres):")
|
||||
for i, line in enumerate(converter.st_main_code.split('\n')[:10], 1):
|
||||
print(f" {i:2d}: '{line}'")
|
||||
|
||||
# Generar código SCL
|
||||
print(f"\n📝 GENERANDO CÓDIGO SCL...")
|
||||
scl_code = converter.convert_to_structured()
|
||||
|
||||
# Guardar archivo de prueba
|
||||
output_file = "test_arraytoreal_indent.scl"
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
f.write(scl_code)
|
||||
|
||||
print(f" ✓ Guardado en: {output_file}")
|
||||
|
||||
# Mostrar código SCL generado
|
||||
print(f"\n📄 CÓDIGO SCL GENERADO:")
|
||||
lines = scl_code.split('\n')
|
||||
|
||||
# Encontrar línea donde empieza el código ST
|
||||
st_start_line = -1
|
||||
for i, line in enumerate(lines):
|
||||
if "Código ST original" in line:
|
||||
st_start_line = i
|
||||
break
|
||||
|
||||
if st_start_line > -1:
|
||||
# Mostrar desde el código ST hasta el final de la función
|
||||
for i in range(st_start_line, min(st_start_line + 20, len(lines))):
|
||||
if i < len(lines):
|
||||
line = lines[i]
|
||||
if line.strip() and ("END_FUNCTION" in line or "END_PROGRAM" in line):
|
||||
print(f" {i+1:2d}: {line}")
|
||||
break
|
||||
print(f" {i+1:2d}: {line}")
|
||||
|
||||
# Verificar preservación de indentación
|
||||
print(f"\n🔍 VERIFICANDO PRESERVACIÓN DE INDENTACIÓN:")
|
||||
|
||||
if converter.st_main_code:
|
||||
original_lines = converter.st_main_code.split('\n')
|
||||
scl_lines = scl_code.split('\n')
|
||||
|
||||
# Encontrar líneas con indentación en el original
|
||||
original_indented = []
|
||||
for line in original_lines:
|
||||
if line.startswith('\t') or line.startswith(' '):
|
||||
original_indented.append(line)
|
||||
|
||||
# Verificar que se preserven en el SCL
|
||||
if original_indented:
|
||||
print(f" 📋 Líneas con indentación original: {len(original_indented)}")
|
||||
print(f" Ejemplo: '{original_indented[0]}'" if original_indented else "")
|
||||
|
||||
# Verificar si aparecen en el SCL preservadas
|
||||
preserved_count = 0
|
||||
for orig_line in original_indented:
|
||||
for scl_line in scl_lines:
|
||||
if orig_line.strip() in scl_line and orig_line.startswith(('\t', ' ')):
|
||||
preserved_count += 1
|
||||
break
|
||||
|
||||
print(f" ✅ Indentación preservada: {preserved_count}/{len(original_indented)} líneas")
|
||||
else:
|
||||
print(f" ℹ No se encontraron líneas con indentación específica")
|
||||
else:
|
||||
print(f" ⚠ No hay código ST para verificar")
|
||||
|
||||
return scl_code
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_arraytoreal()
|
|
@ -0,0 +1,37 @@
|
|||
(* Código SCL generado desde LAD TwinCAT *)
|
||||
(* Convertidor mejorado con SymPy - Estructura DNF preferida *)
|
||||
(* Path original: \/Functions_Collection *)
|
||||
|
||||
FUNCTION ArrayToReal : REAL
|
||||
VAR_INPUT
|
||||
mIn_Value : POINTER TO BYTE;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
i : INT;
|
||||
p : UDINT;
|
||||
p1 : UDINT;
|
||||
mPoint : POINTER TO BYTE;
|
||||
mPoint1 : POINTER TO BYTE;
|
||||
mTemp : REAL;
|
||||
END_VAR
|
||||
|
||||
|
||||
(* === CÓDIGO PRINCIPAL === *)
|
||||
|
||||
(* Código ST original *)
|
||||
(* @END_DECLARATION := '0' *)
|
||||
mPoint := ADR(mTemp);
|
||||
FOR i := 3 TO 0 BY -1
|
||||
DO
|
||||
p1 := mIn_Value;
|
||||
mPoint1 := p1 + i;
|
||||
mPoint^ := mPoint1^;
|
||||
p := mPoint ;
|
||||
p := p + 1 ;
|
||||
mPoint := p ;
|
||||
END_FOR
|
||||
ArrayToReal := mTemp;
|
||||
|
||||
END_FUNCTION
|
||||
END_FUNCTION
|
|
@ -46,40 +46,53 @@ class SimpleLadConverter:
|
|||
|
||||
# Nuevas propiedades para estructura SCL completa
|
||||
self.program_name = ""
|
||||
self.program_type = "PROGRAM" # PROGRAM, FUNCTION, FUNCTION_BLOCK, TYPE, VAR_GLOBAL_LIST
|
||||
self.program_path = ""
|
||||
self.var_sections = {} # VAR, VAR_INPUT, VAR_OUTPUT, etc.
|
||||
self.actions = {} # Diccionario de ACTIONs
|
||||
self.st_main_code = None # Código ST del programa principal
|
||||
self.type_content = None # Contenido completo de TYPE
|
||||
|
||||
def parse_file(self, file_path):
|
||||
"""Parse el archivo LAD completo incluyendo variables y ACTIONs"""
|
||||
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
|
||||
content = f.read()
|
||||
|
||||
# Guardar contenido original para extraer información adicional
|
||||
self._original_content = content
|
||||
|
||||
# Extraer información del header
|
||||
self._parse_header_info(content)
|
||||
|
||||
# Extraer declaraciones de variables
|
||||
self._parse_variable_declarations(content)
|
||||
|
||||
# Encontrar sección LAD
|
||||
lad_start = content.find('_LD_BODY')
|
||||
if lad_start != -1:
|
||||
# Extraer contenido LAD hasta ACTION o END_PROGRAM
|
||||
action_start = content.find('\nACTION', lad_start)
|
||||
end_program = content.find('\nEND_PROGRAM', lad_start)
|
||||
|
||||
lad_end = action_start if action_start != -1 else end_program
|
||||
if lad_end == -1:
|
||||
lad_end = len(content)
|
||||
|
||||
lad_content = content[lad_start:lad_end]
|
||||
lines = lad_content.split('\n')
|
||||
self._parse_networks(lines)
|
||||
# Verificar si es un TYPE (solo datos) o VAR_GLOBAL_LIST
|
||||
if hasattr(self, 'program_type') and self.program_type == 'TYPE':
|
||||
print("Archivo TYPE detectado - Extrayendo declaraciones")
|
||||
self._extract_type_content(content)
|
||||
elif hasattr(self, 'program_type') and self.program_type == 'VAR_GLOBAL_LIST':
|
||||
print("Archivo de variables globales detectado - Extrayendo todas las secciones")
|
||||
self._extract_global_variables(content)
|
||||
else:
|
||||
print("No se encontró _LD_BODY - Asumiendo código ST")
|
||||
# Extraer código ST del programa principal
|
||||
self._extract_st_code(content)
|
||||
# Encontrar sección LAD
|
||||
lad_start = content.find('_LD_BODY')
|
||||
if lad_start != -1:
|
||||
# Extraer contenido LAD hasta ACTION o END_PROGRAM
|
||||
action_start = content.find('\nACTION', lad_start)
|
||||
end_program = content.find('\nEND_PROGRAM', lad_start)
|
||||
|
||||
lad_end = action_start if action_start != -1 else end_program
|
||||
if lad_end == -1:
|
||||
lad_end = len(content)
|
||||
|
||||
lad_content = content[lad_start:lad_end]
|
||||
lines = lad_content.split('\n')
|
||||
self._parse_networks(lines)
|
||||
else:
|
||||
print("No se encontró _LD_BODY - Asumiendo código ST")
|
||||
# Extraer código ST del programa principal
|
||||
self._extract_st_code(content)
|
||||
|
||||
# Extraer ACTIONs
|
||||
self._parse_actions(content)
|
||||
|
@ -91,10 +104,18 @@ class SimpleLadConverter:
|
|||
if path_match:
|
||||
self.program_path = path_match.group(1)
|
||||
|
||||
# Buscar nombre del programa/function_block
|
||||
program_match = re.search(r'(PROGRAM|FUNCTION_BLOCK)\s+(\w+)', content)
|
||||
if program_match:
|
||||
self.program_name = program_match.group(2)
|
||||
# Verificar si es un archivo de variables globales
|
||||
global_var_match = re.search(r'\(\*\s*@GLOBAL_VARIABLE_LIST\s*:=\s*(\w+)\s*\*\)', content)
|
||||
if global_var_match:
|
||||
self.program_type = "VAR_GLOBAL_LIST"
|
||||
self.program_name = global_var_match.group(1)
|
||||
print(f"Archivo de variables globales detectado: {self.program_name}")
|
||||
else:
|
||||
# Buscar nombre del programa/function_block/function/type
|
||||
program_match = re.search(r'(PROGRAM|FUNCTION_BLOCK|FUNCTION|TYPE)\s+(\w+)', content)
|
||||
if program_match:
|
||||
self.program_type = program_match.group(1)
|
||||
self.program_name = program_match.group(2)
|
||||
|
||||
print(f"Programa encontrado: {self.program_name}")
|
||||
if self.program_path:
|
||||
|
@ -562,9 +583,26 @@ class SimpleLadConverter:
|
|||
output.append(f"(* Path original: {self.program_path} *)")
|
||||
output.append("")
|
||||
|
||||
# Declaración del programa
|
||||
# Verificar si es un TYPE o VAR_GLOBAL_LIST - manejarlos diferente
|
||||
program_type = self.program_type if hasattr(self, 'program_type') else "PROGRAM"
|
||||
if program_type == "TYPE":
|
||||
return self._convert_type_to_scl(output)
|
||||
elif program_type == "VAR_GLOBAL_LIST":
|
||||
return self._convert_global_vars_to_scl(output)
|
||||
|
||||
# Declaración del programa/función
|
||||
program_name = self.program_name if self.program_name else "ConvertedProgram"
|
||||
output.append(f"PROGRAM {program_name}")
|
||||
|
||||
# Para FUNCTIONs, necesitamos detectar el tipo de retorno
|
||||
if program_type == "FUNCTION":
|
||||
# Buscar tipo de retorno en el código original (ej: FUNCTION ArrayToReal : REAL)
|
||||
return_type = self._extract_function_return_type()
|
||||
if return_type:
|
||||
output.append(f"FUNCTION {program_name} : {return_type}")
|
||||
else:
|
||||
output.append(f"FUNCTION {program_name} : BOOL") # Tipo por defecto
|
||||
else:
|
||||
output.append(f"{program_type} {program_name}")
|
||||
|
||||
# Declaraciones de variables
|
||||
self._add_variable_sections(output)
|
||||
|
@ -601,7 +639,7 @@ class SimpleLadConverter:
|
|||
if network['id'] in self.sympy_expressions:
|
||||
sympy_expr = self.sympy_expressions[network['id']]
|
||||
condition_str = self._format_dnf_for_lad(sympy_expr)
|
||||
output.append(f" // Optimizada con SymPy DNF")
|
||||
# output.append(f" // Optimizada con SymPy DNF")
|
||||
else:
|
||||
# Fallback al método original
|
||||
condition_str = self._convert_logic_to_string(network['logic'])
|
||||
|
@ -624,11 +662,12 @@ class SimpleLadConverter:
|
|||
output.append("")
|
||||
|
||||
elif self.st_main_code:
|
||||
# Hay código ST - copiarlo directamente
|
||||
# Hay código ST - copiarlo directamente preservando indentación
|
||||
output.append(" (* Código ST original *)")
|
||||
for line in self.st_main_code.split('\n'):
|
||||
if line.strip():
|
||||
output.append(f" {line.strip()}")
|
||||
# Preservar indentación original pero agregar indentación base SCL
|
||||
output.append(f" {line}")
|
||||
else:
|
||||
output.append("")
|
||||
|
||||
|
@ -637,12 +676,13 @@ class SimpleLadConverter:
|
|||
output.append(" (* Sin código principal detectado *)")
|
||||
output.append("")
|
||||
|
||||
# Fin del programa principal
|
||||
output.append("END_PROGRAM")
|
||||
|
||||
# Agregar ACTIONs como subfunciones
|
||||
self._add_actions_as_procedures(output, program_name)
|
||||
|
||||
# Fin del programa principal
|
||||
program_type = self.program_type if hasattr(self, 'program_type') else "PROGRAM"
|
||||
output.append(f"END_{program_type}")
|
||||
|
||||
return '\n'.join(output)
|
||||
|
||||
def _add_variable_sections(self, output):
|
||||
|
@ -701,11 +741,12 @@ class SimpleLadConverter:
|
|||
output.append("")
|
||||
|
||||
elif isinstance(action_data, dict) and action_data['type'] == 'ST':
|
||||
# ACTION con código ST - copiar directamente
|
||||
# ACTION con código ST - copiar directamente preservando indentación
|
||||
output.append(" (* Código ST original *)")
|
||||
for line in action_data['code'].split('\n'):
|
||||
if line.strip():
|
||||
output.append(f" {line.strip()}")
|
||||
# Preservar indentación original pero agregar indentación base SCL
|
||||
output.append(f" {line}")
|
||||
else:
|
||||
output.append("")
|
||||
|
||||
|
@ -714,7 +755,8 @@ class SimpleLadConverter:
|
|||
output.append(" (* Código original - modo compatibilidad *)")
|
||||
for line in str(action_data).split('\n'):
|
||||
if line.strip():
|
||||
output.append(f" {line.strip()}")
|
||||
# Preservar indentación original pero agregar indentación base SCL
|
||||
output.append(f" {line}")
|
||||
else:
|
||||
output.append("")
|
||||
|
||||
|
@ -1229,11 +1271,134 @@ class SimpleLadConverter:
|
|||
print(f"Código ST principal extraído: {len(st_code)} caracteres")
|
||||
else:
|
||||
self.st_main_code = None
|
||||
|
||||
def _extract_function_return_type(self):
|
||||
"""Extraer el tipo de retorno de una FUNCTION desde el header"""
|
||||
if not hasattr(self, '_original_content'):
|
||||
return None
|
||||
|
||||
# Buscar patrón FUNCTION nombre : TIPO
|
||||
match = re.search(r'FUNCTION\s+\w+\s*:\s*(\w+)', self._original_content)
|
||||
if match:
|
||||
return match.group(1)
|
||||
return None
|
||||
|
||||
def _extract_type_content(self, content):
|
||||
"""Extraer el contenido completo de un TYPE"""
|
||||
# Buscar desde TYPE hasta END_TYPE
|
||||
type_start = content.find('TYPE')
|
||||
if type_start == -1:
|
||||
return
|
||||
|
||||
# Buscar END_TYPE
|
||||
type_end = content.find('END_TYPE', type_start)
|
||||
if type_end == -1:
|
||||
type_end = len(content)
|
||||
else:
|
||||
type_end += len('END_TYPE')
|
||||
|
||||
# Extraer contenido del TYPE
|
||||
type_content = content[type_start:type_end].strip()
|
||||
|
||||
if type_content:
|
||||
self.type_content = type_content
|
||||
print(f"Contenido TYPE extraído: {len(type_content)} caracteres")
|
||||
else:
|
||||
self.type_content = None
|
||||
|
||||
def _convert_type_to_scl(self, output):
|
||||
"""Convertir TYPE a SCL - simplemente copiar el contenido original"""
|
||||
if self.type_content:
|
||||
# Copiar directamente el contenido del TYPE preservando formato
|
||||
for line in self.type_content.split('\n'):
|
||||
if line.strip():
|
||||
output.append(line)
|
||||
else:
|
||||
output.append("")
|
||||
else:
|
||||
# Si no hay contenido TYPE, generar estructura básica
|
||||
program_name = self.program_name if self.program_name else "UnknownType"
|
||||
output.append(f"TYPE {program_name}:")
|
||||
output.append("STRUCT")
|
||||
output.append(" (* Contenido TYPE no detectado *)")
|
||||
output.append(" Dummy : INT;")
|
||||
output.append("END_STRUCT")
|
||||
output.append("END_TYPE")
|
||||
|
||||
return '\n'.join(output)
|
||||
|
||||
def _extract_global_variables(self, content):
|
||||
"""Extraer todas las secciones de variables globales"""
|
||||
# Buscar todas las secciones VAR_GLOBAL
|
||||
var_global_patterns = [
|
||||
(r'VAR_GLOBAL\s+PERSISTENT(.*?)END_VAR', 'VAR_GLOBAL PERSISTENT'),
|
||||
(r'VAR_GLOBAL((?:(?!PERSISTENT)(?!END_VAR).)*?)END_VAR', 'VAR_GLOBAL'),
|
||||
]
|
||||
|
||||
for pattern, var_type in var_global_patterns:
|
||||
matches = re.findall(pattern, content, re.DOTALL | re.IGNORECASE)
|
||||
if matches:
|
||||
variables = []
|
||||
for match in matches:
|
||||
# Parsear cada línea de variable
|
||||
for line in match.split('\n'):
|
||||
line = line.strip()
|
||||
if (line and not line.startswith('(*') and
|
||||
not line.startswith('(************') and
|
||||
':' in line and not line.startswith('*')):
|
||||
# Limpiar comentarios inline
|
||||
if '(*' in line:
|
||||
# Mantener el comentario inline
|
||||
pass # No limpiar comentarios para preservar información
|
||||
variables.append(line.strip())
|
||||
|
||||
if variables:
|
||||
if var_type not in self.var_sections:
|
||||
self.var_sections[var_type] = []
|
||||
self.var_sections[var_type].extend(variables)
|
||||
|
||||
# Mostrar resumen
|
||||
for var_type, variables in self.var_sections.items():
|
||||
print(f"Variables {var_type}: {len(variables)} encontradas")
|
||||
|
||||
def _convert_global_vars_to_scl(self, output):
|
||||
"""Convertir archivo de variables globales a SCL"""
|
||||
# Para archivos de variables globales, simplemente copiar las declaraciones
|
||||
|
||||
# Agregar secciones de variables encontradas
|
||||
section_order = ['VAR_GLOBAL', 'VAR_GLOBAL PERSISTENT']
|
||||
|
||||
for section_type in section_order:
|
||||
if section_type in self.var_sections:
|
||||
output.append(f"{section_type}")
|
||||
for var_line in self.var_sections[section_type]:
|
||||
# Asegurar que termine con punto y coma
|
||||
if not var_line.endswith(';'):
|
||||
var_line += ' ;'
|
||||
output.append(f" {var_line}")
|
||||
output.append("END_VAR")
|
||||
output.append("")
|
||||
|
||||
# Si no se encontraron variables, agregar estructura básica
|
||||
if not self.var_sections:
|
||||
output.append("VAR_GLOBAL")
|
||||
output.append(" (* No se detectaron variables globales *)")
|
||||
output.append(" Dummy : INT ;")
|
||||
output.append("END_VAR")
|
||||
|
||||
return '\n'.join(output)
|
||||
|
||||
def main():
|
||||
"""Función principal - Convierte todos los archivos .EXP a .SCL"""
|
||||
try:
|
||||
print("=== Convertidor Masivo LAD a SCL con SymPy ===")
|
||||
# Verificar si se pasó un archivo específico como parámetro para debug
|
||||
debug_file = None
|
||||
if len(sys.argv) > 1:
|
||||
debug_file = sys.argv[1]
|
||||
print(f"=== MODO DEBUG: Procesando archivo específico ===")
|
||||
print(f"Archivo: {debug_file}")
|
||||
else:
|
||||
print("=== Convertidor Masivo LAD a SCL con SymPy ===")
|
||||
|
||||
# Cargar configuración
|
||||
configs = load_configuration()
|
||||
|
@ -1277,16 +1442,38 @@ def main():
|
|||
os.makedirs(full_scl_path)
|
||||
print(f"Directorio creado: {full_scl_path}")
|
||||
|
||||
# Buscar todos los archivos .EXP
|
||||
exp_pattern = os.path.join(working_directory, "*.EXP")
|
||||
exp_files = glob.glob(exp_pattern)
|
||||
# Determinar archivos a procesar
|
||||
if debug_file:
|
||||
# Modo debug - archivo específico
|
||||
if not debug_file.endswith('.EXP'):
|
||||
debug_file += '.EXP'
|
||||
|
||||
debug_file_path = os.path.join(working_directory, debug_file)
|
||||
if not os.path.exists(debug_file_path):
|
||||
print(f"Error: No se encontró el archivo {debug_file_path}")
|
||||
return
|
||||
|
||||
exp_files = [debug_file_path]
|
||||
print(f"Procesando archivo específico: {debug_file}")
|
||||
print(f"Directorio de salida SCL: {full_scl_path}")
|
||||
|
||||
# En modo debug, forzar regeneración y mostrar más información
|
||||
force_regenerate = True
|
||||
debug_mode = True
|
||||
show_generated_code = True
|
||||
max_display_lines = 100
|
||||
else:
|
||||
# Modo normal - todos los archivos
|
||||
exp_pattern = os.path.join(working_directory, "*.EXP")
|
||||
exp_files = glob.glob(exp_pattern)
|
||||
|
||||
if not exp_files:
|
||||
print(f"No se encontraron archivos .EXP en: {working_directory}")
|
||||
return
|
||||
|
||||
print(f"Encontrados {len(exp_files)} archivos .EXP en: {working_directory}")
|
||||
print(f"Directorio de salida SCL: {full_scl_path}")
|
||||
|
||||
if not exp_files:
|
||||
print(f"No se encontraron archivos .EXP en: {working_directory}")
|
||||
return
|
||||
|
||||
print(f"Encontrados {len(exp_files)} archivos .EXP en: {working_directory}")
|
||||
print(f"Directorio de salida SCL: {full_scl_path}")
|
||||
print()
|
||||
|
||||
# Procesar cada archivo
|
||||
|
|
18031
data/log.txt
18031
data/log.txt
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue