Está en la página 1de 24

10

Autómatas Programables TIA Portal


10
DIDÁCTICA
UNIDAD

10.  Programación del autómata (III)


10. Programación del autómata (III)

ÍNDICE
OBJETIVOS................................................................................................................................................................ 287
INTRODUCCIÓN....................................................................................................................................................... 288
10.1.  Áreas de memoria de la CPU............................................................................................................................ 289
10.2.  Imagen del proceso.......................................................................................................................................... 291
10.3.  Ciclo de ejecución del programa del autómata............................................................................................... 292
10.4.  Bloques del programa de usuario.................................................................................................................... 294
10.4.1.  Bloques de organización.................................................................................................................................... 295
10.4.2.  Bloques de organización para la ejecución cíclica del programa (OB1)...................................................................... 296
10.5.  Definir bloques lógicos..................................................................................................................................... 298
10.6.  Funciones (FC)................................................................................................................................................... 299
10.6.1.  Llamada a una función....................................................................................................................................... 300
10.6.2.  Entrada (EN) y salida (ENO)................................................................................................................................. 302

RESUMEN................................................................................................................................................................... 305

285
10. Programación del autómata (III)

OBJETIVOS
■ Describir cómo se divide y utiliza la memoria del autómata.

■ Comprender qué procesos se repiten ciclo a ciclo en los autómatas programables.

■ Conocer los diferentes bloques que componen un programa en Step7/ Tia Portal.

■ Aprender a programar funciones.

■ Echar un vistazo al curso avanzado de programación de autómatas.

287
Autómatas programables TIA Portal

INTRODUCCIÓN

Hasta el momento hemos realizados programas Una buena estructuración en la programación de


sencillos que no requerían gran organización un autómata es fundamental para el desarrollo de
y básicamente se componían de un listado de sistemas complejos. Veremos entonces, el bloque
instrucciones. Pero para sacarle partido al potencial de función (FC), bloque fundamental a la hora de
de los autómatas programables es imprescindible estructurar programas.
conocer como trabajan internamente y los diferentes
procesos que se ejecutan en ellos.

288
10. Programación del autómata (III)

10.1.  Áreas de memoria de la CPU


Las tres áreas de memoria de la CPU son:

■■ Memoria de carga.

■■ Memoria de sistema.

■■ Memoria de trabajo.

Memoria de carga
La memoria de carga permite almacenar el programa de usuario, sin los valores de la
tabla simbólica ni comentarios (éstos permanecen el la memoria del PG u ordenador),
también almacena información del sistema (configuración, enlaces, parámetros del
módulo, etc.). Los bloques que no se consideran relevantes para la ejecución, se
guardan exclusivamente en la memoria de carga. La memoria de carga puede ser
RAM o EPROM. Para un S7-300 la memoria de carga es la Micro Memory Card,
mientras que un S7-1200 dispone de memoria ya integrada (aunque también puede
sustituirse por una Memory Card), y en ella es posible almacenar todos los datos de
configuración de un proyecto.

Por lo tanto, para los S7-300 la transferencia de programas de usuario y, por


consiguiente, el funcionamiento de la CPU sólo es posible si hay una SIMATIC Micro
Memory Card insertada en la CPU.

Memoria de sistema
La memoria del sistema (RAM) está integrada en la CPU y no se puede ampliar.
Contiene los elementos de memoria que cada CPU pone a disposición del programa
de usuario:

■■ Las áreas de marcas, temporizadores y contadores.

■■ Las imágenes del proceso de entradas y salidas.

■■ Pilas de bloques y de interrupción.

■■ Pila de datos locales asignada al programa para los datos locales del bloque
llamado. Estos datos sólo tienen vigencia mientras esté activo el bloque
correspondiente.

Memoria de trabajo
La memoria de trabajo está integrada en la CPU y no se puede ampliar. Sirve para
procesar el código y los datos del programa de usuario (partes relevantes para la
ejecución del programa). Este procesamiento tiene lugar exclusivamente en el área de
la memoria de trabajo y en la memoria del sistema.

289
Autómatas programables TIA Portal

290
10. Programación del autómata (III)

10.2.  Imagen del proceso


