Cómo implementar la selección condicional de variables booleanas en TIA Portal para S7-1200

Para implementar una función de selección condicional de variables booleanas (bloque SEL booleano) en un controlador SIMATIC S7-1200 dentro de TIA Portal, utilice una instrucción multiplexora o programe una función personalizada (FC) en lenguaje LAD, FBD o SCL. La instrucción nativa SEL de la biblioteca estándar de STEP 7 está diseñada para conmutar valores numéricos o analógicos en función de una entrada de mando binaria, pero no siempre permite conectar tipos de datos booleanos directamente en todas las versiones del firmware. Un bloque SEL booleano personalizado resuelve este comportamiento conmutando entre dos entradas booleanas (IN0 o IN1) según el estado del selector (G), transfiriendo la variable seleccionada hacia la salida (OUT).

Tabla de contenido

Causa técnica: limitación de tipos de datos en la instrucción SEL nativa

En el entorno de programación TIA Portal (STEP 7), la instrucción estándar de selección SEL conmuta entre dos entradas de datos (IN0 e IN1) basándose en una entrada de selección booleana G:

Si G=0⟹OUT=IN0Si G=1⟹OUT=IN1Sin embargo, en las especificaciones de la biblioteca de instrucciones estándar para la familia S7-1200, la función SEL está parametrizada para operar sobre tipos de datos como INT, DINT, REAL o BYTE. Cuando un programador intenta interconectar variables de tipo BOOL en los parámetros IN0 e IN1 de un bloque SEL nativo, el compilador de TIA Portal puede generar un error de incompatibilidad de tipos de datos (Type Conflict).

Para conmutar de forma transparente estados lógicos discretos (como señales de sensores, estados de marcha/paro o modos manual/automático) sin realizar conversiones explícitas de tipo BOOL_TO_INT y INT_TO_BOOL, es necesario disponer de un bloque de función dedicado o una rutina lógica que procese internamente la ecuación booleana equivalente:

OUT=(IN0∧¬G)∨(IN1∧G)

Requisitos previos

  • Software de ingeniería TIA Portal (versiones V13, V13 SP1, V15 o superior).
  • Controlador SIMATIC S7-1200 (CPU 1211C, 1212C, 1214C, 1215C o 1217C) configurado en el proyecto.
  • Conocimientos básicos de programación en esquemas de contactos (LAD), diagramas de bloques de funciones (FBD) o texto estructurado (SCL).

Método 1: Creación de una función personalizada SEL Booleana en LAD / FBD

Se utiliza mejor cuando: Se programa en entornos gráficos (LAD/FBD) y se busca un bloque reutilizable en la biblioteca del proyecto que simule el comportamiento de la función SEL para señales discretas.

Procedimiento

  1. Abra el proyecto en TIA Portal y navegue en el árbol del dispositivo hacia Bloques de programa -> Agregar nuevo bloque.
  2. Seleccione el tipo de bloque Función (FC), asígnele un nombre (por ejemplo, FC_SEL_BOOL) y defina el lenguaje de programación en LAD o FBD.
  3. En la interfaz de variables del bloque (FC_SEL_BOOL), defina la siguiente tabla de parámetros:

    • Input:

      • G : BOOL (Entrada de selección/conmutación)
      • IN0 : BOOL (Variable seleccionada si G = FALSE)
      • IN1 : BOOL (Variable seleccionada si G = TRUE)

        • Output:
      • OUT : BOOL (Resultado de la selección)
        4. En el segmento 1 del editor gráfico, programe la red lógica correspondiente a la conmutación de contactos en paralelo:

    • Rama 1: Contacto normalmente cerrado G en serie con contacto normalmente abierto IN0.

    • Rama 2: Contacto normalmente abierto G en serie con contacto normalmente abierto IN1.
    • Conecte ambas ramas en paralelo hacia la bobina de salida OUT.
      5. Guarde y compile el bloque de función FC_SEL_BOOL.
      6. Llame al bloque desde el bloque principal OB1 o desde cualquier bloque de organización de la rutina de control, asignando los tags del proceso a los parámetros G, IN0, IN1 y OUT.

Plaintext

Estructura del segmento en esquema de contactos (LAD):

   G        IN0                                    OUT
──│/│───────│ │────────┬───────────────────────────( )──
                       │
   G        IN1        │
──│ │───────│ │────────┘

Resultado esperado: La variable asignada a OUT adopta el estado lógico de IN0 cuando G se encuentra desactivado (FALSE), y pasa a reflejar el estado de IN1 inmediatamente al activar G (TRUE).

Verificación: Monitoree el bloque en línea utilizando las gafas de observación de TIA Portal. Force individualmente las variables IN0 e IN1 y compruebe que OUT responda estrictamente a la posición del selector G.

Limitación: La ejecución del bloque suma una pequeña carga de procesamiento adicional respecto a una instrucción nativa del procesador.

Método 2: Implementación de la selección booleana mediante SCL

