Texto estructurado

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

El texto estructurado, abreviado como ST o STX, es uno de los cinco lenguajes admitidos por el estándar IEC 61131-3, diseñado para Controladores lógicos programables (PLC). Es un lenguaje de alto nivel estructurado en bloques y sintácticamente se parece a Pascal, en el que se basa. Todos los idiomas comparten elementos comunes IEC61131. Las variables y llamadas a funciones están definidas por elementos comunes, por lo que se pueden utilizar diferentes lenguajes dentro del estándar IEC 61131-3 en el mismo programa.

Se admiten declaraciones complejas e instrucciones anidadas:

  • Lazos de rotación (REPEAT-UNTIL; WHILE-DO)
  • Ejecución condicional (IF-THEN-ELSE; CASE)
  • Funciones (SQRT(), SIN())

Programa de muestra

(* máquina de estado simple *)TxtState := ESTADOS[StateMachine];CASE StateMachine OF 1: ClosingValve(); StateMachine := 2; 2: Valor de apertura();ELSE BadCase();END_CASE;

A diferencia de otros lenguajes de programación, no hay ningún método alternativo para la declaración CASE: se ingresa la primera condición coincidente y, después de ejecutar sus declaraciones, el bloque CASE se deja sin verificar otras condiciones.

Ejemplos de programación ST adicionales

// Configuración PLCCONFIGURACIÓN DefaultCfg VAR_GLOBAL b_Start_Stop : BOOL; // Variación global para representar un booleano. B_ON_OFF : BOOL; // Variación global para representar un booleano. Start_Stop AT %IX0.0:BOOL; // Entrada digital del PLC (Address 0.0) ON_OFF AT %QX0.0:BOOL; // Producción digital del PLC (Address 0.0). (Coil) END_VAR // Programar el programa principal para ser ejecutado cada 20 ms TASK Tick()INTERVAL := t#20ms); PROGRAMA Main CON EL CONVENIO Tick : Monitor_Start_Stop;END_CONFIGURATIONPROGRAMA Monitor_Start_Stop / Programa actual VAR_EXTERNAL Start_Stop : BOOL; ON_OFF : BOOL; END_VAR VAR // Variables temporales para el manejo lógico ONS_Trig : BOOL; Rising_ONS : BOOL; END_VAR // Inicio de la lógica // Coge el anillo de la entrada Start_Stop ONS_Trig := Start_Stop Y NO Rising_ONS;  // Principal Logic for Run_Contact -- Toggle ON / Toggle OFF --- ON_OFF := ()ONS_Trig Y NO ON_OFF) O ()ON_OFF Y NO ONS_Trig); // Rising One Shot logic  Rising_ONS := Start_Stop;END_PROGRAM

Ejemplo de bloque de funciones

================================================================================================================================================================================================================================================================// Función Block Timed Counter: Cuenta adicional del intervalo de tiempo================================================================================================================================================================================================================================================================FUNCTION_BLOCK FB_Timed_Counter VAR_INPUT Ejecutar : BOOL := FALSE; / / La señal del desencadenante para comenzar la cuenta de tiempo Time_Increment : REAL := 1.25; // Ingrese el tiempo del ciclo (Segundos) entre conteos Conde_Cycles : INT := 20; // Número de ciclos de conteo deseados END_VAR  VAR_OUTPUT Timer_Done_Bit : BOOL := FALSE; // Un poco de disparo indicando Timer Cycle Done Count_Complete : BOOL := FALSE; / // Profundidad Bit indicando que el Conde está completo  Current_Count : INT := 0; // Valor acumulativo de la contraprestación END_VAR  VAR CicleTimer : TON; // Timer FB de la Biblioteca del Mando CycleCounter : CTU; // Contrarretro FB de la Biblioteca del Mando TimerPreset : Hora; // Tiempo convertido_Incremento en segundos a MS END_VAR  // Inicio de la programación del bloque de funciones TimerPreset := REAL_TO_TIME()dentro := Time_Increment) * 1000; CicleTimer() dentro := Ejecutar Y NO CicleTimer.Q, pt := TimerPreset); Timer_Done_Bit := CicleTimer.Q;  CycleCounter() # := CicleTimer.Q, r := NO Ejecutar, pv := Conde_Cycles); Current_Count := CycleCounter.cv; Count_Complete := CycleCounter.q; END_FUNCTION_BLOCK
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save