Si en el programa de usuario se accede a las áreas de entradas (E) y salidas (A), no
se consulta el estado de las señales en los módulos de entrada y salida del autómata,
sino que se accede a un área de la memoria de sistema de la CPU. Esta área de
memoria se denomina imagen del proceso estando dividida esta imagen en dos
partes: la imagen del proceso de las entradas y la imagen del proceso de las salidas.

Ventajas de la imagen del proceso


El acceso a la imagen del proceso presenta, frente al acceso directo a los módulos
de entrada y salida, la ventaja de que la CPU ofrece una imagen coherente de las
señales del proceso durante la ejecución cíclica del programa. Si durante la ejecución
del programa cambia el estado de las señales de un módulo de entrada, el estado
original permanecerá en la imagen del proceso hasta que se actualice dicha imagen
en el siguiente ciclo. Además, el acceso a la imagen del proceso requiere menos
tiempo que el acceso directo a los módulos de señal, ya que la imagen del proceso se
encuentra en la memoria de sistema de la CPU.

291
Autómatas programables TIA Portal

10.3.  Ciclo de ejecución del programa del autómata


Las fases de la ejecución cíclica del programa son:

■■ El sistema operativo inicia el tiempo de vigilancia del ciclo.

■■ Se escriben los valores de la imagen del proceso de las salidas en los módulos
de salida.

■■ Se leen los estados de los módulos de entrada y se actualiza la imagen del


proceso de las entradas.

■■ Se ejecuta el programa de usuario y las operaciones indicadas en dicho


programa.

■■ Al finalizar el ciclo, el sistema operativo realiza las tareas pendientes, ej. cargar y
borrar bloques, recibir y enviar datos, etc.

■■ Finalmente, se regresa al principio del ciclo y arranca nuevamente la vigilancia


del tiempo de ciclo.

Significado del concepto tiempo de ciclo


El tiempo de ciclo es el tiempo que necesita el sistema operativo para ejecutar el
programa cíclico, así como todas las partes del programa que interrumpen dicho ciclo
(ej. la ejecución de otros bloques de organización) y las actividades del sistema (ej. la
actualización de las imágenes del proceso).

292
10. Programación del autómata (III)

La ejecución cíclica del programa, tras la conexión, comienza tan pronto el programa
de arranque haya finalizado sin errores. En el programa de arranque se pueden definir
determinados preajustes para el programa cíclico a través de la programación del OB
de arranque.

293
Autómatas programables TIA Portal

10.4.  Bloques del programa de usuario


Los distintos bloques que se pueden utilizar en la programación del autómata permiten
estructurar el programa de usuario, es decir, subdividirlo en distintas partes. Esto
aporta las siguientes ventajas:

■■ Los programas de gran tamaño se pueden programar de forma clara.

■■ Se pueden estandarizar determinadas partes del programa.

■■ Se simplifica la organización del programa.

■■ Las modificaciones del programa pueden ejecutarse más fácilmente.

■■ Se simplifica el test del programa, ya que puede ejecutarse por partes.

■■ Se simplifica la puesta en marcha del sistema.

Las partes de un programa de usuario estructurado equivalen a las distintas tareas y


se definen como los bloques del programa.

Tipos de bloques
En un programa de usuario con Step7/ Tia Portal se pueden utilizar diversos tipos de
bloques:

■■ Bloques de organización (OB): definen la estructura del programa de usuario.

■■ Bloques de función del sistema y funciones de sistem: bloques preprogramados


que forman parte del sistema operativo, por lo que no se cargan como
parte integrante del programa. Ofrecen diversas tareas, como por ejemplo:
comunicación vía enlaces configurados y no configurados, manipulación del
reloj y del contador de horas de funcionamiento, información sobre datos del
sistema, p. ej. diagnóstico, etc.

■■ Bloques de función (FB): bloques con memoria que puede programar el mismo
usuario.

■■ Funciones (FC): contienen rutinas de programa para funciones frecuentes.

■■ Bloques de datos de instancia (DBs de instancia): al llamarse a un FB/Bloques


de función del sistema, los DBs de instancia se asocian al bloque. Los DBs de
instancia se generan automáticamente al efectuarse la compilación.

■■ Bloques de datos globales (DB global): áreas de datos para almacenar los datos
de usuario.

Los OBs, FBs, Bloques de función del sistema, FCs y funciones del sistema contienen
partes del programa, por lo que se denominan también bloques lógicos. El número
permitido de bloques de cada tipo y su longitud admisible dependen de la CPU.