Se utiliza mejor cuando: Se trabaja en lenguajes basados en texto estructurado (SCL) o dentro de bloques de procesamiento numérico donde se requiere conmutar banderas lógicas con sintaxis compacta.

Procedimiento

  1. Agregue un nuevo bloque de tipo Función (FC) en TIA Portal y seleccione el lenguaje SCL.
  2. Defina la interfaz de parámetros del bloque en la sección de declaración:

    • G (Input, BOOL)
    • IN0 (Input, BOOL)
    • IN1 (Input, BOOL)
    • FC_SEL_BOOL_SCL (Return, BOOL o parámetro Output OUT)
      3. En el cuerpo del código SCL, escriba la instrucción de asignación condicional utilizando la estructura IF...THEN...ELSE o mediante la ecuación lógica directa:

Structured Text

// Opción A: Mediante estructura condicional explicativa
IF #G THEN
    #OUT := #IN1;
ELSE
    #OUT := #IN0;
END_IF;

// Opción B: Mediante expresión lógica directa en una sola línea
// #OUT := (#IN0 AND NOT #G) OR (#IN1 AND #G);
  1. Compile la función SCL para verificar que no existan errores de sintaxis.
  2. Inserte la función en las rutinas de control donde se requiera realizar la conmutación booleana.

Resultado esperado: El bloque SCL evalúa la condición de entrada G en cada ciclo de exploración y asigna dinámicamente el valor de IN0 o IN1 a la salida.

Verificación: Compile el proyecto y ejecute una prueba de simulación con S7-PLCSIM para confirmar el cambio de estado de la salida al alternar la variable de control G.

Tabla comparativa de métodos

CriterioMétodo 1: Función personalizada en LAD / FBDMétodo 2: Función en SCLLenguaje de desarrolloDiagrama de contactos (LAD) / Bloques (FBD)Texto Estructurado (SCL)Legibilidad visualAlta para personal de mantenimiento e inspección eléctricaAlta para programadores de software y código densoComplejidad de códigoLógica de contactos en paralelo (2 ramas)Instrucción condicional IF-THEN-ELSE de 5 líneasFacilidad de reutilizaciónExcelente (bloque parametrizable en librería)Excelente (bloque parametrizable en librería)Tiempo de ejecuciónOptimizado por compilador gráficoExtremadamente rápido (instrucciones a nivel de bit)

Verificación

La correcta implementación del bloque SEL booleano se considera exitosa cuando:

  • El proyecto se compila en TIA Portal sin errores ni advertencias de conversión de tipos de datos.
  • Al simular el programa en S7-PLCSIM con G = FALSE, cualquier cambio en IN0 se refleja de forma inmediata en la salida OUT, mientras que las variaciones en IN1 son ignoradas.
  • Al cambiar el estado del selector a G = TRUE, la salida OUT conmuta su referencia pasando a responder exclusivamente a los cambios del parámetro IN1.

Limitaciones y precauciones operativas

  • Flancos de conmutación: El bloque conmutador booleano transfiere el estado de nivel directo de la entrada seleccionada. Si la aplicación requiere detectar flancos de subida o bajada en las entradas IN0 o IN1, las instrucciones de detección de flanco (P_TRIG / N_TRIG) deben colocarse después de la salida del bloque SEL o en las entradas individuales antes de la conmutación.
  • Asignación de salidas: Evite escribir directamente sobre salidas físicas del PLC (Q) desde múltiples bloques condicionales de forma concurrente, ya que la última escritura en el ciclo de exploración del OB1 sobrescribirá los estados previos.

Preguntas frecuentes para ingenieros

¿Por qué la instrucción SEL estándar de TIA Portal marca error al conectar variables booleanas?

La instrucción SEL nativa de la biblioteca de TIA Portal está tipificada de fábrica para seleccionar valores dentro de conjuntos de datos numéricos o complejos. El verificador estático de tipos de TIA Portal bloquea la conexión de variables de tipo BOOL en los parámetros IN0 e IN1 para prevenir inconsistencias de tipo en el compilador del S7-1200.

¿Se pueden migrar proyectos con este bloque entre distintas versiones de TIA Portal (ej. V13 a V15 o V17)?

Sí. Un bloque FC desarrollado en LAD, FBD o SCL que procese variables BOOL estándar es 100 % compatible hacia adelante. Al abrir el proyecto de TIA Portal V13 o V13 SP1 en versiones más recientes como V15, V16 o V18, el software ejecutará la actualización automática del proyecto sin modificar la lógica interna del bloque.

¿Existe alguna diferencia de rendimiento entre implementar el bloque en LAD o en SCL?

En la familia de controladores SIMATIC S7-1200 y S7-1500, el compilador de TIA Portal traduce tanto la lógica LAD como el código SCL a código de máquina nativo para el procesador. La diferencia en el tiempo de ejecución entre ambas soluciones es prácticamente despreciable en ciclos de exploración estándar.

Artículos relacionados

Etiquetas relacionadas

Code: C243

6 respuestas