Вы находитесь на странице: 1из 15

Page 1 of 15

Capitulo 6
6.Programacin en Control Builder

6. Programacin en
Control Builder

Prepared By:

T300
Engineering an 800xA System

ABB University
Av. Vicua Mackenna 1602
Santiago Chile
Fono:56-2-471-4371; Fax:56-2-4714399

Page 2 of 15
Capitulo 6
6.Programacin en Control Builder

Contenido
6.

Programacin en Control Builder.......................................................................3


6.1 Informacin General .....................................................................................3
6.2 Diferentes Lenguajes y su Utilizacin. .........................................................3
6.3 Lenguaje de Bloques Funcionales (Function Block Diagram
FBD)..............................................................................................................3
6.3.1 Funciones Bsicas ..........................................................................5
6.3.2 Conexiones......................................................................................6
6.3.3 Orden de Ejecucin.........................................................................6
6.3.4 Ejercicio 6.1 Uso de FBD.............................................................7
6.4 Lenguaje Escalera (Ladder Diagram LD) .................................................8
6.4.1 Conexiones......................................................................................9
6.4.2 Orden de Ejecucin.........................................................................9
6.5 Lenguaje de Texto Estructurado (Structured Text ST).............................9
6.5.1 Sentencias.......................................................................................9
6.5.2 Funciones y Bloques Funcionales en ST .....................................10
6.5.3 Comentarios ..................................................................................11
6.5.4 Ejercicio 6.2 Uso de ST .............................................................11
6.6 Lenguaje de Lista de Instrucciones (Instruction List IL) .........................13
6.7 Orden de Ejecucin en Programas............................................................14
6.7.1 Ejercicio 6.3 - Code Sorting ..........................................................14

Page 3 of 15
Capitulo 6
6.Programacin en Control Builder

6. Programacin en Control Builder


6.1 Informacin General
Este captulo presenta los lenguajes de programacin soportados por Control
Builder. Si bien el estndar IEC 61131-3 define cinco lenguajes, este captulo solo
abarcar los cuatro ms utilizados. El lenguaje de secuencias, perteneciente al
estndar IEC, ser estudiado en un captulo posterior. De igual forma la
programacin con Control Modules, propia de sistemas ABB, ser estudiada en otro
captulo.

6.2 Diferentes Lenguajes y su Utilizacin.


La norma IEC 61131-3 define cinco lenguajes, los ms comunes del mercado.
Dependiendo de la experiencia del programador, puede encontrar ventajas o
desventajas a ciertos lenguajes de programacin, sin embargo, los diferentes
problemas de control requieren distintas estrategias, de manera que pueden existir
beneficios reales si se elige correctamente el lenguaje de programacin para un
problema dado.
En aplicaciones pequeas, con pocas condiciones de lgica, una buena
estructuracin y creacin de cdigo reutilizable, se no presentan las mismas
ventajas que si tenemos un sistema grande.
El lenguaje de Texto Estructurado (ST Structured Text) y de Lista de Instrucciones
(IL Instruction List) son lenguajes textuales, mientras que los lenguajes de Bloques
Funcionales (FBD Function Block Diagram), Escalera (LD Ladder Diagram) y el
de Secuencias (SFC Secuential Function Chart) son lenguajes grficos.
Por otra parte, los lenguajes IL y LD no son tan poderosos como ST o FBD. El
lenguaje SFC es una herramienta poderosa para el desarrollo de secuencias.

6.3 Lenguaje de Bloques Funcionales (Function Block Diagram FBD)


FBD es un lenguaje de programacin grfico de alto nivel. En l se describen las
unidades de programacin en trminos de bloques y se muestra grficamente el
intercambio de datos entre ellos, de manera similar a los diagramas de circuitos
electrnicos.
En este lenguaje, los bloques y funciones se representan por cajas negras, y sus
parmetros de entrada o salida por pines de conexin. Las asignaciones de dichos
pines son representadas por lneas que provienen de otros pines o desde variables.

Page 4 of 15
Capitulo 6
6.Programacin en Control Builder

Cuando se trabaja con lenguaje FBD, la hoja de cdigo cambia al modo FBD Pane.
Esta queda dividida verticalmente en dos partes, con dos visualizaciones del mismo
cdigo. Normalmente la parte izquierda muestra los elementos que componen el
cdigo (Structure View) y la derecha muestra los bloques y sus conexiones (FBD).
Sin embargo, la forma de visualizar el cdigo puede ser elegida por el usuario con
click de botn derecho sobre la hoja de cdigo. Adems la parte derecha consta de
dos zonas para visualizar dos partes distintas del mismo cdigo.