294
10. Programación del autómata (III)

10.4.1.  Bloques de organización


Los bloques de organización (OB) constituyen el interfaz entre el sistema operativo
y el programa de usuario. Son llamados por el sistema operativo y controlan el
procesamiento cíclico y controlado por alarmas del programa, el comportamiento de
arranque del sistema de automatización y el tratamiento de los errores. Programando
los bloques de organización se define el comportamiento de la CPU.

Prioridad de los bloques de organización


Los bloques de organización determinan la secuencia en la que habrán de ejecutarse
las diferentes partes del programa. La ejecución de un OB puede ser interrumpida
por la llamada de otro OB, esto depende de la prioridad. Los OBs de mayor prioridad
pueden interrumpir a los de menor prioridad.

No todos los bloques de organización y sus prioridades existen en todas las CPUs S7.

Ciclo libre (OB1) con prioridad 1


Alarma cíclica (OB35): interrumpe la ejecución cíclica del programa en inter-
valo determinado (100 ms). El tiempo de arranque del período corresponde
al cambio de estado operativo de STOP a RUN. Prioridad 12.
Bloques de arranque: las condiciones para el comportamiento durante el
arranque de la CPU se pueden definir programando el bloque de organi-
zación OB 100 para el rearranque completo (en caliente), el OB 101 para
el rearranque u OB 102 para el arranque en frío. El programa de arranque
debe tener una longitud discrecional, su ejecución no tiene límite de tiempo
y la vigilancia del tiempo de ciclo no está activa. La ejecución controlada por
tiempo o por alarma no es posible en el programa de arranque. En el arran-
que, todas las salidas digitales tienen el estado de señal 0. Prioridad 27.
Error de programación (OB121): el sistema operativo de la CPU llama el OB
121 cuando ocurre un error de programación, como p. ej., cuando el bloque
llamado no está cargado. Si no se programa el OB 121, la CPU cambia al
estado operativo “STOP” al detectarse un error de programación.

Información de arranque de un OB
Cada bloque de organización contiene una información de arranque de 20 bytes de
datos locales, suministrada por el sistema operativo durante el arranque de un OB.
La información de arranque indica el evento de arranque del OB, la fecha y hora de
arranque de OB, así como errores ocurridos y eventos de diagnóstico.

La información de arranque del OB 40 de alarma de proceso indica la dirección


del módulo que ha causado la alarma.

295
Autómatas programables TIA Portal

10.4.2.  Bloques de organización para la ejecución cíclica del


programa (OB1)
El sistema operativo de la CPU ejecuta el OB 1 de forma cíclica: una vez finalizada la
ejecución del OB 1, el sistema operativo comienza a ejecutarlo de nuevo. En el OB
1 es posible realizar la llamada a bloques de función (FBs, Bloques de función del
sistema) o a funciones (FCs, funciones del sistema).

Modo de funcionamiento del OB1


El OB 1 presenta la prioridad más baja de todos los OBs sometidos a vigilancia en lo
que respecta a su tiempo de ejecución. Todos los demás OBs pueden interrumpir la
ejecución del OB 1. Los eventos siguientes dan lugar a que el sistema operativo llame
al OB 1:

■■ Final de la ejecución del arranque.

■■ Final de la ejecución del ob1 (durante el ciclo anterior).

Una vez finalizada la ejecución del OB 1, el sistema operativo envía datos globales.
Antes de arrancar de nuevo el OB 1, el sistema operativo escribe la imagen del
proceso de las salidas en los módulos de salidas, actualiza la imagen del proceso de
las entradas y recibe datos globales.

Tiempo de ciclo máximo


Con Step7 / Tia Portal se puede supervisar el tiempo de ciclo máximo. El valor del
tiempo de ciclo máximo está preajustado a 150 ms, pero puede ser modificado. Si
el programa sobrepasa el tiempo de ciclo máximo para el OB 1, el sistema operativo
llama al OB 80 (OB de error de tiempo). Si no está programado el OB 80, la CPU pasa
al estado operativo STOP.

Además de la supervisión del tiempo de ciclo máximo, puede garantizarse el


cumplimiento de un tiempo de ciclo mínimo. El sistema operativo retarda el comienzo
de un nuevo ciclo (escritura de la imagen del proceso de las salidas en los módulos de
salidas) hasta que se haya alcanzado el tiempo de ciclo mínimo.

