22 | 04 | 2019
MENÚ PRINCIPAL
ZONAS
ACCESO USUARIO
USUARIOS CONECTADOS

Hay 127 invitados y 2 miembros en línea

VISITAS
04280323
Hoy
Ayer
Semana
U.semana
Mes
U.Mes
Total
693
3057
693
1254193
86953
133209
4280323

Tu IP: 148.251.145.225
2019-04-22 04:03
PUBLICIDAD

1.- Introducción

Este articulo es la primera parte de una serie de dos.

En el control industrial se utiliza la norma estándar internacional IEC 61131-3 que define los lenguajes de programación de los Controladores Lógicos Programables (PLC). Uno de ellos es el Texto Estructurado (Structured Text - ST) que es un lenguaje textual de alto nivel similar a PASCAL.

Un programa en ST se compone de declaraciones. Hay dos tipos de declaraciones: de asignación, para asignar un valor a una variable y de control, como sentencias de selección y sentencias de repetición.

Las declaraciones se componen de los siguientes elementos:

Variables, Constantes, Operadores y Funciones.

 

2.- Composición del Texto Estructurado

Operador de asignación:

El operador de asignación es := y asigna el valor de la expresión de la derecha a la variable de la izquierda. Se utiliza para establecer valores iniciales, almacenar resultados de cálculo e incrementar las variables.

Ejemplos:

A := 4 Asignamos a A el valor 4.

B :=* C  Asignamos a B el doble del valor de C.

D := E Asignamos a D el valor de E.

F := TRUE Asignamos a F el valor “cierto” (1 lógico)(on).

G := FALSE Asignamos a G el valor “falso” (0 lógico)(off).

 

Operador de comparación:

El operador de comparación es = no confundir el operador de asignación, con el de comparación.

Ejemplos:

A = 4 comparamos el valor de A con 4.

B = 2 * C comparamos el valor de B con el doble del valor de C.

Colores usados en el código

 El CX-Programmer muestra automáticamente texto en los colores siguientes:

Palabras reservadas:   Azul

Comentarios:             Verde

Errores:                       Rojo

Resto de cosas:         Negro

 Los colores NO los podemos personalizar. 

 

(* Ejemplo *)

a := a AND NOT b;

 

(* Selección *)

IF a = TRUE THEN

a := a AND B;

valor := (a+b) *15 +16#FF;

d := ABS (valor);

END_IF;

 Delimitador de instrucciones:

 Las declaraciones de asignación y control deben acabar siempre con un delimitador de punto y coma ( ; ), no se pueden completar simplemente usando un retorno de carro.

Ejemplos:

 

(* Ejemplo 1 *)

A := A + B;

 

(* Ejemplo 2 *)

IF C = TRUE THEN

C := C AND B;

END_IF;

 

No se puede usar un delimitador dentro de una sentencia ya que se producirá un error de sintaxis.

Ejemplo:

(* Ejemplo *)     MAL 

IF C = TRUE ; THEN

C := C AND B;

END_IF;

 

 Comentarios:

 Los comentarios se encierran entre paréntesis y asteriscos (* y *). Se puede usar cualquier carácter dentro del comentario excepto paréntesis y asteriscos. Los comentarios pueden comprender varias líneas. No se admite anidamiento dentro de los comentarios.

 

Ejemplos:

(*Este es un ejemplo de comentario válido*)

(*(*Este es un ejemplo de comentario no válido*)*) 

 

Espacios, Retornos de Carro y Tabulaciones:

 Se pueden utilizar cualquier número de espacios, retornos de carro y tabulaciones en cualquier lugar dentro de las sentencias. Se recomienda usarlos entre palabras reservadas y ecuaciones para facilitar su mejor comprensión.

 No podemos utilizar espacios, retornos de carro y tabulaciones dentro de palabras reservadas, nombres de variables, caracteres especiales y constantes (valores numéricos).

Ejemplos:

(* Ejemplo 1 *)   →   (* Ejemplo 1 *)

A:=A+B;                     A   :=   A   +   B;

 

(* Ejemplo 2 *)      →     (* Ejemplo 2 *)

IFC=TRUE  THEN           IF  C  =  TRUE  THEN

C:=C ANDB;                           :=  C  AND  B;

END_IF;                         END_IF;

 

 Mayúsculas y Minúsculas:

 Es indistinto el uso de mayúsculas y minúsculas en cualquier sentencia o nombre de variable.

 Ejemplos:

(* Ejemplo 1 *)

IF  A = TRUE  THEN

A := A  AND  B;

END_IF;

 

(* Ejemplo 2 *)

if  a = true  then

a := a  and  b;

end_if;

 

Nombres de variables:

 Los caracteres siguientes no se pueden utilizar en nombres de variables:

!   "   #   $   %   &   `   (   )   -   =   ^   ~   \   /   |   @   [   ]   {   }   ;   :   +   *   ,   <   >   .   ¿  ?

Las variables no pueden comenzar por un número (0 a 9).

No se pueden utilizar espacios en nombres de variables.

 

Prioridad entre operadores:

Las operaciones que requieran prioridad las pondremos entre paréntesis.

Ejemplo:

 

