You are on page 1of 11

Publicado Texto Estructurado (ST) para Dummies

Marzo 2018 estándar IEC 61131-3

Panasonic fue uno de los primeros fabricantes de automátas programables o


controladores lógicos programables (en adelante PLC por su acrónimo en Inglés),
en ofrecer un software de programación (FPWIN PRO) basado en el estándar
IEC 61131-3, así como uno de los principales miembros de la organización
internacional PLCopen.

El Estandar IEC 61131-3 unifica la forma de programar los PLCs, estableciendo


5 lenguajes de programación en automatización, dichos lenguajes se dividen en
Textuales (IL y ST) , Gráficos (LD y FDB) Gráficos Secuenciales (SFC).

Uno de los lenguajes mas extendidos por ser un lenguaje de alto nivel y por su
potente funcionalidad es el Texto Estructurado (ST). ¿Qué ventajas nos ofrece? y
¿Cómo pasar de los conocimientos a la acción? Descúbrelo a continuación
Porgramación en Texto Estructurado ST

Programación de PLCs en:

Texto Estructurado (ST)


IEC 61131-3

El texto estructurado es un lenguaje de alto nivel similar al Pascal, puede ser utilizado
para programar expresiones complejas con funciones condicionales y bucles como el
IF-THEN-ELSE; CASE, o, programar expresiones matemáticas como SQRT, COS, etc.

El ST, con unas construcciones simples pero potentes, permite reducir el número de
horas de desarrollo y simplificar la programación, y esto lo convierte en una herramienta
indispensable a la hora de programar aplicaciones complicadas.

Entre los beneficios que se pueden obtener del texto estructurado ST caben destacar:

Programación Intuitiva de ecuaciones matemáticas:


Las ecuaciones matemáticas se programan tal y como estamos
acostumbrados a escribirlas, ejemplo:

(* Dado como datos los catetos de un triángulo rectángulo, calcule:


- hipotenusa,
- altura respecto al ángulo recto y
- área *)

rCateto_1:=5;
rCateto_2:=7;
rHipotenusa:=SQRT(rCateto_1**2+rCateto_2**2);
rAlturaRelativaHipotenusa:=( rCateto _1* rCateto _2)/rHipotenusa;
rArea:=( rCateto _1* rCateto _2)/2;

Funciones de Selección IF y Case:


Ambas funciones son de “selección”. Se suelen utilizar para introducir
determinadas condiciones. Estas funciones permiten programar frases
construidas con un lenguaje muy parecido al Inglés, lo que hace que el
programa sea mucho mas claro, ejemplo:

(* Activar bomba de llenado si el nivel del depósito de agua es inferior


al nivel mínimo permitido y desactivarla al alcanzar el nivel óptimo *)

If (iNivel_Depósito_Agua<iNivel_Depósito_Mínimo) Then
bActivarBomba:=TRUE;
Elsif (iNivel_Depósito_Agua>iNivel_Depósito_Óptimo) Then
bActivarBomba:=FALSE;
End_if;

Cabe destacar que, por ejemplo, el anidado de funciones If ayuda a


esquivar los errores de programación generados por el desconocimiento de
funcionamiento del ciclo de scan de un PLC

Panasonic Electric Works España S.A. 2 de11


Porgramación en Texto Estructurado ST

Función FOR:
Es una función de bucle, es decir, repetir la ejecución de un determinado código de programa
pero con valores diferentes. También existen otras funciones de bucle como While, Repeat,
… pero la función For es la más utilizada.

Los bucles suelen ir asociados a variables del tipo array y su indexado (creación de un puntero
asociado al índice del array).

Un ejemplo claro de la función bucle puede ser el cálculo de números múltiplos. Para ello se
declaran las siguientes variables:

Siendo el código del programa:

(* Calcule los 10 primeros números múltiplos de 7 *)


For iPuntero := 1 To 10 Do
aiMúltiplos_de_7 [iPuntero]:=7*iPuntero;
End_for;

¿Y para 100 datos del array?.

For iPuntero := 1 To 100 Do


