Para empaquetar señales booleanas individuales en una palabra doble de 32 bits (DWORD) o desempacar una DWORD en variables booleanas separadas en los diagramas CFC (Continuous Function Charts) de SIMATIC PCS 7, debe implementar bloques de conversión estándar de la librería elemental de CFC. En la ingeniería de control de procesos, las palabras dobles empaquetadas se utilizan frecuentemente para comunicar máscaras de bits de estado, matrices de fallas y palabras de comando entre controladores y subsistemas de terceros (como variadores de velocidad VFD, unidades compactas (skids) y RTUs). La librería CFC proporciona bloques de conversión estándar, incluidos BO_DW (booleano a palabra doble), DW_BO (palabra doble a booleano), W_DW y DW_W, que ejecutan el desplazamiento y enmascaramiento de bits en el microcódigo de la CPU, asegurando una ejecución determinista sin necesidad de scripts SCL personalizados.
Índice de contenidos
- Por qué el enmascaramiento de bits y el empaquetado de DWORD son esenciales en PCS 7
- Bloques de conversión estándar en la librería elemental de CFC
- Ordenamiento de bits y Endianness en arquitecturas SIMATIC S7
- Método: Implementación paso a paso en CFC
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes de ingenieros
- Referencias técnicas
- Artículos relacionados
- Etiquetas relacionadas
Por qué el enmascaramiento de bits y el empaquetado de DWORD son esenciales en PCS 7
En la automatización de procesos industriales, los controladores intercambian un amplio volumen de datos de estado operativo y comandos con equipos externos:
* El reto del ancho de banda de comunicación: Transmitir 32 etiquetas booleanas individuales a través de buses de campo (PROFIBUS DP, PROFINET o Modbus TCP) genera una sobrecarga significativa en el protocolo y consume múltiples variables de comunicación.
* La solución empaquetada: Empaquetar 32 estados booleanos en una sola DWORD de 32 bits condensa todo el vector de estado en 4 bytes consecutivos.
* Palabras de estado APL: En la librería SIMATIC PCS 7 Advanced Process Library (APL), los bloques utilizan palabras de estado de 32 bits (por ejemplo, Status1, Status2, Status3, OS_Perm) para transmitir modos de operación, estados de interbloqueo y permisos de alarma a las caras (faceplates) de WinCC en una sola transferencia de memoria atómica.
Bloques de conversión estándar en la librería elemental de CFC
El editor CFC incluye bloques de conversión probados previamente ubicados en el catálogo de la librería bajo CFC Library > Blocks > CONVERT:
BO_DWBOOL (IN00–IN31)DWORD (OUT)DW_BODWORD (IN)BOOL (OUT00–OUT31)W_DWWORD (IN1, IN2)DWORD (OUT)DW_WDWORD (IN)WORD (OUT1, OUT2)Estos bloques se ejecutan de manera limpia en todas las tareas de interrupción cíclica (desde OB30 hasta OB38) y su impacto en el procesamiento de la CPU es insignificante.
Ordenamiento de bits y Endianness en arquitecturas SIMATIC S7
Al empaquetar o desempacar datos entre controladores Siemens S7-400 y dispositivos de terceros, los ingenieros deben tener en cuenta las convenciones de ordenamiento de bits:
* Arquitectura Big-Endian: Las CPU SIMATIC S7-300, S7-400 y AS 410 utilizan el ordenamiento de bytes Big-Endian (el byte más significativo se almacena en la dirección de memoria más baja).
* Asignación de bits en BO_DW / DW_BO:
- IN00 corresponde al bit 0 (bit menos significativo - LSB).
- IN07 corresponde al bit 7 (fin del byte más bajo).
- IN31 corresponde al bit 31 (bit más significativo - MSB).
* Inversión de terceros: Muchos dispositivos Modbus y Ethernet/IP de terceros utilizan disposiciones de bytes o palabras Little-Endian. Si los bits desempacados aparecen invertidos a través de los límites de 16 bits, implemente bloques SWAP o reasigne las entradas de palabras (W_DW con pines transpuestos) para que coincidan con el modelo de memoria del dispositivo externo.
Método: Implementación paso a paso en CFC
Siga este flujo de trabajo para desempacar una palabra de estado de 32 bits de un variador de frecuencia en señales discretas:
- En SIMATIC Manager, abra el diagrama CFC de destino.
- Abra el catálogo de bloques y navegue a Libraries > CFC Library > Blocks > CONVERT.
- Arrastre el bloque
DW_BO(FC177) al diagrama. - Posicione el bloque en la tarea de interrupción cíclica OB35 (o la tarea correspondiente a la frecuencia de actualización de su variador) utilizando el editor de orden de ejecución (Run Sequence).
- Conecte la entrada:
- Interconecte el parámetroINdeDW_BOa la etiqueta de entrada periférica de 32 bits (por ejemplo,PID 512o la salida de un bloque de lectura Modbus). - Interconecte los bits de salida:
- ConecteOUT00(Listo para operar) a la entrada tecnológica del variadorPermit.
- ConecteOUT01(Marcha adelante) aMotL.FbkRun.
- ConecteOUT03(Falla presente) aMotL.Trip.
- Conecte los bits restantes no utilizados a conectores locales del diagrama o déjelos sin asignar. - Guarde y compile el diagrama CFC.
Verificación
Para verificar que la conversión de la palabra doble opera correctamente:
- Cambie el editor CFC al modo Test > Test Mode.
- Haga doble clic en el parámetro
INdeDW_BO(o escriba un valor hexadecimal de prueba en la dirección periférica de origen):
- Ingrese16#00000001. Confirme que la salidaOUT00transiciona aTRUEy todas las demás salidas permanecen enFALSE.
- Ingrese16#00000002. Confirme que la salidaOUT01transiciona aTRUE.
- Ingrese16#80000000. Confirme que la salidaOUT31transiciona aTRUE. - En WinCC Runtime, abra la cara del equipo vinculada al bloque aguas abajo. Verifique que el estado del motor transicione de
Stopped(Detenido) aRunning(En marcha) cuando se active el bit correspondiente.
Limitaciones y precauciones operativas
- Ejecución atómica:
BO_DWyDW_BOevalúan los 32 bits simultáneamente en un solo ciclo de ejecución de la CPU. Sin embargo, si se interconectan señales de entrada individuales desde diferentes tareas cíclicas que se ejecutan a distintas frecuencias (por ejemplo, algunas desde OB35 y otras desde OB32), la palabra doble empaquetada puede reflejar valores asíncronos durante los ciclos de transición. Empaquete siempre las señales dentro del mismo grupo de ejecución. - Impacto en objetos de proceso: Los bloques de conversión elemental estándar de CFC (FC176, FC177) no consumen licencias de objetos de proceso (PO) de PCS 7. Son funciones de utilidad del sistema ligeras.
- Evite conversiones de bits anidadas: Encadenar múltiples bloques de bit a byte, byte a palabra y palabra a dword satura los diagramas CFC y aumenta el tiempo de ejecución. Utilice
BO_DWdirectamente para vincular booleanos a palabras dobles en un solo paso.
Preguntas frecuentes de ingenieros
¿Puedo usar BO_DW para empaquetar una máscara de permisos de operador para caras de APL?
Sí. Los bloques APL cuentan con parámetros como OS_Perm que evalúan palabras dobles de 32 bits para conceder o negar el acceso a los botones del operador. BO_DW es la herramienta estándar utilizada para construir máscaras OS_Perm personalizadas en CFC.
¿Qué sucede si dejo pines de entrada sin usar sin asignar en BO_DW?
Los pines sin asignar toman por defecto el valor FALSE (0). No generan advertencias de compilación y se resuelven limpiamente a 0 en la palabra doble de salida empaquetada.
¿Puedo convertir una DWORD en un número de punto flotante de 32 bits (REAL) usando bloques estándar?
Sí. Utilice el bloque conversor de tipos DW_R (Double Word to Real) de la librería elemental de CFC para interpretar el patrón de bits de 32 bits como un número flotante IEEE 754 sin transformación matemática.
Referencias técnicas
- Siemens Industry Online Support Entry ID 109742323: SIMATIC Process Control System PCS 7 CFC for S7 Manual
- CFC Elementary Function Blocks Reference Guide (Document No. A5E00278782)
- Siemens Industry Online Support Entry ID 109809264: APL Structure and Status Word Processing Guidelines
Artículos relacionados
- https://industrialautomation.net/search?query=pcs7+cfc+dword+bo_dw+dw_bo+conversion
- https://industrialautomation.net/search?query=simatic+cfc+pack+unpack+32+bit+boolean
- https://industrialautomation.net/search?query=s7+big+endian+double+word+bitmask
Etiquetas relacionadas
- https://industrialautomation.net/search?query=simatic+pcs7
- https://industrialautomation.net/search?query=cfc-programming
- https://industrialautomation.net/search?query=data-conversion
- https://industrialautomation.net/search?query=bitmasking