1
29_600_Comunicaciones
Aketza edited this page 2026-07-22 08:41:30 +02:00

Análisis — Bloques de programa/ZC_Estandar_Alimentacion/600_Comunicaciones

Cobertura: 3 fuente(s) .s7dcl.

Resumen de carpeta

Esta carpeta pertenece a la capa indicada por su prefijo numérico y agrupa elementos con responsabilidad funcional común. El detalle siguiente diferencia bloques ejecutables, memoria global/instancia y contratos UDT.

DB DB11000_SEC_S7COM

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/600_Comunicaciones/DB11000_SEC_S7COM.s7dcl
  • Tipo: DB

Propósito general

Bloque de datos DB11000_SEC_S7COM que centraliza el estado persistente y/o de intercambio asociado a DB11000 SEC S7COM. No ejecuta lógica: proporciona memoria estructurada a los bloques consumidores.

Interfaz principal

Sin parámetros formales ni estructura VAR explícita exportada.

Dependencias

Clase Elementos referenciados/llamados
FB FB15150_ZC_SEC_S7COM

Lógica clave

Elemento declarativo; no contiene flujo ejecutable. La lógica reside en los FC/FB/OB que leen o modifican sus campos.

FB FB15148_ZC_SEC_MB_CLIENT

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/600_Comunicaciones/FB15148_ZC_SEC_MB_CLIENT.s7dcl
  • Tipo: FB

Propósito general

Bloque FB15148_ZC_SEC_MB_CLIENT destinado a gestionar FB15148 ZC SEC MB CLIENT. Su código se organiza principalmente en: LIMITES, ORDEN_DE_INICIO, SECUENCIA, MB_CLIENT_1, MB_CLIENT_2, MB_CLIENT_3.

Interfaz principal

Entradas:

Variable Tipo / inicialización
Habilitar Bool := FALSE
Iniciar Bool
Ack Bool
Pulso1Seg Bool
AutoDesconexion Bool
Numero Int
DONE Array[1..8] of Bool
BUSY Array[1..8] of Bool
ERROR Array[1..8] of Bool
STATUS Array[1..8] of Word

Salidas:

Variable Tipo / inicialización
Finalizado Bool
EnEjecuccion Bool
AlgunError Bool := FALSE
ErrorEnBloque Array[1..8] of Bool := [ 8(FALSE) ]
REQ Array[1..8] of Bool
DISCONNECT Array[1..8] of Bool

Estado retentivo:

Variable Tipo / inicialización
s_Etapa Int := #ETAPA_0_REPOSO

Estado/estáticos:

Variable Tipo / inicialización
s_AlgunError Bool := FALSE
s_NumeroActual Int
s_SP_TiempoEsperaBusy Int := 20
s_TiempoEsperaBusy Int
s_Error Array[1..8] of Bool := [ 8(FALSE) ]

Estado retentivo:

Variable Tipo / inicialización
s_NumeroError Array[1..8] of UInt
s_NumeroDone Array[1..8] of UInt

Temporales:

Variable Tipo / inicialización
for_i Int

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT ETAPA_0_REPOSO Int := 0
ETAPA_10_PROCESANDO_1 Int := 10
ETAPA_20_PROCESANDO_2 Int := 20
ETAPA_30_PROCESANDO_3 Int := 30
ETAPA_40_PROCESANDO_4 Int := 40
ETAPA_50_PROCESANDO_5 Int := 50
ETAPA_60_PROCESANDO_6 Int := 60
ETAPA_70_PROCESANDO_7 Int := 70
ETAPA_80_PROCESANDO_8 Int := 80

Dependencias

No se detectan llamadas ni referencias a otros bloques exportados. Para un DB/UDT esto significa que es una hoja declarativa; sus consumidores aparecen en el mapa inverso.

Lógica clave

Flujo organizado en las regiones: LIMITESORDEN_DE_INICIOSECUENCIAMB_CLIENT_1MB_CLIENT_2MB_CLIENT_3MB_CLIENT_4MB_CLIENT_5MB_CLIENT_6MB_CLIENT_7MB_CLIENT_8SALIDAS. Mecanismos relevantes detectados: recorridos iterativos, máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: Reinicializamos las variables REQ y ERROR; Quitamos la orden de desconexion con el equipo; Comprobamos que esta configurado los datos del enlace S7; No esta configurado el enlace, Finalizamos; Lanzamos la orden del GET; Esperamos a que finalice correctamente el GET; Quitamos la peticion; Saltamos al siguiente; En caso de error mostramos informacion; Gestion de errores por tiempo sin respuesta.