AND tiene prioridad sobre OR.

 

En  A OR B AND C”, se dará prioridad a B AND C.

 

En  (A OR B) AND C”, se dará prioridad a (A OR B).

 

Cadenas de Texto

  • El número máximo de caracteres alfanuméricos en una cadena de texto (tipo STRING) es de 255.
  • Las cadenas de texto no distinguen entre mayúsculas y minúsculas.
  • Una cadena de texto se tiene que poner entre comillas  →  'AAA'.

 

    Notación

Descripción

‘A’

 Indica la cadena de texto "A" (ASCII 41)

‘ ’

 Indica una cadena de texto que contiene un único espacio (ASCII 20)

‘’

 Indica una cadena de texto vacía

 

  • Un carácter $ seguido de dos dígitos numéricos se interpretan como un hexadecimal.

$02 → #02 hexadecimal

  • Un carácter $ seguido de una letra se interpreta como:

 

    Notación

                                                      Descripción

 '$$'

 Carácter de $ (signo del dollar)

 (Código ASCII: #24)

 '$''

 Comilla simple

 (Código ASCII: #27)

 '$L' ó '$l'

 Final de línea (LF)

 (Código ASCII: #0A)

 '$N' ó '$n'

 Nueva línea (CR + LF)

 (Código ASCII: #0D0A)

 '$P' ó '$p'

 Final de página (FF)

 (Código ASCII: #0C)

 '$R' ó '$r'

 Retorno de carro (CR)

 (Código ASCII: #0D)

 '$T' ó '$t'

 Tabulación horizontal (Tab)

 (Código ASCII: #09)

 

Constantes Numéricas:

Los valores numéricos se pueden expresar en decimal, hexadecimal, octal o binario de la siguiente forma:

Ejemplo, para el valor decimal 12:

 - Decimal (sin prefijo):         12

 - Hexadecimal:               16#C

 - Octal:                            8#14

 - Binario:                         2#1100

 

(* Ejemplo *)

IF  Z = TRUE  THEN

a := 12;

b := 16#C;

c := 8#14;

d := 2#1100;

END_IF;

 

Operadores o Funciones (de más a menos prioridad):

 

Operador

Tipo de operación

 ( ) [ ]

 Expresión/Tablas[índices]

 Función ()

 Evaluación de una función

 **

 Exponenciación

 NOT

 Complemento

 *       /

 Multiplicación / División

 +      -

 Suma / Resta

 <  >     <=     >=

 Comparaciones

 =      < >

 Igualdad / Desigualdad

 AND     &

 Operación Booleana AND

 XOR

 Operación Booleana XOR

 OR

 Operación Booleana OR

 

Sentencias o declaraciones:

 

         Sentencias o Declaraciones

                      Función

 ;

 Final de declaración

 (*   *)

 Comentario

 :=

 Asignación

 IF, THEN, ELSE, ELSIF, END_IF

 Condicional simple

 CASE OF, ELSE, END_CASE

 Condicional compuesta

 FOR, TO, BY, DO, END_FOR

 Bucle con n repeticiones

 WHILE, DO, END_WHILE

 Bucle con condición inicial

 REPEAT, UNTIL, END_REPEAT

 Bucle con condición final

 EXIT

 Sale del proceso de un bucle

 RETURN

 Sale del bloque de función

  

3.- Sentencias de control

 Sentencia IF:

 Esta sentencia se utiliza para ejecutar una expresión cuando se cumple una condición especificada. Si la condición no se cumple, se ejecuta una expresión diferente.

 IF se debe utilizar junto con END_IF.

 IF - Condición Simple:

Sintaxis:       

IF   < Condición >   THEN

       < Expresión_1 >;

ELSE

       < Expresión_2 >;

END_IF;

 

Diagrama de flujo:

Diagrama1

Sintaxis:

IF < Condición_1 > THEN

       IF < Condición_2 > THEN

       < Expresión_1 >;

       ELSE

       < Expresión_2 >;

       END_IF;

END_IF;

 

 Diagrama de flujo:

 Diagrama 2

 

IF - Condición Múltiple:

Sintaxis:

IF < Condición_1 > THEN < Expresión_1 >;

       ELSIF < Condición_2> THEN < Expresión_2 >;

       ELSIF < Condición_3> THEN < Expresión_3 >;

 

       etc…..

 

       ELSIF < Condición _n > THEN < Expresión _n >;

ELSE

                   < Expresión _m >;


Diagrama de flujo: 

Diagrama 3

Ejemplos:

IF A>0 THEN

     X:=10;

  ELSE

     X:=0;

  END_IF;

 

 

IF A THEN X:=10;

  ELSE X:=0;

END_IF;

 

 

 

IF A>0 AND B>1 THEN

     X:=10; Y:=20;

ELSE

     X:=0; Y:=0;

END_IF;

 

 

IF A>0 THEN X:=10;

ELSIF B=1 THEN X:=1;

ELSIF B=2 THEN X:=2;

ELSE

     X:=0;

END_IF;

 


 

HASTA AQUÍ LA PRIMERA PARTE

 

BUSCAR EN PORTAL
PORTAL ELECTROZONA