Actualización de directorios de trabajo y mejora en la gestión de logs
- Se modificaron los directorios de trabajo en `script_config.json` y `work_dir.json` para apuntar a la nueva ubicación de los archivos relacionados con el proyecto SIDEL. - 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 implementó una nueva función de limpieza en `x0_main.py` para eliminar artefactos generados durante la ejecución de los scripts, mejorando la gestión de archivos temporales. - Se realizaron ajustes en la interfaz de usuario para mejorar la experiencia al seleccionar y confirmar directorios de trabajo.
This commit is contained in:
parent
0488624d64
commit
6150c719ca
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -5,5 +5,5 @@
|
|||
},
|
||||
"level2": {},
|
||||
"level3": {},
|
||||
"working_directory": "D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source"
|
||||
"working_directory": "D:\\Trabajo\\VM\\22 - 93841 - Sidel - Tilting\\Reporte\\TiaExports"
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"path": "D:\\Trabajo\\VM\\44 - 98050 - Fiera\\Reporte\\ExportsTia\\Source",
|
||||
"path": "D:\\Trabajo\\VM\\22 - 93841 - Sidel - Tilting\\Reporte\\TiaExports",
|
||||
"history": [
|
||||
"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"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,455 @@
|
|||
// Block Type: FC
|
||||
// Block Name (Original): FC Ttop Motor M31010
|
||||
// Block Number: 327
|
||||
// Original Network Languages: LAD, SCL
|
||||
|
||||
FUNCTION "FC_Ttop_Motor_M31010" : Void
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
VAR_INOUT
|
||||
Motor : STRUCT
|
||||
RCP_Speed_Fix_01 : Int;
|
||||
RCP_Speed_Fix_02 : Int;
|
||||
RCP_Speed_Fix_03 : Int;
|
||||
RCP_Speed_Fix_04 : Int;
|
||||
RCP_Speed_Fix_05 : Int;
|
||||
RCP_Speed_Sync_01 : Int;
|
||||
RCP_Speed_Sync_02 : Int;
|
||||
RCP_Speed_Sync_03 : Int;
|
||||
RCP_Speed_Sync_04 : Int;
|
||||
RCP_Speed_Sync_05 : Int;
|
||||
RCP_Timer_01 : Int;
|
||||
RCP_Timer_02 : Int;
|
||||
RCP_Timer_03 : Int;
|
||||
RCP_Timer_04 : Int;
|
||||
RCP_Timer_05 : Int;
|
||||
RCP_Speed_Fix_01_mBar : Int;
|
||||
RCP_Speed_Fix_02_mBar : Int;
|
||||
RCP_Speed_Fix_03_mBar : Int;
|
||||
RCP_Speed_Fix_04_mBar : Int;
|
||||
RCP_Speed_Fix_05_mBar : Int;
|
||||
RCP_ACC_Ramp : Int;
|
||||
RCP_DEC_Ramp : Int;
|
||||
RCP_W044 : Int;
|
||||
RCP_W046 : Int;
|
||||
RCP_W048 : Int;
|
||||
CFG_VFD : Bool;
|
||||
CFG_DP : Bool;
|
||||
CFG_Analog_Speed : Bool;
|
||||
CFG_EN_BWD : Bool;
|
||||
CFG_Reverse : Bool;
|
||||
CFG_Motor_N_Sel : Bool;
|
||||
CFG_PN : Bool;
|
||||
CFG_X050_7 : Bool;
|
||||
CFG_TH_CTR_Single : Bool;
|
||||
CFG_SW_CTR_Single : Bool;
|
||||
CFG_TRIP_CTR_Single : Bool;
|
||||
CFG_Speed_User : Bool;
|
||||
CFG_mBar : Bool;
|
||||
CFG_SW_CTR_OnOff : Bool;
|
||||
CFG_Plug_CTR_Single : Bool;
|
||||
CFG_X051_7 : Bool;
|
||||
CFG_Min_Speed_Hz : Int;
|
||||
CFG_Max_Speed_Hz : Int;
|
||||
CFG_mBar_Type : Byte;
|
||||
CFG_B57 : Byte;
|
||||
CFG_Max_mBar : Int;
|
||||
CFG_EOLO_Zone : Bool;
|
||||
CFG_TableTop_Zone : Bool;
|
||||
CFG_Pack_Zone : Bool;
|
||||
CFG_VIS_Sp_User_Step200 : Bool;
|
||||
CFG_X060_4 : Bool;
|
||||
CFG_X060_5 : Bool;
|
||||
CFG_X060_6 : Bool;
|
||||
CFG_X060_7 : Bool;
|
||||
CFG_MPrew : Int;
|
||||
CFG_MNext : Int;
|
||||
CFG_DBExternal1 : Int;
|
||||
CFG_DBExternal2 : Int;
|
||||
CFG_Vis_Fix_00 : Bool;
|
||||
CFG_VIS_Fix_01 : Bool;
|
||||
CFG_VIS_Fix_02 : Bool;
|
||||
CFG_VIS_Fix_03 : Bool;
|
||||
CFG_VIS_Fix_04 : Bool;
|
||||
CFG_VIS_Fix_05 : Bool;
|
||||
CFG_VIS_Fix_06 : Bool;
|
||||
CFG_VIS_Fix_07 : Bool;
|
||||
CFG_VIS_Sync_00 : Bool;
|
||||
CFG_VIS_Sync_01 : Bool;
|
||||
CFG_VIS_Sync_02 : Bool;
|
||||
CFG_VIS_Sync_03 : Bool;
|
||||
CFG_VIS_Sync_04 : Bool;
|
||||
CFG_VIS_Sync_05 : Bool;
|
||||
CFG_VIS_Sync_06 : Bool;
|
||||
CFG_VIS_Sync_07 : Bool;
|
||||
CFG_VIS_Timer_00 : Bool;
|
||||
CFG_VIS_Timer_01 : Bool;
|
||||
CFG_VIS_Timer_02 : Bool;
|
||||
CFG_VIS_Timer_03 : Bool;
|
||||
CFG_VIS_Timer_04 : Bool;
|
||||
CFG_VIS_Timer_05 : Bool;
|
||||
CFG_VIS_Timer_06 : Bool;
|
||||
CFG_VIS_Timer_07 : Bool;
|
||||
CFG_VIS_SA : Bool;
|
||||
CFG_VIS_SB : Bool;
|
||||
CFG_VIS_SC : Bool;
|
||||
CFG_VIS_SD : Bool;
|
||||
CFG_VIS_BA : Bool;
|
||||
CFG_VIS_BB : Bool;
|
||||
CFG_VIS_EXTA : Bool;
|
||||
CFG_VIS_EXTB : Bool;
|
||||
CFG_VIS_SW : Bool;
|
||||
CFG_VIS_TH : Bool;
|
||||
CFG_VIS_TRIP : Bool;
|
||||
CFG_VIS_PAW : Bool;
|
||||
CFG_VIS_RUN_FWD : Bool;
|
||||
CFG_VIS_RUN_BWD : Bool;
|
||||
CFG_VIS_Kspeed : Bool;
|
||||
CFG_VIS_PLUG : Bool;
|
||||
CFG_VIS_PB_Auto : Bool;
|
||||
CFG_VIS_PB_Man : Bool;
|
||||
CFG_VIS_PB_Jog : Bool;
|
||||
CFG_VIS_PB_Stop : Bool;
|
||||
CFG_VIS_PB_Reverse : Bool;
|
||||
CFG_VIS_PB_sp_05 : Bool;
|
||||
CFG_VIS_PB_sp_06 : Bool;
|
||||
CFG_VIS_ManSpeed : Bool;
|
||||
CFG_VIS_ACT_Torque : Bool;
|
||||
CFG_VIS_ACC_Ramp : Bool;
|
||||
CFG_VIS_DEC_Ramp : Bool;
|
||||
CFG_VIS_X76_3 : Bool;
|
||||
CFG_VIS_X76_4 : Bool;
|
||||
CFG_VIS_X76_5 : Bool;
|
||||
CFG_VIS_X76_6 : Bool;
|
||||
CFG_VIS_X76 : Bool;
|
||||
CFG_B77 : Byte;
|
||||
CFG_W078 : Int;
|
||||
CFG_Add_Signal_SA : UInt;
|
||||
CFG_Add_Signal_SB : UInt;
|
||||
CFG_Add_Signal_SC : UInt;
|
||||
CFG_Add_Signal_SD : UInt;
|
||||
CFG_Add_Signal_BA : UInt;
|
||||
CFG_Add_Signal_BB : UInt;
|
||||
CFG_Add_Signal_EXTA : UInt;
|
||||
CFG_Add_Signal_EXTB : UInt;
|
||||
CFG_Add_Signal_SW : UInt;
|
||||
CFG_Add_Signal_TH : UInt;
|
||||
CFG_Add_Signal_TRIP : UInt;
|
||||
CFG_Add_Signal_PAW : Int;
|
||||
CFG_Add_Signal_RUN_FWD : UInt;
|
||||
CFG_Add_Signal_RUN_BWD : UInt;
|
||||
CFG_Add_Signal_mBar : Int;
|
||||
CFG_Add_Signal_PLUG : Int;
|
||||
CFG_Add_Signal_SP02 : Int;
|
||||
CFG_DB_Machine : Int;
|
||||
CFG_DB_NextMotor : Int;
|
||||
CFG_W118 : Int;
|
||||
CFG_Stop_Empty : Bool;
|
||||
CFG_Stop_Full : Bool;
|
||||
CFG_Stop_STBY : Bool;
|
||||
CFG_Pressurization : Bool;
|
||||
CFG_EOLO_Press_Speed : Int;
|
||||
Spare_124 : Array[124..145] of Byte;
|
||||
CFG_Motor_N : DInt;
|
||||
CFG_Phylosopy_N : Int;
|
||||
CFG_Motor_HW_IO : "HW_IO";
|
||||
CFG_Node_N : Int;
|
||||
CFG_Inverter_Type : Int;
|
||||
CFG_W158 : Int;
|
||||
CFG_Kspeed_User50Hz : Int;
|
||||
CFG_Min_Speed_User : Int;
|
||||
CFG_Max_Speed_User : Int;
|
||||
CFG_W166 : Int;
|
||||
CFG_W168 : Int;
|
||||
CFG_EN_mBar_FCT : Bool;
|
||||
CFG_EN_mBar_FilterALM : Bool;
|
||||
CFG_Isteresi_mBar : Int;
|
||||
CFG_Gain_Mbar : Int;
|
||||
CFG_Max_Speed_FilterALM : Int;
|
||||
CFG_W178 : Int;
|
||||
CFG_T_Gain : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
CFG_T_FilterALM : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
IN_PB_Start : Bool;
|
||||
IN_PB_Stop : Bool;
|
||||
IN_PB_Reset : Bool;
|
||||
IN_PB_Silence : Bool;
|
||||
IN_X200_4 : Bool;
|
||||
IN_X200_5 : Bool;
|
||||
IN_X200_6 : Bool;
|
||||
IN_X200_7 : Bool;
|
||||
IN_KG_PowerON : Bool;
|
||||
IN_SW_ManAuto : Bool;
|
||||
IN_Cycle_ON : Bool;
|
||||
IN_X201_3 : Bool;
|
||||
IN_X201_4 : Bool;
|
||||
IN_X201_5 : Bool;
|
||||
IN_X201_6 : Bool;
|
||||
IN_X201_7 : Bool;
|
||||
IN_SW_HMI_Auto : Bool;
|
||||
IN_SW_HMI_Man : Bool;
|
||||
IN_SW_HMI_Jog : Bool;
|
||||
IN_SW_HMI_Stop : Bool;
|
||||
IN_SW_HMI_Reverse : Bool;
|
||||
IN_SW_HMI_sp_05 : Bool;
|
||||
IN_SW_HMI_sp_06 : Bool;
|
||||
IN_SW_HMI_ManSpeed : Bool;
|
||||
IN_SW_HMI_sp_08 : Bool;
|
||||
IN_SW_HMI_VVFix1 : Bool;
|
||||
IN_SW_HMI_VVFix2 : Bool;
|
||||
IN_SW_HMI_VVFix3 : Bool;
|
||||
IN_SW_HMI_VVFix4 : Bool;
|
||||
IN_SW_HMI_VVFix5 : Bool;
|
||||
IN_SW_HMI_sp_14 : Bool;
|
||||
IN_SW_HMI_sp_15 : Bool;
|
||||
IN_HMI_ManSpeed : Int;
|
||||
IN_Signal_SA : Bool;
|
||||
IN_Signal_SB : Bool;
|
||||
IN_Signal_SC : Bool;
|
||||
IN_Signal_SD : Bool;
|
||||
IN_Signal_BA : Bool;
|
||||
IN_Signal_BB : Bool;
|
||||
IN_Signal_EXTA : Bool;
|
||||
IN_Signal_EXTB : Bool;
|
||||
IN_Signal_SW : Bool;
|
||||
IN_Signal_TH : Bool;
|
||||
IN_Signal_TRIP : Bool;
|
||||
IN_Signal_RUN_FWD : Bool;
|
||||
IN_Signal_RUN_BWD : Bool;
|
||||
IN_Signal_sp_05 : Bool;
|
||||
IN_Signal_sp_06 : Bool;
|
||||
IN_Signal_PLUG : Bool;
|
||||
IN_Signal_sp_08 : Int;
|
||||
IN_Signal_PEW_mBar : Int;
|
||||
IN_Signal_mBar : Int;
|
||||
IN_Motor_DI : "Struct";
|
||||
IN_W216 : Int;
|
||||
IN_W218 : Int;
|
||||
IN_Line_Empty : Bool;
|
||||
IN_Line_Full : Bool;
|
||||
IN_Line_StandBy : Bool;
|
||||
Spare_222 : Array[222..249] of Byte;
|
||||
OUT_VFD_Run_FWD : Bool;
|
||||
OUT_VFD_Run_BWD : Bool;
|
||||
OUT_VFD_Reverse : Bool;
|
||||
OUT_VFD_Qstop : Bool;
|
||||
OUT_VFD_Reset : Bool;
|
||||
OUT_X250_5 : Bool;
|
||||
OUT_X250_6 : Bool;
|
||||
OUT_EnergySavingON : Bool;
|
||||
OUT_VFD_REQ_Speed_Hz : Int;
|
||||
OUT_VFD_REQ_Speed_User : Int;
|
||||
OUT_VFD_ACT_Sync_Speed : Int;
|
||||
OUT_VFD_REQ_Speed_mBar : Int;
|
||||
OUT_Motor_DO : "Struct";
|
||||
OUT_W262 : Int;
|
||||
OUT_W264 : Int;
|
||||
OUT_W266 : Int;
|
||||
OUT_W268 : Int;
|
||||
STATUS_VFD_Run_FWD : Bool;
|
||||
STATUS_VFD_Run_BWD : Bool;
|
||||
STATUS_VFD_Trip : Bool;
|
||||
STATUS_VFD_Warning : Bool;
|
||||
STATUS_Ready : Bool;
|
||||
STATUS_VFD_Ready : Bool;
|
||||
STATUS_VFD_Coasting : Bool;
|
||||
STATUS_X270_7 : Bool;
|
||||
STATUS_VFD_ACT_Speed_Hz : Int;
|
||||
STATUS_VFD_ACT_Speed_Use : Int;
|
||||
STATUS_VFD_ACT_Torque : Int;
|
||||
STATUS_MainFault_MovigearADV : Byte;
|
||||
STATUS_Subfault_MovigearADV : Byte;
|
||||
STATUS_W280 : Int;
|
||||
STATUS_W282 : Int;
|
||||
STATUS_PWR_OFF : Bool;
|
||||
STATUS_CYCLE_OFF : Bool;
|
||||
STATUS_ALARM : Bool;
|
||||
STATUS_AUTO : Bool;
|
||||
STATUS_MAN : Bool;
|
||||
STATUS_JOG : Bool;
|
||||
STATUS_STOP : Bool;
|
||||
STATUS_X284_7 : Bool;
|
||||
STATUS_X285_0 : Bool;
|
||||
STATUS_X285_1 : Bool;
|
||||
STATUS_X285_2 : Bool;
|
||||
STATUS_X285_3 : Bool;
|
||||
STATUS_X285_4 : Bool;
|
||||
STATUS_X285_5 : Bool;
|
||||
STATUS_X285_6 : Bool;
|
||||
STATUS_X285_7 : Bool;
|
||||
STATUS_NOTRUN : Bool;
|
||||
STATUS_RUN : Bool;
|
||||
STATUS_X286_2 : Bool;
|
||||
STATUS_X286_3 : Bool;
|
||||
STATUS_X286_4 : Bool;
|
||||
STATUS_X286_5 : Bool;
|
||||
STATUS_X286_6 : Bool;
|
||||
STATUS_X286_7 : Bool;
|
||||
Spare_288 : Array[288..289] of Byte;
|
||||
Alarm_09 : Bool;
|
||||
Alarm_10 : Bool;
|
||||
Alarm_11 : Bool;
|
||||
Alarm_12 : Bool;
|
||||
Alarm_13 : Bool;
|
||||
Alarm_14 : Bool;
|
||||
Alarm_15 : Bool;
|
||||
Alarm_16 : Bool;
|
||||
Alarm_01 : Bool;
|
||||
Alarm_02 : Bool;
|
||||
Alarm_03 : Bool;
|
||||
Alarm_04 : Bool;
|
||||
Alarm_05 : Bool;
|
||||
Alarm_06 : Bool;
|
||||
Alarm_07 : Bool;
|
||||
Alarm_08 : Bool;
|
||||
Spare_292 : Array[292..299] of Byte;
|
||||
M_Power_ON : Bool;
|
||||
M_Cycle_ON_AUTO : Bool;
|
||||
M_Cycle_ON_MAN : Bool;
|
||||
M_W302 : Int;
|
||||
M_W304 : Int;
|
||||
M_W306 : Int;
|
||||
M_W308 : Int;
|
||||
M_Delay_Cycle_ON_Auto : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
Spare_320 : Array[320..349] of Byte;
|
||||
REQ_EN_Run : Bool;
|
||||
REQ_Start_FWD : Bool;
|
||||
REQ_Start_BWD : Bool;
|
||||
REQ_QStop : Bool;
|
||||
REQ_X350_4 : Bool;
|
||||
REQ_X350_5 : Bool;
|
||||
REQ_X350_6 : Bool;
|
||||
REQ_X350_7 : Bool;
|
||||
REQ_X351_0 : Bool;
|
||||
REQ_X351_1 : Bool;
|
||||
REQ_X351_2 : Bool;
|
||||
REQ_X351_3 : Bool;
|
||||
REQ_X351_4 : Bool;
|
||||
REQ_X351_5 : Bool;
|
||||
REQ_X351_6 : Bool;
|
||||
REQ_X351_7 : Bool;
|
||||
REQ_W352 : Int;
|
||||
REQ_Master_Speed_Sync : Int;
|
||||
REQ_W356 : Int;
|
||||
REQ_Speed_Fix_00_NU : Bool;
|
||||
REQ_Speed_Fix_01 : Bool;
|
||||
REQ_Speed_Fix_02 : Bool;
|
||||
REQ_Speed_Fix_03 : Bool;
|
||||
REQ_Speed_Fix_04 : Bool;
|
||||
REQ_Speed_Fix_05 : Bool;
|
||||
REQ_Speed_Fix_06_NU : Bool;
|
||||
REQ_Speed_Fix_07_NU : Bool;
|
||||
REQ_Speed_Sync_00_NU : Bool;
|
||||
REQ_Speed_Sync_01 : Bool;
|
||||
REQ_Speed_Sync_02 : Bool;
|
||||
REQ_Speed_Sync_03 : Bool;
|
||||
REQ_Speed_Sync_04 : Bool;
|
||||
REQ_Speed_Sync_05 : Bool;
|
||||
REQ_Speed_Sync_06_NU : Bool;
|
||||
REQ_Speed_Sync_07_NU : Bool;
|
||||
REQ_T01 : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
REQ_T02 : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
REQ_T03 : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
REQ_T04 : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
REQ_T05 : STRUCT
|
||||
S : Bool;
|
||||
Q : Bool;
|
||||
TW : Int;
|
||||
ST : Int;
|
||||
ACT : Int;
|
||||
W008 : Int;
|
||||
END_STRUCT;
|
||||
|
||||
END_STRUCT;
|
||||
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
RetVal : Int;
|
||||
MotorNumber : Int;
|
||||
DBNumber : Int;
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
|
||||
// Network 1: INIT Configuration (Original Language: SCL)
|
||||
|
||||
// SCL extraction failed: StructuredText node not found.
|
||||
|
||||
// Network 2: (Original Language: LAD)
|
||||
|
||||
// Network 2 has no logic elements.
|
||||
|
||||
// Network 3: EN run (Original Language: LAD)
|
||||
|
||||
"Motor"."REQ_EN_Run" := "M0.1";
|
||||
|
||||
// Network 4: REQ Auto RUN (Original Language: LAD)
|
||||
|
||||
"Motor"."REQ_Start_FWD" := TRUE;
|
||||
|
||||
// Network 5: Request Speed Fix 01 (Original Language: LAD)
|
||||
|
||||
"Motor"."REQ_Speed_Fix_01" := "M0.1";
|
||||
|
||||
// Network 6: INIT Configuration (Original Language: SCL)
|
||||
|
||||
// SCL extraction failed: StructuredText node not found.
|
||||
|
||||
END_FUNCTION
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,93 @@
|
|||
--- Log de Ejecución: x7_clear.py ---
|
||||
Grupo: XML Parser to SCL
|
||||
Directorio de Trabajo: D:\Trabajo\VM\44 - 98050 - Fiera\Reporte\ExportsTia\Source
|
||||
Inicio: 2025-06-13 01:01:10
|
||||
Fin: 2025-06-13 01:01:11
|
||||
Duración: 0:00:00.701052
|
||||
Estado: SUCCESS (Código de Salida: 0)
|
||||
|
||||
--- SALIDA ESTÁNDAR (STDOUT) ---
|
||||
INFO: format_variable_name importado desde generators.generator_utils
|
||||
|
||||
=== Limpiando PLC: 98050_PLC ===
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\CONVEYORS\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\CONVEYORS\MiniMotor\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\CONVEYORS\MiniMotor\DBS55_PN_Extend-A\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\CONVEYORS\SICK AG\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\CONVEYORS\TRANSFER\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\ConveyorsBase\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Library\Motion\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Library\Motion\Siemens\LCamHdl_Types\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Library\Motion\Technology\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Library\SeamlessDivider\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Library\SeamlessDivider\Technology\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Machine\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcDataTypes\Machine\Cycle\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcTags\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\PlcTags\Library\Motion\Siemens\LCamHdl_Tags\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\1-AIR Philosophy\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\2-TTOP Philosophy\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\3-Motors Manage\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\3-Motors Manage\MiniMotor_PN\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\3-Motors Manage\MiniMotor_PN\MiniMotor_PN\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\HMI\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\FC\MACHINE SIGNALS\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!! SYS !!!\OB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\!!!TRANSFER\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\0 - MAIN\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\0 - MAIN\FC\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\0 - MAIN\OB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Device\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Device\FB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Device\FC\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\General\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\General\FC\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Motor\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Motor\DB\Minimotor\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Motor\FC\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\2 - TTOP\Motor\FC\Minimotor\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\4 - LUBE\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\4 - LUBE\FB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\1 - CONVEYORS\4 - LUBE\FB\OLD\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\2 - MACHINE\DB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\2 - MACHINE\FB\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\! ConveyorsSTD\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\! ConveyorsSTD\Hmi\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\! ConveyorsSTD\System\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\! ConveyorsSTD\TimeZone\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\AAA_Debug\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\AAA_VirtualMaster\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\ExchangeSignals\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\ExchangeSignals\Loop\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\HMI\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Instances\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\Generic\Alarms\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\Motion\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\Motion\Siemens\LCamHdl_Blocks\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\Motion\Technology\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\Motion\Utilities\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\SeamlessDivider\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Libraries\SeamlessDivider\Technology\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Machine\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Machine\Instances\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\Setup\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\TimingBelt (downstream divider)\parsing
|
||||
- Eliminado directorio de parsing: 98050_PLC\ProgramBlocks_XML\Divider\TimingBelt (downstream divider)\Instances\parsing
|
||||
- Eliminado directorio 'scl_output': 98050_PLC\scl_output
|
||||
- Eliminado directorio 'xref_output': 98050_PLC\xref_output
|
||||
- Eliminado archivo agregado: 98050_PLC\full_project_representation.md
|
||||
- Eliminado log: log_98050_PLC.txt
|
||||
|
||||
--- Resumen de limpieza ---
|
||||
Directorios eliminados: 70
|
||||
Archivos eliminados: 2
|
||||
Limpieza completada.
|
||||
|
||||
--- ERRORES (STDERR) ---
|
||||
Ninguno
|
||||
--- FIN DEL LOG ---
|
Binary file not shown.
Binary file not shown.
|
@ -215,32 +215,43 @@ def parse_scl_network(network_element):
|
|||
Devuelve un diccionario representando la red para el JSON.
|
||||
"""
|
||||
network_id = network_element.get("ID", "UnknownSCL_ID")
|
||||
network_lang = "SCL" # Sabemos que es SCL
|
||||
network_lang = "SCL" # Sabemos que es SCL
|
||||
|
||||
# Buscar NetworkSource y luego StructuredText
|
||||
network_source_node = network_element.xpath(".//flg:NetworkSource", namespaces=ns)
|
||||
# --- Obtener título y comentario para coherencia con otros parsers ---
|
||||
title_elem = network_element.xpath(
|
||||
"./ObjectList/MultilingualText[@CompositionName='Title']", namespaces=ns
|
||||
)
|
||||
network_title = get_multilingual_text(title_elem[0]) if title_elem else f"Network {network_id}"
|
||||
|
||||
comment_elem = network_element.xpath(
|
||||
"./ObjectList/MultilingualText[@CompositionName='Comment']", namespaces=ns
|
||||
)
|
||||
network_comment = get_multilingual_text(comment_elem[0]) if comment_elem else ""
|
||||
|
||||
# --- Buscar NetworkSource y StructuredText sin depender del namespace ---
|
||||
network_source_node = network_element.xpath(".//*[local-name()='NetworkSource']")
|
||||
structured_text_node = None
|
||||
if network_source_node:
|
||||
structured_text_node_list = network_source_node[0].xpath("./st:StructuredText", namespaces=ns)
|
||||
if structured_text_node_list:
|
||||
structured_text_node = structured_text_node_list[0]
|
||||
st_nodes = network_source_node[0].xpath(".//*[local-name()='StructuredText']")
|
||||
if st_nodes:
|
||||
structured_text_node = st_nodes[0]
|
||||
|
||||
reconstructed_scl = "// SCL extraction failed: StructuredText node not found.\n"
|
||||
if structured_text_node is not None:
|
||||
reconstructed_scl = reconstruct_scl_from_tokens(structured_text_node)
|
||||
|
||||
# Crear la estructura de datos para la red
|
||||
parsed_network_data = {
|
||||
"id": network_id,
|
||||
"title": network_title,
|
||||
"comment": network_comment,
|
||||
"language": network_lang,
|
||||
"logic": [ # SCL se guarda como un único bloque lógico
|
||||
"logic": [
|
||||
{
|
||||
"instruction_uid": f"SCL_{network_id}", # UID sintético
|
||||
"type": "RAW_SCL_CHUNK", # Tipo especial para SCL crudo
|
||||
"scl": reconstructed_scl, # El código SCL reconstruido
|
||||
"instruction_uid": f"SCL_{network_id}",
|
||||
"type": "RAW_SCL_CHUNK",
|
||||
"scl": reconstructed_scl,
|
||||
}
|
||||
],
|
||||
# No añadimos error aquí, reconstruct_scl_from_tokens ya incluye comentarios de error
|
||||
}
|
||||
return parsed_network_data
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"x0_main.py": {
|
||||
"display_name": "1: Procesar Exportación XML",
|
||||
"display_name": "1: Procesar Exportación XML de un proyecto a SCL",
|
||||
"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
|
||||
|
@ -34,5 +34,11 @@
|
|||
"short_description": "LadderToSCL - Conversor de Siemens LAD/FUP XML a SCL",
|
||||
"long_description": "",
|
||||
"hidden": true
|
||||
},
|
||||
"x7_clear.py": {
|
||||
"display_name": "3: Limpiar archivos json y md",
|
||||
"short_description": "3: Limpiar archivos json y md generados por (1)",
|
||||
"long_description": "",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
|
@ -158,6 +158,111 @@ def check_skip_status(
|
|||
return status
|
||||
|
||||
|
||||
# --- FUNCIÓN DE LIMPIEZA (x7) ---------------------------------------------------------------------------
|
||||
|
||||
def clear_generated_outputs(plc_dir: str = None) -> bool:
|
||||
"""Elimina todos los artefactos (JSON, SCL, MD, logs) generados por este script.
|
||||
|
||||
Si *plc_dir* es None, se comporta de forma análoga al modo orquestador,
|
||||
localizando todos los PLCs bajo el *working_directory* configurado y
|
||||
limpiándolos uno a uno. Devuelve *True* si la operación terminó sin
|
||||
errores críticos, *False* en caso contrario.
|
||||
"""
|
||||
errors_found = False
|
||||
|
||||
try:
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
if not working_directory or not os.path.isdir(working_directory):
|
||||
print("Error: 'working_directory' inválido en la configuración.", file=sys.stderr)
|
||||
return False
|
||||
|
||||
xml_parser_config = configs.get("level2", {})
|
||||
cfg_scl_output_dirname = xml_parser_config.get("scl_output_dir", "scl_output")
|
||||
cfg_xref_output_dirname = xml_parser_config.get("xref_output_dir", "xref_output")
|
||||
cfg_aggregated_filename = xml_parser_config.get("aggregated_filename", "full_project_representation.md")
|
||||
|
||||
# Determinar la lista de PLCs a limpiar
|
||||
if plc_dir is not None:
|
||||
plc_dirs = [os.path.abspath(plc_dir)]
|
||||
if not os.path.isdir(plc_dirs[0]):
|
||||
print(f"Advertencia: El directorio PLC especificado no existe: {plc_dirs[0]}")
|
||||
return False
|
||||
else:
|
||||
plc_dirs = []
|
||||
for entry in os.listdir(working_directory):
|
||||
cand_path = os.path.join(working_directory, entry)
|
||||
if os.path.isdir(cand_path) and glob.glob(os.path.join(cand_path, "**", "*.xml"), recursive=True):
|
||||
plc_dirs.append(cand_path)
|
||||
if not plc_dirs:
|
||||
plc_dirs = [working_directory]
|
||||
|
||||
total_dirs_removed = 0
|
||||
total_files_removed = 0
|
||||
|
||||
for plc_path in plc_dirs:
|
||||
plc_path = os.path.abspath(plc_path)
|
||||
plc_name_safe = os.path.basename(plc_path.strip(os.sep))
|
||||
print(f"\n=== Limpiando PLC: {plc_name_safe} ===")
|
||||
|
||||
# 1) Eliminar carpetas 'parsing' (y su contenido JSON)
|
||||
for parsing_dir in glob.glob(os.path.join(plc_path, "**", "parsing"), recursive=True):
|
||||
if os.path.isdir(parsing_dir):
|
||||
try:
|
||||
shutil.rmtree(parsing_dir)
|
||||
print(f" - Eliminado directorio de parsing: {os.path.relpath(parsing_dir, working_directory)}")
|
||||
total_dirs_removed += 1
|
||||
except Exception as e:
|
||||
print(f" - ERROR al eliminar {parsing_dir}: {e}")
|
||||
errors_found = True
|
||||
|
||||
# 2) Eliminar directorios de salida SCL y XRef
|
||||
for dirname in [cfg_scl_output_dirname, cfg_xref_output_dirname]:
|
||||
target_dir = os.path.join(plc_path, dirname)
|
||||
if os.path.isdir(target_dir):
|
||||
try:
|
||||
shutil.rmtree(target_dir)
|
||||
print(f" - Eliminado directorio '{dirname}': {os.path.relpath(target_dir, working_directory)}")
|
||||
total_dirs_removed += 1
|
||||
except Exception as e:
|
||||
print(f" - ERROR al eliminar {target_dir}: {e}")
|
||||
errors_found = True
|
||||
|
||||
# 3) Eliminar archivo agregado principal
|
||||
agg_file = os.path.join(plc_path, cfg_aggregated_filename)
|
||||
if os.path.isfile(agg_file):
|
||||
try:
|
||||
os.remove(agg_file)
|
||||
print(f" - Eliminado archivo agregado: {os.path.relpath(agg_file, working_directory)}")
|
||||
total_files_removed += 1
|
||||
except Exception as e:
|
||||
print(f" - ERROR al eliminar {agg_file}: {e}")
|
||||
errors_found = True
|
||||
|
||||
# 4) Eliminar logs específicos del PLC
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
log_path = os.path.join(script_dir, f"log_{plc_name_safe}.txt")
|
||||
if os.path.isfile(log_path):
|
||||
try:
|
||||
os.remove(log_path)
|
||||
print(f" - Eliminado log: {os.path.basename(log_path)}")
|
||||
total_files_removed += 1
|
||||
except Exception as e:
|
||||
print(f" - ERROR al eliminar {log_path}: {e}")
|
||||
errors_found = True
|
||||
|
||||
print("\n--- Resumen de limpieza ---")
|
||||
print(f" Directorios eliminados: {total_dirs_removed}")
|
||||
print(f" Archivos eliminados: {total_files_removed}")
|
||||
print(" Limpieza completada." if not errors_found else " Limpieza completada con errores.")
|
||||
|
||||
return not errors_found
|
||||
except Exception as e:
|
||||
print(f"ERROR inesperado durante la limpieza: {e}", file=sys.stderr)
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
# --- FIN FUNCIÓN DE LIMPIEZA -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
# --- Bloque Principal ---
|
||||
|
|
|
@ -366,6 +366,18 @@ def generate_call_tree_output(call_graph, block_data, base_xref_dir, max_call_de
|
|||
"""
|
||||
output_lines = ["# Árbol de Referencias Cruzadas de Llamadas\n"]
|
||||
output_lines.append(f"(Profundidad máxima: {max_call_depth})\n") # <-- Usar el parámetro
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Aviso cuando NO se han detectado llamadas entre bloques
|
||||
# ------------------------------------------------------------
|
||||
has_any_call = any(len(callees) > 0 for callees in call_graph.values())
|
||||
if not has_any_call:
|
||||
output_lines.append(
|
||||
"\n> ⚠️ Nota: No se detectaron referencias cruzadas de llamadas. "
|
||||
"Es posible que no existan los archivos '*_XRef.xml' o que aún no "
|
||||
"se haya ejecutado el análisis de fallback sobre los bloques SCL.\n"
|
||||
)
|
||||
|
||||
root_nodes = sorted( # Encontrar OBs
|
||||
[
|
||||
name
|
||||
|
@ -646,7 +658,8 @@ def generate_cross_references(
|
|||
# 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"))
|
||||
# Buscar recursivamente en todas las subcarpetas (algunos proyectos guardan los XML en estructuras anidadas)
|
||||
xref_xml_files = glob.glob(os.path.join(xref_xml_dir, "**", "*_XRef.xml"), recursive=True)
|
||||
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:
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
"""x7_clear.py
|
||||
Script de limpieza para eliminar todos los artefactos generados por x0_main.py.
|
||||
|
||||
Este script actúa como envoltorio del método `clear_generated_outputs` definido
|
||||
en `x0_main.py`. De esta forma, la lógica de eliminación se mantiene en un solo
|
||||
lugar y se adapta automáticamente a futuros cambios en la estructura de
|
||||
salidas de x0.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
# Importar la función de limpieza desde x0_main.py
|
||||
from x0_main import clear_generated_outputs # noqa: E402 – import absoluto intencional
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Elimina los archivos generados por x0_main.py (JSON, SCL, MD, logs)."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--plc-dir",
|
||||
dest="plc_dir",
|
||||
default=None,
|
||||
help=(
|
||||
"Ruta de un PLC específico a limpiar. Si se omite, se limpiarán "
|
||||
"todos los PLCs detectados bajo el working_directory definido en la configuración."
|
||||
),
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
success = clear_generated_outputs(args.plc_dir)
|
||||
# Salir con 0 si todo fue bien, 1 en caso de errores
|
||||
sys.exit(0 if success else 1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
39966
data/log.txt
39966
data/log.txt
File diff suppressed because it is too large
Load Diff
|
@ -181,17 +181,17 @@
|
|||
<div class="flex-1 flex gap-2">
|
||||
<input type="text" id="working-directory" class="flex-1 p-2 border rounded bg-green-50">
|
||||
<button class="bg-gray-500 text-white px-4 py-2 rounded" onclick="browseDirectory()">
|
||||
Explorar
|
||||
Buscar
|
||||
</button>
|
||||
<button id="open-in-explorer-btn"
|
||||
class="bg-indigo-500 hover:bg-indigo-600 text-white px-4 py-2 rounded"
|
||||
title="Abrir directorio actual en el explorador de archivos">
|
||||
Abrir Carpeta
|
||||
</button>
|
||||
</div>
|
||||
<button class="bg-blue-500 text-white px-4 py-2 rounded" onclick="setWorkingDirectory()">
|
||||
Confirmar
|
||||
</button>
|
||||
<button class="bg-blue-500 text-white px-4 py-2 rounded" onclick="setWorkingDirectory()">
|
||||
Salvar
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Add directory history dropdown -->
|
||||
<div class="mt-2">
|
||||
|
|
Loading…
Reference in New Issue