aiMúltiplos_de_7 [iPuntero]:=7*iPuntero; Contenido del Array
End_for;

Nota:
Es cierto que el tiempo de ciclo de scan del PLC sería más elevado pero los pasos de programa,
serian exactamente los mismos

¿Sabias Que?
A mediados del siglo XX, empezaron Además se simplificó la forma de
a desarrollarse los primeros equipos programa los PLCs, pasando de consolas
predecesores de lo que hoy se conocen de programación al uso de softwares
como: Controladores Lógicos Programables informáticos A medida que la tecnologías de los PLC iba
o Automátas Programables (PLC). evolucionando, lo hacia la de los software
Los primeros software de programación de programación.
Estos equipos estaban ideados para reducir utilizaban Mnemónicos, comandos
el cableado de los cuadros eléctricos complejos, que obligaban al programador Debido a que cada evolución del software
mediante programación básica de a tener amplios conocimientos sobre de programación dependía de la empresa
operaciones lógicas que hasta esa fecha el funcionamiento interno de los que fabricase el PLC, los programadores de
se realizaba mediante el cableado de microprocesadores por lo que se requería autómatas se veían obligados a aprender
componentes eléctricos externos. de personal cualificado. diferentes entornos, nombres de funciones
y direcciones de memoria según el equipo
Tras varias décadas de I+D y con los avances Posteriormente nació el diagrama de a utilizar. Por eso, con el transcurso de los
tecnológicos alcanzados a día de hoy, la contactos basado en imitar gráficamente años se creó la asociación “PLC Open”
funcionalidad de los PLCs ha sufrido una mediante símbolos el cableado que se haría que adopto los lenguajes del estándar IEC
gran transformación pudiendo realizar con componentes externos, permitiendo 61131-3.
funciones de altísimo nivel que en nada se una sencilla comprensión de cómo se
parecen a las posibilidades ofrecidas por los comportará el sistema y simplificando la
primeros equipos. búsqueda de errores en el código.

Panasonic Electric Works España S.A. 3 de11


Porgramación en Texto Estructurado ST

Estandar IEC 61131-3


Esta norma establece 5 lenguajes de programación:

Apariencia de los 5 lenguajes de programación en el entorno FPWIN PRO

Puede acceder a diferentes ejemplos para iniciarse en la programación de un software


estándar que cumple con el IEC61131-3, descargando la versión básica del FPWIN PRO 7 y
el primer nivel del curso online “AUTÓMATAS PROGRAMABLES Y USO DEL SOFTWARE DE
PANASONIC”

Versión Básica FPWIN PRO 7


Limitaciones versión básica FPWIN PRO:
Válido para programar cualquier PLC de Panasonic
y programas de menos de 10 Kpasos.

Descarga Aquí

Curso Online
Todos los ejercicios están
programados al menos en 2
lenguajes: LD y ST

Descarga Aquí

Panasonic Electric Works España S.A. 4 de11


Porgramación en Texto Estructurado ST

Nociones Básicas de Programación en Texto Estructurado


A continuación realizaremos una breve comparativa entre cómo se programa en diagrama de contactos
(LD) y en texto estructurado (ST).

Diagrama de Contactos Texto Estructurado


(LD) (ST)
Todas las instrucciones finalizan con el símbolo
Fin de Instrucción
“Punto y Coma”

Los comentarios comienzan por (* y finalizan por *)


(* Bienvenidos al curso de programación del FPWIN
PRO de Panasonic *)
Comentarios
Puede introducir unos comentarios nuevos o
comentar una línea existente si se escribe doblemente
la barra inclinada //

La asignación utiliza el símbolo “Dos Puntos


Igual” (:=) dado que el símbolo igual (=) implica
comparación

Y1F:=X7; (* Cuando X7 pasa a ON se enciende la


Asignación
Y1F*)

iResultado:=iSumando_1 + 122;

Nota: X = entrada / Y = Salidas

Si bien la función flanco es la misma para ambos lenguajes (DF o DFN), es cierto que en
diagrama de contactos se puede definir el flanco haciendo doble clic sobre dicho elemento.

En texto estructurado es obligatorio utilizar la función DF para el flanco de subida y DFN


Función Flanco para el flanco de bajada.

Y0:=DF(X0);

Las operaciones lógicas son idénticas en ambos lenguajes. Admite escribirlas en


mayúsculas, minúsculas o mixtas.

Y9:=X0 AND (R213 oR Y1) and NoT g_xSeta_Emergencia;

La única variación con respecto al diagrama de


contactos es que no existen las funciones de SET ni
RESET.
Operaciones Lógicas
El set y el reset se consiguen con la función IF.

If DF(X0) Then
Y0:=TRUE; (* En el flanco de subida
de X0 hacer un SET a la
Y0 *)
End_if;
Suma ADD +
Funciones matemáticas Resta SUB -
básicas. División DIV /
Producto MUL *
Nota: La prioridad de las
funciones matemáticas es: rHipotenusa:=SQRT(rCateto_1*rCateto1 +
Producto, División, Suma rCateto_2**2);
y Resta. Puede utilizar “()”
para indicar la prioridad Nota: SQRT es la función Raíz Cuadrada y ** implica
exponente

Igual EQ =
Distinto NE <>
Mayor GT >
Mayor o Igual GE >=
Funciones de Comparación
Menor LT <
Menor o Igual LE <=
bEncenderCalefacción:= rTemperaturaHabitación <
rTemperaturaConsigna;

Panasonic Electric Works España S.A. 5 de11


Porgramación en Texto Estructurado ST

Nociones Básicas de Programación en Texto Estructurado

Diagrama de Contactos Texto Estructurado


(LD) (ST)
Nota 1: No confundir el símbolo de comparación
“igual” (=) con el de asignación (:=)
Funciones de Comparación
Nota 2: El orden de los símbolos de mayor-igual y
menor-igual es el indicado en la página anterior. No
se puede utilizar => ni =<

FPWIN PRO 7
A continuación os mostraremos como crear un FB (bloque de función) para Temporizadores y
Contadores en Texto estructurado con FPWIN PRO

Introducir Funciones:
Primero os vamos a explicar como introducir una función.

Al introducir una función y pulsar la barra espaciadora se generará una plantilla de la instrucción
rHipotenusa:=SQRT(?REAL_a_Num?);

En esa plantilla se indica entre interrogaciones que tipo de dato se ha de introducir en cada uno
de los campos. Éste, podrá ser una variable o una constante. Haciendo doble clic sobre el tipo de
dato, el FPWIN PRO selecciona el dato completo para poder sustituirlo por el valor o la variable
que se desee.

Panasonic Electric Works España S.A. 6 de11


Porgramación en Texto Estructurado ST

rHipotenusa:=SQRT(?REAL_a_Num?);

Temporizadores y Contadores

Se han de utilizar temporizadores y contadores del tipo FB (bloque de función).

1. Definir una variable con su nombre y tipo:

2. Introduzca el nombre de dicha variable en la zona de edición y pulse espacio o CTRL+F1.


aparecerá la siguiente plantilla:

fbTiempo_Espera(start := ?BOOL?,
SV := ?INT?,
T => ?BOOL?,
EV => ?INT?);

Esa plantilla se podrá reducir a una sola línea si se desea.

fbTiempo_Espera(start := ?BOOL?, SV := ?INT?, T => ?BOOL?, EV => ?INT?);

Introduzca los datos del temporizador

fbTiempo_Espera(start := X0 AND NOT Y1, SV := 500, T => bEjecutar_Accion, EV => iTiempo_


Restante);

Al terminar de temporizar 500 mseg desde que se activa la X0, si no está Y1 a ON, entonces se
pondrá a ON bEjecutar_Accion.

No es necesario introducir todos los campos de salida de las funciones.

fbTiempo_Espera(start := X0 AND NOT Y1, SV := 500);

El bit de salida que se pondrá a ON al cumplirse la cuenta es fbTiempo_Espera.T y el tiempo


restante se encuentra en fbTiempo_Espera.EV.

