El texto estructurado , abreviado como ST o STX , es uno de los cinco lenguajes compatibles con la norma IEC 61131-3 , diseñada para controladores lógicos programables (PLC). [ 1 ] [ 2 ] Es un lenguaje de alto nivel con estructura de bloques y sintácticamente similar a Pascal , en el que se basa. [ 3 ] Todos los lenguajes comparten elementos comunes de la norma IEC 61131. Las variables y las llamadas a funciones se definen mediante estos elementos comunes, lo que permite utilizar diferentes lenguajes de la norma IEC 61131-3 en el mismo programa.
Se admiten sentencias complejas e instrucciones anidadas:
- Bucles de iteración (REPETIR-HASTA; MIENTRAS-HACER)
- Ejecución condicional (SI-ENTONCES-SINO; CASO) [ 3 ]
- Funciones (SQRT(), SIN())
Programa de ejemplo
(* máquina de estados simple *) TxtState := ESTADOS [ StateMachine ] ;CASO StateMachine OF 1 : ClosingValve () ; StateMachine := 2 ; 2 : OpeningValve () ; SINO BadCase () ; END_CASE ;A diferencia de otros lenguajes de programación, la instrucción CASE no permite continuar con las demás condiciones: se entra en la primera condición que coincide y, tras ejecutar sus instrucciones, el bloque CASE se abandona sin comprobar las demás condiciones.
Ejemplos adicionales de programación ST
// Configuración del PLC CONFIGURACIÓN DefaultCfg VAR_GLOBAL b_Start_Stop : BOOL ; // Variable global para representar un valor booleano. b_ON_OFF : BOOL ; // Variable global para representar un valor booleano. Start_Stop AT % IX0.0 : BOOL ; // Entrada digital del PLC (Dirección 0.0) ON_OFF AT % QX0.0 : BOOL ; // Salida digital del PLC (Dirección 0.0). (Bobina ) END_VAR// Programar la ejecución del programa principal cada 20 ms TAREA Tick ( INTERVALO := t #20 ms ) ;PROGRAMA Principal CON Tick : Monitor_Start_Stop ; FIN_CONFIGURACIÓNPROGRAMA Monitor_Start_Stop // Programa real VAR_EXTERNAL Start_Stop : BOOL ; ON_OFF : BOOL ; END_VAR VAR // Variables temporales para el manejo de la lógica ONS_Trig : BOOL ; Rising_ONS : BOOL ; END_VAR// Inicio de la lógica // Capturar el flanco ascendente de una sola descarga de la entrada Start_Stop ONS_Trig := Start_Stop AND NOT Rising_ONS ; // Lógica principal para Run_Contact -- Activar/desactivar --- ON_OFF := ( ONS_Trig AND NOT ON_OFF ) OR ( ON_OFF AND NOT ONS_Trig ) ;// Lógica de disparo único ascendente Rising_ONS := Start_Stop ; END_PROGRAMEjemplo de bloque de función
//=======================================================================// Bloque de función Contador temporizado: Conteo incremental del intervalo temporizado//=======================================================================BLOQUE DE FUNCIONES FB_Contador_temporizadoVAR_INPUTEjecutar : BOOL := FALSE ; // Señal de activación para comenzar el conteo temporizadoIncremento_de_tiempo : REAL := 1.25 ; // Introduzca el tiempo de ciclo (segundos) entre conteosCount_Cycles : INT := 20 ; // Número de ciclos de conteo deseadosFIN_VARSALIDA_VARIABLETimer_Done_Bit : BOOL := FALSE ; // Bit de un solo disparo que indica que el ciclo del temporizador ha finalizadoCount_Complete : BOOL := FALSE ; // Bit de salida que indica que el conteo está completo. Current_Count : INT := 0 ; // Valor acumulado del contadorFIN_VARVARCycleTimer : TON ; // Función de temporizador de la biblioteca de comandosCycleCounter : CTU ; // Contador FB de la biblioteca de comandosTimerPreset : TIEMPO ; // Convierte el incremento de tiempo de segundos a ms.FIN_VAR// Inicio de la programación del bloque de funciónTimerPreset := REAL_TO_TIME ( in := Time_Increment ) * 1000 ;CicloTemporizador (en := Ejecutar Y NO CycleTimer . Q ,pt := TimerPreset );Timer_Done_Bit := CycleTimer . Q ;Contador de ciclos (cu := CycleTimer . Q ,r := NO ejecutar ,pv := Count_Cycles );Current_Count := CycleCounter . cv ;Count_Complete := CycleCounter . q ;BLOQUE DE FUNCIÓN FINALReferencias
- ↑ Bacidore, Mike (16 de mayo de 2018). "¿Debo limitar la programación a la lógica de escalera o usar todos los estándares dentro de IEC 61131?" . Control Design .
- ↑ Stevic, Tom (5 de mayo de 2017). "Una historia muy breve de las plataformas de programación de PLC" . Control Design .
- 1 2 Roos, Nieke. "Programación de PLC mediante texto estructurado". Departamento de Ciencias de la Computación, Universidad de Nijmegen. CiteSeerX 10.1.1.49.2016 .
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda )
- Normas IEC
- Controladores lógicos programables
- Lenguajes de programación
- Familia de lenguajes de programación Pascal