FB FB15150_ZC_SEC_S7COM

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/600_Comunicaciones/FB15150_ZC_SEC_S7COM.s7dcl
  • Tipo: FB

Propósito general

El bloque FB15150_ZC_SEC_S7COM implementa un gestor de comunicaciones secuenciales S7 (PUT/GET) que ejecuta, de forma ordenada y con gestión de errores, una secuencia de peticiones a otros tantos bloques de comunicación. Garantiza que las operaciones se lancen una a una, esperando a la finalización de cada una (correcta o con error) antes de continuar con la siguiente, y permite acotar el tiempo de espera por petición para detectar bloqueos de la comunicación. Funcionalidades principales: - Habilitación y Ack: cuando el bloque se deshabilita (#Habilitar := FALSE) o se activa la entrada de acuse #Ack, se reinicializan todas las variables internas y de salida, se vacían los flags de error, se resetea la etapa a REPOSO y se sale del bloque mediante RETURN. - Límite de dimensionamiento: se valida #NumeroBloques contra la constante de dimensionamiento #N_MAX, acotando el valor entre 1 y #N_MAX. - Arranque ordenado: cuando se recibe la entrada #Iniciar estando en REPOSO, se inicializa el índice de proceso, se limpian las peticiones y los flags de error, y se transita a la etapa PROCESANDO. - Procesamiento secuencial: para cada bloque actual, se lanza la activación de #REQ y se monitorizan las señales de fin #NDR_DONE y #ERROR. Se avanza al siguiente bloque tanto en caso de éxito como de error. - Control de tiempo de espera: si la petición actual no finaliza antes de cumplir #TiempoEspera (incrementado con #Pulso1Seg), se da por fallida y se avanza al siguiente bloque, contabilizándolo como error. - Salidas de estado: #EnEjecuccion indica que la secuencia está en curso (#s_Etapa <> REPOSO) y #Finalizado indica que la secuencia ha concluido. Por cada bloque se expone #EnError y un #AlgunError global que se activa si cualquier petición ha fallado. > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
Habilitar Bool := FALSE
Iniciar Bool
Ack Bool
Pulso1Seg Bool
NumeroBloques Int := 1
TiempoEspera Int := 10
NDR_DONE Array[1..#N_MAX] of Bool
ERROR Array[1..#N_MAX] of Bool

Salidas:

Variable Tipo / inicialización
Finalizado Bool
EnEjecuccion Bool
AlgunError Bool := FALSE
EnError Array[1..#N_MAX] of Bool := [ 8(FALSE) ]
REQ Array[1..#N_MAX] of Bool

Estado retentivo:

Variable Tipo / inicialización
s_Etapa Int := #REPOSO

Estado/estáticos:

Variable Tipo / inicialización
s_IndiceActual Int
s_AlgunError Bool := FALSE
s_NumeroBloques Int

Estado retentivo:

Variable Tipo / inicialización
s_TiempoEsperaActual Int

Estado/estáticos:

Variable Tipo / inicialización
s_Error Array[1..#N_MAX] of Bool := [ 8(FALSE) ]

Estado retentivo:

Variable Tipo / inicialización
s_NumeroError Array[1..#N_MAX] of UInt
s_NumeroDone Array[1..#N_MAX] of UInt

Temporales:

Variable Tipo / inicialización
for_i Int

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT REPOSO Int := 0
PROCESANDO Int := 10
N_MAX Int := 8

Dependencias

No se detectan llamadas ni referencias a otros bloques exportados. Para un DB/UDT esto significa que es una hoja declarativa; sus consumidores aparecen en el mapa inverso.

Lógica clave

Flujo organizado en las regiones: HABILITACIONLIMITESORDEN_DE_INICIOSECUENCIAGESTION_COMUNICACIONESSALIDAS. Mecanismos relevantes detectados: recorridos iterativos, máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; En caso de no estar habilitado el bloque o pulsar el boton ACK, reinicializamos valores y salimos inmediatamente; Traspaso de numero de bloques a variable interna; Limite de bloques; Reinicializamos las variables REQ y ERROR antes de empezar; Verificacion de final de la secuencia; Si hemos procesado todos los bloques, finalizamos la secuencia; Procesamos; Lanzamos orden request para el bloque de comunicaciones.