Datos locales de OB1 (Solo CPUs de la serie 300)


La tabla siguiente contiene las variables temporales (TEMP) del OB 1. Como nombres
de variables se eligieron los nombres por defecto del OB 1.

296
10. Programación del autómata (III)

297
Autómatas programables TIA Portal

10.5.  Definir bloques lógicos


La estructura del programa se define subdividiendo el programa de usuario en
diferentes bloques y jerarquizando las llamadas de bloques.

Jerarquía de las llamadas de bloques:

La figura siguiente representa la jerarquía de los bloques que se pueden llamar en un


programa estructurado.

■■ OB1: representa el interface con el sistema operativo de la CPU y contiene el


programa principal. En el OB 1 se llaman los bloques FB 1 y FC 1 y se transfieren
los parámetros específicos necesarios para controlar el proceso.

■■ FB 1: un sólo bloque de función puede controlar la bomba de alimentación para


el material A, la bomba de alimentación para el material B y el motor del agitador,
puesto que las exigencias (conectar, desconectar, contar las horas de trabajo,
etc.) son idénticas.

■■ DBs de instancia 1-3: los parámetros actuales y los datos estáticos para el
control del material A, del material B y del motor del agitador son diferentes, por
lo que se depositan en tres DBs de instancia asociados al FB 1.

■■ FC 1: las válvulas de entrada, de alimentación para los materiales A y B y de


salida utilizan también un bloque lógico común. Como sólo se deben programar
las funciones “Abrir” y “Cerrar”, basta con utilizar una sola FC.

298
10. Programación del autómata (III)

10.6.  Funciones (FC)


Las funciones son bloques programables. Una función es un bloque lógico “sin
memoria”. Las variables temporales de las FCs se memorizan en la pila de datos locales.
Estos datos se pierden tras el tratamiento de las FCs. Para fines de memorización de
datos, las funciones pueden utilizar bloques de datos globales (DB).

Campo de aplicación
La FC contiene un programa que se ejecuta cada vez que la misma es llamada por
otro bloque lógico. Las funciones se pueden utilizar para:

■■ Devolver un valor de función al bloque invocante (ejemplo: funciones matemáticas).

■■ Ejecutar una función tecnológica (ejemplo: control individual con combinación


binaria).

■■ Dividir y estructurar un programa complejo en partes más simples.

Si no se inicializan los datos correctamente, antes de llamar a un programa de


un FC, los valores resultantes pueden ser aleatorios o indefinidos.
El área de los datos locales del bloque que realiza la llamada a la función
no se escribe debido a la falta de asignación del parámetro de salida, por lo
que permanece sin modificar. De ese modo se escribe el valor desconocido
existente en esta área, ya que los datos locales no están ocupados automáticamente
ej. con 0.

La siguiente figura muestra la llamada al FC usado como temporizador con retardo a


la conexión. Cuando esta función es llamada se pasa el valor actual de las variables
conectadas a las entradas y entradas – salidas a datos locales del bloque que llama a
la función, en este caso:

■■ “DescargaCamion_Aux”.HabilitOperadorHorno.

■■ “TiempoUltimoScan”.

■■ T#3H.

■■ “DescargaCamion_Aux”.AuxFinHabilitaTiempo.

■■ “DescargaCamion_Aux”.AuxFinHabilitaOperador.

A continuación se ejecuta la FC según lo programado en la misma. Al finalizar la


función se pasan los resultados, guardados en los datos locales del bloque que ha
llamado a la función, a las variables conectadas a las salidas y entradas – salidas, en
este caso:

■■ “DescargaCamion_Aux”.AuxFinHabilitaTiempo.

■■ “DescargaCamion_Aux”.AuxFinHabilitaOperador.

299
Autómatas programables TIA Portal

Variables temporales
Al generar bloques se pueden declarar variables temporales (TEMP) que sólo estarán
disponibles durante el procesamiento del bloque, pudiendo volver a escribirse después.
Antes del primer acceso de lectura, los datos locales deberán inicializarse. El acceso
a los datos locales tiene lugar más rápidamente que el acceso a los datos en DBs. La
CPU dispone de memoria para las variables temporales (datos locales) de los bloques
que se acaban de procesar. El tamaño de esta área de memoria depende de la CPU.

Estas variables deberán ser siempre escritas antes de su utilización en la lógica