En una hoja de cdigos, se pueden insertar Funciones y Bloques Funcionales. Las


funciones corresponden a las expresiones que obtienen un valor nico de salida,
como por ejemplo operaciones aritmticas (suma, resta, multiplicacin y divisin),
operaciones de lgica (y, o y negacin), conversin de datos, etc. Por otra parte,

Page 5 of 15
Capitulo 6
6.Programacin en Control Builder

los Bloques Funcionales son declarados en la hoja de declaracin, y luego pueden


ser llamados desde cualquier parte del programa, por lo que constituyen una
instancia de programa con un nombre nico.
Para insertar un bloque dentro del cdigo, se debe hacer click en el icono Insert
Function/Function Block, o presionar la tecla insert.

Con lo anterior se abrir un pop-up en donde se elige el tipo de bloque, el tipo de


dato a trabajar y la cantidad de pines.

El listado de bloques que es posible insertar, depende de las libreras que se


encuentren conectadas al proyecto y a la aplicacin.

6.3.1

Funciones Bsicas

Las funciones bsicas son:


-

Asignacin: move.

Booleanas: not, and, or, xor.

Aritmticas: add, sub, mul, div, exp, expt, mod, sqrt, abs, round.

Comparacin: eq, ge, gt, le, lt, ne.

Para conocer el significado de las funciones, se puede acceder a la ayuda en lnea


de Control Builder (presionando F1).

Page 6 of 15
Capitulo 6
6.Programacin en Control Builder

6.3.2

Conexiones

En el editor de FBD, los parmetros de funciones o bloques funcionales se muestran


como pines de los bloques. La asignacin de valores (variables o constantes) a
dichos parmetros son mostrados por lneas conectadas a los pines. Si un pin est
conectado a otro pin, el primero deber ser de tipo salida, y el otro de entrada. Sin
embargo, un pin de salida puede ser conectado a varios pines de entrada. Como
recomendacin, si un pin de salida es conectado a una gran cantidad de pines de
entrada, es mejor realizar la conexin del pin de salida a una variable, y luego
conectar la variable a los pines de entrada que corresponda.

6.3.3

Orden de Ejecucin

El cdigo creado en una hoja se ejecuta de acuerdo al orden de los bloques en la


lista de itemes de la vista de estructura.

Adems, los bloques son ejecutados de la siguiente manera: se leen las entradas,
se ejecuta la lgica interna y luego se actualizan las salidas.
En el caso de que una de las salidas de un bloque sea conectada a una entrada del
mismo bloque, el valor de entrada ser el de la salida en la ejecucin anterior. Lo
anterior explica el funcionamiento de la lgica del Ejemplo 5.2.

Page 7 of 15
Capitulo 6
6.Programacin en Control Builder

6.3.4

Ejercicio 6.1 Uso de FBD

Genere el cdigo de la figura, declarando las variables necesarias, en una nueva


hoja de cdigo llamada FBD_Code

Realice la simulacin, y observe el funcionamiento de la lgica.


A su cdigo, agregue los elementos necesarios para llegar a lo siguiente:

Realice la simulacin, y observe el funcionamiento de la lgica.


Copie todo el cdigo generado en la hoja FBD_Code, reemplazando el caracter 1
por 2, de manera de llegar a lo siguiente.

Pida asesora al instructor para conectar la librera BasicLib a su aplicacin


App_01, y luego realice los reemplazos en su cdigo para llegar a lo siguiente.

Page 8 of 15
Capitulo 6
6.Programacin en Control Builder

El bloque RS insrtelo directamente sobre el editor de FBD y luego verifique su


declaracin en la hoja de declaracin de Functions Blocks.
Realice la simulacin, y observe el funcionamiento de la lgica.

6.4 Lenguaje Escalera (Ladder Diagram LD)


El diagrama escalera es un lenguaje grfico, que representa una lgica de rel. En
este lenguaje se pueden implementar lgica booleana compleja, basada en la idea
de flujo de corriente por contactos de rel que alimentan bobinas.
Adems se pueden adicionar funciones y bloques funcionales con una
representacin similar a la de FBC.

La utilizacin de este lenguaje es claramente ventajosa para sistemas pequeos o


