Está en la página 1de 56

REPUBLICA

ARGENTINA

UNIVERSIDAD NACIONAL DE ROSARIO

FACULTAD DE CIENCIAS EXACTAS, INGENIERIA Y AGRIMENSURA


DEPARTAMENTO DE SISTEMAS E INFORMTICA
Laboratorio de Tecnologas Digitales e Informtica Industrial

APUNTES DE PRCTICA DE

FUNCIONES AVANZADAS
sobre el Ambiente de Desarrollo
STEP 7-MICRO/WIN

Revisin G
Octubre 2014

Funciones Avanzadas con STEP 7-Micro/WIN

INDICE
1.

INTRODUCCIN.................................................................................................................................................. 4

2.

MANEJO DE BLOQUES DE BITS (bytes, palabras y palabras dobles) ..................................................................... 5


2.1.
2.2.
2.3.
2.4.
2.5.
2.6.

3.

DIRECCIONAMIENTO INDIRECTO EN MEMORIA: USO DE PUNTEROS ................................................................. 9


3.1.
3.2.
3.3.
3.4.

4.

TRATAMIENTO A NIVEL DE BYTE................................................................................................................................ 5


TRATAMIENTO A NIVEL DE PALABRA PALABRA DOBLE ................................................................................................. 5
BLOQUES DE COMPARACIN ................................................................................................................................... 5
BLOQUES PARA MOVIMIENTO DE INFORMACIN.......................................................................................................... 7
OTROS BLOQUES DE OPERACIONES ........................................................................................................................... 8
INICIALIZACIN DE MEMORIA................................................................................................................................... 8

CMO CREAR UN PUNTERO ..................................................................................................................................... 9


USO DEL PUNTERO PARA OPERAR SOBRE EL CONTENIDO APUNTADO .............................................................................. 10
OPERACIONES ARITMTICAS USANDO PUNTEROS ....................................................................................................... 11
OPERACIONES ARITMTICAS SOBRE PUNTEROS .......................................................................................................... 11

RESPALDO (SALVAGUARDA) DE DATOS ............................................................................................................ 12


4.1.
REAS REMANENTES ........................................................................................................................................... 12
4.1.1. Creacin de reas Remanentes ................................................................................................................. 13
4.1.2. Marca Especial SM0.2 ............................................................................................................................... 14
4.1.3. Marca Especial SM0.3 ............................................................................................................................... 14
4.2.
RESTABLECIMIENTO DE LOS DATOS AL CONECTAR LA ALIMENTACIN .............................................................................. 14

5.

RELOJ DE TIEMPO REAL (RTC = Real Time Clock) ............................................................................................... 15


5.1.
5.2.

6.

LECTURA DEL RELOJ DE TIEMPO REAL (READ_RTC) ................................................................................................. 15


CONFIGURACIN DEL RELOJ DE TIEMPO REAL (SET_RTC) .......................................................................................... 15

OPERACIONES DE CONTROL DEL PROGRAMA .................................................................................................. 16


6.1.
SALTOS Y BUCLES ................................................................................................................................................ 17
6.1.1. Salto a una etiqueta .................................................................................................................................. 17
6.1.2. Bucle FOR NEXT ...................................................................................................................................... 17

7.

SUBRUTINAS .................................................................................................................................................... 18
7.1.
7.2.
7.3.

8.

VARIABLES ANALGICAS .................................................................................................................................. 23


8.1.
8.2.
8.3.
8.4.
8.5.

9.

CREACIN DE LA SUBRUTINA ................................................................................................................................. 19


SUBRUTINAS PARAMETRIZADAS: USO DE LA TVL .............................................................................................. 20
INVOCACIN (LLAMADA) DE LA SUBRUTINA DESDE OTRA POU .................................................................................. 22

ENTRADAS ANALGICAS (AI) ................................................................................................................................ 23


SALIDAS ANALGICAS (AQ) .................................................................................................................................. 23
MDULOS DE ENTRADA/SALIDA ANALGICA ........................................................................................................... 24
CALIBRACIN DE ENTRADAS .................................................................................................................................. 25
POTENCIMETROS ANALGICOS ............................................................................................................................ 25

INTERRUPCIONES ............................................................................................................................................. 26
9.1.
CMO CREAR UNA ISR ......................................................................................................................................... 27
9.2.
INTERRUPCIONES SOPORTADAS POR EL S7-200 ........................................................................................................ 28
9.2.1. Interrupciones del puerto de Comunicaciones .......................................................................................... 28
9.2.2. Interrupciones de Entrada/Salida.............................................................................................................. 28
9.2.3. Interrupciones basadas en tiempo ............................................................................................................ 28
9.3.
PRIORIDAD Y PUESTA EN COLA DE LAS INTERRUPCIONES ............................................................................................. 31
9.4.
INSTRUCCIONES ASOCIADAS CON INTERRUPCIONES .................................................................................................... 32
9.5.
DATOS COMPARTIDOS ENTRE EL PROGRAMA PRINCIPAL Y UNA ISR ............................................................................... 32
9.6.
LLAMADAS A SUBRUTINAS DESDE UNA ISR ............................................................................................................... 33

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 2 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

10.

CONTADORES DE PULSOS RPIDOS (HSC) ........................................................................................................ 34

10.1.
USO DE LOS CONTADORES RPIDOS........................................................................................................................ 35
10.2.
INSTRUCCIONES ASOCIADAS CON HSCS ................................................................................................................... 35
10.3.
CMO OPERAN LOS DIFERENTES CONTADORES RPIDOS ............................................................................................. 36
10.4.
PROGRAMACIN DE UN CONTADOR RPIDO ............................................................................................................ 37
10.4.1.
Definicin del Contador, su modo y entradas ....................................................................................... 37
10.4.2.
Configuracin del byte de control ......................................................................................................... 38
10.4.3.
Configuracin del valor actual y del valor predeterminado ................................................................. 39
10.4.4.
Asignacin de interrupciones................................................................................................................ 39
10.5.
BYTE DE ESTADO ................................................................................................................................................. 40
10.6.
RESUMEN DE MARCAS ESPECIALES DE ALGUNOS CONTADORES RPIDOS ........................................................................ 41
10.7.
USO DE UNA SALIDA DE TREN DE PULSOS PARA ENSAYAR EL HSC ................................................................................. 45
11.

EL REL DE CONTROL SECUENCIAL (SCR) .......................................................................................................... 46

11.1.
CONTROL DEL FLUJO DEL PROGRAMA USANDO SEGMENTOS SCR .................................................................................. 46
11.2.
INSTRUCCIONES ASOCIADAS CON SCRS.................................................................................................................... 47
11.3.
EJEMPLOS: APLICACIN DE SCRS EN SITUACIONES TPICAS DE GRAFCET ......................................................................... 48
11.3.1.
Marcacin Inicial .................................................................................................................................. 48
11.3.2.
Activacin y desactivacin de Etapas y salidas asociadas .................................................................... 48
11.3.3.
Divergencia en AND (concurrencia) ...................................................................................................... 49
11.3.4.
Convergencia en AND (sincronizacin) ................................................................................................. 49
11.3.5.
Divergencia en OR (seleccin de secuencia) ......................................................................................... 49
11.3.6.
Accin alternada................................................................................................................................... 50
12.

BLOQUE DEL SISTEMA ...................................................................................................................................... 52

13.

BLOQUE DE DATOS........................................................................................................................................... 53

13.1.
13.2.

DIVISIN EN GRUPOS DE LAS ASIGNACIONES DE MEMORIA V DEL BLOQUE DE DATOS ........................................................ 54


ASIGNACIN DE DIRECCIONES Y VALORES EN EL BLOQUE DE DATOS ............................................................................... 54

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 3 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

1.

INTRODUCCIN

