En SIMATIC PCS 7 y STEP 7, el intercambio de registros de datos de más de 4 bytes contiguos (DWORD) con esclavos PROFIBUS DP, como por ejemplo las interfaces ComBox-P del compresor Atlas Copco, requiere el uso de los bloques de funciones del sistema SFC14 (DPRD_DAT) y SFC15 (DPWR_DAT). Mientras que las CPU S7-400 garantizan de forma nativa coherencia de datos de hasta 4 bytes mediante instrucciones de carga y transferencia estándar, los telegramas multivariables más grandes configurados con coherencia de longitud total deben transferirse a través de SFC14 y SFC15 para evitar la rotura de datos durante las actualizaciones de comunicación cíclica asíncrona.
Índice de contenidos
- Reglas de coherencia de datos en controladores S7-400 y PCS 7
- Configuración de HW Config para esclavos DP de terceros
- Programación paso a paso del SFC14 (DPRD_DAT) en CFC
- Programación paso a paso del SFC15 (DPWR_DAT) en CFC
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes del ingeniero
- Referencias técnicas
- Artículos relacionados
- Etiquetas relacionadas
Reglas de coherencia de datos en controladores S7-400 y PCS 7
En los controladores SIMATIC S7-400, la coherencia de los datos define si un conjunto de datos multibyte puede ser leído o escrito por el sistema operativo de la CPU como una unidad indivisible sin ser interrumpido por bloques de organización de interrupción cíclica de mayor prioridad (p. ej., OB35):
- Coherencia básica (1, 2 o 4 bytes): los controladores S7-400 garantizan de forma nativa coherencia para bytes, palabras (2 bytes) y palabras dobles (4 bytes/
DWORD) utilizando instrucciones periféricas estándar (L PIW,T PQW,L PID). - Coherencia de longitud total (> 4 bytes): Los dispositivos de campo inteligentes, como controladores de compresores (Atlas Copco Elektronikon / ComBox-P), variadores de motor y medidores de energía, intercambian con frecuencia telegramas que constan de 6, 8, 16 o 32 bytes contiguos que contienen valores de punto flotante, palabras de estado y alarmas con marca de tiempo.
- El riesgo de desgarro de datos: si un ingeniero intenta leer un telegrama de 8 bytes usando dos lecturas
DWORDseparadas, se puede ejecutar un bloque de organización de interrupción entre las dos lecturas, lo que resulta en un conjunto de datos híbrido inconsistente donde los primeros 4 bytes reflejan el nuevo ciclo y los segundos 4 bytes reflejan el ciclo anterior.
Para garantizar el intercambio atómico de datos entre telegramas configurados con coherencia "Longitud total", STEP 7 proporciona funciones de sistema estándar:
* SFC14 (DPRD_DAT): Leer datos coherentes de un esclavo estándar DP.
* SFC15 (DPWR_DAT): Escribe datos coherentes en un esclavo estándar DP.
Configuración de HW Config para esclavos DP de terceros
Antes de programar en CFC, configure el módulo esclavo en STEP 7 HW Config:
- Instalación GSD:
* Obtenga el archivo GSD certificado por el fabricante (p. ej.,ComBox-P.gsdpara Atlas Copco).
* En HW Config, seleccioneOptions -> Install GSD File...y busque el archivo extraído. - Agregar esclavo al sistema maestro DP:
* Ubique el esclavo en el catálogo bajoPROFIBUS DP -> Additional Field Devices -> General.
* Arrastre el esclavo a la CPU o a la red CP 443-5 PROFIBUS DP.
* Asignar la dirección física de la estación PROFIBUS. - Asignación de consistencia y tamaño del módulo:
* Inserte el módulo de entrada/salida apropiado (por ejemplo,8 Bytes In / 8 Bytes Outo4 Words Consistent).
* Haga doble clic en la ranura configurada para inspeccionar sus propiedades.
* Verifique que Consistencia esté establecida explícitamente en Longitud total (no en Unidad).
* Tenga en cuenta la dirección inicial en la tabla de entrada (p. ej.,PIW 512) y en la tabla de salida (p. ej.,PQW 512). Convierta esta dirección decimal a hexadecimal (por ejemplo,512decimal =16#200).
Programación paso a paso del SFC14 (DPRD_DAT) en CFC
Para leer datos consistentemente del esclavo en el Gráfico de funciones continuas (CFC):
- Crear una instancia de SFC14:
* En el navegador de la biblioteca CFC, ubiqueSFC14(DPRD_DAT) enSystem Function Blocks.
* ArrastreSFC14al gráfico de interrupción cíclica (p. ej., OB35/ciclo de 100 ms). - Configurar parámetros de bloque:
*LADDR(Entrada,WORD): Ingrese la dirección base hexadecimal del módulo de entrada esclavo DP configurado. Para la dirección base512, ingreseW#16#200.
*RECORD(Salida, punteroANY): Asigna la estructura de datos de destino. Cree un bloque de datos (DB) dedicado con una matriz de bytes o variables estructuradas que coincidan con la longitud del telegrama (por ejemplo,P#DB100.DBX0.0 BYTE 8). - Evaluar indicadores de ejecución:
*RET_VAL(Salida,INT): Evalúa códigos de retorno de error (16#0000= Ejecución exitosa; los códigos distintos de cero indican errores de comunicación, por ejemplo,16#8090= dirección no válida,16#8092= CUALQUIER discrepancia en la longitud del puntero).
Programación paso a paso del SFC15 (DPWR_DAT) en CFC
Para escribir palabras de control y puntos de ajuste consistentemente en el esclavo:
- Crear una instancia de SFC15:
* ArrastreSFC15(DPWR_DAT) al diagramas CFC. - Configurar parámetros de bloque:
*LADDR(Entrada,WORD): Ingrese la dirección base hexadecimal del módulo de salida configurado (por ejemplo,W#16#200paraPQW 512).
*RECORD(entrada, punteroANY): asigna la estructura de datos de origen que contiene bits de comando y palabras de punto de ajuste (por ejemplo,P#DB100.DBX10.0 BYTE 8). - Evaluar RET_VAL:
* MonitoreeRET_VALpara16#0000para confirmar la transmisión exitosa al búfer de salida del esclavo DP.
Verificación
Confirmar una comunicación de datos coherente:
- Monitoreo en línea de CFC:
* Abra el diagramas CFC en modo de prueba.
* Verifique queSFC14.RET_VALySFC15.RET_VALreporten16#0000. - Verificación de integridad de la telemetría:
* Abrir la BD de destino en una tabla de variables (VAT).
* Observe los parámetros en vivo (por ejemplo, presión de entrega del compresor, temperatura del aceite, corriente del motor).
* Verifique que los valores REALES de varios bytes muestren números de punto flotante estables sin fallas ni cambios de bits. - Auditoría del búfer de diagnóstico:
* PresioneCtrl + Den la CPU para asegurarse de que no se registren errores de acceso a E/S (OB122) ni fallas de acceso a periféricos.
Limitaciones y precauciones operativas
- Límite de la imagen del proceso: si las direcciones del esclavo DP se encuentran dentro de la partición de imagen del proceso (PIP) cíclica de la CPU, las CPU S7-400 modernas pueden actualizar datos consistentes automáticamente si se configuran en HW Config, pero el uso de SFC14/15 sigue siendo obligatorio para direcciones fuera de la imagen del proceso o donde se configura una coherencia de software explícita.
- CUALQUIER alineación de longitud del puntero: la longitud definida en el parámetro
RECORD(por ejemplo, 8 bytes) debe coincidir con la longitud exacta de bytes configurada en HW Config para esa ranura; cualquier discrepancia hace queSFC14/SFC15cancele con el código de error16#8092. - Carga de ciclo de bus elevado: llamar a docenas de instancias SFC14/SFC15 en bloques de organización cíclicos rápidos (por ejemplo, OB38/10 ms) aumenta el tiempo de ciclo de la CPU del controlador. Coloque las llamadas de bloque en los OB cíclicos más lentos correspondientes (p. ej., OB35/100 ms u OB32/1 s).
Preguntas frecuentes del ingeniero
- ¿Cuándo es obligatorio utilizar SFC14 y SFC15 en lugar del direccionamiento de periféricos estándar?
Siempre que un módulo PROFIBUS DP o PROFINET esté configurado con coherencia de 'Longitud total' para longitudes de datos que superen los 4 bytes contiguos. - ¿Qué representa el parámetro LADDR en SFC14 y SFC15?
LADDR es la dirección inicial base lógica del módulo periférico configurado, especificada en formato hexadecimal (por ejemplo, dirección de entrada 256 = W#16#100). - ¿Qué indica el código de retorno 16#8090 en SFC14?
El error 16#8090 indica que la dirección especificada en LADDR no es válida o no corresponde a un módulo esclavo DP configurado con total coherencia. - ¿Qué significa el código de retorno 16#8092 en SFC15?
El error 16#8092 indica que la longitud de la estructura de datos especificada en el parámetro RECORD no coincide con la longitud de la ranura de hardware configurada. - ¿Se pueden utilizar SFC14 y SFC15 con dispositivos PROFINET IO?
Sí, SFC14 y SFC15 funcionan de manera idéntica para dispositivos PROFINET IO configurados con bloques de datos consistentes de más de 4 bytes. - ¿Puedo utilizar SFC14/15 en SCL o código FB personalizado en PCS 7?
Sí, SFC14 y SFC15 se pueden llamar directamente en SCL, STL o instanciarse como bloques gráficos en Continuous Function Chart (CFC). - ¿El S7-400 admite la lectura constante de 4 bytes sin SFC14?
Sí, los controladores S7-400 garantizan de forma nativa coherencia de hasta 4 bytes (DWORD) mediante instrucciones de lectura periférica estándar (PID). - ¿Qué tipo de datos se debe suministrar al parámetro RECORD del SFC14?
Un puntero ANY que apunta al área de almacenamiento de destino (por ejemplo, P#DB10.DBX0.0 BYTE 12). - ¿Dónde puedo encontrar el archivo GSD para un compresor Atlas Copco?
Atlas Copco proporciona el archivo GSD (como ComBox-P o Elektronikon) en su soporte de documentación o portal de soporte. - ¿La llamada al SFC14 detiene la ejecución del controlador si el esclavo se desconecta?
No, el SFC14 no provocará una PARADA de la CPU; genera un código de error en RET_VAL, lo que permite que la lógica del usuario maneje la pérdida de comunicación con elegancia.
Referencias técnicas
- Portal Siemens Industry Online Support (SIOS): ¿Cómo se configura un intercambio de datos consistente con SFC14 y SFC15? (ID de entrada: 19183490).
- Software de sistema SIMATIC S7-400 para el manual de sistema y funciones estándar S7-300/400, Siemens AG.
- Especificación PROFIBUS DP: Reglas de transmisión de datos consistentes (IEC 61158).
Artículos relacionados
- Acceder a datos de envío y recepción cíclicos de SIMOCODE Pro en SIMATIC PCS 7
- Fusionar dos registros de energía DWORD en valores REAL y LREAL en SIMATIC PCS 7
Etiquetas relacionadas
PCS 7, STEP 7, S7-400, SFC14, SFC15, PROFIBUS DP, coherencia de datos, Atlas Copco, ComBox-P