programada en la función, ya que sus valores no están guardados en un lugar de
memoria reservado a tal fin, como podría ser una marca (M) o un bloque de datos
(DB), sino que pertenecen a los datos locales, cuyos contenidos son desconocidos.

L #TiempoOB
ITD
T #AuxTiempoOB
La variable temporal #AuxTiempoOB es cargada con un valor conocido an-
tes de ser utilizada en la siguiente sentencia.
L #AuxTiempoOB
L #TiempoTranscurrido
+D
T #TiempoTranscurrido

10.6.1.  Llamada a una función


La forma en que una función debe ser llamada para su ejecución depende del lenguaje
utilizado. Para realizar la llamada en AWL se utiliza la sentencia CALL.

Para el lenguaje KOP la llamada se realiza a través del cuadro “??”.

Una vez ingresado el cuadro se debe escribir el número de la función a llamar.

300
10. Programación del autómata (III)

Para el lenguaje FUP la llamada se realiza a través del cuadro “??”, de forma similar al
caso estudiado para lenguaje KOP.

Una llamada puede ser condicionada por una lógica combinacional, de comparación,
etc. El siguiente segmento muestra como habilitar o deshabilitar la llamada a una
función según el valor de una variable tipo BOOL:

301
Autómatas programables TIA Portal

El siguiente segmento muestra como habilitar o deshabilitar la llamada a una función


según el resultado de una comparación:

Una función puede ser llamada desde un bloque organizativo (OB), desde otra función
(FC) o desde un bloque de función (FB).

10.6.2.  Entrada (EN) y salida (ENO)


Al llamarse a una función desde un cuadro siempre estarán presentes la habilitación
de entrada (EN), la habilitación de salida (ENO) y el nombre o número de la función.

La llamada se ejecutará siempre que EN sea igual a 1, y finalizada la función el programa


vuelve al bloque que realiza la llamada, continuando en el mismo segmento si ENO
vale 1 o en el segmento siguiente si ENO es 0.

En la siguiente figura observamos que se habilita EN para la función FC1, por lo que
la misma se ejecuta. Cuando dicha función finaliza no se habilita ENO, entonces
tampoco se habilita EN para la función FC2. En lugar de ejecutarse esta función, se
ejecuta la lógica del segmento 5.

El valor de ENO corresponde al valor del bit RB de la palabra de estado, cuando se


finaliza la ejecución de una función. Para asegurarnos que una función habilite ENO
al devolver el control al bloque invocante, se deberá poner a 1 el bit RB, por ejemplo,
como muestra la siguiente figura.

302
10. Programación del autómata (III)

Si realizamos esta modificación en FC1 y ejecutamos el programa, resultará que la


función FC2 también se ejecutará.

Las instrucciones del programa de usuario leen y escriben directamente los


bits de la palabra de estado de la CPU.
Cada vez que se ejecuta una instrucción, los bits de la palabra de estado
son utilizados conforme a la operación de que se trate. De la combinación
lógica entre las instrucciones del programa y los bits de la palabra de esta-
do, se indican los resultados y las informaciones sobre los errores que se
puedan haber producido.
Palabra de estado: RB A1 A0 OV OS OR STA RLO /ER

303
10. Programación del autómata (III)

RESUMEN

La memoria del autómata está dividida en tres partes: la memoria de carga utilizada
para la transferencia de programas y configuraciones, la memoria de sistema contiene
elementos que puede utilizar el usuario (temporizadores, marcas, etc.) y la memoria de
trabajo donde se guardan las partes relevantes a la ejecución del programa.


El estado de las entradas y salidas es almacenado en cada ciclo en la imagen del
proceso para ser utilizado luego en el programa.


Cuando el autómata cambia a modo RUN se ejecuta el bloque organizativo de
arranque, utilizado para inicializar valores, al finalizar el mismo comienza la ejecución
cíclica del bloque organizativo principal (OB1).


Para una mejor estructuración del programa, el usuario cuenta con una serie de
bloques preprogramados, tales como Bloques de función de sistema y Funciones de
sistema; también puede programar otros según su necesidad, éstos pueden ser FCs,
FBs, DBs, etc.


Una función es un bloque sin memoria que el usuario puede programar a su
conveniencia. En ella se pueden declarar parámetros de entrada y salida y variables
temporales, requeridas para la ejecución de la función.

305

También podría gustarte