Los apuntes previos que conciernen a la temtica Ambiente de Desarrollo STEP 7-Micro/WIN se
concentraron en el aprendizaje del paquete de software STEP 7-Micro/WIN y sus prestaciones
para desarrollar, editar y monitorear la lgica necesaria para controlar una aplicacin. En los mismos se presentaron tambin las operaciones bsicas (funciones simples) que permiten trabajar a
nivel de bits como entradas (I), salidas (Q) o zonas de memoria (M, SM).
En esta ltima parte, continuacin de las anteriores, se analizan formas ms avanzadas de trabajar
con los datos de entradas, salidas, y memoria. La lista que sigue presenta (pero no agota) los temas que se abordarn a lo largo del documento:
manejo de bloques de bits: bytes, palabras y palabras dobles
movimiento y transferencia de datos en memoria, y entre memoria y puertos de E/S
direccionamiento de datos en memoria en forma directa, o indirecta usando punteros
uso de reas Remanentes para guardar datos ante cortes de energa
uso del Reloj de Tiempo Real, que marca la fecha y hora actuales del programa en ejecucin
uso de saltos y bucles para controlar el flujo del programa
estructuracin de un programa usando Subrutinas, con sin parmetros
manejo de entradas y salidas analgicas
manejo de eventos mediante el uso de Rutinas de Servicio de Interrupcin
uso de Contadores Rpidos
uso de Rels de Control Secuencial (SCR), que estructuran un programa manera similar a un
Grafcet
manejo de datos utilizando el Bloque del Sistema
Otras operaciones usuales (aritmticas, de comparacin, conversin y desplazamiento, ..., etc, se
dejan para su estudio y prueba por parte del alumno.
Se aconseja y exhorta al alumno a:
consultar permanentemente la Ayuda (Help) del STEP - Micro/WIN durante la ejecucin de
los ejercicios, la cual contiene mucha informacin que permite estudiar nuevas alternativas durante las pruebas
ensayar todas las operaciones que la extensin limitada de este documento no permite explicar
consultar el Manual del Sistema S7-200 de SIEMENS, que es la fuente de informacin principal
de este documento

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 4 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

2.

MANEJO DE BLOQUES DE BITS (bytes, palabras y palabras dobles)

Adems del manejo a nivel de bit, existen otras maneras de direccionar las distintas reas de la
memoria del PLC y realizar con ellas el tratamiento pretendido, por ejemplo: carga de un valor en
8, 16 32 bits en un acumulador, verificacin del valor de tiempo contado por un temporizador,
etc. En efecto, los bits pueden agruparse para dar origen a los siguientes formatos de datos:
Formato
byte
palabra
palabra doble

Designacin
B
W
DW

Equivalencia
1 byte = 8 bits
1 palabra = 2 bytes = 16 bits
1 palabra doble = 2 palabras = 32 bits

y se almacenan de esa forma en la memoria. De esta forma, es posible realizar operaciones lgicas, aritmticas y de movimiento de esos bits ( Bytes / Words / DWords) mediante bloques de
funciones y operaciones especiales que hacen un tratamiento integral de esa informacin y que
tendrn tambin, obviamente, una relacin directa con las entradas y salidas fsicas del PLC.
2.1. Tratamiento a nivel de byte
Se puede hacer referencia al grupo de 8 entradas I0.0 a I0.7 como el byte 0 de entrada (IB0),
al grupo de entradas I1.0 a I1.7 como el byte 1 de entradas (IB1), etc. El mismo anlisis vale
para las salidas (QB0, QB1, .. ). Tambin se puede aludir a los bytes de marcas internas MB0,
MB1,..., o a los bytes de marcas de especiales de estado SMB0, SMB1, ..., etc. Lo dicho vale
igualmente para identificar como VB a posiciones de memoria variable V (en donde puede guardarse informacin transitoriamente, para utilizarla luego), y tambin para posiciones de memoria
que acomodan su formato de acuerdo al formato del dato que en ella se guarde (los acumuladores, identificados como AC0, AC1, AC2 y AC3).
2.2. Tratamiento a nivel de palabra palabra doble
Lo dicho para el tratamiento a nivel de byte se aplica para el tratamiento a nivel de palabra de
palabra doble, utilizando, respectivamente, la letra W en lugar de la B, la letra D en lugar de la
B.
Ejemplo: haciendo referencia a la direccin 200 en la memoria V:

V200.7
VB200
VW200
VD200

accede al bit 7 de la direccin 200


accede al byte 200
accede a los bytes 200 y 201
accede a los bytes 200, 201, 202 y 203

En lo que sigue, todos los bloques que analizaremos utilizan este tipo de formato para el tratamiento de la informacin.
2.3. Bloques de Comparacin

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 5 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Este operador compara el byte N1 con el byte N2 y, si son iguales, permitir continuidad elctrica y
se activar la salida Q0.0.
Otros operadores disponibles:

De forma similar pueden compararse palabras [utilizando la letra I (integer) en lugar de la B]


palabras dobles (utilizando la letra D = double).
Ejemplo 1: Combinacin Y usando Bytes
Cada bit de entrada tiene una direccin definida (posicin) en el mapa de memoria, por lo que se
asocia a esa posicin de memoria el estado lgico del bit ponderado por una potencia de 2: esta es
una codificacin numrica interna. Por ejemplo, si nos referimos al byte IB0, I0.0 es el bit menos
significativo, e I0.7 el bit ms significativo del mismo, y as se puede asociar a cada bit el valor
2posicin como se muestra abajo:
Byte IB0
Posicin
Bit
posicin

Peso del bit = 2

I0.7
128

I0.6
64

I0.5
32

I0.4
16

I0.3
8

I0.2
4

I0.1
2

I0.0
1

Tomando como ejemplo el siguiente segmento:

Byte IB0
Posicin

Bit

0
0

0
0

1
32

0
0

1
8

0
0

0
0

1
1

Valor del bit

El valor del byte IB0 es: IB0 = 1 x 20 + 1 x 23 + 1 x 25 = 1 + 8 + 32 = 41 (decimal). Por lo tanto podemos obtener un resultado equivalente al segmento mostrado arriba con el siguiente:

La instruccin "==B compara permanentemente el byte de entradas IB0 con el valor decimal
predeterminado 41 (correspondiente a la activacin simultnea de los tres bits I0.0, I0.3 e I0.5):
cuando son iguales se activar la salida Q0.6. La misma funcin lgica realizada bits necesita verificar el estado lgico de tres contactos en serie para activar la salida, ocupando ms espacio en
memoria. Para verificarlo, edite los dos segmentos en KOP, y luego, con el men Ver, cambie al
Editor AWL, y compare los segmentos.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 6 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Este mtodo de manejar la informacin ahorra memoria, pasos de programa y espacio en pantalla.
Ejemplo 2: Complementar el resultado anterior
En el Ejemmplo 1, si lo que se desea es activar la salida Q0.6 cuando IB0 es distinto de 41 puede
usarse un operador NOT para complementar la continuidad lgica evaluada por el operador comparar por igual del caso anterior:

El mismo resultado puede obtenerse utilizando el operador comparar por distinto:

2.4. Bloques para movimiento de informacin


A veces es necesario mover informacin desde y hacia determinadas zonas de memoria, o desde
entradas hacia reas de memoria. Esto no se puede realiza sin antes definir los formatos de la informacin, de las reas de memoria y de los operadores que realicen el tratamiento deseado. En
tal sentido, la informacin proveniente desde las entradas se puede manejar como bytes, pero en
las reas de memoria no siempre se la puede almacenar como tal, y muchas veces se debe convertir a palabras o palabras dobles.
Existen en memoria zonas destinadas a almacenar informacin transitoria: se llaman zonas de
memoria de variables (V). La misma puede tener la extensin de un byte (VB) o el de una palabra
(VW) o el de una palabra doble (VD).
Tambin existen reas en donde el formato se ajusta al de la informacin que se pretenda guardar: son los acumuladores (AC).
Ejemplos
Al activarse la entrada de habilitacin EN, este bloque mueve (copia) el byte de entrada SMB1 (bits de estado de ejecucin de las operaciones) en la posicin de memoria variable
VB1.
Al activarse la entrada de habilitacin EN, la palabra doble
contenida en la direccin de memoria variable 100 se transfiere (copia) al acumulador AC0, el cual adopta el formato
de palabra doble.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 7 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

El preset de un temporizador se puede cargar con el contenido de una direccin de memoria, en este ejemplo con el
valor en el byte de marca especial 28 (SMB28: valor digital
correspondiente a la posicin del potencimetro analgico
0).

Si se observa el contenido de la memoria, para el primer ejemplo se encontrar lo siguiente:

Las posiciones de memoria tambin pueden albergar el contenido actual de temporizadores y contadores (por ejemplo T32, C2), los cuales se guardan con formato de palabra W (16 bits). Para ello
se necesitan dos ubicaciones en el bloque de datos (en la figura anterior, ver ubicaciones VB100 y
VB101 para T32, donde VB100 aloja al byte ms significativo).
2.5. Otros bloques de operaciones
Como puede verse en el rbol de Operaciones del STEP 7-Micro/WIN, existen varios bloques adicionales, tales como:
bloques de operaciones aritmticas en coma fija y coma flotante
bloques de desplazamiento y rotacin
bloques de comunicaciones
entre los bloques de transferencia a los que ya se hizo referencia: inversin de los bytes de una
palabra, movimiento de datos en bloques, ...
etctera
Se deja para el alumno consultar la informacin en el Manual del Sistema S7-200 de SIEMENS, y
probar estas operaciones sobre el PLC.
2.6. Inicializacin de memoria
La operacin Inicializar memoria (FILL_N) escribe N palabras consecutivas, comenzando en la
direccin OUT, con el valor de palabra contenido en la direccin IN. N puede ser un valor cons-

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 8 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

tante comprendido entre 1 y 255, o tambin puede ser una variable (direccin de memoria tipo
byte).

Esta operacin es til para setear o resetear contadores, temporizadores, marcas internas, ..., etc,
con el fin de dar un valor inicial a determinada zona de memoria.
Ejemplo:
Se desea poner a 0 (valor de inicializacin IN) 10 palabras consecutivas (N), comenzando en la palabra 200 de la memoria de
variables V (posicin inicial OUT).

La ejecucin de esta operacin llenar con ceros las posiciones de memoria direccionadas como
VW200, VW202, VW204, ..., hasta VW218 inclusive (obsrvese que las direcciones se incrementan
de a 2).
3.

DIRECCIONAMIENTO INDIRECTO EN MEMORIA: USO DE PUNTEROS

Otra forma de acceder a los datos en memoria es mediante direccionamiento indirecto, utilizando
punteros.
Un puntero es una palabra doble (DW) que contiene la direccin de otra posicin de memoria,
en la cual se encuentra el dato buscado. Dicho de otra manera: el puntero direcciona (se dice
que apunta) a un dato contenido en otra direccin.
Como punteros pueden utilizarse:
las memorias tipos V y L
los registros acumuladores (de 32 bits) AC1, AC2 y AC3
El S7-200 permite el acceso indirecto va punteros a las reas de memoria I, Q, V, M, S, AI, AQ,
SM, T (slo el valor actual), y C (slo el valor actual). El direccionamiento indirecto no se puede
utilizar para acceder a un bit individual, ni para acceder a las reas de memoria HC L.
Los punteros tambin se pueden pasar como parmetros a una subrutina.

3.1. Cmo crear un puntero


Para crear un puntero se debe utilizar la operacin Transferir palabra doble, para cargar la direccin indirecta en la direccin del puntero.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 9 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

La operacin mostrada a la izquierda crear un puntero de


32 bits en la palabra doble ubicada en la direccin 300
(VD300), y cargar en dicha posicin la direccin del byte
en la posicin de memoria 100 (VB100).
Obsrvese:
el smbolo & (ampersand) antepuesto a VB100 (IN): esto es lo que indica que se est creando un puntero, pues es la direccin VB100 (y no su contenido) lo que se transfiere (MOV_DW) a VD300.
la direccin que se carga en el puntero (VB100 en el ejemplo) es siempre la direccin de un byte de memoria al cual apunta el puntero (VD300). Cualquier intento de escribir la direccin de una palabra palabra doble en IN ser cambiado automticamente por el editor en la direccin de un byte.
si se hubiese usado AC1 en lugar de VD300, el puntero ocupara los 32 bits del acumulador (extensin
DW). Los acumuladores se ajustan a la forma o extensin de la operacin que los involucra (p.ej. MOV,
con sus variantes MOV_B, MOV_W y MOV_DW).

3.2. Uso del puntero para operar sobre el contenido apuntado


Introduciendo un asterisco (*) frente a un operando de una instruccin se especifica que el operando es un puntero, y que se est haciendo referencia al contenido de la memoria cuya direccin
est contenida en el puntero. El cdigo de operacin definir si el objeto (apuntado por el puntero) que se est transfiriendo es un byte, una palabra una palabra-doble.
La figura siguiente muestra a la izquierda el contenido de las posiciones 200 a 203 de la memoria
V, y operaciones de transferencia de un byte, una palabra, y una palabra doble (centro), a la direccin de memoria que comienza en V400. El puntero est en el Acumulador AC1, el cual contiene
la direccin VB200.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 10 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Obsrvese que el destino de la transferencia (OUT) debe estar en consonancia con la operacin:
Transferir
byte (B)
palabra (W)
doble-palabra (DW)

Operacin
MOV_B
MOV_W
MOV_DW

OUT
VB400
VW400
VD400

3.3. Operaciones aritmticas usando punteros


Adems de operaciones de transferencia, muchas otras operaciones pueden hacerse direccionando indirectamente a sus operandos por medio de punteros.
Solamente a ttulo de ejemplo mencionaremos aqu una forma de ejecutar una instruccin matemtica usando un puntero:

La instruccin INC_W incrementa en una unidad el contenido de la palabra (W) direccionada por
el puntero (VD300). El resultado de la operacin (OUT) se guarda en la misma ubicacin del operando (VW300):

Se deja para el alumno interiorizarse en las distintas posibilidades que brindas las familias del Arbol de Operaciones.
3.4. Operaciones aritmticas sobre punteros
El valor de un puntero puede modificarse. Los punteros son valores en 32 bits, por lo cual deben
usarse instrucciones de palabra doble para modificarlos.
Las modificaciones implican el uso de operaciones matemticas simples, tales como sumar incrementar.
para acceder a bytes en forma indirecta, el puntero debe incrementarse decrementarse por 1
para acceder a palabras, el puntero debe incrementarse decrementarse por 2
para acceder a palabras dobles, por 4.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 11 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Si se incrementa una palabra doble a partir de una ubicacin que causa que la direccin final est
fuera del rango del lmite superior de la memoria V, se recibe un error en tiempo de ejecucin
cuando corre el programa.
El operando (IN) no tiene antepuesto un asterisco, por lo
que la operacin afecta directamente al contenido de la direccin indicada (VD300), incrementndolo en una unidad.
Si esta ubicacin alojaba un puntero a la direccin VB100, la
ejecucin de la operacin dejar en VD300 el valor VB101.

4.

RESPALDO (SALVAGUARDA) DE DATOS

La CPU viene provista con un condensador de alto rendimiento que conserva todos los datos de la
memoria RAM tras un corte de alimentacin. Algunos modelos de CPUs soportan un cartucho de
pila (opcional) que prolonga el tiempo durante el cual se puede respaldar la memoria RAM. El cartucho de pila se activa slo cuando se descarga el condensador. Ante un corte de energa, la informacin en RAM se conserva mientras el condensador y la pila no se hayan descargado.
El S7-200 provee diversas caractersticas para garantizar que el programa de usuario y los datos se
mantengan de forma segura:

reas remanentes: reas de la memoria de datos definidas por el usuario para que permanezcan inalteradas tras desconectar y volver a conectar la alimentacin, a condicin de que no se
hayan descargado el condensador de alto rendimiento ni el cartucho de pila (opcional).

Memoria permanente: memoria no-voltil utilizada para guardar los bloques de programa, de
datos y del sistema, as como valores forzados, la memoria M configurada para guardarse ante
un corte de alimentacin, y tambin valores seleccionados escritos bajo el control del programa
de usuario

Cartucho de memoria: memoria no-voltil extrable, utilizada para guardar los bloques de programa, de datos y del sistema, recetas, registros de datos (data logs) y valores forzados. Ver el
Manual del Sistema S7-200.

4.1. reas Remanentes


Las reas remanentes son zonas de la memoria de datos definidas por el usuario de modo que la
informacin en las mismas no se pierda en la eventualidad de un corte de energa.
Las nicas reas de la memoria de datos que pueden configurarse como remanentes son: V, M, y
los valores actuales de Temporizadores y Contadores. El usuario puede redefinir los rangos de
modo que algunas partes de la memoria remanente sean no-remanentes.
Ante un corte de alimentacin la informacin se resguarda, y al retornar la energa la informacin
se transfiere a las zonas originales en donde estaban ubicadas (memoria RAM del usuario).

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 12 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

4.1.1. Creacin de reas Remanentes

El S7-200 permite definir hasta 6 reas remanentes para seleccionar las reas de memoria que
deban respaldarse cuando se interrumpa la alimentacin. Pueden definirse rangos de direcciones
en las reas de memoria V, M, C y T.
Excepciones:
En el caso de los temporizadores, slo pueden respaldarse los que tienen retardo a la conexin
con memoria (TONR).
La configuracin por omisin para los primeros 14 bytes de la memoria M es que sean noremanentes.
Para los temporizadores y contadores, slo se pueden respaldar los valores actuales: los bits de
los temporizadores y de los contadores no son remanentes (se ponen a 0 en cada arranque de
la CPU).
Por omisin, el rango comprendido entre MB0 y MB13 es no-remanente. Si se lo define como
remanente, se habilita una caracterstica especial que guarda automticamente estos 14 bytes
en la memoria no-voltil al cortarse la alimentacin.
Para definir las reas remanentes:
1) En la Barra de Navegacin, hacer click sobre Bloque del Sistema y seleccionar reas Remanentes, como se ve en la figura siguiente:

Los rangos mostrados en la figura son los valores por omisin, los que se configuran automticamente al pulsar el botn Estndar (derecha, arriba).
2) Seleccionar las reas de memoria que se desea respaldar ante un corte de alimentacin:
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 13 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

en la columna rea de datos elegir el tipo de memoria a respaldar (VB, VW, VD, MB, MW,
MD, T C)
en la columna Offset indicar la direccin inicial
en la columna N de elementos indicar cuantos elementos (incluido el ltimo) del tipo de
memoria elegido se van a respaldar
hacer click en Aceptar.
3) Cargar el bloque de sistema modificado en el S7-200.
4.1.2. Marca Especial SM0.2

El bit SM0.2 es una marca especial que se activa durante un ciclo de scan si se perdieron los datos
remanentes debido a un corte de energa muy prolongado (lo que descarga el capacitor de alto
rendimiento y/o la pila). Al retornar la energa el bit se pone en 1, lo cual provoca que toda la
memoria RAM de usuario se ponga en 0. El bit puede usarse como un bit de error de memoria,
como un mecanismo para invocar una secuencia de arranque especial.
4.1.3. Marca Especial SM0.3

El bit SM0.3 es una marca especial que se activa durante un ciclo de scan cuando se pasa a modo
RUN a partir de una condicin de encendido. Se lo puede usar para proveer un tiempo de calentamiento previo antes de arrancar una operacin.
4.2.

Restablecimiento de los datos al conectar la alimentacin

Al conectarse la alimentacin, el S7-200 comprueba la memoria RAM para verificar si el condensador de alto rendimiento y el cartucho de pila opcional respaldaron los datos almacenados en la
misma. En caso afirmativo:
las reas remanentes de la memoria de datos de usuario en RAM no se modifican
las reas correspondientes de la memoria V no-voltil (en EEPROM) se copian en las reas no
remanentes de la memoria V en la RAM de la CPU
el programa de usuario y la configuracin de la CPU tambin se restablecen desde la memoria
no-voltil
todas las dems reas no remanentes de la RAM de la CPU se ponen a 0.
Si el contenido de la RAM no se respald (p. ej. en el caso de un corte de alimentacin prolongado), el S7-200:
borra todas las reas de datos de usuario (tanto las remanentes como las no-remanentes)
activa la marca especial SM0.2 (datos remanentes perdidos) en el primer ciclo que le sigue a la
puesta en marcha
restablece la memoria V conforme con el contenido del bloque de datos en la memoria novoltil
restablece los primeros 14 bytes de la memoria M a partir de la memoria no-voltil, si estos
bytes fueron definidos previamente como remanentes.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 14 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

