t300 capítulo 06 - sirve

Upload: formatc

Post on 01-Jun-2018

258 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/9/2019 T300 Capítulo 06 - Sirve

    1/15

  • 8/9/2019 T300 Capítulo 06 - Sirve

    2/15

      Page 2 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Contenido

    6.  Programación en Control Builder.......................................................................3 

    6.1  Información General .....................................................................................3 

    6.2 

    Diferentes Lenguajes y su Utilización. .........................................................3 6.3  Lenguaje de Bloques Funcionales (Function Block Diagram –

    FBD)..............................................................................................................3 6.3.1  Funciones Básicas ..........................................................................5 6.3.2  Conexiones......................................................................................6 6.3.3  Orden de Ejecución.........................................................................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 Ejecución.........................................................................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 Ejecución en Programas............................................................14 

    6.7.1  Ejercicio 6.3 - Code Sorting ..........................................................14 

  • 8/9/2019 T300 Capítulo 06 - Sirve

    3/15

      Page 3 of 15Capitulo 6

    6.Programación en Control Builder 

     

    6. Programación en Control Builder

    6.1 Información General

    Este capítulo presenta los lenguajes de programación soportados por ControlBuilder. Si bien el estándar IEC 61131-3 define cinco lenguajes, este capítulo soloabarcará los cuatro más utilizados. El lenguaje de secuencias, perteneciente alestándar IEC, será estudiado en un capítulo posterior. De igual forma laprogramación con Control Modules, propia de sistemas ABB, será estudiada en otrocapítulo.

    6.2 Diferentes Lenguajes y su Utilización.

    La norma IEC 61131-3 define cinco lenguajes, los más comunes del mercado.Dependiendo de la experiencia del programador, puede encontrar ventajas odesventajas a ciertos lenguajes de programación, sin embargo, los diferentesproblemas de control requieren distintas estrategias, de manera que pueden existirbeneficios reales si se elige correctamente el lenguaje de programación para unproblema dado.

    En aplicaciones pequeñas, con pocas condiciones de lógica, una buenaestructuración y creación de código reutilizable, se no presentan las mismasventajas 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 elde Secuencias (SFC – Secuential Function Chart ) son lenguajes gráficos.

    Por otra parte, los lenguajes IL y LD no son tan poderosos como ST o FBD. Ellenguaje 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 programación gráfico de alto nivel. En él se describen lasunidades de programación en términos de bloques y se muestra gráficamente elintercambio de datos entre ellos, de manera similar a los diagramas de circuitos

    electrónicos.

    En este lenguaje, los bloques y funciones se representan por “cajas negras”, y susparámetros de entrada o salida por pines de conexión. Las asignaciones de dichospines son representadas por líneas que provienen de otros pines o desde variables.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    4/15

      Page 4 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Cuando se trabaja con lenguaje FBD, la hoja de código cambia al modo FBD Pane.Esta queda dividida verticalmente en dos partes, con dos visualizaciones del mismocódigo. Normalmente la parte izquierda muestra los elementos que componen elcódigo (Structure View ) y la derecha muestra los bloques y sus conexiones (FBD).Sin embargo, la forma de visualizar el código puede ser elegida por el usuario conclick de botón derecho sobre la hoja de código. Además la parte derecha consta dedos zonas para visualizar dos partes distintas del mismo código.

    En una hoja de códigos, se pueden insertar Funciones y Bloques Funcionales. Lasfunciones corresponden a las expresiones que obtienen un valor único de salida,como por ejemplo operaciones aritméticas (suma, resta, multiplicación y división),operaciones de lógica (“y”, “o” y negación), conversión de datos, etc. Por otra parte,

  • 8/9/2019 T300 Capítulo 06 - Sirve

    5/15

  • 8/9/2019 T300 Capítulo 06 - Sirve

    6/15

      Page 6 of 15Capitulo 6

    6.Programación en Control Builder 

     

    6.3.2 Conexiones

    En el editor de FBD, los parámetros de funciones o bloques funcionales se muestrancomo pines de los bloques. La asignación de valores (variables o constantes) adichos parámetros son mostrados por líneas conectadas a los pines. Si un pin estáconectado a otro pin, el primero deberá ser de tipo salida, y el otro de entrada. Sinembargo, un pin de salida puede ser conectado a varios pines de entrada. Comorecomendación, si un pin de salida es conectado a una gran cantidad de pines deentrada, es mejor realizar la conexión del pin de salida a una variable, y luegoconectar la variable a los pines de entrada que corresponda.

    6.3.3 Orden de Ejecución

    El código creado en una hoja se ejecuta de acuerdo al orden de los bloques en lalista de itemes de la vista de estructura.

     Además, los bloques son ejecutados de la siguiente manera: se leen las entradas,se ejecuta la lógica interna y luego se actualizan las salidas.

    En el caso de que una de las salidas de un bloque sea conectada a una entrada delmismo bloque, el valor de entrada será el de la salida en la ejecución anterior. Loanterior explica el funcionamiento de la lógica del Ejemplo 5.2.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    7/15

      Page 7 of 15Capitulo 6

    6.Programación en Control Builder 

     

    6.3.4 Ejerc ici o 6.1 – Uso de FBD

    Genere el código de la figura, declarando las variables necesarias, en una nuevahoja de código llamada “FBD_Code”

    Realice la simulación, y observe el funcionamiento de la lógica.

     A su código, agregue los elementos necesarios para llegar a lo siguiente:

    Realice la simulación, y observe el funcionamiento de la lógica.

    Copie todo el código generado en la hoja FBD_Code, reemplazando el caracter “1”

    por “2”, de manera de llegar a lo siguiente.

    Pida asesoría al instructor para conectar la librería “BasicLib” a su aplicación“App_01”, y luego realice los reemplazos en su código para llegar a lo siguiente.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    8/15

      Page 8 of 15Capitulo 6

    6.Programación en Control Builder 

     

    El bloque RS  insértelo directamente sobre el editor de FBD y luego verifique sudeclaración en la hoja de declaración de Functions Blocks.

    Realice la simulación, y observe el funcionamiento de la lógica.

    6.4 Lenguaje Escalera (Ladder Diagram – LD)

    El diagrama escalera es un lenguaje gráfico, que representa una lógica de relé. Eneste lenguaje se pueden implementar lógica booleana compleja, basada en la ideade flujo de corriente por contactos de relé que alimentan bobinas.

     Además se pueden adicionar funciones y bloques funcionales con unarepresentación similar a la de FBC.

    La utilización de este lenguaje es claramente ventajosa para sistemas pequeños opara usuarios que están familiarizados con este lenguaje.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    9/15

      Page 9 of 15Capitulo 6

    6.Programación en Control Builder 

     

    6.4.1 Conexiones

    Las conexiones se realizan asignando variables a los contactos, bobinas y pines debloques insertados.

    Una variable conectada a una bobina asume el valor lógico de la bobina, energizadocorresponde al valor “1” lógico. Dentro del circuito, los contactos asumen el valor dela variable que tienen conectada.

    Los bloques conectados a una rama (Rung ) se ejecutan mientras el pin En seencuentre energizado, de lo contrario, el bloque no será ejecutado.

    6.4.2 Orden de Ejecución

    En LD, el orden de ejecución está dado por el numero de rama. La lógica de cadarama se ejecuta internamente de izquierda a derecha, finalizando con la evaluacióndel 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 loslenguajes. Una de las mayores ventajas de este lenguaje es que su escritura ylectura es muy fácil, dada su presentación estructurada. La sintaxis de ST es similar

    a lenguajes estructurados como Pascal o C.

    El código puede ser escrito en cualquier editor de texto, como Microsoft Word, yluego 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 asignación (:=), condicionales (if, case), iteración (for, while,repeat ) y control (exit, return). Para un mayor detalle de las sentencias verifiqueayuda en línea de Control Builder.

    Cada línea de sentencia va terminada con un caracter “;”.

    Cada sentencia contiene una o mas expresiones que son evaluadas a medida quese ejecuta el código. Las expresiones pueden ser de tipo booleana (not, and, or,

     xor ), aritmética (+, -, *, /, ** ), de relación (, =, =, ).

    Como ejemplo, se puede ver el caso de la sentencia if then else.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    10/15

      Page 10 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Expresión Ejemplo

    if   then 

    else

    end _ if ;

    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 valorlógico “1” a la variable “nivel_alto”, si no, se le asigna el valor lógico “0” a la variable“nivel_alto”.

    6.5.2 Funciones y Bloqu es Funcionales en ST

    Dentro del código en ST, se puede realizar llamado a funciones y bloques

    funcionales.

    Para llamar a una función, se debe escribir el nombre de la función y darle losparámetros de llamada. La función contiene el valor en si misma, de manera queeste puede ser asignado a variable, o ser utilizado en comparaciones. Por ejemploen la sentencia:

    Distancia := abs ( x1 – x2 );

    es decir, a la variable Distancia se le asigna el valor absoluto de la expresión (x1 –x2).

    El caso de los bloques funcionales es algo mas complejo, ya que ellos pueden serllamados para su ejecución, o se pueden llamar sus pines directamente. Además, alutilizar un bloque funcional, éste no se declara automáticamente en la hoja deFunction Blocks, de manera que es necesario declararlo con anterioridad.

    Por ejemplo:

  • 8/9/2019 T300 Capítulo 06 - Sirve

    11/15

      Page 11 of 15Capitulo 6

    6.Programación 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 parámetros. Las asignaciones(:=) se utilizan para los pines de entrada, mientras que el símbolo (=>) se utiliza paraasignar 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;

    TOf_1.PT := Motor1_Tiempo

    TOf_1 ( );

    Motor1_Rng := TOf_1.Q

    En este caso, se asignó valores a los pines de entrada del bloque, luego el bloquefue llamado , con lo que ejecuta su lógica interna, y finalmente se asigno a su pin desalida, una variable. Lo anterior es de gran utilidad cuando existen sistemas congran cantidad de código.

    6.5.3 Comentar ios

    Dentro del código, se pueden escribir comentarios para explicar la lógica. Parainsertar un comentario simple, se debe escribir “(*” al inicio del comentario y “*)” alfinal del comentario. Todo lo que quede entre ambos símbolos no será ejecutadocomo parte del código. En caso de querer dejar sin ejecución una gran cantidad decódigo, que puede incluso contener comentarios simples, se puede utilizarcomentarios con anidación, comenzando con “(#” y terminando con “#)”.

    6.5.4 Ejerc ici o 6.2 – Uso de ST

    Inserte una nueva hoja de código en su programa “Program1”, con nombre“ST_Code”, eligiendo el lenguaje de Texto Estructurado.

    Genere el siguiente código:

     Asignación de valores a pines de entrada

    Ejecución del function block

     Asignación del valor al pin de salida

  • 8/9/2019 T300 Capítulo 06 - Sirve

    12/15

      Page 12 of 15Capitulo 6

    6.Programación 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 simulación.

     Ahora ingrese el siguiente código:

    (* conversión de temperatura*)

    Celsius := 5 / 9 * (Farenheit - 32);

    Donde las variables Celcius y Farenheit son de tipo real.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    13/15

      Page 13 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Verifique su funcionamiento realizando la simulación, y comente las posibles fallas.

     Ahora cambie el código anterior por el siguiente:

    (* conversión de temperatura*)

    Celsius := 5.0 / 9.0 * (Farenheit – 32.0);

    Verifique su funcionamiento realizando la simulación, y comente las diferencias conel caso anterior.

     Ahora agregue el siguiente código.

    (* conversión de temperatura*)

    if Metric then

    Temperatura := Celsius;

    else

    Temperatura := 5.0/9.0*(Farenheit–32.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 simulación para verificar sufuncionamiento.

    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 unacolumna, y una instrucción por cada línea. Es similar al código máquina Assembler.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    14/15

      Page 14 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Las instrucciones consisten de un operador, seguido de uno o mas operandos. Lainstrucción realiza alguna acción sobre los operandos.

    En el ejemplo se carga un valor, luego se compara con otro y finalmente se guardael resultado.

    Para conocer las instrucciones que componen este lenguaje se puede revisar laayuda en línea de Control Builder.

    Este lenguaje es poco utilizado, por no ser muy amigable.

    6.7 Orden de Ejecución en Programas

    Dentro de un programa, existe un orden de ejecución para los bloques de código.De acuerdo a la presentación dentro del editor de programa, se ejecutan deizquierda a derecha.

    Para modificar el orden de ejecución, se puede ir a menú Edit > Code Block > Arrange, con lo que se abre un pop-up que permite ordenar la ejecución de losbloques.

    6.7.1 Ejercicio 6.3 - Code Sortin g

    Dentro de aplicación “App_01” cree un programa con nombre “Program2”. Definados bloques de código “Code_ST” con lenguaje ST y “Code_FBD” con lenguajeFBD.

  • 8/9/2019 T300 Capítulo 06 - Sirve

    15/15

      Page 15 of 15Capitulo 6

    6.Programación en Control Builder 

     

    Dentro de “Code_ST”, escriba el siguiente código:

    (* 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 código:

    Donde Cmd es variable booleana.

    Realice la simulación y verifique la permanencia de las tres variables.

    Cambie el orden de ejecución de los bloques, como se muestra:

    Nuevamente realice la simulación y verifique la permanencia de las tres variables.