Intentando usar los parametros en X4 y X5
This commit is contained in:
parent
6d021b8211
commit
b38c26bee7
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"scl_output_dir": "scl_output",
|
||||
"xref_output_dir": "xref_output"
|
||||
}
|
|
@ -1,4 +1,59 @@
|
|||
{
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
"properties": {
|
||||
"scl_output_dir": {
|
||||
"type": "string",
|
||||
"title": "Directorio Salida SCL/MD (x3)",
|
||||
"description": "Nombre del directorio (relativo a la raíz del proyecto PLC) donde x3 genera archivos .scl/.md, y x4/x5 leen.",
|
||||
"default": "scl_output"
|
||||
},
|
||||
"xref_output_dir": {
|
||||
"type": "string",
|
||||
"title": "Directorio Salida XRef (x4)",
|
||||
"description": "Nombre del directorio (relativo a la raíz del proyecto PLC) donde x4 genera archivos de referencias cruzadas.",
|
||||
"default": "xref_output"
|
||||
},
|
||||
"xref_source_subdir": {
|
||||
"type": "string",
|
||||
"title": "Subdirectorio Fuentes XRef (x4)",
|
||||
"description": "Nombre del subdirectorio dentro de xref_output_dir donde x4 coloca archivos fuente (.md) preparados para enlaces Obsidian.",
|
||||
"default": "source"
|
||||
},
|
||||
"call_xref_filename": {
|
||||
"type": "string",
|
||||
"title": "Nombre Archivo Árbol Llamadas (x4)",
|
||||
"description": "Nombre del archivo para la salida del árbol de llamadas generado por x4.",
|
||||
"default": "xref_calls_tree.md"
|
||||
},
|
||||
"db_usage_xref_filename": {
|
||||
"type": "string",
|
||||
"title": "Nombre Archivo Uso DBs (x4)",
|
||||
"description": "Nombre del archivo para el resumen de uso de DBs generado por x4.",
|
||||
"default": "xref_db_usage_summary.md"
|
||||
},
|
||||
"plc_tag_xref_filename": {
|
||||
"type": "string",
|
||||
"title": "Nombre Archivo Uso PLC Tags (x4)",
|
||||
"description": "Nombre del archivo para el resumen de uso de PLC Tags generado por x4.",
|
||||
"default": "xref_plc_tags_summary.md"
|
||||
},
|
||||
"max_call_depth": {
|
||||
"type": "integer",
|
||||
"title": "Profundidad Máx. Árbol Llamadas (x4)",
|
||||
"description": "Profundidad máxima de recursión para el árbol de llamadas generado por x4.",
|
||||
"default": 5
|
||||
},
|
||||
"max_users_list": {
|
||||
"type": "integer",
|
||||
"title": "Máx. Usuarios Listados (x4)",
|
||||
"description": "Número máximo de usuarios listados por DB/Tag en los resúmenes generados por x4.",
|
||||
"default": 20
|
||||
},
|
||||
"aggregated_filename": {
|
||||
"type": "string",
|
||||
"title": "Nombre Archivo Agregado (x5)",
|
||||
"description": "Nombre del archivo Markdown agregado final generado por x5 (se guarda en el directorio de trabajo principal).",
|
||||
"default": "full_project_representation.md"
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -23,6 +23,14 @@ script_root = os.path.dirname(
|
|||
sys.path.append(script_root)
|
||||
from backend.script_utils import load_configuration
|
||||
|
||||
# <-- NUEVO: Importar funciones directamente -->
|
||||
from x1_to_json import convert_xml_to_json
|
||||
from x2_process import process_json_to_scl
|
||||
from x3_generate_scl import generate_scl_or_markdown
|
||||
# <-- NUEVO: Importar funciones de x4 y x5 -->
|
||||
from x4_cross_reference import generate_cross_references # Asumiendo que x4_cross_reference.py tiene esta función
|
||||
from x5_aggregate import aggregate_outputs
|
||||
|
||||
|
||||
CONSOLE_ENCODING = "utf-8"
|
||||
|
||||
|
@ -78,117 +86,7 @@ def log_message(message, log_file_handle, also_print=True):
|
|||
# <-- FIN NUEVO -->
|
||||
|
||||
|
||||
# <-- MODIFICADO: run_script para aceptar log_file_handle -->
|
||||
def run_script(script_name, xml_arg, log_file_handle, *extra_args):
|
||||
"""Runs a given script, logs output, and returns success status."""
|
||||
script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), script_name)
|
||||
python_executable = sys.executable
|
||||
command = [python_executable, script_path, os.path.abspath(xml_arg)]
|
||||
command.extend(extra_args)
|
||||
|
||||
# Loguear el comando que se va a ejecutar
|
||||
log_message(
|
||||
f"--- Running {script_name} with arguments: {[os.path.relpath(arg) if isinstance(arg, str) and os.path.exists(arg) else arg for arg in command[2:]]} ---",
|
||||
log_file_handle,
|
||||
)
|
||||
|
||||
try:
|
||||
result = subprocess.run(
|
||||
command,
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
encoding=CONSOLE_ENCODING,
|
||||
errors="replace",
|
||||
)
|
||||
stdout_clean = result.stdout.strip() if result.stdout else ""
|
||||
stderr_clean = result.stderr.strip() if result.stderr else ""
|
||||
|
||||
# Loguear stdout si existe
|
||||
if stdout_clean:
|
||||
log_message(
|
||||
f"--- Stdout ({script_name}) ---", log_file_handle, also_print=False
|
||||
) # Loguear encabezado
|
||||
log_message(
|
||||
stdout_clean, log_file_handle, also_print=True
|
||||
) # Loguear y mostrar contenido
|
||||
log_message(
|
||||
f"--- End Stdout ({script_name}) ---", log_file_handle, also_print=False
|
||||
) # Loguear fin
|
||||
|
||||
# Loguear stderr si existe
|
||||
if stderr_clean:
|
||||
# Usar log_message también para stderr, pero imprimir en consola como error
|
||||
log_message(
|
||||
f"--- Stderr ({script_name}) ---", log_file_handle, also_print=False
|
||||
) # Loguear encabezado
|
||||
log_message(
|
||||
stderr_clean, log_file_handle, also_print=False
|
||||
) # Loguear contenido
|
||||
log_message(
|
||||
f"--- End Stderr ({script_name}) ---", log_file_handle, also_print=False
|
||||
) # Loguear fin
|
||||
# Imprimir stderr en la consola de error estándar
|
||||
print(f"--- Stderr ({script_name}) ---", file=sys.stderr)
|
||||
print(stderr_clean, file=sys.stderr)
|
||||
print("--------------------------", file=sys.stderr)
|
||||
|
||||
return True # Éxito
|
||||
|
||||
except FileNotFoundError:
|
||||
error_msg = f"Error: Script '{script_path}' or Python executable '{python_executable}' not found."
|
||||
log_message(error_msg, log_file_handle, also_print=False) # Loguear error
|
||||
print(error_msg, file=sys.stderr) # Mostrar error en consola
|
||||
return False
|
||||
except subprocess.CalledProcessError as e:
|
||||
error_msg = f"Error running {script_name}: Script returned non-zero exit code {e.returncode}."
|
||||
log_message(error_msg, log_file_handle, also_print=False) # Loguear error
|
||||
print(error_msg, file=sys.stderr) # Mostrar error en consola
|
||||
|
||||
stdout_decoded = e.stdout.strip() if e.stdout else ""
|
||||
stderr_decoded = e.stderr.strip() if e.stderr else ""
|
||||
|
||||
if stdout_decoded:
|
||||
log_message(
|
||||
f"--- Stdout ({script_name} - Error) ---",
|
||||
log_file_handle,
|
||||
also_print=False,
|
||||
)
|
||||
log_message(stdout_decoded, log_file_handle, also_print=False)
|
||||
log_message(
|
||||
f"--- End Stdout ({script_name} - Error) ---",
|
||||
log_file_handle,
|
||||
also_print=False,
|
||||
)
|
||||
print(f"--- Stdout ({script_name}) ---", file=sys.stderr)
|
||||
print(stdout_decoded, file=sys.stderr)
|
||||
|
||||
if stderr_decoded:
|
||||
log_message(
|
||||
f"--- Stderr ({script_name} - Error) ---",
|
||||
log_file_handle,
|
||||
also_print=False,
|
||||
)
|
||||
log_message(stderr_decoded, log_file_handle, also_print=False)
|
||||
log_message(
|
||||
f"--- End Stderr ({script_name} - Error) ---",
|
||||
log_file_handle,
|
||||
also_print=False,
|
||||
)
|
||||
print(f"--- Stderr ({script_name}) ---", file=sys.stderr)
|
||||
print(stderr_decoded, file=sys.stderr)
|
||||
print("--------------------------", file=sys.stderr)
|
||||
return False
|
||||
except Exception as e:
|
||||
error_msg = f"An unexpected error occurred while running {script_name}: {e}"
|
||||
log_message(error_msg, log_file_handle, also_print=False) # Loguear error
|
||||
traceback_str = traceback.format_exc()
|
||||
log_message(
|
||||
traceback_str, log_file_handle, also_print=False
|
||||
) # Loguear traceback
|
||||
print(error_msg, file=sys.stderr) # Mostrar error en consola
|
||||
traceback.print_exc(file=sys.stderr) # Mostrar traceback en consola
|
||||
return False
|
||||
# <-- run_script ya no es necesaria -->
|
||||
|
||||
|
||||
# --- Función check_skip_status (sin cambios en su lógica interna) ---
|
||||
|
@ -259,16 +157,28 @@ def check_skip_status(
|
|||
return status
|
||||
|
||||
|
||||
# --- Constantes ---
|
||||
AGGREGATED_FILENAME = "full_project_representation.md"
|
||||
SCL_OUTPUT_DIRNAME = "scl_output"
|
||||
XREF_OUTPUT_DIRNAME = "xref_output"
|
||||
|
||||
|
||||
# --- Bloque Principal ---
|
||||
if __name__ == "__main__":
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
group_config = configs.get("level2", {})
|
||||
|
||||
# <-- NUEVO: Leer parámetros de configuración para x3, x4, x5 -->
|
||||
xml_parser_config = configs.get("XML Parser to SCL", {})
|
||||
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_xref_source_subdir = xml_parser_config.get("xref_source_subdir", "source")
|
||||
cfg_call_xref_filename = xml_parser_config.get("call_xref_filename", "xref_calls_tree.md")
|
||||
cfg_db_usage_xref_filename = xml_parser_config.get("db_usage_xref_filename", "xref_db_usage_summary.md")
|
||||
cfg_plc_tag_xref_filename = xml_parser_config.get("plc_tag_xref_filename", "xref_plc_tags_summary.md")
|
||||
cfg_max_call_depth = xml_parser_config.get("max_call_depth", 5)
|
||||
cfg_max_users_list = xml_parser_config.get("max_users_list", 20)
|
||||
cfg_aggregated_filename = xml_parser_config.get("aggregated_filename", "full_project_representation.md")
|
||||
# <-- FIN NUEVO -->
|
||||
|
||||
# Directorio donde se encuentra este script (x0_main.py)
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# <-- MODIFICADO: Abrir archivo log -->
|
||||
|
@ -324,15 +234,15 @@ if __name__ == "__main__":
|
|||
|
||||
# --- Directorios de salida ---
|
||||
# Estos directorios ahora se crearán DENTRO de xml_project_dir (es decir, dentro de 'PLC')
|
||||
scl_output_dir = os.path.join(xml_project_dir, SCL_OUTPUT_DIRNAME)
|
||||
xref_output_dir = os.path.join(xml_project_dir, XREF_OUTPUT_DIRNAME)
|
||||
scl_output_dir = os.path.join(xml_project_dir, cfg_scl_output_dirname) # Usar valor de config
|
||||
xref_output_dir = os.path.join(xml_project_dir, cfg_xref_output_dirname) # Usar valor de config
|
||||
|
||||
# --- PARTE 2: PROCESAMIENTO INDIVIDUAL (x1, x2, x3) ---
|
||||
log_message("\n--- Fase 1: Procesamiento Individual (x1, x2, x3) ---", log_f)
|
||||
script1 = "x1_to_json.py"
|
||||
script2 = "x2_process.py"
|
||||
script3 = "x3_generate_scl.py"
|
||||
file_status = {}
|
||||
# Los nombres de script ya no se usan directamente para x1, x2, x3
|
||||
# script1 = "x1_to_json.py"
|
||||
# script2 = "x2_process.py"
|
||||
# script3 = "x3_generate_scl.py"
|
||||
processed_count = 0
|
||||
skipped_full_count = 0
|
||||
failed_count = 0
|
||||
|
@ -341,13 +251,14 @@ if __name__ == "__main__":
|
|||
for i, xml_filepath in enumerate(xml_files_found):
|
||||
relative_path = os.path.relpath(xml_filepath, working_directory)
|
||||
log_message(f"\n--- Procesando archivo: {relative_path} ---", log_f)
|
||||
status = {"x1_ok": None, "x2_ok": None, "x3_ok": None}
|
||||
file_status[relative_path] = status
|
||||
|
||||
base_filename = os.path.splitext(os.path.basename(xml_filepath))[0]
|
||||
parsing_dir = os.path.join(os.path.dirname(xml_filepath), "parsing")
|
||||
# Crear directorio de parsing si no existe
|
||||
os.makedirs(parsing_dir, exist_ok=True)
|
||||
json_output_file = os.path.join(parsing_dir, f"{base_filename}.json")
|
||||
processed_json_filepath = os.path.join(
|
||||
parsing_dir, f"{base_filename}_processed.json"
|
||||
parsing_dir, f"{base_filename}_processed.json" # <-- Corregido: nombre correcto
|
||||
)
|
||||
|
||||
# 1. Comprobar estado de salto
|
||||
|
@ -357,140 +268,184 @@ if __name__ == "__main__":
|
|||
skip_x1_x2 = skip_info["skip_x1_x2"]
|
||||
skip_x3 = skip_info["skip_x3"]
|
||||
|
||||
# 2. Ejecutar/Saltar x1
|
||||
if skip_x1_x2:
|
||||
# Si se salta todo, registrar y continuar
|
||||
if skip_x1_x2 and skip_x3:
|
||||
log_message(
|
||||
f"--- SALTANDO x1 para: {relative_path} (archivo XML no modificado y JSON procesado existe)",
|
||||
f"--- SALTANDO TODO (x1, x2, x3) para: {relative_path} (XML no modificado, salida final actualizada)",
|
||||
log_f,
|
||||
)
|
||||
status["x1_ok"] = True
|
||||
else:
|
||||
if run_script(script1, xml_filepath, log_f): # Pasar log_f
|
||||
# Mensaje ya logueado por run_script
|
||||
status["x1_ok"] = True
|
||||
else:
|
||||
log_message(
|
||||
f"--- {script1} FALLÓ para: {relative_path} ---",
|
||||
log_f,
|
||||
also_print=False,
|
||||
) # Ya impreso por run_script
|
||||
status["x1_ok"] = False
|
||||
failed_count += 1
|
||||
continue
|
||||
|
||||
# 3. Ejecutar/Saltar x2
|
||||
if skip_x1_x2:
|
||||
log_message(
|
||||
f"--- SALTANDO x2 para: {relative_path} (razón anterior)", log_f
|
||||
)
|
||||
status["x2_ok"] = True
|
||||
else:
|
||||
if run_script(script2, xml_filepath, log_f): # Pasar log_f
|
||||
status["x2_ok"] = True
|
||||
else:
|
||||
log_message(
|
||||
f"--- {script2} FALLÓ para: {relative_path} ---",
|
||||
log_f,
|
||||
also_print=False,
|
||||
)
|
||||
status["x2_ok"] = False
|
||||
failed_count += 1
|
||||
continue
|
||||
|
||||
# 4. Ejecutar/Saltar x3
|
||||
if skip_x3: # Solo puede ser True si skip_x1_x2 era True
|
||||
log_message(
|
||||
f"--- SALTANDO x3 para: {relative_path} (archivo de salida en '{SCL_OUTPUT_DIRNAME}' está actualizado)",
|
||||
log_f,
|
||||
)
|
||||
status["x3_ok"] = True
|
||||
skipped_full_count += 1
|
||||
processed_count += 1
|
||||
else:
|
||||
processed_count += 1 # Contar como procesado si se salta todo
|
||||
continue
|
||||
|
||||
# Usar try/except para capturar errores en las llamadas directas
|
||||
try:
|
||||
# 2. Ejecutar/Saltar x1 (convert_xml_to_json)
|
||||
if skip_x1_x2:
|
||||
skipped_partial_count += 1 # Se saltó x1/x2 pero se ejecuta x3
|
||||
if run_script(
|
||||
script3, xml_filepath, log_f, xml_project_dir
|
||||
): # Pasar log_f y project_root_dir
|
||||
status["x3_ok"] = True
|
||||
processed_count += 1
|
||||
log_message(
|
||||
f"--- SALTANDO x1 para: {relative_path} (XML no modificado, JSON procesado existe)",
|
||||
log_f,
|
||||
)
|
||||
success_x1 = True # Asumir éxito si se salta
|
||||
else:
|
||||
log_message(
|
||||
f"--- {script3} FALLÓ para: {relative_path} ---",
|
||||
log_f,
|
||||
also_print=False,
|
||||
f"--- Ejecutando x1 (convert_xml_to_json) para: {relative_path} ---", log_f
|
||||
)
|
||||
status["x3_ok"] = False
|
||||
success_x1 = convert_xml_to_json(xml_filepath, json_output_file)
|
||||
if not success_x1:
|
||||
log_message(f"--- x1 FALLÓ para: {relative_path} ---", log_f, also_print=False) # La función ya imprime el error
|
||||
|
||||
if not success_x1:
|
||||
failed_count += 1
|
||||
continue
|
||||
continue # No continuar si x1 falló
|
||||
|
||||
# 3. Ejecutar/Saltar x2 (process_json_to_scl)
|
||||
if skip_x1_x2: # Si se saltó x1, también se salta x2
|
||||
log_message(
|
||||
f"--- SALTANDO x2 para: {relative_path} (razón anterior)", log_f
|
||||
)
|
||||
success_x2 = True # Asumir éxito si se salta
|
||||
else:
|
||||
log_message(
|
||||
f"--- Ejecutando x2 (process_json_to_scl) para: {relative_path} ---", log_f
|
||||
)
|
||||
success_x2 = process_json_to_scl(json_output_file, processed_json_filepath)
|
||||
if not success_x2:
|
||||
log_message(f"--- x2 FALLÓ para: {relative_path} ---", log_f, also_print=False)
|
||||
|
||||
if not success_x2:
|
||||
failed_count += 1
|
||||
continue # No continuar si x2 falló
|
||||
|
||||
# 4. Ejecutar x3 (generate_scl_or_markdown) - skip_x3 ya se manejó al principio
|
||||
# Si llegamos aquí, x3 SIEMPRE debe ejecutarse (porque skip_x3 era False)
|
||||
if skip_x1_x2:
|
||||
skipped_partial_count += 1 # Se saltó x1/x2 pero se ejecuta x3
|
||||
|
||||
log_message(
|
||||
f"--- Ejecutando x3 (generate_scl_or_markdown) para: {relative_path} ---", log_f
|
||||
)
|
||||
# Asegurar que el directorio de salida final exista ANTES de llamar a la función
|
||||
os.makedirs(scl_output_dir, exist_ok=True)
|
||||
success_x3 = generate_scl_or_markdown(
|
||||
processed_json_filepath, scl_output_dir, xml_project_dir
|
||||
)
|
||||
if not success_x3:
|
||||
log_message(f"--- x3 FALLÓ para: {relative_path} ---", log_f, also_print=False)
|
||||
failed_count += 1
|
||||
continue # No continuar si x3 falló
|
||||
|
||||
# Si todo fue bien
|
||||
processed_count += 1
|
||||
|
||||
except Exception as e:
|
||||
# Capturar cualquier error inesperado durante las llamadas a funciones
|
||||
log_message(f"--- ERROR INESPERADO procesando {relative_path}: {e} ---", log_f, also_print=False)
|
||||
print(f"--- ERROR INESPERADO procesando {relative_path}: {e} ---", file=sys.stderr)
|
||||
traceback_str = traceback.format_exc()
|
||||
log_message(traceback_str, log_f, also_print=False) # Loguear traceback
|
||||
traceback.print_exc(file=sys.stderr) # Mostrar traceback en consola
|
||||
failed_count += 1
|
||||
continue # Pasar al siguiente archivo
|
||||
|
||||
# --- PARTE 3: EJECUTAR x4 (Referencias Cruzadas) ---
|
||||
log_message(
|
||||
f"\n--- Fase 2: Ejecutando x4_cross_reference.py (salida en '{XREF_OUTPUT_DIRNAME}/') ---",
|
||||
f"\n--- Fase 2: Ejecutando x4_cross_reference.py (salida en '{cfg_xref_output_dirname}/') ---", # Usar valor de config
|
||||
log_f,
|
||||
)
|
||||
script4 = "x4_cross_reference.py"
|
||||
run_x4 = True
|
||||
success_x4 = False
|
||||
can_run_x4 = any(s["x1_ok"] and s["x2_ok"] for s in file_status.values())
|
||||
if not can_run_x4:
|
||||
log_message(
|
||||
"Advertencia: Ningún archivo completó x1/x2. Saltando x4.", log_f
|
||||
# La condición para ejecutar x4 ahora depende de si *algún* archivo tuvo éxito en x1 y x2
|
||||
# (Necesitamos una forma de rastrear esto, o simplemente intentarlo si no hubo fallos fatales antes)
|
||||
# Simplificación: Ejecutar x4 si no todos los archivos fallaron en x1/x2.
|
||||
# Una mejor comprobación sería ver si existe algún archivo _processed.json
|
||||
can_run_x4 = failed_count < len(xml_files_found) # Aproximación simple
|
||||
if not can_run_x4 and len(xml_files_found) > 0:
|
||||
log_message(
|
||||
"Advertencia: Todos los archivos fallaron en x1/x2. Saltando x4.", log_f
|
||||
)
|
||||
run_x4 = False
|
||||
script4_path = os.path.join(script_dir, script4)
|
||||
if not os.path.exists(script4_path):
|
||||
log_message(
|
||||
f"Advertencia: Script '{script4}' no encontrado. Saltando x4.", log_f
|
||||
)
|
||||
run_x4 = False
|
||||
run_x4 = False
|
||||
elif len(xml_files_found) == 0:
|
||||
run_x4 = False # No hay archivos, no ejecutar
|
||||
|
||||
if run_x4:
|
||||
log_message(
|
||||
f"Ejecutando {script4} sobre el directorio: {xml_project_dir}, salida en: {xref_output_dir}",
|
||||
f"Ejecutando x4 (generate_cross_references) sobre: {xml_project_dir}, salida en: {xref_output_dir}",
|
||||
log_f,
|
||||
)
|
||||
success_x4 = run_script(
|
||||
script4, xml_project_dir, log_f, "-o", xref_output_dir
|
||||
) # Pasar log_f
|
||||
if not success_x4:
|
||||
log_message(f"--- {script4} FALLÓ. ---", log_f, also_print=False)
|
||||
# Mensaje de éxito ya logueado por run_script
|
||||
try:
|
||||
# Llamada directa a la función de x4
|
||||
# <-- MODIFICADO: Pasar todos los parámetros leídos de la config -->
|
||||
success_x4 = generate_cross_references(
|
||||
xml_project_dir,
|
||||
xref_output_dir,
|
||||
cfg_scl_output_dirname,
|
||||
cfg_xref_source_subdir,
|
||||
cfg_call_xref_filename,
|
||||
cfg_db_usage_xref_filename,
|
||||
cfg_plc_tag_xref_filename,
|
||||
cfg_max_call_depth,
|
||||
cfg_max_users_list)
|
||||
if not success_x4:
|
||||
# La función interna ya debería haber impreso/logueado el error específico
|
||||
log_message(f"--- x4 (generate_cross_references) FALLÓ. ---", log_f, also_print=False)
|
||||
except Exception as e:
|
||||
# Capturar error inesperado en la llamada a x4
|
||||
log_message(f"--- ERROR INESPERADO ejecutando x4: {e} ---", log_f, also_print=False)
|
||||
print(f"--- ERROR INESPERADO ejecutando x4: {e} ---", file=sys.stderr)
|
||||
traceback_str = traceback.format_exc()
|
||||
log_message(traceback_str, log_f, also_print=False)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
success_x4 = False # Marcar como fallo
|
||||
else:
|
||||
log_message("Fase 2 (x4) omitida.", log_f)
|
||||
|
||||
# --- PARTE 4: EJECUTAR x5 (Agregación) ---
|
||||
log_message(f"\n--- Fase 3: Ejecutando x5_aggregate.py ---", log_f)
|
||||
script5 = "x5_aggregate.py"
|
||||
log_message(
|
||||
f"\n--- Fase 3: Ejecutando x5_aggregate.py (salida en '{cfg_aggregated_filename}') ---", # Usar valor de config
|
||||
log_f
|
||||
)
|
||||
run_x5 = True
|
||||
success_x5 = False
|
||||
can_run_x5 = any(s["x3_ok"] for s in file_status.values())
|
||||
if not can_run_x5:
|
||||
log_message("Advertencia: Ningún archivo completó x3. Saltando x5.", log_f)
|
||||
run_x5 = False
|
||||
script5_path = os.path.join(script_dir, script5)
|
||||
if not os.path.exists(script5_path):
|
||||
# Condición similar a x4: ejecutar si no todo falló en x1/x2/x3
|
||||
can_run_x5 = failed_count < len(xml_files_found)
|
||||
if not can_run_x5 and len(xml_files_found) > 0:
|
||||
log_message(
|
||||
f"Advertencia: Script '{script5}' no encontrado. Saltando x5.", log_f
|
||||
"Advertencia: Todos los archivos fallaron en x1/x2/x3. Saltando x5.", log_f
|
||||
)
|
||||
run_x5 = False
|
||||
elif len(xml_files_found) == 0:
|
||||
run_x5 = False
|
||||
|
||||
if run_x5:
|
||||
# El archivo agregado se guarda en el working_directory original, un nivel por encima de xml_project_dir
|
||||
output_agg_file = os.path.join(working_directory, AGGREGATED_FILENAME)
|
||||
output_agg_file = os.path.join(working_directory, cfg_aggregated_filename) # Usar valor de config
|
||||
log_message(
|
||||
f"Ejecutando {script5} sobre el directorio: {xml_project_dir}, salida agregada en: {output_agg_file}",
|
||||
f"Ejecutando x5 (aggregate_outputs) sobre: {xml_project_dir}, salida agregada en: {output_agg_file}",
|
||||
log_f
|
||||
)
|
||||
success_x5 = run_script(
|
||||
script5, xml_project_dir, log_f, "-o", output_agg_file
|
||||
) # Pasar log_f
|
||||
if not success_x5:
|
||||
log_message(f"--- {script5} FALLÓ. ---", log_f, also_print=False)
|
||||
# Mensaje de éxito ya logueado por run_script
|
||||
try:
|
||||
# Llamada directa a la función de x5
|
||||
# <-- MODIFICADO: Pasar los parámetros necesarios leídos de la config -->
|
||||
success_x5 = aggregate_outputs(
|
||||
xml_project_dir,
|
||||
output_agg_file,
|
||||
cfg_scl_output_dirname,
|
||||
cfg_xref_output_dirname)
|
||||
if not success_x5:
|
||||
# La función interna ya debería haber impreso/logueado el error específico
|
||||
log_message(f"--- x5 (aggregate_outputs) FALLÓ. ---", log_f, also_print=False)
|
||||
except Exception as e:
|
||||
# Capturar error inesperado en la llamada a x5
|
||||
log_message(f"--- ERROR INESPERADO ejecutando x5: {e} ---", log_f, also_print=False)
|
||||
print(f"--- ERROR INESPERADO ejecutando x5: {e} ---", file=sys.stderr)
|
||||
traceback_str = traceback.format_exc()
|
||||
log_message(traceback_str, log_f, also_print=False)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
success_x5 = False # Marcar como fallo
|
||||
else:
|
||||
log_message("Fase 3 (x5) omitida.", log_f)
|
||||
|
||||
# --- PARTE 5: RESUMEN FINAL --- (MOVIDO AQUÍ)
|
||||
# --- PARTE 5: RESUMEN FINAL ---
|
||||
log_message(
|
||||
"\n" + "-" * 20 + " Resumen Final del Procesamiento Completo " + "-" * 20,
|
||||
|
@ -508,21 +463,13 @@ if __name__ == "__main__":
|
|||
f"Archivos parcialmente saltados (x1, x2 saltados; x3 ejecutado): {skipped_partial_count}",
|
||||
log_f,
|
||||
)
|
||||
log_message(f"Archivos fallidos (en x1, x2 o x3): {failed_count}", log_f)
|
||||
if failed_count > 0:
|
||||
log_message("Archivos fallidos:", log_f)
|
||||
for f, s in file_status.items():
|
||||
if not (
|
||||
s.get("x1_ok", False)
|
||||
and s.get("x2_ok", False)
|
||||
and s.get("x3_ok", False)
|
||||
):
|
||||
failed_step = (
|
||||
"x1"
|
||||
if not s.get("x1_ok", False)
|
||||
else ("x2" if not s.get("x2_ok", False) else "x3")
|
||||
)
|
||||
log_message(f" - {f} (falló en {failed_step})", log_f)
|
||||
log_message(f"Archivos fallidos (en x1, x2, x3 o error inesperado): {failed_count}", log_f)
|
||||
# El detalle de archivos fallidos es más difícil de rastrear ahora sin el dict 'file_status'
|
||||
# Se podría reintroducir si es necesario, actualizándolo en cada paso.
|
||||
# Por ahora, solo mostramos el conteo.
|
||||
# if failed_count > 0:
|
||||
# log_message("Archivos fallidos:", log_f)
|
||||
# ... (lógica para mostrar cuáles fallaron) ...
|
||||
log_message(
|
||||
f"Fase 2 (Generación XRef - x4): {'Completada' if run_x4 and success_x4 else ('Fallida' if run_x4 and not success_x4 else 'Omitida')}",
|
||||
log_f,
|
||||
|
|
|
@ -13,6 +13,7 @@ import sys
|
|||
import traceback
|
||||
import importlib
|
||||
from lxml import etree
|
||||
from lxml.etree import XMLSyntaxError as etree_XMLSyntaxError # Alias para evitar conflicto
|
||||
from collections import defaultdict
|
||||
import copy
|
||||
import time # <-- NUEVO: Para obtener metadatos
|
||||
|
@ -220,12 +221,18 @@ def load_parsers(parsers_dir="parsers"):
|
|||
return parser_map
|
||||
|
||||
|
||||
def convert_xml_to_json(xml_filepath, json_filepath, parser_map):
|
||||
# <-- MODIFICADO: parser_map ya no es un argumento, se carga dentro -->
|
||||
def convert_xml_to_json(xml_filepath, json_filepath):
|
||||
"""
|
||||
Convierte XML a JSON, detectando tipo, añadiendo metadatos del XML
|
||||
y extrayendo comentarios/títulos de red de forma centralizada. (v3)
|
||||
Carga los parsers necesarios internamente.
|
||||
"""
|
||||
print(f"Iniciando conversión de '{xml_filepath}' a '{json_filepath}'...")
|
||||
# <-- NUEVO: Cargar parsers aquí -->
|
||||
print("Cargando parsers de red...")
|
||||
parser_map = load_parsers()
|
||||
# <-- FIN NUEVO -->
|
||||
if not os.path.exists(xml_filepath):
|
||||
print(f"Error Crítico: Archivo XML no encontrado: '{xml_filepath}'")
|
||||
return False
|
||||
|
@ -449,7 +456,7 @@ def convert_xml_to_json(xml_filepath, json_filepath, parser_map):
|
|||
print("Error Crítico: No se generó ningún resultado para el archivo XML.")
|
||||
return False
|
||||
|
||||
except etree.XMLSyntaxError as e:
|
||||
except etree_XMLSyntaxError as e: # Usar alias
|
||||
print(f"Error Crítico: Sintaxis XML inválida en '{xml_filepath}'. Detalles: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
|
@ -459,48 +466,49 @@ def convert_xml_to_json(xml_filepath, json_filepath, parser_map):
|
|||
|
||||
# --- Punto de Entrada Principal (__main__) ---
|
||||
if __name__ == "__main__":
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Convert Simatic XML (FC/FB/OB/DB/UDT/TagTable) to simplified JSON using dynamic parsers and add XML metadata."
|
||||
)
|
||||
parser.add_argument(
|
||||
"xml_filepath",
|
||||
help="Path to the input XML file passed from the main script (x0_main.py).",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
xml_input_file = args.xml_filepath
|
||||
# Lógica para ejecución standalone
|
||||
try:
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
except ImportError:
|
||||
print("Error: Tkinter no está instalado. No se puede mostrar el diálogo de archivo.", file=sys.stderr)
|
||||
# No salimos, podríamos intentar obtener el path de otra forma o fallar más adelante
|
||||
tk = None # Marcar como no disponible
|
||||
|
||||
if not os.path.exists(xml_input_file):
|
||||
print(
|
||||
f"Error Crítico (x1): Archivo XML no encontrado: '{xml_input_file}'",
|
||||
file=sys.stderr,
|
||||
xml_input_file = ""
|
||||
if tk:
|
||||
root = tk.Tk()
|
||||
root.withdraw() # Ocultar la ventana principal de Tkinter
|
||||
print("Por favor, selecciona el archivo XML de entrada...")
|
||||
xml_input_file = filedialog.askopenfilename(
|
||||
title="Selecciona el archivo XML de entrada",
|
||||
filetypes=[("XML files", "*.xml"), ("All files", "*.*")]
|
||||
)
|
||||
sys.exit(1)
|
||||
root.destroy() # Cerrar Tkinter
|
||||
|
||||
loaded_parsers = load_parsers()
|
||||
if not loaded_parsers:
|
||||
print(
|
||||
"Advertencia (x1): No se cargaron parsers de red. Se continuará para UDT/TagTable/DB."
|
||||
)
|
||||
|
||||
xml_filename_base = os.path.splitext(os.path.basename(xml_input_file))[0]
|
||||
base_dir = os.path.dirname(xml_input_file)
|
||||
output_dir = os.path.join(base_dir, "parsing")
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
json_output_file = os.path.join(output_dir, f"{xml_filename_base}.json")
|
||||
|
||||
print(
|
||||
f"(x1) Convirtiendo: '{os.path.relpath(xml_input_file)}' -> '{os.path.relpath(json_output_file)}'"
|
||||
)
|
||||
|
||||
success = convert_xml_to_json(xml_input_file, json_output_file, loaded_parsers)
|
||||
|
||||
if success:
|
||||
sys.exit(0)
|
||||
if not xml_input_file:
|
||||
print("No se seleccionó ningún archivo. Saliendo.", file=sys.stderr)
|
||||
# sys.exit(1) # No usar sys.exit aquí
|
||||
else:
|
||||
print(
|
||||
f"\nError durante la conversión de '{os.path.relpath(xml_input_file)}'.",
|
||||
file=sys.stderr,
|
||||
f"Archivo XML seleccionado: {xml_input_file}"
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
# Calcular ruta de salida JSON
|
||||
xml_filename_base = os.path.splitext(os.path.basename(xml_input_file))[0]
|
||||
base_dir = os.path.dirname(xml_input_file)
|
||||
output_dir = os.path.join(base_dir, "parsing")
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
json_output_file = os.path.join(output_dir, f"{xml_filename_base}.json")
|
||||
|
||||
print(
|
||||
f"(x1 - Standalone) Convirtiendo: '{os.path.relpath(xml_input_file)}' -> '{os.path.relpath(json_output_file)}'"
|
||||
)
|
||||
|
||||
# Llamar a la función principal (que ahora carga los parsers)
|
||||
success = convert_xml_to_json(xml_input_file, json_output_file)
|
||||
|
||||
if success:
|
||||
print("\nConversión completada exitosamente.")
|
||||
else:
|
||||
print(f"\nError durante la conversión de '{os.path.relpath(xml_input_file)}'.", file=sys.stderr)
|
||||
|
|
|
@ -532,59 +532,54 @@ def process_json_to_scl(json_filepath, output_json_filepath):
|
|||
|
||||
# --- Ejecución (MODIFICADO) ---
|
||||
if __name__ == "__main__":
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Process simplified JSON to embed SCL logic, copying XML metadata. Expects original XML filepath."
|
||||
) # <-- MODIFICADO
|
||||
parser.add_argument(
|
||||
"source_xml_filepath",
|
||||
help="Path to the original source XML file (passed from x0_main.py).",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
source_xml_file = args.source_xml_filepath
|
||||
# Lógica para ejecución standalone
|
||||
try:
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
except ImportError:
|
||||
print("Error: Tkinter no está instalado. No se puede mostrar el diálogo de archivo.", file=sys.stderr)
|
||||
tk = None
|
||||
|
||||
if not os.path.exists(source_xml_file):
|
||||
print(
|
||||
f"Advertencia (x2): Archivo XML original no encontrado: '{source_xml_file}', pero se intentará encontrar el JSON correspondiente.",
|
||||
file=sys.stderr,
|
||||
input_json_file = ""
|
||||
if tk:
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
print("Por favor, selecciona el archivo JSON de entrada (generado por x1)...")
|
||||
input_json_file = filedialog.askopenfilename(
|
||||
title="Selecciona el archivo JSON de entrada (.json)",
|
||||
filetypes=[("JSON files", "*.json"), ("All files", "*.*")]
|
||||
)
|
||||
# No salir, intentar encontrar el JSON de todas formas
|
||||
root.destroy()
|
||||
|
||||
xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0]
|
||||
base_dir = os.path.dirname(source_xml_file)
|
||||
parsing_dir = os.path.join(base_dir, "parsing")
|
||||
# x2 LEE el .json y ESCRIBE el _processed.json
|
||||
input_json_file = os.path.join(parsing_dir, f"{xml_filename_base}.json")
|
||||
output_json_file = os.path.join(parsing_dir, f"{xml_filename_base}_processed.json")
|
||||
|
||||
os.makedirs(parsing_dir, exist_ok=True)
|
||||
|
||||
print(
|
||||
f"(x2) Procesando: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_json_file)}'"
|
||||
)
|
||||
|
||||
if not os.path.exists(input_json_file):
|
||||
print(
|
||||
f"Error Fatal (x2): El archivo de entrada JSON no existe: '{input_json_file}'",
|
||||
file=sys.stderr,
|
||||
)
|
||||
print(
|
||||
f"Asegúrate de que 'x1_to_json.py' se ejecutó correctamente para '{os.path.relpath(source_xml_file)}'.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
if not input_json_file:
|
||||
print("No se seleccionó ningún archivo. Saliendo.", file=sys.stderr)
|
||||
else:
|
||||
print(f"Archivo JSON de entrada seleccionado: {input_json_file}")
|
||||
|
||||
# Calcular ruta de salida JSON procesado
|
||||
json_filename_base = os.path.splitext(os.path.basename(input_json_file))[0]
|
||||
# Asumimos que el _processed.json va al mismo directorio 'parsing'
|
||||
parsing_dir = os.path.dirname(input_json_file)
|
||||
output_json_file = os.path.join(parsing_dir, f"{json_filename_base}_processed.json")
|
||||
|
||||
# Asegurarse de que el directorio de salida exista (aunque debería si el input existe)
|
||||
os.makedirs(parsing_dir, exist_ok=True)
|
||||
|
||||
print(
|
||||
f"(x2 - Standalone) Procesando: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_json_file)}'"
|
||||
)
|
||||
|
||||
try:
|
||||
success = process_json_to_scl(input_json_file, output_json_file)
|
||||
if success:
|
||||
sys.exit(0)
|
||||
print("\nProcesamiento completado exitosamente.")
|
||||
else:
|
||||
sys.exit(1)
|
||||
print(f"\nError durante el procesamiento de '{os.path.relpath(input_json_file)}'.", file=sys.stderr)
|
||||
# sys.exit(1) # No usar sys.exit
|
||||
except Exception as e:
|
||||
print(
|
||||
f"Error Crítico (x2) durante el procesamiento de '{input_json_file}': {e}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
sys.exit(1)
|
||||
# sys.exit(1) # No usar sys.exit
|
||||
|
|
|
@ -36,7 +36,7 @@ except ImportError as e:
|
|||
sys.exit(1)
|
||||
|
||||
# --- Constantes ---
|
||||
SCL_OUTPUT_DIRNAME = "scl_output" # <-- NUEVO: Nombre del directorio de salida final
|
||||
# SCL_OUTPUT_DIRNAME = "scl_output" # <-- Ya no se usa directamente en __main__, se lee de config
|
||||
|
||||
|
||||
# --- Modificar generate_scl_or_markdown para usar el nuevo directorio de salida ---
|
||||
|
@ -143,70 +143,82 @@ def generate_scl_or_markdown(
|
|||
|
||||
# --- Ejecución (MODIFICADO para usar SCL_OUTPUT_DIRNAME) ---
|
||||
if __name__ == "__main__":
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
parser = argparse.ArgumentParser(
|
||||
description=f"Generate final SCL/Markdown file into '{SCL_OUTPUT_DIRNAME}/'."
|
||||
) # <-- MODIFICADO
|
||||
parser.add_argument(
|
||||
"source_xml_filepath", help="Path to the original source XML file."
|
||||
)
|
||||
parser.add_argument(
|
||||
"project_root_dir",
|
||||
help="Path to the root directory of the XML project structure.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
source_xml_file = args.source_xml_filepath
|
||||
project_root_dir = args.project_root_dir
|
||||
|
||||
if not os.path.exists(source_xml_file):
|
||||
print(
|
||||
f"Advertencia (x3): Archivo XML original no encontrado: '{source_xml_file}'. Se intentará continuar.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
# No salir necesariamente, podríamos tener el JSON procesado
|
||||
|
||||
xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0]
|
||||
xml_dir = os.path.dirname(source_xml_file)
|
||||
parsing_dir = os.path.join(xml_dir, "parsing")
|
||||
input_json_file = os.path.join(parsing_dir, f"{xml_filename_base}_processed.json")
|
||||
|
||||
# <-- MODIFICADO: Calcular directorio de salida final -->
|
||||
# Siempre será 'scl_output' bajo la raíz del proyecto
|
||||
final_output_dir = os.path.join(project_root_dir, SCL_OUTPUT_DIRNAME)
|
||||
# <-- FIN MODIFICADO -->
|
||||
|
||||
print(f"(x3) Generando SCL/MD desde: '{os.path.relpath(input_json_file)}'")
|
||||
print(f"(x3) Directorio de salida final: '{os.path.relpath(final_output_dir)}'")
|
||||
print(f"(x3) Usando ruta raíz del proyecto: '{project_root_dir}' para buscar UDTs.")
|
||||
|
||||
# Asegurar que el directorio de salida final exista ANTES de llamar a la función
|
||||
# Lógica para ejecución standalone
|
||||
try:
|
||||
os.makedirs(final_output_dir, exist_ok=True)
|
||||
except OSError as e:
|
||||
print(
|
||||
f"Error Crítico (x3): No se pudo crear el directorio de salida '{final_output_dir}': {e}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
except ImportError:
|
||||
print("Error: Tkinter no está instalado. No se puede mostrar el diálogo de archivo.", file=sys.stderr)
|
||||
tk = None
|
||||
|
||||
if not os.path.exists(input_json_file):
|
||||
print(
|
||||
f"Error Fatal (x3): JSON procesado no encontrado: '{input_json_file}'",
|
||||
file=sys.stderr,
|
||||
input_json_file = ""
|
||||
project_root_dir = ""
|
||||
|
||||
if tk:
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
print("Por favor, selecciona el archivo JSON procesado de entrada (generado por x2)...")
|
||||
input_json_file = filedialog.askopenfilename(
|
||||
title="Selecciona el archivo JSON procesado de entrada (_processed.json)",
|
||||
filetypes=[("Processed JSON files", "*_processed.json"), ("JSON files", "*.json"), ("All files", "*.*")]
|
||||
)
|
||||
sys.exit(1)
|
||||
else:
|
||||
try:
|
||||
# Pasar el directorio de salida FINAL y la ruta raíz
|
||||
success = generate_scl_or_markdown(
|
||||
input_json_file, final_output_dir, project_root_dir
|
||||
) # <-- MODIFICADO
|
||||
if success:
|
||||
sys.exit(0)
|
||||
if input_json_file:
|
||||
print(f"Archivo JSON procesado seleccionado: {input_json_file}")
|
||||
print("Por favor, selecciona el directorio raíz del proyecto XML (ej. la carpeta 'PLC')...")
|
||||
project_root_dir = filedialog.askdirectory(
|
||||
title="Selecciona el directorio raíz del proyecto XML"
|
||||
)
|
||||
if project_root_dir:
|
||||
print(f"Directorio raíz del proyecto seleccionado: {project_root_dir}")
|
||||
else:
|
||||
sys.exit(1) # La función ya imprimió el error
|
||||
except Exception as e:
|
||||
print(f"Error Crítico no manejado en x3: {e}", file=sys.stderr)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print("No se seleccionó directorio raíz. Saliendo.", file=sys.stderr)
|
||||
else:
|
||||
print("No se seleccionó archivo JSON procesado. Saliendo.", file=sys.stderr)
|
||||
root.destroy()
|
||||
|
||||
if input_json_file and project_root_dir:
|
||||
# Calcular directorio de salida final
|
||||
# <-- NUEVO: Leer nombre del directorio de salida desde la configuración -->
|
||||
configs = load_configuration()
|
||||
xml_parser_config = configs.get("XML Parser to SCL", {})
|
||||
cfg_scl_output_dirname = xml_parser_config.get("scl_output_dir", "scl_output") # Leer con default
|
||||
# <-- FIN NUEVO -->
|
||||
|
||||
final_output_dir = os.path.join(project_root_dir, cfg_scl_output_dirname) # Usar valor leído
|
||||
|
||||
print(f"(x3 - Standalone) Generando SCL/MD desde: '{os.path.relpath(input_json_file)}'")
|
||||
print(f"(x3 - Standalone) Directorio de salida final: '{os.path.relpath(final_output_dir)}'")
|
||||
print(f"(x3 - Standalone) Usando ruta raíz del proyecto: '{project_root_dir}' para buscar UDTs.")
|
||||
|
||||
# Asegurar que el directorio de salida final exista
|
||||
try:
|
||||
os.makedirs(final_output_dir, exist_ok=True)
|
||||
except OSError as e:
|
||||
print(
|
||||
f"Error Crítico (x3): No se pudo crear el directorio de salida '{final_output_dir}': {e}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
# sys.exit(1) # No usar sys.exit
|
||||
success = False # Marcar como fallo para evitar la llamada
|
||||
else:
|
||||
success = True # Marcar como éxito para proceder
|
||||
|
||||
if success: # Solo intentar si se pudo crear el directorio
|
||||
try:
|
||||
# Llamar a la función principal
|
||||
success = generate_scl_or_markdown(
|
||||
input_json_file, final_output_dir, project_root_dir
|
||||
)
|
||||
if success:
|
||||
print("\nGeneración de SCL/MD completada exitosamente.")
|
||||
else:
|
||||
# La función generate_scl_or_markdown ya imprime el error
|
||||
print(f"\nError durante la generación desde '{os.path.relpath(input_json_file)}'.", file=sys.stderr)
|
||||
# sys.exit(1) # No usar sys.exit
|
||||
except Exception as e:
|
||||
print(f"Error Crítico no manejado en x3: {e}", file=sys.stderr)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
# sys.exit(1) # No usar sys.exit
|
||||
else:
|
||||
# Mensajes de cancelación ya impresos si aplica
|
||||
pass
|
||||
|
|
|
@ -51,14 +51,14 @@ except ImportError:
|
|||
|
||||
|
||||
# --- Constantes ---
|
||||
SCL_OUTPUT_DIRNAME = "scl_output"
|
||||
XREF_SOURCE_SUBDIR = "source" # <-- NUEVO: Subdirectorio para fuentes MD
|
||||
CALL_XREF_FILENAME = "xref_calls_tree.md"
|
||||
DB_USAGE_XREF_FILENAME = "xref_db_usage_summary.md"
|
||||
PLC_TAG_XREF_FILENAME = "xref_plc_tags_summary.md"
|
||||
MAX_CALL_DEPTH = 5
|
||||
# SCL_OUTPUT_DIRNAME = "scl_output" # Se leerá de config
|
||||
# XREF_SOURCE_SUBDIR = "source" # Se leerá de config
|
||||
# CALL_XREF_FILENAME = "xref_calls_tree.md" # Se leerá de config
|
||||
# DB_USAGE_XREF_FILENAME = "xref_db_usage_summary.md" # Se leerá de config
|
||||
# PLC_TAG_XREF_FILENAME = "xref_plc_tags_summary.md" # Se leerá de config
|
||||
# MAX_CALL_DEPTH = 5 # Se leerá de config
|
||||
INDENT_STEP = " "
|
||||
MAX_USERS_LIST = 20
|
||||
# MAX_USERS_LIST = 20 # Se leerá de config
|
||||
|
||||
|
||||
# --- Funciones de Análisis (find_calls_in_scl, find_db_tag_usage, find_plc_tag_usage sin cambios) ---
|
||||
|
@ -223,13 +223,14 @@ def find_plc_tag_usage(scl_code, plc_tag_names_set):
|
|||
|
||||
|
||||
# <-- NUEVA FUNCION -->
|
||||
def copy_and_prepare_source_files(project_root_dir, xref_output_dir):
|
||||
def copy_and_prepare_source_files(project_root_dir, xref_output_dir, scl_output_dirname, xref_source_subdir):
|
||||
"""
|
||||
Copia archivos .scl y .md desde scl_output a xref_output/source,
|
||||
convirtiendo .scl a .md con formato de bloque de código.
|
||||
Usa los nombres de directorios pasados como argumentos.
|
||||
"""
|
||||
scl_source_dir = os.path.join(project_root_dir, SCL_OUTPUT_DIRNAME)
|
||||
md_target_dir = os.path.join(xref_output_dir, XREF_SOURCE_SUBDIR)
|
||||
scl_source_dir = os.path.join(project_root_dir, scl_output_dirname)
|
||||
md_target_dir = os.path.join(xref_output_dir, xref_source_subdir)
|
||||
|
||||
if not os.path.isdir(scl_source_dir):
|
||||
print(
|
||||
|
@ -304,7 +305,7 @@ def copy_and_prepare_source_files(project_root_dir, xref_output_dir):
|
|||
|
||||
# <-- MODIFICADO: get_scl_link -->
|
||||
def get_scl_link(
|
||||
block_name, block_entry, base_xref_dir
|
||||
block_name, block_entry, xref_source_subdir
|
||||
): # Ya no necesita project_root_dir
|
||||
"""
|
||||
Genera un enlace Markdown relativo al archivo .md correspondiente DENTRO de xref_output/source.
|
||||
|
@ -313,10 +314,10 @@ def get_scl_link(
|
|||
return f"`{block_name}`"
|
||||
|
||||
# El nombre del archivo destino siempre será .md
|
||||
md_filename = format_variable_name(block_name) + ".md"
|
||||
md_filename = format_variable_name(block_name) + ".md" # Asegurar que format_variable_name esté disponible
|
||||
|
||||
# La ruta siempre estará dentro del subdirectorio 'source'
|
||||
link_target_path = f"{XREF_SOURCE_SUBDIR}/{md_filename}"
|
||||
# La ruta siempre estará dentro del subdirectorio fuente de xref
|
||||
link_target_path = f"{xref_source_subdir}/{md_filename}"
|
||||
|
||||
# Codificar para URL/Markdown
|
||||
try:
|
||||
|
@ -331,7 +332,7 @@ def get_scl_link(
|
|||
|
||||
|
||||
# <-- MODIFICADO: build_call_tree_recursive (ya no necesita project_root_dir) -->
|
||||
def build_call_tree_recursive(
|
||||
def build_call_tree_recursive( # Añadido max_call_depth, xref_source_subdir
|
||||
current_node,
|
||||
call_graph,
|
||||
block_data,
|
||||
|
@ -339,6 +340,8 @@ def build_call_tree_recursive(
|
|||
visited_in_path,
|
||||
base_xref_dir,
|
||||
current_depth=0,
|
||||
max_call_depth=5,
|
||||
xref_source_subdir="source"
|
||||
):
|
||||
"""
|
||||
Función recursiva para construir el árbol de llamadas indentado CON ENLACES
|
||||
|
@ -347,10 +350,10 @@ def build_call_tree_recursive(
|
|||
indent = INDENT_STEP * current_depth
|
||||
block_entry = block_data.get(current_node)
|
||||
# Llamar a get_scl_link modificado
|
||||
node_link = get_scl_link(current_node, block_entry, base_xref_dir)
|
||||
node_link = get_scl_link(current_node, block_entry, xref_source_subdir)
|
||||
output_lines.append(f"{indent}- {node_link}")
|
||||
|
||||
if current_depth >= MAX_CALL_DEPTH:
|
||||
if current_depth >= max_call_depth:
|
||||
output_lines.append(
|
||||
f"{indent}{INDENT_STEP}[... Profundidad máxima alcanzada ...]"
|
||||
)
|
||||
|
@ -370,20 +373,22 @@ def build_call_tree_recursive(
|
|||
block_data,
|
||||
output_lines,
|
||||
visited_in_path.copy(),
|
||||
base_xref_dir,
|
||||
base_xref_dir, # base_xref_dir no se usa en la recursión, podría quitarse
|
||||
current_depth + 1,
|
||||
max_call_depth=max_call_depth, # Pasar parámetro
|
||||
xref_source_subdir=xref_source_subdir # Pasar parámetro
|
||||
)
|
||||
|
||||
|
||||
# <-- MODIFICADO: generate_call_tree_output (ya no necesita project_root_dir) -->
|
||||
def generate_call_tree_output(call_graph, block_data, base_xref_dir):
|
||||
def generate_call_tree_output(call_graph, block_data, base_xref_dir, max_call_depth, xref_source_subdir): # Añadido max_call_depth, xref_source_subdir
|
||||
"""
|
||||
Genera las líneas de texto para el archivo de árbol de llamadas CON ENLACES
|
||||
a los archivos .md en xref_output/source.
|
||||
"""
|
||||
output_lines = ["# Árbol de Referencias Cruzadas de Llamadas\n"]
|
||||
output_lines.append(f"(Profundidad máxima: {MAX_CALL_DEPTH})\n")
|
||||
root_nodes = sorted(
|
||||
root_nodes = sorted( # Encontrar OBs
|
||||
[
|
||||
name
|
||||
for name, data in block_data.items()
|
||||
|
@ -398,7 +403,7 @@ def generate_call_tree_output(call_graph, block_data, base_xref_dir):
|
|||
for ob_name in root_nodes:
|
||||
ob_entry = block_data.get(ob_name)
|
||||
ob_link = get_scl_link(
|
||||
ob_name, ob_entry, base_xref_dir
|
||||
ob_name, ob_entry, xref_source_subdir
|
||||
) # Llamar a get_scl_link modificado
|
||||
output_lines.append(f"\n### Iniciando desde: {ob_link}\n")
|
||||
build_call_tree_recursive(
|
||||
|
@ -407,8 +412,10 @@ def generate_call_tree_output(call_graph, block_data, base_xref_dir):
|
|||
block_data,
|
||||
output_lines,
|
||||
set(),
|
||||
base_xref_dir,
|
||||
base_xref_dir, # No se usa en recursión
|
||||
current_depth=0,
|
||||
max_call_depth=max_call_depth, # Pasar parámetro
|
||||
xref_source_subdir=xref_source_subdir # Pasar parámetro
|
||||
)
|
||||
|
||||
all_callers = set(call_graph.keys())
|
||||
|
@ -427,7 +434,7 @@ def generate_call_tree_output(call_graph, block_data, base_xref_dir):
|
|||
for block_name in unreached:
|
||||
block_entry = block_data.get(block_name)
|
||||
block_link = get_scl_link(
|
||||
block_name, block_entry, base_xref_dir
|
||||
block_name, block_entry, xref_source_subdir
|
||||
) # Llamar a get_scl_link modificado
|
||||
output_lines.append(f"- {block_link}")
|
||||
return output_lines
|
||||
|
@ -435,7 +442,7 @@ def generate_call_tree_output(call_graph, block_data, base_xref_dir):
|
|||
|
||||
# --- Funciones para Salida Resumida (generate_db_usage_summary_output, generate_plc_tag_summary_output SIN CAMBIOS) ---
|
||||
# (Se omiten por brevedad)
|
||||
def generate_db_usage_summary_output(db_users):
|
||||
def generate_db_usage_summary_output(db_users, max_users_list): # Añadido max_users_list
|
||||
"""Genera las líneas para el archivo Markdown de resumen de uso de DBs."""
|
||||
output_lines = ["# Resumen de Uso de DB Globales por Bloque\n\n"]
|
||||
if not db_users:
|
||||
|
@ -451,7 +458,7 @@ def generate_db_usage_summary_output(db_users):
|
|||
output_lines.append("- No utilizado directamente.\n")
|
||||
else:
|
||||
output_lines.append("Utilizado por:\n")
|
||||
display_users = users_list[:MAX_USERS_LIST]
|
||||
display_users = users_list[:max_users_list] # Usar parámetro
|
||||
remaining_count = len(users_list) - len(display_users)
|
||||
for user_block in display_users:
|
||||
output_lines.append(f"- `{user_block}`")
|
||||
|
@ -461,7 +468,7 @@ def generate_db_usage_summary_output(db_users):
|
|||
return output_lines
|
||||
|
||||
|
||||
def generate_plc_tag_summary_output(plc_tag_users):
|
||||
def generate_plc_tag_summary_output(plc_tag_users, max_users_list): # Añadido max_users_list
|
||||
"""Genera las líneas para el archivo Markdown de resumen de uso de PLC Tags."""
|
||||
output_lines = ["# Resumen de Uso de PLC Tags Globales por Bloque\n\n"]
|
||||
if not plc_tag_users:
|
||||
|
@ -477,7 +484,7 @@ def generate_plc_tag_summary_output(plc_tag_users):
|
|||
output_lines.append("- No utilizado.\n")
|
||||
else:
|
||||
output_lines.append("Utilizado por:\n")
|
||||
display_users = users_list[:MAX_USERS_LIST]
|
||||
display_users = users_list[:max_users_list] # Usar parámetro
|
||||
remaining_count = len(users_list) - len(display_users)
|
||||
for user_block in display_users:
|
||||
output_lines.append(f"- `{user_block}`")
|
||||
|
@ -488,20 +495,33 @@ def generate_plc_tag_summary_output(plc_tag_users):
|
|||
|
||||
|
||||
# --- Función Principal (MODIFICADA para llamar a copy_and_prepare_source_files) ---
|
||||
def generate_cross_references(project_root_dir, output_dir):
|
||||
def generate_cross_references(
|
||||
project_root_dir,
|
||||
output_dir,
|
||||
scl_output_dirname,
|
||||
xref_source_subdir,
|
||||
call_xref_filename,
|
||||
db_usage_xref_filename,
|
||||
plc_tag_xref_filename,
|
||||
max_call_depth,
|
||||
max_users_list
|
||||
):
|
||||
"""
|
||||
Genera archivos de referencias cruzadas y prepara archivos fuente (.md)
|
||||
para visualización en Obsidian.
|
||||
Utiliza los parámetros de configuración pasados como argumentos.
|
||||
"""
|
||||
print(f"--- Iniciando Generación de Referencias Cruzadas y Fuentes MD (x4) ---")
|
||||
print(f"Buscando archivos JSON procesados en: {project_root_dir}")
|
||||
print(f"Directorio de salida XRef: {output_dir}")
|
||||
print(f"Directorio fuente SCL/MD: {scl_output_dirname}")
|
||||
print(f"Subdirectorio fuentes MD para XRef: {xref_source_subdir}")
|
||||
output_dir_abs = os.path.abspath(output_dir)
|
||||
|
||||
# <-- NUEVO: Crear directorio y preparar archivos fuente ANTES de generar XRefs -->
|
||||
copy_and_prepare_source_files(project_root_dir, output_dir_abs)
|
||||
# Pasar los nombres de directorios leídos de la config
|
||||
copy_and_prepare_source_files(project_root_dir, output_dir_abs, scl_output_dirname, xref_source_subdir)
|
||||
# <-- FIN NUEVO -->
|
||||
|
||||
json_files = glob.glob(
|
||||
os.path.join(project_root_dir, "**", "*_processed.json"), recursive=True
|
||||
)
|
||||
|
@ -588,14 +608,14 @@ def generate_cross_references(project_root_dir, output_dir):
|
|||
|
||||
# 3. Generar Archivos de Salida XRef (MODIFICADO para usar la nueva función de árbol)
|
||||
os.makedirs(output_dir_abs, exist_ok=True)
|
||||
call_xref_path = os.path.join(output_dir_abs, CALL_XREF_FILENAME)
|
||||
db_usage_xref_path = os.path.join(output_dir_abs, DB_USAGE_XREF_FILENAME)
|
||||
plc_tag_xref_path = os.path.join(output_dir_abs, PLC_TAG_XREF_FILENAME)
|
||||
call_xref_path = os.path.join(output_dir_abs, call_xref_filename) # Usar parámetro
|
||||
db_usage_xref_path = os.path.join(output_dir_abs, db_usage_xref_filename) # Usar parámetro
|
||||
plc_tag_xref_path = os.path.join(output_dir_abs, plc_tag_xref_filename) # Usar parámetro
|
||||
|
||||
print(f"Generando ÁRBOL XRef de llamadas en: {call_xref_path}")
|
||||
try:
|
||||
# <-- MODIFICADO: Llamar a la nueva función sin project_root_dir -->
|
||||
call_tree_lines = generate_call_tree_output(
|
||||
call_tree_lines = generate_call_tree_output( # Pasar parámetros
|
||||
call_graph, block_data, output_dir_abs
|
||||
)
|
||||
with open(call_xref_path, "w", encoding="utf-8") as f:
|
||||
|
@ -609,7 +629,7 @@ def generate_cross_references(project_root_dir, output_dir):
|
|||
# Generar Resumen de Uso de DB (sin cambios aquí)
|
||||
print(f"Generando RESUMEN XRef de uso de DBs en: {db_usage_xref_path}")
|
||||
try:
|
||||
db_summary_lines = generate_db_usage_summary_output(db_users)
|
||||
db_summary_lines = generate_db_usage_summary_output(db_users, max_users_list) # Pasar parámetro
|
||||
with open(db_usage_xref_path, "w", encoding="utf-8") as f:
|
||||
[f.write(line + "\n") for line in db_summary_lines]
|
||||
except Exception as e:
|
||||
|
@ -622,7 +642,7 @@ def generate_cross_references(project_root_dir, output_dir):
|
|||
# Generar Resumen de Uso de PLC Tags (sin cambios aquí)
|
||||
print(f"Generando RESUMEN XRef de uso de PLC Tags en: {plc_tag_xref_path}")
|
||||
try:
|
||||
plc_tag_lines = generate_plc_tag_summary_output(plc_tag_users)
|
||||
plc_tag_lines = generate_plc_tag_summary_output(plc_tag_users, max_users_list) # Pasar parámetro
|
||||
with open(plc_tag_xref_path, "w", encoding="utf-8") as f:
|
||||
[f.write(line + "\n") for line in plc_tag_lines]
|
||||
except Exception as e:
|
||||
|
@ -638,37 +658,53 @@ def generate_cross_references(project_root_dir, output_dir):
|
|||
|
||||
# --- Punto de Entrada (sin cambios) ---
|
||||
if __name__ == "__main__":
|
||||
print("(x4 - Standalone) Ejecutando generación de referencias cruzadas...")
|
||||
|
||||
# Cargar configuración para obtener rutas
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Genera refs cruzadas y prepara archivos fuente MD para Obsidian."
|
||||
)
|
||||
parser.add_argument("project_root_dir", help="Ruta dir raíz proyecto XML.")
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--output",
|
||||
help="Directorio para guardar salida XRef (incluyendo subdir 'source').",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
if not os.path.isdir(args.project_root_dir):
|
||||
print(
|
||||
f"Error: Dir proyecto no existe: '{args.project_root_dir}'", file=sys.stderr
|
||||
)
|
||||
sys.exit(1)
|
||||
if not args.output:
|
||||
print(
|
||||
"Error: Se requiere el argumento -o/--output para especificar el directorio de salida XRef.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
output_destination = args.output
|
||||
success = generate_cross_references(args.project_root_dir, output_destination)
|
||||
if success:
|
||||
print(
|
||||
f"Archivos XRef y fuentes MD generados en: {os.path.abspath(output_destination)}"
|
||||
)
|
||||
sys.exit(0)
|
||||
# Acceder a la configuración específica del grupo
|
||||
group_config = configs.get("level2", {})
|
||||
|
||||
# Leer parámetros con valores por defecto (usando los defaults del esquema como guía)
|
||||
# Parámetros necesarios para x4
|
||||
cfg_scl_output_dirname = group_config.get("scl_output_dir", "scl_output")
|
||||
cfg_xref_output_dirname = group_config.get("xref_output_dir", "xref_output")
|
||||
cfg_xref_source_subdir = group_config.get("xref_source_subdir", "source")
|
||||
cfg_call_xref_filename = group_config.get("call_xref_filename", "xref_calls_tree.md")
|
||||
cfg_db_usage_xref_filename = group_config.get("db_usage_xref_filename", "xref_db_usage_summary.md")
|
||||
cfg_plc_tag_xref_filename = group_config.get("plc_tag_xref_filename", "xref_plc_tags_summary.md")
|
||||
cfg_max_call_depth = group_config.get("max_call_depth", 5)
|
||||
cfg_max_users_list = group_config.get("max_users_list", 20)
|
||||
|
||||
# Calcular rutas
|
||||
if not working_directory:
|
||||
print("Error: 'working_directory' no encontrado en la configuración.", file=sys.stderr)
|
||||
# No usamos sys.exit(1)
|
||||
else:
|
||||
print("Hubo errores durante la generación de refs cruzadas.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
# Calcular rutas basadas en la configuración
|
||||
plc_subdir_name = "PLC" # Asumir nombre estándar
|
||||
project_root_dir = os.path.join(working_directory, plc_subdir_name)
|
||||
xref_output_dir = os.path.join(project_root_dir, cfg_xref_output_dirname) # Usar nombre de dir leído
|
||||
|
||||
if not os.path.isdir(project_root_dir):
|
||||
print(f"Error: Directorio del proyecto '{project_root_dir}' no encontrado.", file=sys.stderr)
|
||||
else:
|
||||
# Llamar a la función principal
|
||||
success = generate_cross_references(
|
||||
project_root_dir,
|
||||
xref_output_dir,
|
||||
cfg_scl_output_dirname,
|
||||
cfg_xref_source_subdir,
|
||||
cfg_call_xref_filename,
|
||||
cfg_db_usage_xref_filename,
|
||||
cfg_plc_tag_xref_filename,
|
||||
cfg_max_call_depth,
|
||||
cfg_max_users_list
|
||||
)
|
||||
|
||||
if success:
|
||||
print("\n(x4 - Standalone) Proceso completado exitosamente.")
|
||||
else:
|
||||
print("\n(x4 - Standalone) Proceso finalizado con errores.", file=sys.stderr)
|
||||
|
|
|
@ -19,26 +19,28 @@ from backend.script_utils import load_configuration
|
|||
|
||||
# --- Constantes ---
|
||||
# Nombre del archivo de salida por defecto (se creará en el directorio raíz del proyecto)
|
||||
AGGREGATED_FILENAME = "full_project_representation.md"
|
||||
# AGGREGATED_FILENAME = "full_project_representation.md" # Se leerá de config
|
||||
# Directorio donde x4 guarda sus salidas (relativo al directorio raíz del proyecto)
|
||||
XREF_OUTPUT_SUBDIR = "xref_output"
|
||||
# XREF_OUTPUT_SUBDIR = "xref_output" # Se leerá de config
|
||||
# SCL_OUTPUT_DIRNAME = "scl_output" # Se leerá de config
|
||||
|
||||
def aggregate_files(project_root_dir, output_filepath):
|
||||
def aggregate_outputs(project_root_dir, output_filepath, scl_output_dirname, xref_output_dirname): # Añadido scl_output_dirname, xref_output_dirname
|
||||
"""
|
||||
Busca archivos .scl y .md generados y los agrega en un único archivo Markdown.
|
||||
"""
|
||||
print(f"--- Iniciando Agregación de Archivos (x5) ---")
|
||||
print(f"Leyendo desde directorios: '{scl_output_dirname}' y '{xref_output_dirname}' (relativos a la raíz)")
|
||||
print(f"Directorio Raíz del Proyecto: {project_root_dir}")
|
||||
print(f"Archivo de Salida: {output_filepath}")
|
||||
|
||||
# Patrones para buscar archivos generados
|
||||
# Buscamos .scl en cualquier subdirectorio (generados por x3 junto a los XML)
|
||||
scl_pattern = os.path.join(project_root_dir, "**", "*.scl")
|
||||
# Buscamos .md en cualquier subdirectorio (UDT/TagTable generados por x3)
|
||||
# Buscamos .md en cualquier subdirectorio (UDT/TagTable generados por x3, XRef por x4)
|
||||
md_pattern_general = os.path.join(project_root_dir, "**", "*.md")
|
||||
# Buscamos .md específicamente en el directorio de salida de x4
|
||||
xref_dir = os.path.join(project_root_dir, XREF_OUTPUT_SUBDIR)
|
||||
# xref_pattern = os.path.join(xref_dir, "*.md") # No es necesario, el general los incluye
|
||||
# Directorio de salida de x4
|
||||
xref_dir_abs = os.path.join(project_root_dir, xref_output_dirname)
|
||||
scl_dir_abs = os.path.join(project_root_dir, scl_output_dirname)
|
||||
|
||||
print(f"Buscando archivos SCL con patrón: {scl_pattern}")
|
||||
print(f"Buscando archivos MD con patrón: {md_pattern_general}")
|
||||
|
@ -46,16 +48,18 @@ def aggregate_files(project_root_dir, output_filepath):
|
|||
scl_files = glob.glob(scl_pattern, recursive=True)
|
||||
md_files = glob.glob(md_pattern_general, recursive=True)
|
||||
|
||||
# Filtrar los archivos de salida del propio x5 y los XRef para que no se incluyan dos veces
|
||||
# si el patrón general los captura y están en el directorio raíz
|
||||
# Filtrar los archivos para asegurar que provienen de los directorios esperados
|
||||
# y excluir el archivo de salida del propio x5.
|
||||
output_filename_base = os.path.basename(output_filepath)
|
||||
|
||||
scl_files_filtered = [f for f in scl_files if os.path.dirname(f).startswith(scl_dir_abs)]
|
||||
md_files_filtered = [
|
||||
f for f in md_files
|
||||
if os.path.basename(f) != output_filename_base # Excluir el archivo de salida
|
||||
# No es necesario excluir los XRef explícitamente si están en su subdir
|
||||
# and XREF_OUTPUT_SUBDIR not in os.path.relpath(f, project_root_dir).split(os.sep)
|
||||
and (os.path.dirname(f).startswith(scl_dir_abs) or os.path.dirname(f).startswith(xref_dir_abs)) # Incluir MD de scl_output y xref_output
|
||||
]
|
||||
|
||||
all_files = sorted(scl_files_filtered + md_files_filtered) # Combinar y ordenar alfabéticamente
|
||||
|
||||
all_files = sorted(scl_files + md_files_filtered) # Combinar y ordenar alfabéticamente
|
||||
|
||||
|
@ -107,44 +111,44 @@ def aggregate_files(project_root_dir, output_filepath):
|
|||
traceback.print_exc(file=sys.stderr)
|
||||
return False
|
||||
|
||||
|
||||
# --- Punto de Entrada ---
|
||||
if __name__ == "__main__":
|
||||
print("(x5 - Standalone) Ejecutando agregación de salidas...")
|
||||
|
||||
# Cargar configuración para obtener rutas
|
||||
configs = load_configuration()
|
||||
working_directory = configs.get("working_directory")
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Agrega archivos .scl y .md generados en un único archivo Markdown."
|
||||
)
|
||||
parser.add_argument(
|
||||
"project_root_dir",
|
||||
help="Ruta al directorio raíz del proyecto XML (donde se buscarán los archivos generados)."
|
||||
)
|
||||
parser.add_argument(
|
||||
"-o", "--output",
|
||||
help=f"Ruta completa para el archivo Markdown agregado (por defecto: '{AGGREGATED_FILENAME}' en project_root_dir)."
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
# Acceder a la configuración específica del grupo
|
||||
group_config = configs.get("level2", {})
|
||||
|
||||
# Validar directorio de entrada
|
||||
if not os.path.isdir(args.project_root_dir):
|
||||
print(f"Error: El directorio del proyecto no existe: '{args.project_root_dir}'", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Determinar ruta de salida
|
||||
output_file = args.output
|
||||
if not output_file:
|
||||
output_file = os.path.join(args.project_root_dir, AGGREGATED_FILENAME)
|
||||
# Leer parámetros con valores por defecto (usando los defaults del esquema como guía)
|
||||
# Parámetros necesarios para x5
|
||||
cfg_scl_output_dirname = group_config.get("scl_output_dir", "scl_output")
|
||||
cfg_xref_output_dirname = group_config.get("xref_output_dir", "xref_output")
|
||||
cfg_aggregated_filename = group_config.get("aggregated_filename", "full_project_representation.md")
|
||||
if not working_directory:
|
||||
print("Error: 'working_directory' no encontrado en la configuración.", file=sys.stderr)
|
||||
else:
|
||||
# Asegurarse de que el directorio de salida exista si se especifica una ruta completa
|
||||
output_dir = os.path.dirname(output_file)
|
||||
if output_dir and not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
# Calcular rutas basadas en la configuración
|
||||
plc_subdir_name = "PLC" # Asumir nombre estándar
|
||||
project_root_dir = os.path.join(working_directory, plc_subdir_name)
|
||||
# El archivo agregado va al working_directory original
|
||||
output_agg_file = os.path.join(working_directory, cfg_aggregated_filename) # Usar nombre de archivo leído
|
||||
|
||||
if not os.path.isdir(project_root_dir):
|
||||
print(f"Error: Directorio del proyecto '{project_root_dir}' no encontrado.", file=sys.stderr)
|
||||
else:
|
||||
# Llamar a la función principal
|
||||
# Pasar los nombres de directorios leídos
|
||||
success = aggregate_outputs(
|
||||
project_root_dir,
|
||||
output_agg_file,
|
||||
cfg_scl_output_dirname,
|
||||
cfg_xref_output_dirname)
|
||||
|
||||
# Llamar a la función principal
|
||||
success = aggregate_files(args.project_root_dir, output_file)
|
||||
|
||||
if success:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
if success:
|
||||
print("\n(x5 - Standalone) Proceso completado exitosamente.")
|
||||
else:
|
||||
print("\n(x5 - Standalone) Proceso finalizado con errores.", file=sys.stderr)
|
||||
|
|
925
data/log.txt
925
data/log.txt
|
@ -1,925 +0,0 @@
|
|||
[15:12:33] Iniciando ejecución de x0_main.py en C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport...
|
||||
[15:12:37] Advertencia: No se pudo importar 'format_variable_name' desde processors.processor_utils.
|
||||
[15:12:37] Usando una implementación local básica.
|
||||
[15:12:37] INFO: format_variable_name importado desde generators.generator_utils
|
||||
[15:12:37] ======================================== LOG START ========================================
|
||||
[15:12:37] Directorio de trabajo base configurado: 'C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport'
|
||||
[15:12:37] Buscando archivos XML recursivamente en el subdirectorio: 'C:\Trabajo\SIDEL\06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)\Reporte\IOExport\PLC'
|
||||
[15:12:37] Se encontraron 408 archivos XML para procesar:
|
||||
[15:12:37] - PLC\PlcDataTypes\AnalogInstrument.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\CIP_Link_Type.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\CIP_Simple_Type.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\CIP_Step_Type.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\CIP_WaitEvent_Type.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\Device.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\DigitalInstrument.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\FunctionButton.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\PID.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\QCO Phase.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\QCO Spare.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\QCO Timer.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\QCO Timer_Array_1.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\Recipe_Prod.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\ReportCIPSimpleData.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\TADDR_PAR.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\TCON_PAR.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\TCON_PAR_LF.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\Tipo di dati utente_1.xml
|
||||
[15:12:37] - PLC\PlcDataTypes\Tipo di dati utente_2.xml
|
||||
[15:12:37] - PLC\PlcTags\IO Not in Hardware\InputsMaster.xml
|
||||
[15:12:37] - PLC\PlcTags\IO Not in Hardware\OutputsMaster.xml
|
||||
[15:12:37] - PLC\PlcTags\Inputs.xml
|
||||
[15:12:37] - PLC\PlcTags\Memories.xml
|
||||
[15:12:37] - PLC\PlcTags\Outputs.xml
|
||||
[15:12:37] - PLC\PlcTags\OutputsFesto.xml
|
||||
[15:12:37] - PLC\PlcTags\Tabella delle variabili standard.xml
|
||||
[15:12:37] - PLC\PlcTags\Tabella delle variabili_1.xml
|
||||
[15:12:37] - PLC\PlcTags\Tabella delle variabili_2.xml
|
||||
[15:12:37] - PLC\PlcTags\Timers_Counters.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia MainRoutine.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profibus.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfibusData.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profinet.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfinetData.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Baialage.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlendFill StartUp_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_All Auto.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_CIPModeInit.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_InitErrors.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_MFM Command.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_MachineInit.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_ManualActive.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_ProdModeInit.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_ResetSPWord.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl_UpdatePWord.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderCtrl__Main.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_Monitor.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_PresRelea.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_ReadAnIn.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveInteg.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveValve.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl_WriteAnOu.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPIDCtrl__Loop.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_ActualRecipe.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_BlendingFault.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_FlowMeterErro.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_NextRecipe.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_PIDFFCalc.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_PIDInitParam.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_PIDResInteg.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID_PIDSPCalc.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID__Main.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderPID__Main_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRinse.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRinse_Done.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun_MeasFilSpeed.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun_MeasFil_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun_ProdTime.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun_SelectConstan.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun_Stopping.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BlenderRun__Control.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blender_Constants.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blender_Procedure Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blender_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blender_Variables_Pers.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blocco_1.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Blocco_dati_Test.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Block_compare.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Block_move.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BrixTracking_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BrixTracking_ProdSamples.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\BrixTracking_SampleTime.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIP CVQ.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIP FlipFlop.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_ExecSimpleCIP.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_ExecStep.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_ProgInizialize.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_ProgStepDown.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_ProgStepUp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPLocal_WaitEvent_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPMain.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPMain_Flood.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPMain_Total Drain.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#01.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#02.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#03.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#04.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#05.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#06.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#07.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#08.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#09.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#10.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#11.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#12.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#13.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#14.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#15.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#16.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#17.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#18.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#19.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#20.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#21.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#22.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#23.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#24.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#25.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#26.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#27.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#28.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#29.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipe#30.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipeManagement.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPRecipeManagement_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPReportDB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIPReportManager.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIP_Program_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CIP_SimpleProgr_Init.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2 Solubility.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2EqPress.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2InjPressure.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2Tracking.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2Tracking_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2Tracking_ProdSamples.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CO2Tracking_SampleTime.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\COMPLETE RESTART.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CPU_DP Global Diag.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CTRLCoolingSystem.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CVQ_1p7_8_Perc.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CYC_INT5.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\CarboWaterLine_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Cetrifugal_Head.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Clock Signal.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Co2_Counters.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Co2_Counters_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\DELETE.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\DeairCO2TempComp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\DeaireationValve.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Deaireator StartUp_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Default_SupervisionDB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Delay.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\DeltaP.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\EQ_STRNG.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FW_DRand.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FeedForward.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FillerControl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FillerControl_DataSend.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Filler_Head_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FillingTime.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FirstProduction_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Flow_To_Press_Loss.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Freq_To_mmH2O.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\FrictionLoss.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\GLOBAL_DIAG_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\GetProdBrixCO2_Anal_Inpt.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI CPU_DP Diag.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI Key User.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Alarms.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Blender_Parameters.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Device.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Digital.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_IO_Showing.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Instrument.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Local_CIP_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_PID.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Recipe_Edit.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Recipe_Name.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Refrige_IO_Showing.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Service.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Variables_Cmd.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\HMI_Variables_Status.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\IO_FLT1.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ISOonTCP_or_TCP_Protocol.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ISOonTCP_or_TCP_Protocol_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic CIP DI.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic CIPRoom.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic Filler DI.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic Filler.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic MainData.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic MainRoutine.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic Mixer DI.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic ProdRoom.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Communic Product Room DI.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC DataIn.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC DataOut.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC Exchange MainRoutine.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ITC MainRoutine.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Input.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Input_CheckFlowMetersSta.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Input_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Input_DigitalCtrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Input_DigitalScanner.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Instrument_Scanner.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Integral.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Interlocking_Panel.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Interlocking_Panel_1.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Interlocking_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Key Read & Write Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Key Read & Write.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\LIMIT_I.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\LIMIT_R.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\LowPassFilter.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MFMAnalogValues.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MFMAnalogValues_Totalize.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MFM_Analog_Value_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MOD_ERR.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MSE Slope.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Machine_Co2_Cons.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Maselli_PA_Control.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Maselli_PA_Ctrl_Read.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Maselli_PA_Ctrl_Transfer.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Maselli_PA_Ctrl_Write.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Maselli_PA_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MaxCarboCO2 Vol.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\MessageScroll.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ModValveFault.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ONS_R.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Output.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Output_AnalogValueToHMI.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Output_CO2InjPress.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID MAIN Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PIDControl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_Filling_Head.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_Filling_Head_Calc.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_Filling_Head_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM301.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM301_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM303.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM303_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM304.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMM304_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMP302.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RMP302_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVM301.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVM301_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVM319_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVM319_PRD.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVN302.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVN302_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVP303.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVP303_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVS318.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_RVS318_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PID_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPM O2.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPM303_VFC_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPM305_VFC_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPM307_VFC_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPN301_VFC_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PPP302_VFC_Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Pneumatic Valve Ctrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Pneumatic Valve Fault DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Pneumatic Valve Fault.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Procedure.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureBlendFill StartUp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureBrixTracking.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureCarboWaterLine.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureDeaireator StartUp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureFirstProduction.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureProdBrixRecovery.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureProdTankDrain.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureProdTankRunOut.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureSyrup RunOut.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureSyrupLineMFMPrep.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProcedureSyrupMFMStartUp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Procedure_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Prod Tank Drain_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Prod Tank PressCtrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Prod Tank RunOut_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProdBrixRecovery_BrixCal.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProdBrixRecovery_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProdReportDB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProdReportManager.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductAvailable.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductLiterInTank.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductPipeDrain.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductPipeDrain_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductPipeRunOut.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductPipeRunOut_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductQuality.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ProductQuality_Messages.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Profibus Network.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Profibus_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Programming error.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\PumpsControl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\QCO Monitor.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\QCO Timing DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\RACK_FLT.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\REPLACE_Mod.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ReadAnalogIn.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ReadAnalogIn_Fault_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #01.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #02.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #03.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #04.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #05.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #06.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #07.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #08.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #09.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #10.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #11.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #12.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #13.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #14.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #15.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #16.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #17.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #18.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #19.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #20.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #21.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #22.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #23.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #24.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #25.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #26.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #27.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #28.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #29.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #30.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #31.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #32.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #33.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #34.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #35.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #36.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #37.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #38.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #39.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #40.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #41.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #42.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #43.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #44.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #45.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #46.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #47.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #48.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #49.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Recipe #50.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\RecipeCalculation.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\RecipeEditDataSave.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\RecipeManagement - Prod.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\RecipeManagement_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SEL_I.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SEL_R.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SLIM_Block.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SLIM_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Safeties.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SelCheckBrixSource.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Sel_Check_Brix_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Signal Gen.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Signal_Gen_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SlewLimit.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SpeedAdjust.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Statistical_Analisys.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SubCarb.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SubCarb_DB.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SyrBrix Autocorrection.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SyrBrix_SyrupCorrPerc.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Syrup Line MFM Prep_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Syrup MFM StartUp_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Syrup Rinse QCO_Seq.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SyrupDensity.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SyrupRoomCtrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\SyrupRoomCtrl_UpdateVal.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\System_RunOut_Variables.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\System_Run_Out.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\System_Run_Out_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\T_Timer.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\TankLevel.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\TankLevelToHeight.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\Time error interrupt.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\VacuumCtrl.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\ValveFlow.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\WaterDensity.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\WritePeripheral.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\_CYCL_EXC.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\_StepMove.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\_StepMove_Test.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Control.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Ctrl_Parameters.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Ctrl_Read.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Ctrl_Transfer.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Ctrl_Write.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_PA_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Control.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Ctrl_Param.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Ctrl_Read.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Ctrl_Trans.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Ctrl_Write.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPDS_SYR_PA_Data.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mPPM303StartUpRamp.xml
|
||||
[15:12:37] - PLC\ProgramBlocks_XML\mmH2O_TO_Freq.xml
|
||||
[15:12:37] --- Fase 1: Procesamiento Individual (x1, x2, x3) ---
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\AnalogInstrument.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\AnalogInstrument.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\AnalogInstrument.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\AnalogInstrument.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\CIP_Link_Type.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\CIP_Link_Type.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\CIP_Link_Type.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\CIP_Link_Type.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\CIP_Simple_Type.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\CIP_Simple_Type.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\CIP_Simple_Type.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\CIP_Simple_Type.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\CIP_Step_Type.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\CIP_Step_Type.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\CIP_Step_Type.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\CIP_Step_Type.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\CIP_WaitEvent_Type.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\CIP_WaitEvent_Type.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\CIP_WaitEvent_Type.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\CIP_WaitEvent_Type.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\Device.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\Device.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\Device.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\Device.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\DigitalInstrument.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\DigitalInstrument.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\DigitalInstrument.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\DigitalInstrument.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\FunctionButton.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\FunctionButton.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\FunctionButton.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\FunctionButton.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\PID.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\PID.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\PID.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\PID.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\QCO Phase.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\QCO Phase.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\QCO Phase.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\QCO Phase.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\QCO Spare.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\QCO Spare.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\QCO Spare.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\QCO Spare.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\QCO Timer.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\QCO Timer.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\QCO Timer.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\QCO Timer.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\QCO Timer_Array_1.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\QCO Timer_Array_1.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\QCO Timer_Array_1.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\QCO Timer_Array_1.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\Recipe_Prod.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\Recipe_Prod.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\Recipe_Prod.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\Recipe_Prod.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\ReportCIPSimpleData.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\ReportCIPSimpleData.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\ReportCIPSimpleData.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\ReportCIPSimpleData.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\TADDR_PAR.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\TADDR_PAR.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\TADDR_PAR.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\TADDR_PAR.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\TCON_PAR.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\TCON_PAR.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\TCON_PAR.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\TCON_PAR.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\TCON_PAR_LF.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\TCON_PAR_LF.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\TCON_PAR_LF.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\TCON_PAR_LF.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\Tipo di dati utente_1.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\Tipo di dati utente_1.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:37] --- SALTANDO x2 para: PLC\PlcDataTypes\Tipo di dati utente_1.xml (razón anterior)
|
||||
[15:12:37] --- SALTANDO x3 para: PLC\PlcDataTypes\Tipo di dati utente_1.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:37] --- Procesando archivo: PLC\PlcDataTypes\Tipo di dati utente_2.xml ---
|
||||
[15:12:37] --- SALTANDO x1 para: PLC\PlcDataTypes\Tipo di dati utente_2.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcDataTypes\Tipo di dati utente_2.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcDataTypes\Tipo di dati utente_2.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\IO Not in Hardware\InputsMaster.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\IO Not in Hardware\InputsMaster.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\IO Not in Hardware\InputsMaster.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\IO Not in Hardware\InputsMaster.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\IO Not in Hardware\OutputsMaster.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\IO Not in Hardware\OutputsMaster.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\IO Not in Hardware\OutputsMaster.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\IO Not in Hardware\OutputsMaster.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Inputs.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Inputs.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Inputs.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Inputs.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Memories.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Memories.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Memories.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Memories.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Outputs.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Outputs.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Outputs.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Outputs.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\OutputsFesto.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\OutputsFesto.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\OutputsFesto.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\OutputsFesto.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Tabella delle variabili standard.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Tabella delle variabili standard.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Tabella delle variabili standard.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Tabella delle variabili standard.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Tabella delle variabili_1.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Tabella delle variabili_1.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Tabella delle variabili_1.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Tabella delle variabili_1.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Tabella delle variabili_2.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Tabella delle variabili_2.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Tabella delle variabili_2.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Tabella delle variabili_2.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\PlcTags\Timers_Counters.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\PlcTags\Timers_Counters.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\PlcTags\Timers_Counters.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\PlcTags\Timers_Counters.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia MainRoutine.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia MainRoutine.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia MainRoutine.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia MainRoutine.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profibus.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profibus.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profibus.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profibus.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfibusData.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfibusData.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfibusData.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfibusData.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profinet.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profinet.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profinet.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia Profinet.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfinetData.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfinetData.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfinetData.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\40_10_GNS_PLCdia Main\GNS PLCdia ProfinetData.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\Baialage.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Baialage.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Baialage.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Baialage.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlendFill StartUp_Seq.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlendFill StartUp_Seq.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlendFill StartUp_Seq.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlendFill StartUp_Seq.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_All Auto.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_All Auto.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_All Auto.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_All Auto.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_CIPModeInit.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_CIPModeInit.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_CIPModeInit.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_CIPModeInit.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_InitErrors.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_InitErrors.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_InitErrors.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_InitErrors.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_MFM Command.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_MFM Command.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_MFM Command.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_MFM Command.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_MachineInit.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_MachineInit.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_MachineInit.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_MachineInit.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_ManualActive.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_ManualActive.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_ManualActive.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_ManualActive.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_ProdModeInit.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_ProdModeInit.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_ProdModeInit.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_ProdModeInit.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_ResetSPWord.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_ResetSPWord.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_ResetSPWord.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_ResetSPWord.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl_UpdatePWord.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl_UpdatePWord.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl_UpdatePWord.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl_UpdatePWord.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderCtrl__Main.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderCtrl__Main.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderCtrl__Main.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderCtrl__Main.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_Monitor.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_Monitor.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_Monitor.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_Monitor.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_PresRelea.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_PresRelea.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_PresRelea.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_PresRelea.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_ReadAnIn.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_ReadAnIn.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_ReadAnIn.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_ReadAnIn.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveInteg.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveInteg.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveInteg.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveInteg.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveValve.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveValve.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveValve.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_SaveValve.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl_WriteAnOu.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_WriteAnOu.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_WriteAnOu.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl_WriteAnOu.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPIDCtrl__Loop.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl__Loop.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl__Loop.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPIDCtrl__Loop.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_ActualRecipe.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_ActualRecipe.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_ActualRecipe.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_ActualRecipe.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_BlendingFault.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_BlendingFault.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_BlendingFault.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_BlendingFault.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_FlowMeterErro.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_FlowMeterErro.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_FlowMeterErro.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_FlowMeterErro.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_NextRecipe.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_NextRecipe.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_NextRecipe.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_NextRecipe.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_PIDFFCalc.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_PIDFFCalc.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_PIDFFCalc.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_PIDFFCalc.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_PIDInitParam.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_PIDInitParam.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_PIDInitParam.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_PIDInitParam.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_PIDResInteg.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_PIDResInteg.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_PIDResInteg.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_PIDResInteg.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID_PIDSPCalc.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID_PIDSPCalc.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID_PIDSPCalc.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID_PIDSPCalc.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID__Main.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID__Main.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID__Main.xml (razón anterior)
|
||||
[15:12:38] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderPID__Main.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:12:38] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderPID__Main_Data.xml ---
|
||||
[15:12:38] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderPID__Main_Data.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:12:38] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderPID__Main_Data.xml (razón anterior)
|
||||
[15:12:38] --- Running x3_generate_scl.py with arguments: ['PLC\\ProgramBlocks_XML\\BlenderPID__Main_Data.xml', 'PLC'] ---
|
||||
[15:17:56] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRinse.xml ---
|
||||
[15:17:56] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRinse.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:17:56] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRinse.xml (razón anterior)
|
||||
[15:17:56] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRinse.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:17:56] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRinse_Done.xml ---
|
||||
[15:17:56] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRinse_Done.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:17:56] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRinse_Done.xml (razón anterior)
|
||||
[15:17:56] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRinse_Done.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:17:56] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun_MeasFilSpeed.xml ---
|
||||
[15:17:56] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun_MeasFilSpeed.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:17:56] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun_MeasFilSpeed.xml (razón anterior)
|
||||
[15:17:56] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRun_MeasFilSpeed.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:17:56] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun_MeasFil_Data.xml ---
|
||||
[15:17:56] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun_MeasFil_Data.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:17:56] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun_MeasFil_Data.xml (razón anterior)
|
||||
[15:17:56] --- Running x3_generate_scl.py with arguments: ['PLC\\ProgramBlocks_XML\\BlenderRun_MeasFil_Data.xml', 'PLC'] ---
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun_ProdTime.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun_ProdTime.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun_ProdTime.xml (razón anterior)
|
||||
[15:18:13] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRun_ProdTime.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun_SelectConstan.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun_SelectConstan.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun_SelectConstan.xml (razón anterior)
|
||||
[15:18:13] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRun_SelectConstan.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun_Stopping.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun_Stopping.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun_Stopping.xml (razón anterior)
|
||||
[15:18:13] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRun_Stopping.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\BlenderRun__Control.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BlenderRun__Control.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BlenderRun__Control.xml (razón anterior)
|
||||
[15:18:13] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BlenderRun__Control.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\Blender_Constants.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blender_Constants.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blender_Constants.xml (razón anterior)
|
||||
[15:18:13] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Blender_Constants.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:13] --- Procesando archivo: PLC\ProgramBlocks_XML\Blender_Procedure Data.xml ---
|
||||
[15:18:13] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blender_Procedure Data.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:13] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blender_Procedure Data.xml (razón anterior)
|
||||
[15:18:13] --- Running x3_generate_scl.py with arguments: ['PLC\\ProgramBlocks_XML\\Blender_Procedure Data.xml', 'PLC'] ---
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Blender_Variables.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blender_Variables.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blender_Variables.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Blender_Variables.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Blender_Variables_Pers.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blender_Variables_Pers.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blender_Variables_Pers.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Blender_Variables_Pers.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Blocco_1.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blocco_1.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blocco_1.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Blocco_1.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Blocco_dati_Test.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Blocco_dati_Test.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Blocco_dati_Test.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Blocco_dati_Test.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Block_compare.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Block_compare.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Block_compare.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Block_compare.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\Block_move.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\Block_move.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\Block_move.xml (razón anterior)
|
||||
[15:18:33] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\Block_move.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:18:33] --- Procesando archivo: PLC\ProgramBlocks_XML\BrixTracking_Data.xml ---
|
||||
[15:18:33] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BrixTracking_Data.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:18:33] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BrixTracking_Data.xml (razón anterior)
|
||||
[15:18:33] --- Running x3_generate_scl.py with arguments: ['PLC\\ProgramBlocks_XML\\BrixTracking_Data.xml', 'PLC'] ---
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\BrixTracking_ProdSamples.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BrixTracking_ProdSamples.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BrixTracking_ProdSamples.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BrixTracking_ProdSamples.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\BrixTracking_SampleTime.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\BrixTracking_SampleTime.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\BrixTracking_SampleTime.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\BrixTracking_SampleTime.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIP CVQ.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIP CVQ.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIP CVQ.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIP CVQ.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIP FlipFlop.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIP FlipFlop.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIP FlipFlop.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIP FlipFlop.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_ExecSimpleCIP.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_ExecSimpleCIP.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_ExecSimpleCIP.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_ExecSimpleCIP.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_ExecStep.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_ExecStep.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_ExecStep.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_ExecStep.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_ProgInizialize.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_ProgInizialize.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_ProgInizialize.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_ProgInizialize.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_ProgStepDown.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepDown.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepDown.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepDown.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_ProgStepUp.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepUp.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepUp.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_ProgStepUp.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPLocal_WaitEvent_Ctrl.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPLocal_WaitEvent_Ctrl.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPLocal_WaitEvent_Ctrl.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPLocal_WaitEvent_Ctrl.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPMain.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPMain.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPMain.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPMain.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPMain_Flood.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPMain_Flood.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPMain_Flood.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPMain_Flood.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPMain_Total Drain.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPMain_Total Drain.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPMain_Total Drain.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPMain_Total Drain.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#01.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#01.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#01.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#01.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#02.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#02.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#02.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#02.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#03.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#03.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#03.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#03.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#04.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#04.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#04.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#04.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#05.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#05.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#05.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#05.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#06.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#06.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#06.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#06.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#07.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#07.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#07.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#07.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#08.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#08.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#08.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#08.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#09.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#09.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#09.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#09.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#10.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#10.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#10.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#10.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#11.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#11.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#11.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#11.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#12.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#12.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#12.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#12.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#13.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#13.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#13.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#13.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#14.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#14.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#14.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#14.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#15.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#15.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#15.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#15.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#16.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#16.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#16.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#16.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#17.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#17.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#17.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#17.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#18.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#18.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#18.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#18.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#19.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#19.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#19.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#19.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#20.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#20.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#20.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#20.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#21.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#21.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#21.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#21.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#22.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#22.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#22.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#22.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#23.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#23.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#23.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#23.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#24.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#24.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#24.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#24.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#25.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#25.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#25.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#25.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#26.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#26.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#26.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#26.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#27.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#27.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#27.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#27.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#28.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#28.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#28.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#28.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#29.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#29.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#29.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#29.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipe#30.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipe#30.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipe#30.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipe#30.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipeManagement.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipeManagement.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:19:59] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipeManagement.xml (razón anterior)
|
||||
[15:19:59] --- SALTANDO x3 para: PLC\ProgramBlocks_XML\CIPRecipeManagement.xml (archivo de salida en 'scl_output' está actualizado)
|
||||
[15:19:59] --- Procesando archivo: PLC\ProgramBlocks_XML\CIPRecipeManagement_Data.xml ---
|
||||
[15:19:59] --- SALTANDO x1 para: PLC\ProgramBlocks_XML\CIPRecipeManagement_Data.xml (archivo XML no modificado y JSON procesado existe)
|
||||
[15:20:00] --- SALTANDO x2 para: PLC\ProgramBlocks_XML\CIPRecipeManagement_Data.xml (razón anterior)
|
||||
[15:20:00] --- Running x3_generate_scl.py with arguments: ['PLC\\ProgramBlocks_XML\\CIPRecipeManagement_Data.xml', 'PLC'] ---
|
Loading…
Reference in New Issue