5.

RELOJ DE TIEMPO REAL (RTC = Real Time Clock)

Esta caracterstica, slo presente en CPUs versiones 224XP y superiores, es un reloj implementado
por hardware que sigue funcionando an ante cortes de energa (respaldo con batera o capacitor
de alto rendimiento). Este reloj permite al usuario mantenerse informado con los datos de fecha,
hora y da de la semana actuales de la CPU, los cuales pueden ser usados por el programa. Ver el
Manual del Sistema S7-200. Las operaciones disponibles pueden verse en el rbol de Operaciones
Reloj.
5.1.

Lectura del Reloj de Tiempo Real (READ_RTC)

La instruccin READ_RTC (Read Real-Time Clock) lee la fecha y la hora actuales del reloj por
hardware, y las copia en un buffer de 8 bytes que comienza en una direccin T (parmetro) especificada por el usuario.
Todos los valores estn codificados en formato BCD. La figura siguiente muestra el formato del
buffer de 8 bytes (T) (los valores mostrados estn expresados en hexadecimal):
Posicin:
Contenido:

T
Ao:
00 a 99

T+1

T+2

T+3

Mes:
01 a 12

Da:
01 a 31

Horas:
00 a 23

T+4

T+5

T+6

T+7

Minutos:
00 a 59

Segundos:
00 a 59

00

Da de la
Semana: 0 a 7

(T+7: Da de la Semana: 1=Domingo, ..., 7= Sbado; 0=inhabilitado)

El ejemplo a la derecha muestra una operacin


de lectura del RTC sobre un buffer ubicado a
partir de la direccin 10 en el rea V, asumiendo
que es el da Lunes 30 de Setiembre del 2013, a
las 16:45:23 horas.
(valores expresados en cdigo BCD)

Una forma de utilizar la informacin obtenida es definir las variables VB10 a VB15 en la Tabla de
Estado: poniendo al PLC en modo Test Iniciar estado de tabla se podrn leer en tiempo real los
datos actuales del Reloj.
5.2.

Configuracin del Reloj de Tiempo Real (SET_RTC)

La instruccin SET_RTC (Set Real-Time Clock) escribe en el reloj por hardware la fecha y hora
cargadas previamente en un buffer de 8 bytes que comienza en una direccin T (parmetro) especificada por el usuario. Todos los valores deben codificarse en formato BCD.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 15 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

En el ejemplo a la derecha, al activarse I0.0 los datos almacenados a


partir de la direccin 1000 de la memoria V (con la misma disposicin y formato mostrados en el tem precedente) se cargan en el
reloj por hardware, y a partir de ese momento ste comienza a trabajar (el reloj se puso en fecha y hora).
El RTC implementado por hardware tiene un respaldo ante cortes de energa, el cual se pierde
ante un corte muy prolongado, lo que obliga a configurar nuevamente sus datos con la instruccin
SET_RTC.

6.

OPERACIONES DE CONTROL DEL PROGRAMA

Las operaciones de control permiten ciertas acciones especiales en los programas (como la seleccin condicional, bucles, bifurcaciones, etc.), permitiendo variar o alterar la secuencia normal de
ejecucin de un programa.
Ejemplos:
La operacin Fin condicionado (END) finaliza el ciclo actual en funcin
de la combinacin lgica precedente.
Se la puede utilizar en el Programa Principal, pero NO en subrutinas ni en
rutinas de interrupcin.
STEP 7 Micro/WIN agrega automticamente un fin absoluto al programa principal del usuario.
La operacin Borrar temporizador de vigilancia (WDR = Watchdog Reset) re-dispara el perro guardin (temporizador de vigilancia) de la CPU
para prolongar el tiempo de ciclo sin que se indique un error de vigilancia.
Esta operacin se debe utilizar con mucha cautela: si se utilizan bucles para que no finalice el ciclo
o para prolongarlo excesivamente, es posible que algunos procesos se ejecuten incorrectamente
no se ejecuten hasta que se complete el ciclo, entre otros: comunicaciones, actualizacin de E/S,
temporizadores con resolucin de 10 ms y 100 ms, etc.
Como una regla general, debera usarse la instruccin WDR si se espera que el tiempo de scan
pueda exceder los 500 mseg, si cabe la posibilidad de una rfaga de actividad de interrupciones
que pueda impedir volver al scan principal por ms de 500 mseg.
La operacin Parar (STOP) termina la ejecucin del programa provocando una transicin de la CPU S7-200 del modo RUN al modo STOP.
Si la instruccin STOP se ejecuta dentro de una rutina de interrupcin, la misma termina inmediatamente, y todas las interrupciones pendientes se ignoran. Las acciones remanentes del ciclo de
scan se completan, incluyendo la ejecucin del programa principal, y la transicin de modo RUN a
modo STOP se efecta al final de ciclo de scan actual.
Esta instruccin se activa generalmente con marcas especiales que indican alguna situacin anmala que pueda implicar algn peligro de funcionamiento, p.ej., SM5.0 (error de E/S), SM0.2
(prdida de datos remanentes), etc.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 16 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

6.1.

Saltos y bucles

Estas operaciones permiten que el flujo del programa siga caminos distintos a los preestablecidos
por la secuencia principal, o repetir ciclos y ahorrar pasos de memoria.
6.1.1.

Salto a una etiqueta

La instruccin Etiqueta (LBL) marca la ubicacin de destino de un salto


(N).
La instruccin Saltar a etiqueta (JMP) realiza una bifurcacin a la etiqueta N especificada dentro del programa.
N puede valer de 0 a 255.
La operacin JMP se puede utilizar en el programa principal, en subrutinas o en rutinas de interrupcin, a condicin de que la instruccin y su etiqueta de destino estn siempre localizadas dentro del mismo segmento de cdigo (programa principal/subrutina/rutina de interrupcin): no
est permitido saltar de un segmento de cdigo a otro diferente.
Del mismo modo, la operacin JMP se puede utilizar en un segmento SCR, pero la correspondiente instruccin LBL debe encontrarse en el mismo segmento SCR.
Ejemplo:
Si no se han perdido datos remanentes (SM0.2 = 0) saltar a la etiqueta 10 y continuar a partir de ese lugar del programa; de lo contrario,
continuar con el siguiente Network.
El bloque LBL se ubica sin necesidad de un contacto que lo habilite.
Simplemente define un lugar en el programa. Es una operacin absoluta (conectada directamente a la barra de continuidad izquierda).
6.1.2.

Bucle FOR NEXT

La operacin FOR ejecuta las instrucciones entre el bloque FOR


y la instruccin NEXT. El programador debe especificar el valor
del ndice (cuenta del bucle actual) (INDX), el valor de arranque
(INIT), y el valor final (FINAL). La operacin NEXT marca la
terminacin del bucle FOR.

Las instrucciones FOR/NEXT pueden usarse para delimitar un bucle que se repite un nmero
especificado de veces. Cada instruccin FOR requiere su correspondiente instruccin NEXT. Los
bucles FOR/NEXT pueden anidarse (un bucle dentro de otro) hasta una profundidad de 8.
En el ejemplo siguiente, el bucle FOR/NEXT interno ejecuta 3 veces las instrucciones indicadas
como (........), lo cual se repite 100 veces, controlado por el bucle FOR/NEXT externo.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 17 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

INDX, INIT y FINAL referencian variables en formato de palabra (W); INIT y FINAL (nicamente) admiten tambin valores constantes.
Al habilitarse el bucle, el valor de INIT se copia en INDX. El valor de INDX se incrementa en una
unidad despus de cada ejecucin de las instrucciones entre FOR y NEXT, y el resultado se compara con el valor FINAL: si INDX > FINAL el bucle se termina.
Si el valor INIT es mayor que FINAL, el bucle no se ejecuta.

7.

SUBRUTINAS

Las subrutinas son bloques de cdigo tiles en aquellos casos en que se debe ejecutar una funcin
repetidamente: en lugar de re-escribir la lgica en cada lugar del programa principal en donde se
quiera que ocurra la funcin, se puede escribir la lgica una sola vez en una subrutina, e invocar
(llamar) a la misma tanto veces como sea necesario en el programa principal ( en otra subrutina).
Los principales beneficios derivados del uso de subrutinas son:
se reduce el tamao global del cdigo
el programa se estructurar de forma ms ordenada, dividindose en bloques ms pequeos y
manejables. Las instrucciones usadas en el programa principal determinan qu subrutina especfica se ejecutar: cuando se invoca (se llama) su ejecucin, la subrutina lleva a cabo su
programa hasta el final, y entonces el sistema devuelve al control al programa principal en el
Network desde el cual se invoc a la subrutina.
la subdivisin es beneficiosa cuando se debe depurar a un programa de sus errores, cuando
se debe realizar algn mantenimiento (modificaciones, adecuaciones, optimizaciones, ...) al

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 18 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

mismo. Trabajar con bloques de cdigo ms pequeos facilita la deteccin y correccin de


errores y fallas, tanto dentro de las subrutinas como en el programa completo.
el PLC se utiliza con ms eficiencia llamando a la subrutina nicamente cuando se la necesita,
puesto que todos los bloques pueden no tener que ejecutarse en cada scan.
permiten aislar funciones y copiarlas en otros programas con pocas modificaciones ninguna:
son porttiles. Esto es posible si la subrutina referencia nicamente a sus parmetros y a la
memoria local (L), evitando el uso de variables smbolos globales (direcciones absolutas en
las reas de memoria I, Q, M, SM, AI, AQ, V, T, C, S, AC).
Para usar una subrutina en un programa deben realizarse tres tareas:
a) crear la subrutina
b) definir sus parmetros en la Tabla de Valores Locales de la subrutina (opcional)
c) invocacin (llamarla) desde otra POU
Para describir estas tareas y simultneamente mostrar cmo se realizan en el ambiente STEP 7Micro/WIN, se propone un ejercicio sencillo consistente en una subrutina con dos parmetros de
entrada y uno de salida (ver items 2.13.2 y 2.13.3).
7.1.

Creacin de la subrutina

Las subrutinas aparecen al pie de


la Ventana del Editor como solapas (SBR_0, SBR_1, ) precedidas por la solapa PRINCIPAL, y
seguidas por solapas de rutinas
de interrupcin (INT_0, )
Para crear una subrutina (agregando una nueva solapa a las ya existentes) puede usarse alguno de
los siguientes mtodos:
desde el men Edicin Insertar Subrutina
desde el rbol de Operaciones, hacer click con el botn derecho sobre Bloque de programa y
seleccionar Insertar Subrutina del men emergente
sobre la Ventana del Editor de Programa, hacer click con el botn derecho y seleccionar Insertar Subrutina del men emergente.
En este punto ya se puede trabajar sobre la subrutina (escribir su cdigo), bien diferir este trabajo para ms adelante. Para escribir la lgica de una subrutina, simplemente seleccione la solapa de
la subrutina deseada y comience a trabajar en la Ventana del Editor de Programa.
Si la subrutina har uso de parmetros y/o variables locales, antes de escribir el cdigo deben definirse los mismos usando la Tabla de Variables Locales (TVL) de la subrutina(1), como se describe
en el tem siguiente.

(1)

Debe recordarse que en todo programa existe una Tabla de Variables Locales separada para cada Unidad de Organizacin del Programa (del ingls POU = Program Organizational Unit), en 64 bytes de la memoria L.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 19 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Notas:
si una subrutina emplea variables locales (vlidas nicamente en el mbito de la subrutina), las
mismas deben definirse como tipo TEMP en la TVL que aparece cuando se selecciona la solapa de la subrutina.
no se deben usar instrucciones END ni RET para terminar una subrutina. Las instrucciones de
terminacin incondicional de una POU (END para el programa principal, RET para subrutinas,
y RETI para rutinas de interrupcin) las insertan automticamente los Editores.
opcionalmente, se puede usar la instruccin de retorno condicional desde subrutina (RET con
condiciones), la cual termina una subrutina basada en la lgica precedente.
STEP 7-Micro/WIN crea las subrutinas con un nombre simblico por omisin: SBR_0, SBR_1,
..., etc. El usuario puede renombrarlas en el rbol de Operaciones.
7.2.

SUBRUTINAS PARAMETRIZADAS: uso de la TVL

Opcionalmente, una subrutina puede contener parmetros cuyos valores se le pasan en el momento de ser llamada por otra POU. Estos parmetros se definen tambin en la TVL de la subrutina. Cada parmetro tiene asociados un nombre simblico, un tipo de variable, y un tipo de dato.
El lmite mximo de parmetros de entrada/salida para cada llamada a subrutina es 16: si se excede este lmite se devuelve un error.
el campo tipo de variable (Tipo var.) en la TVL define si el parmetro se transfiere a la subrutina (IN), a y desde la subrutina (IN_OUT), desde la misma (OUT). La tabla que sigue describe estos tipos. Para insertar el registro de un parmetro, coloque el cursor en el campo Tipo
var. sobre el tipo de variable (IN, IN_OUT u OUT) que se quiere insertar, haga click con el
botn derecho del mouse y seleccione Insertar Fila Insertar Fila debajo.
Tipo de Parmetro

Descripcin

IN

