PDF de programación - Programación Avanzada (2)

Imágen de pdf Programación Avanzada (2)

Programación Avanzada (2)gráfica de visualizaciones

Publicado el 12 de Enero del 2019
607 visualizaciones desde el 12 de Enero del 2019
1,0 MB
75 paginas
Creado hace 5a (21/09/2015)
PROGRAMACIÓN AVANZADA (2)

Índice

• REPÁSO BÁSICO

- Operaciones de conversión de datos

- Operaciones digitales con palabras

- Funciones matemáticas avanzadas

- Saltos

• FUNCIONES Y BLOQUES

- Funciones FC’s

- Ficheros DB’s (Bloques de datos. Tipos de datos)

- Utilización de LIBRERÍAS

- Bloques de función (FB’s)

• TRATAMIENTO ANALÓGICO

• BLOQUES DE ORGANIZACIÓN (OB’s)

• DIRECCIONAMIENTO INDIRECTO

REPASO BÁSICO

REPASO BÁSICO

Operaciones de conversión de datos

Como se ha visto en la primera parte de estos apuntes, con el autómata pude
trabajarse con cuatro tipos de datos: BCD, INT, DINT y REAL.

Alguno de los formatos anteriores no permiten, por ejemplo,
realizar
operaciones aritméticas, este es el caso del formato BCD. Así, la única opción
posible para realizar operaciones aritméticas sería convertir este tipo de datos
en INT o DINT o REAL, según se defina la operación deseada.

Los códigos AWL para pasar de BCD a INT o DINT son:

BCD a INT → BTI
BCD a DINT→ BTD

Los códigos para pasar de INT o DINT a BCD son:

INT a BCD → ITB
DINT a BCD → DTB

REPASO BÁSICO

Operaciones de conversión de datos

También, con numeros enteros (INT o DINT) se pueden realizar operaciones
definidas en el campo de los números reales. Para ello, habrá que convertir el
número entero en doble entero y, posteriormente, el doble entero a real, es
decir:

INT→ DINT→REAL

En este caso, los códigos para pasar de INT a DINT, y de DINT a REAL serán:

INT a DINT → ITD
DINT a REAL→ DTR

Con las siguientes sentencias se pueden truncar o redondear números reales
con los siguientes códigos AWL:

REAL a DINT → TRUNC
REAL a DINT → RND

REPASO BÁSICO

Operaciones de conversión de datos

Por último indicar otras sentencias de conversión para RND que resultan útiles
en la programación:

RND+
RND-

// redondea al DINT mayor siguiente
// redondea al DINT menor siguiente

Como ejemplo de operación de conversión supóngase que se quiere convertir el
número entero almacenado en la marca MW120 en real, almacenándolo en la
marca MW180. El código de programa sería:

L
ITD
DTR
T

MW

120

MD

240

REPASO BÁSICO

Operaciones digitales con palabras

Las operaciones lógicas con palabras en AWL se ejecutan bit a bit en cada una de
las palabras y obedecen al código:

UW

OW

// AND lógica

// OR lógica

XOW // XOR lógica

Ejemplo de operación lógica con palabras en AWL:

EW
W#16#12ED

0

L
L
UW/OW/XOW
T
MW

10

// carga la palabra de la entrada del byte 0
// carga el número hexadecimal 12ED
// ejecuta la operación logíca bit a bit
// transfiere el valor lógico de la operación

a la dirección de memoria del byte 10

REPASO BÁSICO

Funciones matemáticas avanzadas

Representación de los números reales:

32 bits

1º: signo

1 bit

3º: mantisa

23 bits

desde 2-1 hasta 2-23

2º: exponente binario