para usuarios que estn familiarizados con este lenguaje.

Page 9 of 15
Capitulo 6
6.Programacin en Control Builder

6.4.1

Conexiones

Las conexiones se realizan asignando variables a los contactos, bobinas y pines de


bloques insertados.
Una variable conectada a una bobina asume el valor lgico de la bobina, energizado
corresponde al valor 1 lgico. Dentro del circuito, los contactos asumen el valor de
la variable que tienen conectada.
Los bloques conectados a una rama (Rung) se ejecutan mientras el pin En se
encuentre energizado, de lo contrario, el bloque no ser ejecutado.
6.4.2

Orden de Ejecucin

En LD, el orden de ejecucin est dado por el numero de rama. La lgica de cada
rama se ejecuta internamente de izquierda a derecha, finalizando con la evaluacin
del estado de la bobina.

6.5 Lenguaje de Texto Estructurado (Structured Text ST)


El lenguaje de texto estructurado es un lenguaje de alto nivel. Es compacto,
altamente estructurado, y comprende las mismas funciones del resto de los
lenguajes. Una de las mayores ventajas de este lenguaje es que su escritura y
lectura es muy fcil, dada su presentacin estructurada. La sintaxis de ST es similar
a lenguajes estructurados como Pascal o C.
El cdigo puede ser escrito en cualquier editor de texto, como Microsoft Word, y
luego copiado al editor de Control Builder.
6.5.1

Sentencias

Las sentencias son propias de este lenguaje y representan su mayor ventaja.


Existen sentencias de asignacin (:=), condicionales (if, case), iteracin (for, while,
repeat) y control (exit, return). Para un mayor detalle de las sentencias verifique
ayuda en lnea de Control Builder.
Cada lnea de sentencia va terminada con un caracter ;.
Cada sentencia contiene una o mas expresiones que son evaluadas a medida que
se ejecuta el cdigo. Las expresiones pueden ser de tipo booleana (not, and, or,
xor), aritmtica (+, -, *, /, **), de relacin (<, >, <=, >=, =, <>).
Como ejemplo, se puede ver el caso de la sentencia if then else.

Page 10 of 15
Capitulo 6
6.Programacin en Control Builder

Expresin
if <expresin booleana> then
<sentencias>
else
<sentencias>
end_if;

Ejemplo
if nivel > 50 then
nivel_alto := true;
else
nivel_alto := false;
end_if;

En el ejemplo, si la variable nivel tiene un valor mayor a 50, se le asigna el valor


lgico 1 a la variable nivel_alto, si no, se le asigna el valor lgico 0 a la variable
nivel_alto.

6.5.2

Funciones y Bloques Funcionales en ST

Dentro del cdigo en ST, se puede realizar llamado a funciones y bloques


funcionales.
Para llamar a una funcin, se debe escribir el nombre de la funcin y darle los
parmetros de llamada. La funcin contiene el valor en si misma, de manera que
este puede ser asignado a variable, o ser utilizado en comparaciones. Por ejemplo
en la sentencia:
Distancia := abs ( x1 x2 );
es decir, a la variable Distancia se le asigna el valor absoluto de la expresin (x1
x2).
El caso de los bloques funcionales es algo mas complejo, ya que ellos pueden ser
llamados para su ejecucin, o se pueden llamar sus pines directamente. Adems, al
utilizar un bloque funcional, ste no se declara automticamente en la hoja de
Function Blocks, de manera que es necesario declararlo con anterioridad.
Por ejemplo:

Page 11 of 15
Capitulo 6
6.Programacin en Control Builder

TOf_1 ( In := Motor1_Cmd,
PT := Motor1_Tiempo,
Q => Motor1_Rng );
En este caso, el bloque TOf_1 es llamado con sus parmetros. Las asignaciones
(:=) se utilizan para los pines de entrada, mientras que el smbolo (=>) se utiliza para
asignar el valor del pin de salida a una variable.
Existe otra forma de llamar al bloque, como se muestra en el siguiente ejemplo:
TOf_1.In := Motor1_Cmd;
Asignacin de valores a pines de entrada

TOf_1.PT := Motor1_Tiempo
TOf_1 ( );
Motor1_Rng := TOf_1.Q

Ejecucin del function block

Asignacin del valor al pin de salida

En este caso, se asign valores a los pines de entrada del bloque, luego el bloque
fue llamado , con lo que ejecuta su lgica interna, y finalmente se asigno a su pin de
salida, una variable. Lo anterior es de gran utilidad cuando existen sistemas con
gran cantidad de cdigo.
6.5.3

Comentarios

Dentro del cdigo, se pueden escribir comentarios para explicar la lgica. Para
insertar un comentario simple, se debe escribir (* al inicio del comentario y *) al
final del comentario. Todo lo que quede entre ambos smbolos no ser ejecutado
como parte del cdigo. En caso de querer dejar sin ejecucin una gran cantidad de
cdigo, que puede incluso contener comentarios simples, se puede utilizar
comentarios con anidacin, comenzando con (# y terminando con #).

6.5.4

Ejercicio 6.2 Uso de ST

Inserte una nueva hoja de cdigo en su programa Program1, con nombre


ST_Code, eligiendo el lenguaje de Texto Estructurado.
Genere el siguiente cdigo:

Page 12 of 15
Capitulo 6
6.Programacin en Control Builder

if bajar_valor then
(* decrecimiento del contador *)
i := I 1;
if i < 1 then
bajar_valor := false;
end_if;
else
(* incremento del contador *)
i := i + 1;
if i > 10 then
bajar_valor := true;
end_if;
end_if;

Donde la variable i es de tipo entero (int), y bajar_valor es de tipo booleano (bool).


Verifique su funcionamiento realizando la simulacin.
Ahora ingrese el siguiente cdigo:
(* conversin de temperatura*)
Celsius := 5 / 9 * (Farenheit - 32);

Donde las variables Celcius y Farenheit son de tipo real.

Page 13 of 15
Capitulo 6
6.Programacin en Control Builder

Verifique su funcionamiento realizando la simulacin, y comente las posibles fallas.


Ahora cambie el cdigo anterior por el siguiente:
(* conversin de temperatura*)
Celsius := 5.0 / 9.0 * (Farenheit 32.0);

Verifique su funcionamiento realizando la simulacin, y comente las diferencias con


el caso anterior.
Ahora agregue el siguiente cdigo.
(* conversin de temperatura*)
if Metric then
Temperatura := Celsius;
else
Temperatura := 5.0/9.0*(Farenheit32.0);
End_if;

Donde Metric es variable de tipo booleana, y Temperatura es de tipo real.


Cambie el valor de la variable Metric en la simulacin para verificar su
funcionamiento.

6.6 Lenguaje de Lista de Instrucciones (Instruction List IL)


Este es un lenguaje de bajo nivel, en el cual las instrucciones son listadas en una
columna, y una instruccin por cada lnea. Es similar al cdigo mquina Assembler.

Page 14 of 15
Capitulo 6
6.Programacin en Control Builder

Las instrucciones consisten de un operador, seguido de uno o mas operandos. La


instruccin realiza alguna accin sobre los operandos.

En el ejemplo se carga un valor, luego se compara con otro y finalmente se guarda


el resultado.
Para conocer las instrucciones que componen este lenguaje se puede revisar la
ayuda en lnea de Control Builder.
Este lenguaje es poco utilizado, por no ser muy amigable.

6.7 Orden de Ejecucin en Programas


Dentro de un programa, existe un orden de ejecucin para los bloques de cdigo.
De acuerdo a la presentacin dentro del editor de programa, se ejecutan de
izquierda a derecha.
Para modificar el orden de ejecucin, se puede ir a men Edit > Code Block >
Arrange, con lo que se abre un pop-up que permite ordenar la ejecucin de los
bloques.

6.7.1

Ejercicio 6.3 - Code Sorting

Dentro de aplicacin App_01 cree un programa con nombre Program2. Defina


dos bloques de cdigo Code_ST con lenguaje ST y Code_FBD con lenguaje
FBD.

Page 15 of 15
Capitulo 6
6.Programacin en Control Builder

Dentro de Code_ST, escriba el siguiente cdigo:


(* Reset *)
if Start then
start := false;
End_if;
if Stop then
Stop := false;
End_if;

Donde las variables Start y Stop son booleanas.


Dentro de Code_FBD genere el siguiente cdigo:

Donde Cmd es variable booleana.


Realice la simulacin y verifique la permanencia de las tres variables.
Cambie el orden de ejecucin de los bloques, como se muestra:

Nuevamente realice la simulacin y verifique la permanencia de las tres variables.

Вам также может понравиться