El parmetro se transfiere a la subrutina. Puede ser una constante (como 16#1234), el valor
contenido de una direccin directa (como VB10), en una direccin indirecta (como *AC1).

IN_OUT

El valor de la direccin del parmetro indicado se transfiere a la subrutina y el valor


resultante de la subrutina se devuelve luego a la misma direccin. No se permite utilizar
constantes (como 16#1234) ni direcciones (como &VB100) como entrada/salida.

OUT

El valor resultante de la subrutina se devuelve a la direccin del parmetro indicado. No se


permite utilizar constantes (como 16#1234) ni direcciones (como &VB100) como salidas.

TEMP

Cualquier memoria local que no se utilice para la transferencia de parmetros se puede


emplear para el almacenamiento temporal dentro de la subrutina.

el campo Tipo de datos en la TVL define el tamao y formato del parmetro. Sobre este campo, haga click con el botn derecho del mouse y seleccione el tipo deseado en el men de opciones que se desplegar. La tabla que sigue describe los tipos de datos permitidos.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 20 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Tipo de Dato del


parmetro
BOOL

Descripcin
Este tipo se utiliza para entradas y salidas binarias simples.

BYTE, WORD,
DWORD

Estos tipos identifican parmetros de entrada o de salida sin signo, compuestos por 1, 2 4
bytes, respectivamente.

INT, DINT

Estos tipos identifican parmetros de entrada o de salida con signo, compuestos por 2 4
bytes, respectivamente.

REAL
STRING

Circulacin de
corriente

Este tipo identifica un valor en coma flotante IEEE de precisin simple (4 bytes).
Este tipo de datos sirve de puntero (4 bytes) a una cadena.
La circulacin de corriente booleana slo se permite en las entradas binarias (BOOL). Esta
declaracin le indica a STEP 7-Micro/WIN que este tipo de parmetro de entrada es el
resultado de la circulacin de la corriente conforme a una combinacin de operaciones
lgicas con bits. Las entradas booleanas de circulacin de corriente deben aparecer en la
TVL antes de cualquier otro tipo de entrada. Slo los parmetros de entrada pueden usarse as.

La figura siguiente muestra como se aplicaron estos conceptos para crear la subrutina SBR_TEST
(nombre asignado por el usuario a la subrutina SBR_0), cuyo comportamiento, cada vez que se la
invoca, responde a las siguientes premisas:
si el parmetro de entrada Inicializar (valor binario) vale 1, el parmetro de salida Tmr_Preset
se fuerza al valor 20
si el parmetro de entrada Actualizar (byte) vale 17 (00010001 binario, 0x11 hexadecimal),
Tmr_Preset se incrementa en 10.

Tabla de Variables Locales


de la subrutina SBR_TEST (SBR_0)

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 21 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

7.3.

Invocacin (llamada) de la subrutina desde otra POU

Despus de haber insertado una nueva subrutina, y de definir sus parmetros (si los tiene) en la
TVL de dicha subrutina, se pueden colocar llamadas a la misma en otra POU del programa. Estas
llamadas pueden hacerse desde el programa principal, desde otra subrutina, desde una rutina
de interrupcin. La recursin (una subrutina que se llama a s misma) no est prohibida, pero debe
usarse con extremo cuidado.
Un programa puede soportar hasta 64 subrutinas (128 en una CPU 226XM). Desde el programa
principal se pueden anidar subrutinas (llamar a una subrutina dentro de otra), hasta una profundidad mxima de 8 niveles. Esto no es vlido para rutinas de interrupcin: no se pueden hacer
llamadas a subrutinas dentro de una subrutina invocada por una rutina de interrupcin.
Importante !: si se inserta una llamada a subrutina y a posteriori se modifica la TVL de
la misma, la llamada se vuelve invlida. Se debe entonces borrar la llamada invlida y
reemplazarla por otra llamada actualizada que reflejar los parmetros correctos.

Nota: los acumuladores (AC0 a AC3) son comunes tanto para las subrutinas como para
la rutina que los llama. No se efecta ninguna operacin automtica de respaldo ni de
restitucin de sus contenidos debida al uso de subrutinas.
Si la subrutina emplea parmetros, la asignacin de los valores de los mismos a la memoria local
en la subrutina se efecta como sigue:
los valores de los parmetros se asignan a la memoria local en el orden especificado por la operacin llamar a subrutina, comenzando esos parmetros en L0.
de 1 a 8 valores de parmetros binarios consecutivos se asignan a un nico byte comenzando
en Lx.0 y continuando hasta Lx.7.
los valores de byte, palabra y palabra doble se asignan a la memoria local en fronteras de byte
(LBx, LWx LDx).
En la operacin de llamada a subrutina con parmetros, stos deben concordar exactamente con
las variables definidas en la TVL de la subrutina. Los parmetros deben ordenarse con los parmetros de entrada (IN) en primer lugar, seguidos por los de entrada/salida (INOUT), y finalmente
por los de salida (OUT).
Continuando el ejemplo del tem precedente, la figura siguiente muestra una parte de un programa principal que invoca a la subrutina pasndole como parmetros:
el estado de la entrada I0.0 (Recarga) como parmetro Inicializar
el estado del byte IB1 como parmetro Actualizar
y utiliza el parmetro de salida Tmr_Preset devuelto por la subrutina como valor de preseleccin
(PT) para el temporizador T37.
Cuando se desea recargar el valor de preseleccin del temporizador con el valor 20, se activa la
entrada I0.0; cuando se desea incrementar dicho valor en 10, se hace cambiar el byte IB1 desde un
valor cualquiera al valor 17.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 22 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Tabla de
Smbolos Globales

La tabla que se ve en la parte superior de la figura es la Tabla de Smbolos Globales del proyecto,
que no debe confundirse con la Tabla de Variables Locales.

8.
8.1.

VARIABLES ANALGICAS
Entradas Analgicas (AI)

El S7-200 convierte un valor analgico (tal como una temperatura un voltaje) en un valor digital
de 16-bits (palabra): esta operacin se denota en ingls con la sigla ADC (Analog to Digital Conversion). A estos valores se accede con el identificador de rea (AI), tamao del dato (W), y direccin del byte inicial. Como las entradas analgicas son palabras que siempre comienzan en un byte
par (como 0, 2, 4), el acceso se hace especificando direcciones como AIW0, AIW2, AIW4. Los
valores de entradas analgicas son solamente de lectura.
8.2.

Salidas Analgicas (AQ)

El S7-200 convierte un valor digital en 16-bits (palabra) a una corriente voltaje, proporcionales al
valor digital: esta operacin se denota en ingls con la sigla DAC (Digital to Analog Conversion).
Estos valores se escriben con el identificador de rea (AQ), tamao del dato (W), y direccin del
byte inicial. Como las salidas analgicas son palabras que siempre comienzan en un byte par (como 0, 2, 4), el acceso se hace especificando direcciones como AQW0, AQW2, AQW4. Los valores de salidas analgicas son solamente de escritura.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 23 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

8.3.

Mdulos de Entrada/Salida Analgica

El manejo de variables analgicas (por ejemplo la tensin entregada por una termocupla equivalente a la temperatura sensada, o la tensin equivalente a un sensor de nivel) no se puede realizar
desde la bornera de entradas de la CPU (periferia embebida), debido a que esas seales requieren
un tratamiento previo (conversin a formato digital) antes de poder procesarlas internamente.
Esta funcin est a cargo de mdulos de expansin especiales que, adems de realizar la conversin analgica/digital, permiten adaptar niveles, rangos de trabajo y tipo de las seales (tensin o
corriente).
Como ejemplo tomaremos al mdulo EM235, que permite conectar 4 entradas analgicas y una
salida analgica, realizando las conversiones con una resolucin de 12 bits, siendo rpido y de bajo
costo: puede convertir una seal de entrada analgica a su correspondiente valor digital en 149
s. La seal de entrada se convierte cada vez que el programa accede a la entrada analgica en
cuestin. Los tiempos de conversin mencionados se deben agregar al tiempo de ejecucin bsico
de la operacin utilizada para acceder a la entrada analgica.
El EM235 proporciona un valor digital no procesado (sin linealizacin ni filtrado) que corresponde
a la corriente tensin analgicas en los bornes de entrada del mdulo. Puesto que se trata de un
mdulo de alta velocidad, puede seguir los cambios rpidos en la seal de entrada (incluyendo
ruido interno y externo). Las diferencias de un muestreo a otro, causadas por el ruido sobre una
seal de entrada analgica constante que cambie lentamente, se pueden reducir promediando
una cantidad de lecturas.
El EM235 se configura utilizando llaves DIP, las cuales permiten seleccionar el rango y resolucin
de las entradas analgicas. Todas las entradas del mdulo se configuran al mismo rango y formato.
La seleccin incluye: operacin unipolar/bipolar, ganancia y atenuacin. Todas las entradas son del
tipo diferencial.
Por ejemplo, para operacin unipolar, se pueden elegir los siguientes rangos y resoluciones:
Rango mximo

Resolucin de la CAD

0 a 50 mV

12,5 V

0 a 100 mV

25 V

0 a 500 mV

125 V

0a1V

250 V
1,25 mV
2,5 mV

0a5V
0 a 10 V
0 a 20 mA

5 A

Direccionamiento de la palabra analgica de entrada


Como las entradas analgicas son palabras que siempre comienzan en un byte par (0, 2, 4, ...), el
direccionamiento de las mismas se especifica como AIW0, AIW2, AIW4, etc.
Si se dispone de un nico mdulo de expansin EM235, las entradas analgicas se direccionarn
como AIW0, AIW2, AIW4 y AIW8.
Si se agrega un segundo mdulo EM235, las entradas analgicas correspondientes tendrn las
direcciones AIW0, AIW2, AIW4 y AIW8.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 24 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Anlogamente: la salida analgica para un nico mdulo EM235 se direccionar como AQW0, y
para un mdulo adicional, AQW2.
8.4.

Calibracin de entradas

Los ajustes de calibracin afectan a una etapa de amplificador de instrumentacin a continuacin


de un multiplexor analgico de las entradas, afectando por lo tanto a TODOS los canales de entrada del mdulo. Es posible que an despus de una calibracin, las variaciones en los valores de
componentes de cada circuito de entrada precediendo al multiplexor causen ligeras diferencias en
las lecturas entre canales conectados a la misma seal de entrada.
Para estar dentro de especificaciones, se deben habilitar los filtros analgicos de entrada para todas las entradas del mdulo, y tomar al menos 64 muestras para calcular el valor promedio de
cada medicin.
Para calibrar una entrada analgica siga los pasos a continuacin:
1)
2)
3)
4)
5)

Apague el mdulo y seleccione el rango de entrada deseado.


Energice la CPU y el mdulo, permitiendo que el segundo se estabilice por 15 minutos.
Usando una fuente de seal, aplique un valor cero a uno de los terminales de entrada.
Lea el valor informado a la CPU por el canal de entrada apropiado.
Ajuste el Potencimetro de OFFSET hasta que la lectura sea cero ( un valor digital deseado).
6) Conecte una seal de plena escala a uno de los terminales de entrada, y lea el valor informado
a la CPU.
7) Ajuste el Potencimetro de GANANCIA hasta que la lectura coincida con el valor digital deseado.
8) Repita las calibraciones de OFFSET y GANANCIA hasta que no sea necesario retocar los potencimetros.
Finalmente, la lectura digital est expresada en cuentas del Conversor A/D: para convertir este
valor a su equivalente en Unidades de Ingeniera (voltaje, corriente, etc.) se lo deber multiplicar
por una constante.
8.5.

Potencimetros Analgicos

El S7-200 provee potencimetros para efectuar ajustes analgicos. Los mismos estn ubicados
debajo de la cubierta del acceso frontal del mdulo.
Estos potencimetros se pueden usar para aumentar reducir valores almacenados en bytes de la
Memoria Especial (SMB). Estos son valores slo-de-lectura que se pueden usar en el programa
para varios propsitos, como p.ej. actualizar el valor actual de un temporizador contador, introducir cambiar valores predeterminados, configurar lmites.
Los ajustes se hacen con un pequeo destornillador: girndolo hacia la derecha se incrementar el
valor, y hacia la izquierda se lo decrementar.
El byte SMB28 contiene el valor digital que representa la posicin del Potencimetro Analgico
#0; el byte SMB29 contiene el valor digital que representa la posicin del Potencimetro Analgico #1. Ambos tienen un rango de 0 a 255, y una repetibilidad de 2 cuentas.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 25 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

El programa del usuario puede utilizar estos valores de solo-lectura para diversos propsitos. Por
ejemplo: actualizar el valor de preset de temporizadores o contadores, ajustando los mismos
mientras el PLC opera en modo RUN (sin necesidad de pasarlo a modo STOP y re-transferir programa con valores modificados).
Ejemplo:
En el pequeo trozo de programa que sigue, el valor digital del Potencimetro Analgico #0 se
emplea como preseleccin para el Temporizador T33. Dado que el parmetro PT del mismo slo
admite el formato de palabra (entero en 16 bits), el valor en SMB38 (byte) se convierte a entero
con la operacin B_I (convertir byte a entero) y se guarda en la palabra VW100, la que luego se
usa como valor predeterminado para el Temporizador T33:

9.

INTERRUPCIONES

Una interrupcin es una seal recibida por el procesador, indicando un evento que necesita atencin inmediata. La interrupcin alerta al procesador de que existe una condicin de alta prioridad
que requiere suepender la ejecucin del cdigo que se est ejecutando actualmente, para pasar a
ejecutar un cdigo especfico para procesar el evento. Este cdigo, generalmente pequeo, se
denomina Subrutina de Servicio de Interrupcin (ISR = Interrupt Service Routine). La interrupcin es temporaria, y cuando finaliza la ISR el procesador contina con la ejecucin del programa
interrumpido.
Las interrupciones son gobernadas por eventos (internos externos), por lo cual, antes de que se
pueda invocar una ISR, se debe establecer una asociacin entre el evento que interrumpe y el
segmento de cdigo que se desea ejecutar cuando ocurre el evento. Cada uno de los eventos reconocidos tiene asignado un nmero de evento (ver: Tabla de asignacin de Eventos de Interrupcin), y la asignacin se realiza usando la instruccin Asignar interrupcin (ATCH = ATtaCH Inte-

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 26 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

rrupt), la que asocia el nmero de evento con una ISR (especificada por un nmero de Rutina de
Interrupcin). Al hacer la asignacin, la interrupcin queda habilitada automticamente.
Es posible asignar ms de un evento a la misma ISR, pero lo contrario no es cierto: un evento no
puede asignarse a ms de una ISR.
La operacin Inhibir todos los eventos de interrupcin (DISI = DISable Interrupts) permite inhabilitar TODAS las interrupciones. En este caso, cada vez que ocurre un evento de interrupcin el
mismo se encola hasta que las interrupciones se habiliten nuevamente, lo cual se efecta con la
operacin Habilitar todos los eventos de interrupcin (ENI = ENable Interrupts).
Es posible inhabilitar interrupciones individualmente rompiendo la asociacin entre el evento de
interrupcin y su correspondiente ISR: esto se efecta con la operacin Desasociar interrupcin
(DTCH = DeTaCH interrupt), la cual devuelve la interrupcin a un estado inactivo ignorado.
Reglas generales de uso de interrupciones
El procesamiento de interrupciones provee una reaccin rpida a eventos internos externos de
inters especial. El cdigo de estas ISR debera optimizarse para realizar una tarea especfica, y
luego devolver rpidamente el control al Programa Principal. Mantener a una ISR breve y precisa
hace que su ejecucin sea rpida, y que otros procesos no permanezcan suspendidos por perodos
de tiempo largos, lo cual, bajo condiciones inesperadas, podra causar operaciones anmalas del
equipo controlado por el Programa Principal.
Restricciones
En una ISR no se pueden usar las instrucciones DISI, ENI, HDEF, LSCR ni END.
Los eventos de interrupcin pueden ocurrir en un instante imprevisible. La ejecucin de la ISR,
puede afectar la lgica de contactos, bobinas y acumuladores, por lo cual, antes de comenzar la
ejecucin de dicho cdigo, el sistema salva (almacena) automticamente en memoria la pila lgica, los registros acumuladores, y los bits de memoria especial (SM) que indican el estado del acumulador y de las operaciones. Al completarse la ejecucin de la ISR, el sistema repone automticamente en sus orgenes la informacin salvada. Esto evita perturbaciones al Programa Principal
causadas por bifurcaciones a/desde una ISR.
9.1.