FPWIN PRO 7
Panasonic Electric Works España S.A. 7 de11
Porgramación en Texto Estructurado ST

+ EJEMPLOS
Funciones de Selección o de Bucle
Las funciones básicas de selección o de bucle son:

If, For, While, Repeat y Case.

If y Case se pueden catalogar como instrucciones de selección dado que su finalidad es discriminar si se realiza una
determinada acción u otra.

For, While y Repeat son funciones de bucle dado que su finalidad es la repetición de una acción mientras se cumple
una determinada condición.

IF: Instrucción Condicional “SI”


(* Si el nivel de un depósito de agua es inferior al mínimo nivel del tanque, entonces se desea interrumpir el
riego que se nutre de dicho depósito y activar el bombeo para llenarlo. *)

If (iNivel_Agua<iNivel_Mínimo) Then
g_yRegar:=FALSE;
g_Activar_Bomba_Llenado_Depósito:=TRUE;
End_if;

Si la condición (iNivel_Agua<iNivel_Mínimo) no se cumple, todo lo que está dentro del IF no se ejecuta.

Nota: Al escribir IF y dar al espacio, se crea la llamada plantilla corta.

If ((?_bool?) Then
End_if;

Se puede generar la plantilla completa mediante el icono de plantillas:


Y seleccionando la plantilla deseada.

Dentro de un IF se puede utilizar las expresiones:

Elsif: Indica que si la condición anterior no se cumple, comprobar la condición de este ELSIF y
ejecutar su código de programa si se cumple. En caso contrario, salta al siguiente ELSIF hasta que
se cumpla una condición o se llegue al End_If;

Else: Significa en el resto de los casos o en caso contrario.

Un ejemplo con una estructura completa es el siguiente:


If (sDÍA=’Lunes’) then
iDía:=1;
Elsif (sDÍA=’Martes’) then
iDía:=2;
Elsif (sDÍA=’Miércoles’) then
iDía:=3;
Elsif (sDÍA=’Jueves’) then
iDía:=4;
Elsif (sDÍA=’Viernes’) then
iDía:=5;
Elsif (sDÍA=’Sábado’) then (* Pueden usarse tantos Elsif como considere necesarios *)
iDía:=6;
Else (* Si no es ninguno de los anteriores *)
iDía:=0;
End_if;

Panasonic Electric Works España S.A. 8 de11


Porgramación en Texto Estructurado ST

Nota: Puede anidar tantos IF como considere necesarios

Case: Función de Selección

Otra función de selección. Siempre afecta a una variable del tipo entero. En el siguiente ejemplo se
selecciona los días que existen en un mes según la variable iMes

Case iMes of
1,3,5,10,12: iDías:=31; (* Si el mes es 1,3,5,10,12, tiene 31 días *)
2: iDías:=28; (* Si el mes es 2, tiene 28 días *)
7..8: iDías:=31; (* Si el mes está comprendido entre 7 y 8, tiene 31 días *)
Else
iDías:=30; (* En el resto de los casos tiene 30 días *)
End_case;

For: Función de Bucle

La función FOR genera un bucle, es decir, realiza la misma acción varias veces durante un mismo ciclo
de scan.

Si en un array se dispone de las 10 últimas tomas de una señal analógica y deseamos realizar la media
de dichas tomas, es muy útil el uso de los bucles.

iSuma_Total:=0;

For iPuntero:= 1 To 10 Do
iSuma_Total:= iSuma_Total+iTomas_Analógicas[iPuntero];
End_for;

rMedia_10_Valores:=INT_TO_REAL(iSuma_Total)/10.0;
En el caso anterior, iPuntero se auto-incrementa cada vez que pasa por el End_For.

Se ha de tener especial cuidado con los bucles para evitar el generar un bucle infinito. Un bucle infinito
genera un error de watchdog por hacerse infinito el tiempo de ciclo de scan.

Una forma muy simple de hacer un bucle infinito es asignando un valor erróneo al puntero dentro
del bucle:
iSuma_Total:=0;

For iPuntero:= 1 To 10 Do
iSuma_Total:= iSuma_Total+iTomas_Analógicas[iPuntero];
iPuntero:= 1;
End_for;

While y Repeat Until: Función de Bucle

La función While (mientras) y Repeat Until (repetir hasta) son otras formas de generar un bucle. El
mismo ejemplo que el anterior realizado con el While y Repeat Until son:

(* While *)
iSuma_Total:=0;
iPuntero:= 1;
While (iPuntero<= 10) Do (* Mientras el puntero sea <=10 *)
iSuma_Total:= iSuma_Total+iTomas_Analógicas[iPuntero];
End_While
rMedia_10_Valores:=INT_TO_REAL(iSuma_Total)/10.0;

(* Repeat *)
iSuma_Total:=0;
iPuntero:= 1;
Repeat (* Inicio de la Repetición *)
iSuma_Total:= iSuma_Total+iTomas_Analógicas[iPuntero];
iPuntero:=iPuntero+1;

Panasonic Electric Works España S.A. 9 de11


Porgramación en Texto Estructurado ST

Until (iPuntero>= 10) (* Hasta que el puntero sea >=10 *)


End_Repeat;
rMedia_10_Valores:=INT_TO_REAL(iSuma_Total)/10.0;

#IF: Compilación condicional

La compilación condicional se utiliza para que el FPWIN PRO compile y descargue una parte de
código de programa en función de unas variables del tipo CONSTANTE

#IF (CONSTANTE) = 0 #THEN (* OBLIGATORIO EL USO DE CONSTANTES *)


(*CÓDIGO*)
#ELSE
(*CÓDIGO*)
#END_IF;

Existen variables constantes de sistema predefinidas.

Cuadro de diálogo de variables

Variables de sistema

Variables Constantes

La función de compilado condicional es muy util cuando se desea tener bajo un mismo programa
todas las posibles variaciones como por ejemplo, adaptaciones a diferentes autómatas, etc...

#IF (SYS_CURRENT_PLC = SYS_FP0R) #THEN


(*Programa adaptado para el FP0R*)

#ELSIF (SYS_CURRENT_PLC = SYS_FP_X) #THEN


(*Programa adaptado para el FPX *)
#END_IF;

Panasonic Electric Works España S.A. 10 de11


Porgramación en Texto Estructurado ST

Conclusiones
Como hemos venido mencionando a lo largo de este documento, el Texto estructurado ST, es un
lenguaje de alto nivel, como su nombre lo indica está pensado para la programación estructurada
(división de tareas), facilitando la programación de procesos que requieren instrucciones complejas
o grandes cálculos. Esto proporciona la ventaja de que los programas sean más fáciles de entender
y puedan ser leídos de forma secuencial, aportando mayor claridad y reduciendo la probabilidad de
errores.

Una de las principales características de este lenguaje, es que se obtiene un único bloque de
programa, cuando este es demasiado grande puede dificultar el manejo del código (aunque esto
se pude resolver empleando conjuntamente la programación modular), aparte de requerir mayores
habilidades de programación.

¿Qué lenguaje utilizar? Cada lenguaje tiene sus ventajas e inconvenientes, para tomar una
buena decisión debemos tener en cuenta, la experiencia del programador, la aplicación y el nivel
de complejidad de la misma, las necesidades del cliente y de su departamento de mantenimiento,
el tiempo de implementación, entre otros aspectos. No debemos olvidar que el desarrollo de
programas es fundamentalmente, una tarea de dedicación, esfuerzo y creatividad.

Para conocer más sobre este y otros lenguajes y de nuestro Software de programación FPWIN PRO
os recomendamos la realización de nuestro Curso básico de programación de autómatas, disponible

Panasonic Electric Works España S.A.


Barajas Park, San Severo 20, 28042 Madrid
Tel.: + 34 913 293 875 /Fax: + 34 913 292 976

www.panasonic.electric.works.es
E-mail: soporte.tecnico@eu.panasonic.com

Panasonic Electric Works España S.A. 11 de11

You might also like