Cuando las direcciones de E/S digitales configuradas en HW Config no se pueden localizar en la lógica de usuario utilizando 'Ir a lugar de uso' (Go to location) o las referencias cruzadas estándar porque toda la lógica lee desde un bloque de datos (Data Block), el programa utiliza transferencias de periferia a nivel de byte, palabra o bloque en lugar de instrucciones de bits individuales. En el STEP 7 clásico y en PCS 7, los desarrolladores suelen reflejar tarjetas de E/S completas en DBs compartidos utilizando instrucciones de bloque como 'L IB 0 / T DB3.DBB 0' o 'SFC 20 BLKMOV'. Filtrar la tabla de referencias cruzadas para bytes/palabras periféricas (IB, IW, QB, QW) o buscar BLKMOV revela inmediatamente dónde se vinculan las señales físicas a las variables del DB.
Índice de contenidos
- Paradigmas de ingeniería: direccionamiento directo de bits frente a réplica en DB amortiguada
- Procedimientos de diagnóstico para rastrear transferencias de E/S ocultas en STEP 7
- Análisis paso a paso de referencias cruzadas y asignaciones
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes del ingeniero
- Referencias técnicas
- Artículos relacionados
- Etiquetas relacionadas
Paradigmas de ingeniería: direccionamiento directo de bits frente a réplica en DB amortiguada
Los ingenieros que analizan programas desconocidos de SIMATIC S7-300 o S7-400 se enfrentan con frecuencia a un dilema de solución de problemas frustrante:
* La configuración de hardware (HW Config) muestra que las tarjetas de entradas digitales ocupan desde las direcciones I 0.0 hasta I 7.7.
* Los sensores físicos conmutan los LED de entrada en el rack de hardware y las variables dinámicas dentro del bloque de datos 3 (DB3.DBX 0.0 a 0.7) conmutan en sincronía.
* Sin embargo, al hacer clic derecho en I 0.0 y seleccionar Ir a lugar de uso, se informa que La dirección no se utiliza en el programa, y las tablas de referencias cruzadas no muestran acceso de escritura a DB3.
Esto ocurre debido a un patrón de diseño común conocido como Réplica de E/S amortiguada (Buffered I/O Mirroring):
* En lugar de hacer referencia a direcciones de bits físicas (I 0.0) en decenas de bloques de programa separados, el desarrollador original copia toda la tabla de imagen de entradas en un bloque de datos central (DB3) en una sola rutina consolidada.
* Todos los bloques funcionales de todo el programa leen exclusivamente de las variables del DB (DB3.DBX 0.0).
* Si el cableado de hardware cambia durante la puesta en marcha de la planta, el ingeniero solo actualiza el bloque de transferencia único, dejando intacto el resto del código de la aplicación.
Procedimientos de diagnóstico para rastrear transferencias de E/S ocultas en STEP 7
La función "Ir a lugar de uso" falla porque realiza una búsqueda estricta de cadenas a nivel de bit. Si la lógica copia un byte o una palabra completa a la vez, las direcciones de bits como I 0.0 no existen como operandos discretos en el código de bytes compilado.
Los cuatro mecanismos de transferencia programática más comunes:
1. Instrucciones de carga y transferencia (Nivel de palabra / byte):
* Lógica ejecutada en el bloque de organización 1 (OB1) o en una interrupción cíclica (OB35):
stl
L IB 0 // Cargar byte de entrada 0 (cubre I 0.0 a I 0.7)
T DB3.DBB 0 // Transferir al byte 0 del bloque de datos 3
L IW 2 // Cargar palabra de entrada 2 (cubre I 2.0 a I 3.7)
T DB3.DBW 2 // Transferir a la palabra 2 del bloque de datos 3
2. Movimiento de bloques (SFC 20 BLKMOV):
* Utiliza un puntero ANY para copiar un bloque de memoria:
CALL SFC 20 (SRCBLK := P#I 0.0 BYTE 16, DSTBLK := P#DB3.DBX 0.0 BYTE 16).
3. Lectura periférica consistente (SFC 14 DPRD_DAT):
* Se utiliza para módulos de E/S distribuidas que requieren consistencia de datos en múltiples bytes.
4. Actualizaciones de partición de imagen de proceso (PIP):
* Ejecutadas a través de SFC 26 UPDAT_PI o asignaciones automáticas de imágenes cíclicas de hardware.
Análisis paso a paso de referencias cruzadas y asignaciones
Siga esta secuencia para identificar con precisión la rutina de transferencia:
- Generar y filtrar la tabla de referencias cruzadas:
* En SIMATIC Manager, abra la carpeta de bloques offline.
* Seleccione Opciones -> Datos de referencia -> Mostrar.
* En el cuadro de diálogo, seleccione Referencias cruzadas.
* En la configuración del filtro, no busque direcciones de bits (I 0.0). En su lugar, busque:- Bytes de entrada:
IB 0,IB 1,IB 2... - Palabras de entrada:
IW 0,IW 2... - Bytes del bloque de datos:
DB3.DBB 0...
- Bytes de entrada:
- Inspeccionar la lista de asignación de direcciones:
* En la ventana de Datos de referencia, cambie a Lista de asignaciones.
* Seleccione la pestaña Entradas (I).
* Busque filas que muestren indicadores de acceso de tipoB(Byte),W(Palabra) oD(DWord) en las entradas0a7.
* Haga doble clic en la instrucción de acceso para saltar directamente al bloque y segmento donde se ejecuta la transferencia. - Buscar llamadas a funciones del sistema (SFC 20):
* Si las referencias cruzadas de bytes/palabras no muestran nada, abra la vista Estructura del programa en Datos de referencia.
* Busque llamadas aSFC 20 (BLKMOV)oSFC 14 (DPRD_DAT).
* Inspeccione el parámetroSRCBLKde cada llamada para localizar el rango de memoria de origen que cubre sus entradas.
Verificación
- En SIMATIC Manager, navegue hasta el segmento de transferencia identificado (por ejemplo,
FC 50, Segmento 1). - Abra el bloque en modo de monitorización dinámica (icono de las
Gafas). - Conmute un interruptor de campo físico en el canal
I 0.0. - Confirme que:
- El byte de entrada en crudo (
IB 0) cambie su patrón de bits binarios en el acumulador. - El byte de destino (
DB3.DBB 0) se actualice simultáneamente. - La lógica aguas abajo que evalúa
DB3.DBX 0.0reciba el cambio de estado en el mismo ciclo de ejecución de la CPU.
Limitaciones y precauciones operativas
- Amortiguar las E/S en bloques de datos añade un ciclo de exploración (scan cycle) de latencia de procesamiento si la rutina de transferencia se ejecuta después de la lógica consumidora dentro del mismo ciclo de OB. Coloque siempre las rutinas de copia de E/S al principio del ciclo de exploración.
- En las arquitecturas APL de PCS 7, la réplica manual en DB está fuertemente desaconsejada; PCS 7 utiliza de forma nativa bloques de controladores de canales estandarizados (
Pcs7DiIn,Pcs7DiOu) que gestionan automáticamente el diagnóstico de hardware y los códigos de calidad NAMUR. - Modificar los desplazamientos de transferencia en controladores de producción en marcha requiere verificar que las variables vecinas no se sobrescriban accidentalmente.
Preguntas frecuentes del ingeniero
- ¿Por qué el programador original utilizó variables de DB en lugar de entradas directas?
Para desacoplar la lógica de software de la asignación de E/S física. Si una tarjeta de E/S se quema o se reasigna el cableado durante la puesta en marcha, solo se actualiza el bloque de transferencia único, evitando cambios en cientos de contactos (rungs). - ¿Puedo ver las direcciones de bits en la tabla de símbolos si se utilizan bytes?
Sí. Puede definir nombres simbólicos tanto para los bits individuales (I 0.0 = Parada_Emergencia) como para el byte principal (IB 0 = DI_Card_1_Byte_0) en la tabla de símbolos. - ¿Cómo se rastrean las salidas digitales?
Aplique la lógica inversa: busque escrituras en bytes/palabras de salida (QB 0,QW 0) o busque bloques que copien desdeDB4a la tabla de periferia de salidas.
Referencias técnicas
- SIMATIC STEP 7 V5.6 Reference Manual: System and Standard Functions (SFC 20 BLKMOV).
- SIMATIC S7-300 / S7-400 CPU Memory Architecture and Addressing Guidelines.
- Siemens Industry Online Support Entry ID 109801081: Cross-Reference and Address Tracking in STEP 7.
Artículos relacionados
- Tracing Indirect Memory Pointers and S7 ANY Pointers in Legacy STEP 7 Programs.
- Replacing Legacy DB Mirroring with Standard PCS 7 APL Channel Driver Blocks.
Etiquetas relacionadas
Step 7, S7-300, S7-400, Cross Reference, BLKMOV, Digital Inputs, Data Blocks, Troubleshooting