Cmo crear una ISR

Se puede tener un mximo de 128 interrupciones en un programa. Para crear una ISR, el programador puede usar alguno de los siguientes mtodos:
a) Desde el men Edicin, elegir Insertar Interrupcin
b) Desde el rbol de operaciones, hacer click con el botn derecho sobre Bloque de programa y
seleccionar Insertar Interrupcin del men emergente
c)

Desde la ventana del Editor de Programa, hacer click con el botn derecho y seleccionar Insertar Interrupcin del men emergente

El Editor de Programa dejar de mostrar la POU previa y pasar a mostrar la nueva ISR. Una nueva solapa aparecer al pie del Editor de Programa, identificando la nueva ISR.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 27 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

9.2.

Interrupciones soportadas por el S7-200

El S7-200 soporta tres tipos de interrupciones, detalladas en la Tabla a continuacin:


Interrupciones del puerto de Comunicaciones: el S7-200 genera eventos que permiten a un
programa controlar el puerto de comunicaciones.
Interrupciones de E/S: el S7-200 genera eventos para diferentes cambios de estado de diversas
entradas/salidas. Estos eventos permiten que el programa responda a Contadores Rpidos, salidas de impulsos, flancos de entradas.
Interrupciones basadas en tiempo: el S7-200 genera eventos que permiten a un programa reaccionar a intervalos de tiempo especficos.
9.2.1.

Interrupciones del puerto de Comunicaciones

El puerto de comunicaciones serie del S7-200 puede ser controlado por el programa, lo cual se
denomina modo de operacin Freeport. Ver detalles en el Manual del Sistema S7-200.
9.2.2.

Interrupciones de Entrada/Salida

El S7-200 genera los siguientes eventos de interrupcin:


Flanco ascendente descendente de alguna de las entradas I0.0, I0.1, I0.2, I0.3: estos eventos pueden usarse para significar una condicin que deba recibir attencin inmediata al producirse el evento.
Eventos asociados con Contadores Rpidos:
valor actual = valor predeterminado
cambio en el sentido de conteo (podra corresponder a un cambio en el sentido de giro de
un eje, a una Puesta a 0 externa del contador). Cada uno de estos eventos permiten tomar acciones en tiempo real en respuesta a eventos de alta velocidad que no se pueden
controlar a las velocidades de scan del PLC.
Finalizacin del nmero prescripto de pulsos en una salida de tren de pulsos. Un uso tpico de
estas salidas es el control de un motor paso-a-paso.
9.2.3.

Interrupciones basadas en tiempo

Estas interrupciones incluyen:


Interrupciones de temporizadores: permiten responder a la conclusin de un intervalo de
tiempo especfico. Slo estn soportadas para los temporizadores de 1 mseg de resolucin T32
y T96, los que, de otra manera, operan normalmente. Si la interrupcin est habilitada, la ISR
asociada se ejecuta cuando el valor actual del temporizador iguala al valor predeterminado del
mismo durante el intervalo de actualizacin de 1 mseg.
Interrupciones Temporizadas: permiten especificar acciones que se llevarn a cabo cclicamente. Se dispone de dos Interrupciones Temporizadas, denominadas #0 y #1. El perodo se puede
fijar en incrementos de 1 mseg, desde 1 hasta 255 mseg, empleando el registro de memoria
especial SMB34 para la Interrupcin Temporizada 0, y el registro SMB35 para la Interrupcin
Temporizada 0. El control se transferir a la respectiva ISR cada vez que expire el tiempo fijado.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 28 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Tpicamente, estas interrupciones se usan para controlar el muestreo de entradas analgicas,


para ejecutar un bucle PID a intervalos regulares.
TABLA DE PRIORIDADES DE EVENTOS DE INTERRUPCIN PARA LA FAMILIA DE CPUs S7-21X
N de
Evento

Descripcin de la Interrupcin

Grupo de Prioridad

Soportado por:

Prioridad en
el Grupo

212

215

Puerto 0: caracter recibido

SI

SI

Puerto 0: fin transmisin de caracter

0*

SI

SI

23

Puerto 0: fin recepcin de mensaje

Comunicaciones

0*

SI

24

Puerto 1: fin recepcin de mensaje

(el ms alto)

25

Puerto 1: caracter recibido

1*

26

Puerto 1: fin transmisin de caracter

1*

Flanco ascendente en I0.0**

SI

SI

Flanco ascendente en I0.1

SI

Flanco ascendente en I0.2

SI

Flanco ascendente en I0.3

SI

Flanco descendente en I0.0**

SI

SI

Flanco descendente en I0.1

SI

Flanco descendente en I0.2

SI

Flanco descendente en I0.3

SI

12

Contador HSC0: CV=PV**

SI

SI

13

Contador HSC1: CV=PV

SI

14

Contador HSC1: cambio de direccin

SI

15

Contador HSC1: puesta a 0 externa

10

SI

16

Contador HSC2: CV=PV

11

SI

17

Contador HSC2: cambio de direccin

12

SI

18

Contador HSC2: puesta a 0 externa

13

SI

19

PLS0: cuenta de pulsos

14

SI

20

PLS1: cuenta de pulsos

15

SI

10

Interrupcin temporizada 0

11

Interrupcin temporizada 1

Temporizado

SI

21

Interrupcin Timer T32 cuando CT=PT

(el ms bajo)

SI

22

Interrupcin Timer T96 cuando CT=PT

SI

Discreto
(medio)

SI

SI

(*)
Puesto que la comunicacin es inherentemente half-duplex, la transmisin y la recepcin tienen la misma prioridad.
(**) Si el evento 12 (HSC0 CV=PV) se asigna a una interrupcin, entonces ni el evento 0 ni el evento 1 pueden
asignarse a interrupciones. Del mismo modo, si el evento 0 el evento 1 se asignan a interrupciones, entonces el
evento 12 no se puede asignar.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 29 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

TABLA DE PRIORIDADES DE EVENTOS DE INTERRUPCIN PARA LA FAMILIA DE CPUs S7-22X


Soportado por:
N de
Evento

Descripcin de la Interrupcin

Grupo de
Prioridad

Prioridad
en el
Grupo

224
XP
221

222

224

226
226
XM

Puerto 0: caracter recibido

SI

SI

SI

SI

Puerto 0: fin transmisin de caracter

SI

SI

SI

SI

23

Puerto 0: fin recepcin de mensaje

SI

SI

SI

SI

24

Puerto 1: fin recepcin de mensaje

25

Puerto 1: caracter recibido

26

Comunicaciones

SI

(el ms alto)

SI

Puerto 1: fin transmisin de caracter

SI

19

PTO 0: interrupcin completa

SI

SI

SI

SI

20

PTO 1: interrupcin completa

SI

SI

SI

SI

Flanco ascendente en I0.0

SI

SI

SI

SI

Flanco ascendente en I0.1

SI

SI

SI

SI

Flanco ascendente en I0.2

SI

SI

SI

SI

Flanco ascendente en I0.3

SI

SI

SI

SI

Flanco descendente en I0.0

SI

SI

SI

SI

Flanco descendente en I0.1

SI

SI

SI

SI

Flanco descendente en I0.2

SI

SI

SI

SI

Flanco descendente en I0.3

SI

SI

SI

SI

12

HSC0 CV=PV

10

SI

SI

SI

SI

27

HSC0 cambio de direccin

11

SI

SI

SI

SI

28

HSC0 puesta a 0 externa / fase Z

Discreto

12

SI

SI

SI

SI

13

HSC1 CV=PV

(medio)

13

SI

SI

14

HSC1 cambio de direccin

14

SI

SI

15

HSC1 puesta a 0 externa

15

SI

SI

16

HSC2 CV=PV

16

SI

SI

17

HSC2 cambio de direccin

17

SI

SI

18

HSC2 puesta a 0 externa

18

SI

SI

32

HSC3 CV=PV

19

SI

SI

SI

SI

29

HSC4 CV=PV

20

SI

SI

SI

SI

30

HSC4 cambio de direccin

21

SI

SI

SI

SI

31

HSC4 puesta a 0 externa / fase Z

22

SI

SI

SI

SI

33

HSC5 CV=PV

23

SI

SI

SI

SI

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 30 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

TABLA DE PRIORIDADES DE EVENTOS DE INTERRUPCIN PARA LA FAMILIA DE CPUs S7-22X


Soportado por:
N de
Evento

Grupo de
Prioridad

Descripcin de la Interrupcin

10

Interrupcin temporizada 0

11

Interrupcin temporizada 1

21

Interrupcin del Timer T32 (CT=PT)

22

Interrupcin del Timer T96 (CT=PT)

Prioridad
en el
Grupo

224
XP
221

222

224

226
226
XM

SI

SI

SI

SI

Temporizado

SI

SI

SI

SI

(el ms bajo)

SI

SI

SI

SI

SI

SI

SI

SI

Nota 1: las interrupciones basadas en tiempo se habilitan y arrancan cuando se les asigna una ISR. Durante la
asignacin el sistema toma los valores de SMB34 y SMB35, de modo que modificaciones subsecuentes de los
mismos no afectarn al perodo del ciclo. Para cambiar el perodo, se lo debe modificar, y luego volver a asignar la
ISR al evento.
Al hacerse la re-asignacin cualquier valor acumulado anteriormente se vuelve a cero, y la temporizacin comienza
con el nuevo valor.
Nota 2: una vez habilitadas, estas interrupciones ocurren continuamente, ejecutando la ISR asignada cada vez que
expira el perodo especificado. Si se sale del modo RUN se desasigna la ISR, la Interrupcin Temporizada se inhabilita. No obstante, si se ejecuta la instruccin DISI las Interrupiones Temporizadas continuarn ocurriendo,
ponindose en cola de espera hasta que la cola se llene hasta que se re-habiliten las interrupciones.

9.3.

Prioridad y Puesta en Cola de las Interrupciones

El criterio de atencin de las interrupciones es la primera que llega es la primera que se atiende,
dentro de sus respectivos Grupos de Prioridad. Slo una ISR puede estar activa en cualquier momento: una vez que comienza la ejecucin de una ISR, la misma prosigue hasta su conclusin. No
puede ser interrumpida, ni siquiera por un evento de mayor prioridad. Las interrupciones que ocurran mientras se est procesando otra interrupcin se ponen en una cola de espera para su procesamiento posterior.
Cada Grupo de Prioridad tiene su propia cola de espera, cuya capacidad se indica a continuacin:
Cola

CPUs 221, 222 y 224

CPUs 224XP y 226

Comunicaciones

Entrada/Salida

16

16

Temporizadas

Potencialmente pueden ocurrir ms interrupciones de las que puede contener una cola. El sistema
mantiene bits de estado que informan desbordes (overflow) de colas, identificando el tipo de
evento de interrupcin que se ha perdido. Estos bits deben usarse nicamente dentro de una ISR,
dado que se ponen a cero cuando la cola se vaca y el control se devuelve al Programa Principal: su
valor es 0 cuando no ocurri un desborde, y 1 cuando la cola est llena:

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 31 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Descripcin

9.4.

Bit de memoria SM

Cola de Comunicaciones

SM4.0

Cola de Interrupcin de Entrada/Salida

SM4.1

Cola de Interrupciones Temporizadas

SM4.2

Instrucciones asociadas con interrupciones


Cuando la CPU pasa a modo RUN, las interrupciones se inhiben. La operacin Habilitar
todos los eventos de interrupcin (ENI) habilita la ejecucin de todos los eventos asociados.
La operacin Inhibir todos los eventos de interrupcin (DISI) inhibe el procesamiento
de todas las interrupciones. No obstante, los eventos de interrupcin activos se siguen
poniendo en la cola de espera.
La operacin Retorno condicionado desde rutina de interrupcin (CRETI) finaliza una
rutina en funcin de la combinacin lgica precedente.
Nota: STEP 7-Micro/WIN aade automticamente un retorno incondicionado a cada
ISR.
La operacin Asociar interrupcin (ATCH) asocia el nmero de
una rutina de interrupcin (INT) a un evento de interrupcin
(EVNT), habilitando as al evento.

La operacin Desasociar interrupcin (DTCH) desasocia un evento de interrupcin (EVNT) de todas las rutinas de interrupcin,
deshabilitando as el evento. La operacin DISI inhibe TODOS los
eventos de interrupcin, en tanto que la operacin DTCH inhibe
solamente ciertos eventos de interrupcin, eliminando la asociacin entre el evento y la correspondiente ISR, deolviendo la interrupcin a un estado inactivo o ignorado.
La operacin Borrar evento de interrupcin (CLR_EVNT) elimina
todos los eventos de interrupcin del tipo EVNT de la cola de interrupciones. Utilice esta operacin para eliminar de la cola de interrupciones los eventos de interrupcin indeseados.

9.5.

Datos compartidos entre el Programa Principal y una ISR

