Professional Documents
Culture Documents
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
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:
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;
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;
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:
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.
Descarga Aquí
Curso Online
Todos los ejercicios están
programados al menos en 2
lenguajes: LD y ST
Descarga Aquí
iResultado:=iSumando_1 + 122;
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.
Y0:=DF(X0);
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;
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.
rHipotenusa:=SQRT(?REAL_a_Num?);
Temporizadores y Contadores
fbTiempo_Espera(start := ?BOOL?,
SV := ?INT?,
T => ?BOOL?,
EV => ?INT?);
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.
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 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 (iNivel_Agua<iNivel_Mínimo) Then
g_yRegar:=FALSE;
g_Activar_Bomba_Llenado_Depósito:=TRUE;
End_if;
If ((?_bool?) Then
End_if;
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;
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;
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;
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;
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
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...
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
www.panasonic.electric.works.es
E-mail: soporte.tecnico@eu.panasonic.com