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: LIMITES → ORDEN_DE_INICIO → SECUENCIA → MB_CLIENT_1 → MB_CLIENT_2 → MB_CLIENT_3 → MB_CLIENT_4 → MB_CLIENT_5 → MB_CLIENT_6 → MB_CLIENT_7 → MB_CLIENT_8 → SALIDAS. 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: HABILITACION → LIMITES → ORDEN_DE_INICIO → SECUENCIA → GESTION_COMUNICACIONES → SALIDAS. 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.