Se pueden compartir datos entre el Programa Principal y una ms ISRs. Como no es posible
predecir cundo se generar una interrupcin, es deseable limitar la cantidad de variables usadas
tanto por la ISR como en otro lugar del programa. Pueden surgir problemas de consistencia de
datos compartidos debido a la accin de las ISRs cuando la ejecucin de i nstrucciones en el Programa Principal es interrumpida por eventos de interrupcin. Se recomienda usar la Tabla de Variables Locales (LVT) de la ISR para asegurar que esta ltima utilice nicamente la memoria
temporaria y no sobre-escriba datos usados en algn otro segmento de programa.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 32 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

El programador puede aplicar algunas tcnicas para asegurar que los datos se comparten correctamente entre el Programa Principal y las ISRs. Estas tcnicas bien restringen las formas de acceso a las posiciones de memoria compartida, impiden la interrupcin de secuencias de instrucciones que usan memoria compartida.
a) Para un programa STL (STatement List)(AWL) que comparte una nica variable (byte, palabra doble-palabra):
el acceso compartido correcto se puede asegurar almacenando los valores intermedios de
operaciones sobre datos compartidos nicamente en posiciones de memoria no-compartidas
en acumuladores.
b) Para un programa LAD (LADder)(KOP) que comparte una nica variable (byte, palabra
doble-palabra):
el acceso compartido correcto se puede asegurar estableciendo la convencin de que el acceso a posiciones de memoria compartida debe hacerse usando nicamente instrucciones de
Movimiento (MOVB, MOVW, MOVD, MOVR). Aunque muchas instrucciones LAD estn
compuestas de secuencias interrmpibles de instrucciones STL, las instrucciones de Movimiento citadas estn compuestas por una nica instruccin STL, cuya ejecucin no puede ser
afectada por eventos de interrupcin.
c)

Para un programa STL LAD que comparte mltiples variables:


se pueden usar las instrucciones de inhabilitacin/habilitacin de interrupciones (DISI / ENI)
para controlar la ejecucin de ISRs: en el punto del programa en que comienzan a usarse posiciones de memoria compartidas se deben inabilitar las interrupciones; una vez completadas
las acciones que afectan a estas posiciones, se deben re-habilitar las interrupciones. Mientras
dure la inhabilitacin, las ISRs no se pueden ejecutar, por lo que no podrn acceder a la memoria compartida. No obstante, este enfoque puede ocasionar retardos en las respuestas a
eventos de interrupcin.

9.6.

Llamadas a Subrutinas desde una ISR

Desde una ISR se puede invocar un nivel de anidamiento de subrutinas. La pila lgica y los acumuladores se comparten entre la ISR y la subrutina invocada.
Ejemplo:
El pequeo trozo de programa que sigue utiliza una interrupcin temporizada para leer el valor de
una entrada analgica a intervalos regulares:
en el Network 1 del Programa Principal (inicializacin) se ajusta a 100 mseg el perodo de la Interrupcin Temporizada 0; a continuacin se asocia esta interrupcin (evento 10) con la ISR INT_0. Finalmente, se habilitan todas las interrupciones.
en el Network 1 de la ISR INT_0 se lee (cada 100 mseg) la entrada analgica AIW4.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 33 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Network 1

Network 1

SM0.1

SM0.0
MOV_B
EN
ENO

100

IN

OUT

EN

SMB34

AIW4

MOV_W
ENO

IN

OUT

VW100

ATCH
EN

INT_0
10

ENO

INT
EVNT

ENI

10. CONTADORES DE PULSOS RPIDOS (HSC)


Los Contadores Rpidos (HSC = High Speed Counters) cuentan eventos cuya alta velocidad excede a la que se puede controlar en un ciclo normal de scan del PLC. Es decir: cuentan independientemente del ciclo de scan.
Estos contadores se pueden configurar como mximo para 13 modos de operacin diferentes. Los
tipos de contadores rpidos disponibles y sus frecuencias mximas de conteo dependen del tipo
de CPU:
las CPUs 221 y 222 soportan cuatro contadores rpidos, identificados como HSC0, HSC3,
HSC4 y HSC5 (estas CPUs no soportan los contadores HSC1 y HSC2)
las CPUs 224, 224XP y 226 soportan seis contadores rpidos: HSC0 a HSC5
Las frecuencias de operacin son:

Modo

221

222

CPU
224

Monofsico

4 a 30 KHz

4 a 30 KHz

6 a 30 KHz

Bifsico

2 a 20 KHz

2 a 20 KHz

4 a 20 KHz

224XP
4 a 30 KHz
2 a 200 KHz
3 a 20 KHz
1 a 100 KHz

226
6 a 30 KHz
4 a 20 KHz

Valor Actual del Contador Rpido


Todos los contadores rpidos tienen una capacidad de cuenta de 32 bits con signo, conocido como
su valor actual. Para acceder al mismo se indica su direccin, conformada por el identificador HC
(su tipo de memoria) seguido del nmero del contador (por ejemplo: HC0). El valor actual es de
slo-lectura, y el acceso se hace nicamente en formato de palabra doble (32 bits).

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 34 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

10.1. Uso de los Contadores Rpidos


Los contadores rpidos se utilizan habitualmente como accionamiento para temporizadores que
funcionan impulsados por un rbol que gira a un rgimen constante, provistos de un encoder incremental. ste ltimo provee un nmero determinado de valores de conteo por vuelta, as como
un impulso de puesta a 0 por vuelta. El reloj (o relojes) y el pulso de puesta a 0 del encoder constituyen las entradas del contador rpido.
El contador rpido se carga con el primero de varios valores predeterminados, y las salidas deseadas se activan durante el intervalo de tiempo en que el valor actual del contador es menor que el
valor predeterminado. El contador se ajusta de manera que se genere una interrupcin cuando el
valor de conteo actual sea igual al valor predeterminado, o cuando el contador se ponga a 0.
Con cada evento de interrupcin que ocurre cada vez que el valor actual iguala al predeterminado,
se carga un nuevo valor predeterminado y se activa el siguiente estado de las salidas. Si se produce una interrupcin por una puesta a 0, se establecen el primer valor predeterminado y los primeros estados de las salidas, repitindose el ciclo.
Puesto que las interrupciones se producen a una velocidad muy inferior a la de los contadores
rpidos, es posible implementar un control preciso de las operaciones rpidas con un impacto relativamente menor en el ciclo total de scan del PLC. El mtodo de asignacin de interrupciones
permite que cada carga de un nuevo valor predeterminado se realice en una rutina de interrupcin separada, lo cual simplifica el control del estado. (Alternativamente, todos los eventos de interrupcin se pueden ejecutar en una nica rutina de interrupcin).
Ejemplo de aplicacin:
El uso de contadores bifsicos es de gran utilidad para contar pulsos provenientes de un codificador rotativo (rotary
encoder) de tipo A/B, con el que se puede contar o descontar, dependiendo de que gire en un sentido o el opuesto.
Estos encoders son dispositivos montados sobre un disco, el cual generalmente se ubica en forma solidaria al eje de
una mquina (motor), emitiendo pulsos al girar el disco. As, en cada vuelta que d el eje del motor, el encoder entrega una gran cantidad de pulsos (100 o ms), lo que posibilita determinar con gran precisin, instante a instante, la
posicin del elemento movido por el motor (por ejemplo una cinta transportadora). A mayor cantidad de pulsos/vuelta, mayor precisin: de ah la necesidad de contar pulsos rpidamente.
Otros tipos de encoders proporcionan:
seales desfasadas 90 (en cuadratura, A/B), lo que permite determinar el sentido de giro
una seal de cero (un pulso por vuelta), que permite una puesta a cero, o determinar otras alternativas para determinar el movimiento de lo que se est sensando.

10.2. Instrucciones asociadas con HSCs


Los PLCs de la familia S7200 proveen dos instrucciones para operar con contadores rpidos:
HDEF y HSC:
La operacin Definir Modo para Contador Rpido
(HDEF) selecciona el modo de operacin de un
contador rpido x en particular (HSCx). Esta
operacin define el reloj, el sentido de conteo, y
las funciones de arranque y puesta a 0 del contador rpido.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 35 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Antes de poder usar un contador rpido se debe ejecutar una instruccin HDEF para seleccionar su modo de operacin. Normalmente se usa el bit de primer scan (SM0.1) para invocar a
una subrutina de inicializacin que contenga la instruccin HDEF.
Para cada contador slo se puede ejecutar una nica operacin HDEF.
La operacin Activar Contador Rpido (HSC) configura y
controla el funcionamiento del contador rpido direccionado, basndose en el estado de los bits especiales del mismo.
El parmetro N indica el nmero del contador rpido.

HSC
EN

ID (0 a 5)

ENO

10.3. Cmo operan los diferentes Contadores Rpidos


Para un mismo modo de operacin, todos los contadores funcionan de la misma manera. Hay cuatro tipos bsicos de contadores, a saber:

contadores monofsicos con control interno del sentido de conteo


contadores monofsicos con control externo del sentido de conteo
contadores bifsicos, con 2 entradas de reloj
contadores en cuadratura de fase

Ntese que no todos los contadores soportan todos los modos. Cada uno de los tipos se puede
usar:
a) sin entradas de arranque y de puesta a cero
b) con entrada de puesta a cero pero sin entrada de arranque
c) con ambas entradas, de puesta a cero y de arranque.
Esto define 12 modos de operacin posibles para todos los contadores rpidos. Un dcimotercer
modo, soportado nicamente por los contadores HSC0 y HSC3, permite:
para HSC0: contar el nmero de pulsos que salen de Q0.0
para HSC3: contar el nmero de pulsos que salen de Q0.1
Cada contador rpido dispone de entradas que soportan funciones como relojes, control del sentido de conteo, puesta a cero y arranque. Para los contadores bifsicos, ambos relojes pueden
funcionar a mxima frecuencia. En los modos en cuadratura (contadores A/B), se puede seleccionar entre una vez (1x) o cuatro veces (4x) la mxima velocidad de conteo. Todos los contadores
funcionan a sus velocidades mximas sin interferirse mutuamente.
Puesta a Cero: cuando se activa esta entrada, el valor actual se pone a cero y se mantiene as hasta que se desactiva la entrada.
Si la entrada de Puesta a Cero se activa mientras el Arranque est inactivo, la misma se ignora y el
valor actual del contador no cambia.
Arranque: cuando se activa esta entrada el contador puede contar. Mientras la entrada se mantiene desactivada, el valor actual del contador se conservar, ignorndose los eventos de reloj.
Si la entrada de Arranque se activa mientras la entrada de Puesta a Cero est tambin activa, tiene preeminencia la segunda: el valor actual se pone a cero.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 36 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

10.4. Programacin de un Contador Rpido


Para programar un Contador Rpido se deben efectuar las siguientes tareas bsicas:
a)
b)
c)
d)
e)
f)

Definir el contador, su modo de operacin y sus entradas


Configurar el byte de control
Fijar el valor actual (valor de arranque)
Fijar el valor predeterminado (valor a alcanzar).
Asignar y habilitar la rutina de interrupcin
Activar el Contador Rpido

Estas tareas de describen a continuacin.


10.4.1. Definicin del Contador, su modo y entradas

Esta tarea se lleva a cabo con la instruccin HDEF.


La Tabla que sigue muestra las entradas dedicadas para ser usadas como reloj, control de sentido
de conteo, puesta a cero y arranque asociadas con los Contadores Rpidos:
Ntese que existen superposiciones en las asignaciones de puntos de entrada para algunos contadores e interrupciones por flanco. La misma entrada no puede usarse para dos funciones diferentes, pero cualquier entrada que no se est usando en el modo actual de su Contador Rpido puede
usarse para otro propsito. Por ejemplo: si HSC0 se est usando en modo 2, el cual utiliza I0.0 e
I0.2, la entrada I0.1 puede utilizarse para interrupciones por flanco para HSC3.
DESCRIPCIN

MODO
HSC

ENTRADAS

HSC0

I0.0

I0.1

I0.2

HSC1

I0.6

I0.7

I1.0

I1.1

HSC2

I1.2

I1.3

I1.4

I1.5

HSC3

I0.1

HSC4

I0.3

I0.4

I0.5

HSC5

I0.4

0
1

Reloj
Contador monofsico con control
de sentido de conteo interno

2
3
4

Contador monofsico con control


de sentido de conteo externo

5
6
7

Contador monofsico con dos


entradas de reloj

8
9
10
11

Contador A/B en cuadratura de


fase

Reloj

Puesta a 0

Reloj

Puesta a 0

Reloj

Sentido

Reloj

Sentido

Puesta a 0

Reloj

Sentido

Puesta a 0

Reloj asc.

Reloj desc.

Reloj asc.

Reloj desc.

Puesta a 0

Reloj asc.

Reloj desc.

Puesta a 0

Reloj A

Reloj B

Reloj A

Reloj B

Puesta a 0

Reloj A

Reloj B

Puesta a 0

Arranque

Arranque

Arranque

Arranque

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 37 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

nicamente soportado por HSC0


y HSC3:
HSC0 cuenta el nro. de pulsos
que sale de Q0.0
HSC3 cuenta el nro. de pulsos
que sale de Q0.1

12

Ntese tambin que todos los modos de HSC0 usan SIEMPRE I0.0, y que todos los modos de
HSC4 usan SIEMPRE I0.3, por lo que estos puntos de entrada NUNCA estn disponibles para otros
usos cuando se emplean estos contadores.
La actividad de las entradas de Puesta a Cero y Arranque puede configurarse utilizando bits de
marcas especiales (memoria SM), como muestra la Tabla siguiente:
HSC0

HSC1

HSC2

HSC4

SM37.0

SM47.0

SM57.0

SM147.0

-----

SM47.1

SM57.1

-----

SM37.2

SM47.2

SM57.2

SM147.2

Descripcin (usada slo cuando se ejecuta HDEF)


Nivel activo del bit de control para Puesta a Cero (reset):
1: reset activo en bajo
0: reset activo en alto
Nivel activo del bit de control para Arranque:
0: arranque activo en alto
1: arranque activo en bajo
Seleccin de velocidad para contadores en cuadratura:
0: velocidad cudruple 4x
1: velocidad simple 1x

La operacin de estas entradas se aplica a todos los modos que la utilizan. Como muestra la Tabla,
cuatro de los contadores tienen tres bits de control que se usan para configurar el estado activo de
las entradas de Puesta a Cero y Arranque, y tambin (para los contadores en cuadratura solamente) para seleccionar los modos 1x 4x. Estos bits estn localizados en el byte de control para el
contador respectivo, y se usan nicamente cuando se ejecuta la instruccin HDEF: una vez que se
ha ejecutado esta instruccin, la configuracin del contador no puede cambiarse, a menos que
primero se pase el PLC al modo STOP.
10.4.2. Configuracin del byte de control

Una vez definido el contador y el modo de conteo, se pueden programar los parmetros dinmicos
del mismo. Cada contador rpido tiene un byte de control que permite las siguientes acciones:
Habilitar o inhabilitar el contador
Controlar el sentido (slo en los modos 0, 1 y 2), o bien el sentido de conteo inicial (en los dems modos)
Cargar el valor actual
Cargar el valor predeterminado
La ejecucin de la instruccin HSC invoca el examen del byte de control y los valores asociados
(actual y predeterminado). La siguiente Tabla describe cada uno de estos bits de control:

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 38 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

HSC0

HSC1

HSC2

HSC3

HSC4

HSC5

Descripcin

SM37.3

SM47.3

SM157.3

SM137.3

SM147.3

SM157.3

Control del sentido de conteo:


0: descendente
1: ascendente

SM37.4

SM47.4

SM157.4

SM137.4

SM147.4

SM157.4

Escribir el sentido de conteo en el HSC:


0: no actualizar
1: actualizar sentido

SM37.5

SM47.5

SM157.5

SM137.5

SM147.5

SM157.5

Escribir nuevo valor predeterminado en el HSC:


0: no actualizar
1: actualizar valor predet.

SM37.6

SM47.6

SM157.6

SM137.6

SM147.6

SM157.6

Escribir nuevo valor actual en el HSC:


0: no actualizar
1: actualizar valor actual

SM37.7

SM47.7

SM157.7

SM137.7

SM147.7

SM157.7

Habilitar al HSC:
0: inhabilitar el HSC 1: habilitar el HSC

10.4.3. Configuracin del valor actual y del valor predeterminado

Cada contador rpido dispone de un valor actual y un valor predeterminado: los dos son valores
enteros con signo en 32 bits. Para cargar un nuevo valor actual predeterminado en el contador
rpido es necesario configurar el byte de control y los bytes de memoria especial que contienen
los valores actual y/o predeterminado, y tambin ejecutar la instruccin HSC para que los nuevos
valores se transfieran al contador rpido. La Tabla siguiente muestra los bytes de memoria especial usados para estos fines:
Valor a cargar

HSC0

HSC1

HSC2

HSC3

HSC4

HSC5

Nuevo valor actual

SMD38

SMD48

SMD58

SMD138

SMD148

SMD158

Nuevo valor predeterminado

SMD42

SMD52

SMD62

SMD142

SMD152

SMD162

Adems de estos bytes, tambin se puede leer (nicamente) el valor actual de cada contador rpido, utilizando el tipo de datos HC (valor actual del contador rpido) seguido del nmero de contador (0 ... 5), como indica la Tabla siguiente:
Valor a leer

HSC0

HSC1

HSC2

HSC3

HSC4

HSC5

Valor actual

HC0

HC1

HC2

HC3

HC4

HC5

El valor actual puede accederse directamente con operaciones de lectura, pero se lo puede escribir nicamente con la instruccin HSC.
10.4.4. Asignacin de interrupciones

Todos los modos de contador soportan un evento de interrupcin cuando el valor actual del contador rpido iguala al valor predeterminado cargado. Los modos que usan una entrada de Puesta a
Cero externa soportan una interrupcin cuando se activa dicha entrada. Todos los modos de contador, con excepcin de los modos 0, 1 y 2, soportan una interrupcin cuando cambia el sentido
de conteo.
Cada una de estas condiciones de interrupcin se puede habilitar inhabilitar por separado.
Nota: puede ocurrir un error fatal si se intenta bien cargar un nuevo valor actual, inhabilitar y
entonces re-habilitar el contador rpido desde el interior de una rutina de interrupcin por Puesta
a Cero externa.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 39 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

10.5. Byte de Estado


Un byte de estado para cada contador rpido provee bits de memoria de estado que indican el sentido de conteo actual y si el valor actual es mayor igual al valor predeterminado. La Tabla siguiente define estos bits de estado para cada uno de los contadores rpidos.
HSC0

HSC1

HSC2

HSC3

HSC4

HSC5

Descripcin del bit de estado

SM36.0

SM46.0

SM56.0

SM136.0

SM146.0

SM156.0

No usado

SM36.1

SM46.1

SM56.1

SM136.1

SM146.1

SM156.1

No usado

SM36.2

SM46.2

SM56.2

SM136.2

SM146.2

SM156.2

No usado

SM36.3

SM46.3

SM56.3

SM136.3

SM146.3

SM156.3

No usado

SM36.4

SM46.4

SM56.4

SM136.4

SM146.4

SM156.4

No usado

SM36.5

SM46.5

SM56.5

SM136.5

SM146.5

SM156.5

Sentido de conteo actual:


0 = conteo ascendente
1 = conteo descendente

SM36.6

SM46.6

SM56.6

SM136.6

SM146.6

SM156.6

Valor actual = predeterminado:


0 = no igual
1 = igual

SM36.7

SM46.7

SM56.7

SM136.7

SM146.7

SM156.7

Valor actual > predeterminado:


0 = menor igual
1 = mayor

Nota: los bits de estado son vlidos nicamente mientras se est ejecutando la rutina de interrupcin del contador rpido. El propsito demonitorear el estado del contador es habilitar interrupciones para los eventos que sean relevantes para la operacin que se est realizando.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 40 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

10.6. Resumen de marcas especiales de algunos Contadores Rpidos

(contina en la pgina siguiente) ////

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 41 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

//// (continuacin de la pgina anterior)

Para obtener ms informacin sobre los Contadores Rpidos consulte el Manual del Sistema S7200 en los documentos en el Campus Virtual, descrguelo del enlace:
https://www.swe.siemens.com/spain/web/es/industry/automatizacion/simatic/Documents/S720
0ManualSistema.pdf

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 42 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Ejemplo de aplicacin
Para fijar las ideas sobre los Contadores Rpidos se plantea el siguiente ejemplo utilizando el contador HSC1, con las siguientes premisas:

tipo de contador: en cuadratura (A/B), con puesta a Cero y Arranque (Modo 11)
sentido de conteo: inicialmente ascendente
nivel de actividad de la entrada de Arranque: alto
nivel de actividad de la entrada de Puesta a Cero: alto
velocidad: cudruple
valor actual inicial: 0
valor predeterminado: 50 pulsos de entrada
detectar lo antes posible que el valor actual alcanz el valor predeterminado

El contador HSC1 se configura y habilita en el primer ciclo de scan. La configuracin se efecta


sobre el byte de control SMB47 en memoria especial:
Byte SMB47
bit 7

bit 6

Habilitar
HSC1

Actualizar
valor actual

bit 5

Actualizar
valor predet.

bit 4

bit 3

bit 2

bit 1

bit 0

Actualizar sentido de conteo

Sentido de
conteo

Frecuencia de
conteo A/B

Nivel activo
Arranque

Nivel activo
Puesta a 0

El valor binario 11111000 (= 16#F8 hexadecimal) cargado en SMB47 provoca:


la habilitacin del contador HSC1 (1xxx xxxx)
la carga (escritura) de un nuevo valor actual (x1xx xxxx), el cual debe cargarse en la palabra doble SMD48
la carga (escritura) de un nuevo valor predeterminado (xx1x xxxx), el cual debe cargarse en la
palabra doble SMD52
la carga del sentido (inicial) de conteo (xxx1 xxxx)
la configuracin de conteo ascendente (xxxx 1xxx),
la configuracin de frecuencia cudruple (xxxx x0xx)
la configuracin de actividad alta de las entradas de Arranque y de Puesta a 0 (xxxx xx00)
Para detectar lo ms pronto posible el momento en que valor actual iguala al valor predeterminado, se debe programar una interrupcin asociando el evento de interrupcin 13 (CV = PV en
HSC1) a una ISR (vase el item INTERRUPCIONES en este mismo documento).
Si se desease detectar un cambio del sentido de conteo, se deber programar una interrupcin asociando el evento 14 (cambio de sentido de conteo de HSC1) a una ISR.
Si se desease detectar una Puesta a Cero externa, se deber programar una interrupcin asociando el evento 15 (Puesta a Cero externa de HSC1) a una ISR.
Para que la deteccin de eventos de interrupcin funcione no se debe olvidar habilitar globalmente las interrupciones con la instruccin ENI.
La inicializacin del contador concluye con una instruccin HSC, la cual programar al contador
HSC1.
El Network 1 del Programa Principal en la figura siguiente realiza la configuracin descripta.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 43 de 56

ISR INT_0

PROGRAMA PRINCIPAL

Funciones Avanzadas con STEP 7-Micro/WIN

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 44 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

El Network 1 de la ISR INT_0, asignada al evento 13 (CV = PV en HSC1) ejecuta las siguientes instrucciones:
carga (escribe) un nuevo valor actual igual a cero en la palabra doble SMD48
carga el valor binario 11000000 (= 16#C0 hexadecimal) en SMB47, provocando (ver Tabla siguiente):
que se mantenga habilitado el contador HSC1 (1xxx xxxx)
que se cargue (escriba) un nuevo valor actual (x1xx xxxx), cargado en la palabra doble
SMD48
reprograma el contador rpido HSC1 con la nueva configuracin
Byte SMB47
bit 7

bit 6

Habilitar
HSC1

Actualizar
valor actual

bit 5

Actualizar
valor predet.

bit 4

bit 3

bit 2

bit 1

bit 0

Actualizar sentido de conteo

Sentido de
conteo

Frecuencia de
conteo A/B

Nivel activo
Arranque

Nivel activo
Puesta a 0

10.7. Uso de una Salida de Tren de Pulsos para ensayar el HSC


Para ensayar el contador rpido se emple la instruccin PLS (Pulse Output) para controlar una
salida de tren de pulsos (PTO) sobre la salida de alta velocidad Q0.0. Esta salida deber cablearse
a la entrada I0.6 (entrada de reloj del contador HSC1). La figura siguiente muestra la programacin de este PTO:
Network 2
I0.1
EN

16#8D

IN

EN

500

OUT

SMB67

MOV_W
ENO

IN

EN

MOV_B
ENO

OUT

SMW68

MOV_DW
ENO

IN

OUT

SMD72

PLS
EN

ENO

Q0.X

Sin extendernos en detalles (que el lector podr encontrar en el Manual del Sistema S7-200):
a) la carga del valor hexadecimal 16#8D en el byte de configuracin SMB67 configura un tren de
pulsos (PTO) sobre la salida rpida Q0.0 con las siguientes caractersticas:
1xxx xxxx: habilitar el PTO
x0xx xxxx: seleccionar modo PTO
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 45 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

xx0x xxxx: operacin monosegmento del PTO


xxx0 xxxx: (irrelevante para PTOs)
xxxx 1xxx: base de tiempo del PTO = 1 mseg/ciclo
xxxx x1xx: actualizar conteo de pulsos del PTO
xxxx xx0x: (irrelevante para PTOs)
xxxx xx1x: actualizar tiempo de ciclo del PTO

b) con los valores configurados en SMB67, la carga del valor 500 en la palabra SMW68 determina un ciclo de 500 mseg, y ...
c)

... la carga del valor 4 en la palabra doble SMD72 provocar la generacin de 4 pulsos separados 500 mseg

d) finalmente, la ejecucin de la instruccin PLS con valor 0 en su parmetro Q0.X lee los datos
cargados en las ubicaciones SMB67, SMW68 y SMD72, y programa el generador de tren de
pulsos sobre la salida Q0.0

11. EL REL DE CONTROL SECUENCIAL (SCR)


11.1.

Control del flujo del programa usando segmentos SCR

El ambiente de programacin SIEMENS STEP 7-Micro/WIN Versin 4.0 permite programar los
PLC de la lnea SIMATIC S7-200 utilizando los siguientes lenguajes:
Lenguaje S7-200

Equivalencia en el estndar IEC 61131-3

KOP

LD:

FUP

FBD: Diagrama de Bloques Funcionales

AWL / STL

IL:

Diagrama en Escalera (LADder)


Lista de Instrucciones (STatement List)

STEP 7-Micro/WIN no soporta el lenguaje SFC ni ningn otro equivalente al modelo Grafcet. En
su lugar, dentro del conjunto de las operaciones de Control del Programa, proporciona las de manejo del denominado Rel de Control Secuencial (SCR = Sequence Control Relay), cuyo funcionamiento representa muy bien el de una etapa de un Grafcet.
El Programa Principal en un PLC S7-200 consiste en instrucciones que se ejecutan secuencialmente
una vez por cada ciclo de scan del PLC. Para muchas aplicaciones resulta apropiado dividir lgicamente el Programa Principal en una serie de pasos operacionales, que reflejan los pasos dentro de
un proceso controlado (p.ej. una serie de operaciones de mquina). Una forma de hacer esto es
usar segmentos SCR, lo cual permite dividir el programa en una corriente simple de pasos secuenciales, en mltiples corrientes que pueden estar activas simultneamente. Es posible que una
corriente simple se derive en mltiples corrientes, y que mltiples corrientes re-converjan condicionalmente en una corriente simple.
Nota: no todos los modelos de la familia S7-200 soportan la caracterstica de Rel de Control
Secuencial.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 46 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

11.2. Instrucciones asociadas con SCRs

La operacin Cargar Rel de Control Secuencial (SCR) indica el comienzo


de un segmento SCR, el cual se cierra (finaliza) con una operacin Fin de
Rel de Control Secuencial (SCRE).
El operando es de tipo booleano, y se asocia con un bit de la memoria S, por
ejemplo S0.1. Obsrvese que no puede haber ninguna otra operacin
adems de SCR.
Esta instruccin carga la pila lgica y otra pila, denominada pila SCR, con
el valor del bit Sx.y referenciado. La ejecucin de todas las operaciones que
se encuentren entre las instrucciones SCR y SCRE depende del valor de la
pila SCR. Las instrucciones que no se encuentren dentro de un segmento SCR
no dependen del valor de la pila SCR.
El segmento SCR se energiza desernegiza dependiendo del valor resultante en la pila SCR.
El valor de la pila SCR se copia en lo ms alto de la pila lgica, de manera que las salidas
pueden vincularse directamente a la barra de energa de la izquierda sin que intervenga
ningn contacto.

La operacin Transicin de SCR (SCRT) provee la forma de transferir el


control desde un segmento SCR activo a otro. Su ejecucin desactiva el bit
Sx.y del segmento actualmente activo, y activa el bit Sx.y del segmento referenciado.
La instruccin SCRT identifica el bit Sx.y a habilitar. Cuano fluye energa
hacia la bobina SCRT, el bit Sx.y referencia por la misma se activa, y el bit
Sx.y de la instruccin SCR (el que habilit este segmento SCR) se desactiva.
No obstante, esto no afecta a la pila SCR: por lo tanto, el segmento SCR permanece activo hasta que se sale del mismo.
La instruccin Fin de SCR (SCRE) marca el final de un segmento SCR.
Obsrvese que no puede haber ninguna otra operacin adems de SCRE.
La instruccin Fin Condicional de SCR (CSCRE) provee una forma de salir de un segmento SCR
activo sin ejecutar las instrucciones entre CSCRE y SCRE. CSCRE no afecta a ningn bit Sx.y ni a
la pila SCR. Esta instruccin est disponible nicamente en el Editor de Lista de Sentencias (AWL /
STL).
Restricciones:

Un bit S (Sx.y) no se puede usar en ms de una rutina. Por ejemplo: si se us S0.1 en el Programa Principal, no se lo debe usar en una subrutina.

No est permitido saltar dentro fuera de un segmento SCR; no obstante, se pueden usar las
instrucciones JMP y LBL para saltar en el interior de un segmento SCR, para saltear segmentos SCR.

No se puede usar una instruccin END en un segmento SCR.


LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 47 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

11.3. Ejemplos: aplicacin de SCRs en situaciones tpicas de Grafcet


Se muestra a continuacin la forma de implementar con Rels de Control Secuencial algunos casos tpicos modelizados con Grafcet, no soportados directamente en STEP 7-Micro/WIN.
11.3.1.

Marcacin Inicial

Activar la Etapa 10 (representada por el segmento SCR S1.0) en el primer ciclo de scan.

Si se necesitara marcar inicialmente ms de una etapa, repetir el procedimiento. De ser posible,


puede resultar cmodo representar las etapas de una marcacin inicial con los bits de un mismo
byte bytes contiguos, lo que minimizar la cantidad de instrucciones SET (no de uno, sino de
varios bits simultneamente).
11.3.2.

Activacin y desactivacin de Etapas y salidas asociadas

Activar la lmpara L, conectada a la salida Q0.0, cuando est activa la Etapa 1 (representada
por el segmento SCR S0.1). Si se activa la entrada PB_arr (I1.7), la marcacin cambia de la Etapa 1 a la Etapa 2 (segmento SCR S0.2).
S0.1
1

SCR

Lmpara L
PB_arr

SM0.0

Q0.0

I1.7

S0.2

SCRT

SCRE

Nota 1: la marca especial SM0.0 es la condicin siempre cierta (=1). Es necesaria para que el
escaln tenga definida, al menos, una condicin antes de definir la salida.
Nota 2: no es obligatorio definir las Salidas dentro del segmento SCR: pueden tambin definirse en
una seccin separada, condicionndolas a las variables Sx.y.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 48 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

11.3.3.

Divergencia en AND (concurrencia)

Estando activada la Etapa 1 (S0.1) , al darse una orden de Marcha (I0.1) el sistema evoluciona
activando simultneamente dos secuencias, iniciadas respectivamente por las Etapas 2 (S0.2) y
3 (S0.3).
S0.1

SCR
Marcha

I0.1
2

S0.2
SCRT
S0.3
SCRT

SCRE

11.3.4.

Convergencia en AND (sincronizacin)

Cuando dos secuencias concurrentes han finalizado, representado respectivamente por la Etapa 17 (S10.5) para una de ellas y por la Etapa 25 (S20.7) para la otra, ante un permiso de Habilitacin (I1.5) el sistema evoluciona activando una nica Etapa 4 (S1.3).

11.3.5.

Divergencia en OR (seleccin de secuencia)

A partir de la Etapa 1 (S0.1) el sistema puede evolucionar hacia una de dos secuencias excluyentes: una comenzando en la Etapa 2 (S0.2) cuando se activa la entrada A (I2.4) y la otra comenzando en la Etapa 3 (S0.3) cuando se activa la entrada B (I2.6) si la entrada A est inactiva.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 49 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

S0.1

SCR
A

A B

I2.4

S0.2

SCRT
I2.4

I2.6

S0.3
SCRT

SCRE

11.3.6.

Accin alternada

Mientras permanezca activada una llave M, se ejecutan en forma alternada dos secuencias,
comenzando siempre por la secuencia 1. Cuando se desactiva M se termina de ejecutar la secuencia actual y el sistema vuelve a las condiciones iniciales.
Variable
M
SQ
FSQ1
FSQ2
-------

Variable
Llave de marcha
Selector de secuencia
Fin de la Secuencia 1
Fin de la Secuencia 2
Etapa 1
Etapa 2
Etapa 3

Asignacin
I0.0
M0.0
I1.0
I1.1
S0.0
S0.1
S0.2

Notas:
No se han explicitado las acciones a ejecutar en las Secuencias 1 y 2. Las mismas pueden agregarse al programa, condicionadas por la activacin de la etapa correspondiente (2 3).
se han definido acciones (conmutacin de la seleccin de secuencia) asociadas con las transiciones entre las etapas 1 y 2 y la etapa 0. Estas acciones sern fugaces, ejecutndose exclusivamente en el momento del franqueo de la transicin respectiva.
La implementacin sobre PLC S7-200 utilizando SCR se da en la pgina siguiente.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 50 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 51 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

12. BLOQUE DEL SISTEMA


El Bloque del Sistema permite la configuracin de diversas opciones de las CPU S7-200:

Las opciones de configuracin del Bloque del Sistema estn habilitadas cuando el tipo y versin de
la CPU del proyecto las soportan.
Para cargar un Bloque del Sistema a una CPU descargarlo de la misma se debe establecer previamente una comunicacin entre la PC en donde reside el STEP 7-Micro/WIN y la CPU S7-200.
Entonces:
a) se puede cargar un Bloque del Sistema modificado en la CPU para proveerla con una nueva
configuracin, ...
b) ... bien, se puede descargar de la CPU un Bloque del Sistema existente en la misma para que
la configuracin del proyecto STEP 7-Micro/WIN se equipare con la de la CPU.
Se puede transferir a la CPU solo el Bloque del Sistema, lo que provocar que no se modifique el
programa principal y s nicamente las configuraciones modificadas de dicho bloque. Esto ahorrar tiempo en la transferencia del programa, dado que solo se cambiara un bloque.
Todas las configuraciones del Bloque del Sistema se listan a continuacin:
Puertos de comunicacin
Permite definir la direccin de la CPU, la velocidad de transferencia y otros parmetros relacionados con las comunicaciones a travs de los puertos 0 y 1. Este tema se desarrollar en un
Apunte complementario.
reas remanentes
Selecciona las reas de memoria V, M, T o C que se deban respaldar cuando se interrumpa la
alimentacin.
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 52 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

Contrasea
Permite definir 3 niveles de privilegio para acceder a las funciones y a la memoria del S7-200.
Configurar salidas
Permite fijar las salidas digitales y analgicas en estados seguros tras un cambio de RUN a STOP,
o bien conservar los estados existentes de las mismas antes del cambio a modo STOP
Filtrar entradas
entradas digitales: permite seleccionar un filtro de entrada que define un tiempo de retardo
(comprendido entre 0,2 ms y 12,8 ms) para algunas o bien para todas las entradas digitales
integradas. Este filtro rechaza los impulsos causados por interferencias y obliga a las lneas
de entrada a estabilizarse antes de aceptar los datos.
entradas analgicas: las CPUs 22x permiten filtrar cada una de las entradas analgicas utilizando el software. El valor filtrado es el promedio de un nmero preseleccionado de muestreos de la entrada analgica. Los datos de filtracin (nmero de muestreos y banda muerta)
se aplican a todas las entradas analgicas para las que se habilite esa funcin.
Bits de captura de impulsos
Permite capturar impulsos altos o bajos de tan corta duracin que no se registraran en todos
los casos, cuando la CPU lee las entradas digitales al comienzo del ciclo.
Tiempo en segundo plano
Permite ajustar la porcin del tiempo de ciclo permitida para la comunicacin en segundo plano. Si se incrementa el porcentaje de tiempo dedicado a procesar las peticiones de comunicacin, aumentar tambin el tiempo de ciclo, por lo que el proceso de control se ejecutar ms
lentamente. El ajuste estndar es 10%.
Configurar mdulos EM
Permite visualizar las configuraciones de mdulos de ampliacin inteligentes definidos en el
proyecto, guardadas en memoria V.
Configurar el LED
CPUs 224 y 226 nicamente: configura el LED "SF/DIAG" de la CPU para que se encienda en
amarillo si se fuerza una E/S o un valor en la CPU y/o se detecta un error de E/S.
Incrementar la memoria
CPUs 224 y 226 nicamente: permite inhibir la funcin de editar en modo RUN disponible en
STEP 7-Micro/WIN, lo cual incrementa la memoria disponible en la CPU para los programas de
usuario.
Se deja al lector analizar y aprender el uso de estas opciones con auxilio de la Ayuda del STEP 7Micro/WIN.

13. BLOQUE DE DATOS


El Bloque de Datos almacena los valores de las diferentes variables utilizadas en el programa. Este
bloque se puede usar para introducir los valores iniciales de los datos.

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 53 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

El editor de bloques de datos permite asignar valores iniciales a datos solamente en la memoria V
(memoria de variables). Se pueden efectuar asignaciones a bytes, palabras o palabras dobles de la
memoria V. Los comentarios son opcionales.
La informacin de un Bloque de Datos se puede importar de un archivo de texto ASCII exportarla
a un archivo ASCII (ver Ayuda de STEP 7-Micro/WIN).
El uso del Bloque de Datos permite definir variables y valores que se necesite cambiarse con facilidad. Si no se han efectuado modificaciones al programa, solamente se necesitar transferir dicho
bloque a la CPU y no todo el programa completo.

13.1.

Divisin en grupos de las asignaciones de memoria V del Bloque de Datos

Las asignaciones de la memoria V del Bloque de Datos se pueden dividir en grupos funcionales
insertando nuevas solapas de pgina del Bloque de Datos (similar a lo que se hace para agregar
subrutinas rutinas de interrupcin).
Puede haber un mximo de 128 pginas. Si se usan asistentes de instalacin (wizards), se crean
pginas automticamente para soportar las funciones del asistente: en este caso, el nmero
mximo de pginas que se pueden crear es = 128 N de pginas creadas automticamente por
STEP 7-Micro/WIN. Las pginas creadas por el usuario se pueden renombrar y proteger.
La creacin de una pgina puede hacer por cualquiera de estos tres medios:
a) haciendo click en la cono Bloque de datos de la ventana de navegacin, y entonces seleccionando el comando de men Edicin Insertar Pgina de datos
b) en el rbol de operaciones, haciendo click sobre un cono de pgina de Bloque de Datos con el
botn derecho del mouse, y eligiendo Insertar Pgina de datos del men emergente.
c)

haciendo click con el botn derecho del mouse en la ventana "Bloque de datos", y eligiendo el
comando Insertar Pgina de datos del men emergente.
Nota: En la misma ventana, pulsando la tecla F1 se obtendr una ayuda detallada acerca de
cmo definir y usar la informacin de este bloque.

13.2.

Asignacin de direcciones y valores en el Bloque de Datos

El bloque de datos permite asignar valores iniciales o caracteres ASCII slo a la memoria V. Es posible asignar valores a direcciones de bytes (V o VB), palabras (VW) o palabras dobles (VD). Los
comentarios (precedidos de dos barras inclinadas //) son opcionales.
La primera lnea del Bloque de Datos debe contener una asignacin de direccin explcita (absoluta o simblica). Las lneas subsiguientes pueden contener asignaciones de direcciones explcitas o
implcitas. El editor asignar una direccin implcita si se introducen varios valores de datos tras
asignarse una sola direccin o si se introduce una lnea que contenga nicamente valores de datos. El editor asignar una cantidad suficiente de la memoria V, en funcin de las direcciones que
se hayan asignado previamente y del tamao (byte, palabra o palabra doble) del (de los) valor(es)
de datos.
El editor de Bloques de Datos es un editor de texto de formato libre. Por tanto, no hay campos
especficos definidos para un tipo determinado de informacin. Tras introducir una lnea, pulse la
LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 54 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

tecla INTRO. El editor de datos formatea la lnea (alinea las columnas de direcciones, los datos y
los comentarios; pone las direcciones de la memoria V en maysculas) y la visualiza de nuevo. En
el editor de bloques de datos se pueden utilizar letras maysculas y minsculas. Adems, es posible introducir comas, tabuladores y espacios que sirvan de separadores entre las direcciones y los
valores de datos. Si en lugar de INTRO se pulsa CTRL-INTRO al completar una lnea de asignacin, la direccin se incrementar automticamente a la siguiente direccin disponible.
Si el editor detecta errores de sintaxis los muestra con una cruz roja en el margen izquierdo, como
se ve en la figura siguiente:

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 55 de 56

Funciones Avanzadas con STEP 7-Micro/WIN

LABORATORIO DE TECNOLOGAS DIGITALES E INFORMTICA INDUSTRIAL - DSI - FCEIA U.N.R

Pgina 56 de 56

También podría gustarte