8 bits

)127(2).1(.efSrealnum REPASO BÁSICO

Funciones matemáticas avanzadas

Las funciones matemáticas más utilizadas en programación son:

SQR
SQRT

EXP
LN

// cuadrado de un número real
// raíz cuadrada de un número real

// función exponencial de base e (2.718283)
// logaritmo neperiano

Ejemplo de una aplicación de función matemática en AWL:

L
SQRT
T

5.0

MD

30

// carga el número real 5.0 en ACU1
// calcula la raíz cuadrada de ACU1
// transfiere el valor del cálculo a MD 30

REPASO BÁSICO

Funciones matemáticas avanzadas

También se utilizan las funciones trigonométricas utilizando como unidad angular
el radián (SI):

SIN
COS
TAN

// seno de un ángulo en rad
// coseno de un ángulo
// tangente de un ángulo

y sus correspondientes funciones inversas:

ASIN
ACOS
ATAN

// arcoseno de un ángulo en rad
// arcocoseno de un ángulo
// arcotangente de un ángulo

Ejemplo de una aplicación de función trigonométrica en AWL:

L
SIN
T

5.0

MD

30

// carga el ángulo 0.5 en ACU1
// calcula el seno de 0.5
// transfiere el valor del cálculo a MD 30

REPASO BÁSICO

Saltos

Los saltos son muy importantes en programación porque dotan de dependencia a
operaciones concretas.

Por ejemplo, con las líneas de programa AWL:

U
L

E
MW

0.0
100

en ACU1 se cargará el valor de MW 100 independiente mente del valor del bit de
entrada E 0.0.

Utilizando el ejemplo anterior, con un salto se podría condicionar la carga de MW
100:

Instrucción

de salto

Etiqueta con restricciones:

Máx. cuatro caracteres

El primer caráct. no puede

ser un número

-------------------
E
U
INST
ETIQ
-------------------
-------------------
ETIQ:
L MW
--------------------

100

0.0

// código de programa
// RLO

// código de programa

// sentencias condicionadas

REPASO BÁSICO

Saltos

Los saltos son muy importantes en programación porque dotan de dependencia a
operaciones concretas.

Los saltos pueden orientarse según una secuencia de programación de arriba
hacia abajo. La orientación contraria no es deseable ya que en el programa se
podrían generar bucles.

Existe un tipo de salto especial denominado SALTO DE BUCLE. La característica más
importante de este tipo de salto es que en la secuencia de un programa, el salto se
repetirá tantas veces como indique el acumulador ACU1.

ETIQ:

----------------
----------------

LOOP ETIQ

// sentencias condicionadas

Cada vez que se ejecuta LOOP se resta 1 al valor del acumulador ACU1. Después se
compara el valor del acumulador con 0.

FUNCIONES Y BLOQUES

FUNCIONES Y BLOQUES

Funciones FC’s

Puede definirse como un bloque FC como un conjunto de sentencias de programa
que pueden ser llamadas desde OB1 u otro bloque FC de una forma repetitiva.

OB1

FC1

FC2

•Las funciones se invocan a través de una

llamada.

•Las funciones pueden ser invocadas desde
otras funciones.

•Las llamadas se ejecutan a través de sentencias.

FUNCIONES Y BLOQUES

Funciones FC’s

Las tres sentencias que se utilizan a la hora de ejecutar una llamada a función son:

• CALL FC1
• CC
• UC

“FUNCION” (condicional según expresión lógica)
“FUNCION” (incondicional)

(incondicional)

La diferencia entre CALL y UC es que CALL necesita ser introducida con parámetros
y UC no necesita parámetros.

Los PLC’s tienen limitado el número de funciones que pueden ser invocadas a la
hora de ejecutar un programa, si bien, este número es muy elevado.

La ejecución de todas las FC’s invocadas desde OB1 y las distintas funciones ha de
ocupar un tiempo menor que el de vigilancia.

Al igual que en otros tipos de programación, para los PLC’s es importante dotar a
las FC’s de independencia en cuanto al uso de variables.

FUNCIONES Y BLOQUES

Funciones FC’s

En las FC’s se pueden utilizar las mismas zonas de memoria que en el bloque OB1.

OB1

M

E

S

Z

T

FC1

FC2

FUNCIONES Y BLOQUES

Funciones FC’s

Tipos de variables

variables/datos

GLOBALES

variables/daltos

LOCALES

• PAE / PAA

• E / A

• M / T / Z

• Áreas de DB’s

variables

TEMPORALES

variables

ESTÁTICAS

• Se borran después de

la ejecución de un bloque.

• Se mantienen después de
la ejecución de un bloque.

• Se almacenan de forma

• Se almacenan de forma

temporal en la L. STACK.
• Se utilizan en: OB’s, FC’s

permanente en DB’s.

• Se utilizan unicamente en

y FB’s.

FB’s.

FUNCIONES Y BLOQUES

Funciones FC’s

Es importante el concepto de PILA DE DATOS LOCALES (L. STACK)

La L.STACK es una zona de memoria separada de la CPU que contiene las variables
temporales de los bloques. Por lo tanto esta zona de memoria ha de ser
gestionada por el sistema operativo.

El objetivo de la L.STACK es el de reservar una zona de memoria disponible para el
uso de una función (ej.: FC1) de modo que dicha función pueda ser utilizada por
otras OB1 sin que se generen conflictos.

Sistema
operativo

1

OB1

2

5

FC1

3

FC2

4

vbles./datos globales

vbles./datos temp

eventos

1

2

3

4

5

FC1

OB1

OB1

FC2

FC1

OB1

L. STACK

FC1

OB1

OB1

FUNCIONES Y BLOQUES

Funciones FC’s

Para el direccionamiento de las zonas de memoria de una función (FC) se utiliza la
marca L (load):

L

LW

4

nº byte

load

En la L. STACK
¡¡ OJO, aquí no
hay marcas M !!

A las funciones (FC’s) se les pueden pasar parámetros cuando se ejecuta una
llamada:

OB1

parámetros

FC1

FUNCIONES Y BLOQUES

Funciones FC’s

Los parámetros se pasan a través de interfaces. Los interfaces incorporan los
siguientes tipos de parámetros:

interface

(parámetros de entrada)
(parámetros de salida)

IN
OUT
IN.OUT (parámetros de entrada/salida)
TEMP


(van a la L. STACK)

Para insertar una función en OB1 se ejecutan los siguientes pasos:

1. Abrir el menú contextual en la carpeta BLOQUES e insertar un

bloque del tipo FUNCIÓN

2. Dar un nombre a la función (ej.: FC10) y elegir el lenguaje en el que

se va a programar.

3. Programar la interface teniendo mucho cuidado con las variables de

entrada, salida y temporales, así como de su tipo (byte, int, etc.).

FUNCIONES Y BLOQUES

Funciones FC’s

Cuando se abre una función (ejem. FC10) el editor para la función es el mismo que
el utilizado en OB1 (no existe cambio alguno),
la diferencia radica en el
desplegable que aparece en la ventana superior en el que aparecen: IN, OUT, …,
es decir en la interface.

Una vez declaradas las variables en la interface, se programa la función y se graba
en disco.

Desde OB1, dependiendo del tipo de llamada (CALL), al insertar el nombre de la
función aparecerán automáticamente las variables declaradas en su interface y a
dichas variables se les asignará un valor o parámetro, o también, el nombre de una
dirección de memoria (esto es frecuente cuando se realizan operaciones y lo que
se quiere obtener es un resultado introduciéndolo en una marca).

Se graba en disco OB1 y se cargan desde la ventana de bloques: primero, la
FUNCIÓN (FC10) y, después el bloque de organización OB1. También, se pueden
seleccionar juntos y se cargan a la vez.

A partir de este momento ya se puede ejecutar el programa desde OB1.

FUNCIONES Y BLOQUES

Funciones FC’s

EJEMPLO: Elaborar un programa en AWL en el que una función realice la
suma de tres números enteros.

Primero, se crea la función con el menú contextual
  • Links de descarga
http://lwp-l.com/pdf14826

Comentarios de: Programación Avanzada (2) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad