Está en la página 1de 84

AT FORMACIÓN

SIMATIC S7-300
PROGRAMACIÓN NIVEL II
Departamento Eléctrico

AUTÓMATAS
PROGRAMABLES
Programación Avanzada NIVEL II
REPASO CONCEPTOS BÁSICOS NIVEL I
1. MÓDULOS DE ORGANIZACIÓN
2. BLOQUES DE FUNCIÓN
3. MÓDULOS DE DATOS
4. ACUMULADORES
5. FUNCIÓN MOVE
5.1 FUNCIÓN MOVER (TRANSFERENCIA).
5.2 FUNCIÓN MOVER (CONSTANTES A UNA MISMA PALABRA
6. FUNCIÓN DE TEMPORIZACIÓN
6.1 PRESELECCIÓN VARIABLE Y VISUALIZACIÓN DEL VALOR DE UN
TEMPORIZADOR
6.2 PROGRAMACIÓN DE UN TEMPORIZADOR CON TRES TIEMPOS
DIFERENTES
7. FUNCIONES DE CONTAJE Y COMPARACIÓN
7.1 PRESELECCIÓN VARIABLE DEL VALOR DE UN CONTADOR.
7.2 INSTRUCCIONES DE COMPARACIÓN
7.3 CONTROL DE INICIO DE LA MARCHA DE UN PROCESO
7.4 CLAVE PARA ABRIR UNA CERRADURA
7.5 SELECCIÓN DE DOS TIPOS DE FUNCIONAMIENTO
NIVEL AVANZADO NIVEL II
8. PROGRAMACIÓN ESTRUCTURADA POR BLOQUES
8.1 SELECCIÓN DE DOS TIPOS DE FUNCIONAMIENTO
9. OPERACIONES DE CÁLCULO BÁSICAS Y AVANZADAS.
9.1 OPERACIONES LÓGICAS ENTRE PALABRAS O DOBLES PALABRAS
9.2 PROGRAMACIÓN DE UN TEMPORIZADOR CON PRESELECCIÓN
VARIABLE. BASE DE TIEMPOS FIJA
9.3 OPERACIONES ARITMÉTICAS CON NÚMEROS ENTEROS (COMA FIJA)
9.4 CREACIÓN DE UN CONTADOR REVERSIBLE CON PRESELECCIÓN
9.5 CREACIÓN DE UN CONTADOR DE TIEMPOS
9.6 OPERACIONES ARITMÉTICAS CON NÚMEROS EN COMA FLOTANTE
10. OPERACIONES DE INCREMENTAR Y DECREMENTAR.
10.1 DIFERENTES MÉTODOS DE INCREMENTAR Y DECREMENTAR
11. PARAMETRIZACIÓN DE BLOQUES FBs Y FCs.

Departamento Eléctrico. AT FORMACIÓN Página 1


Programación Avanzada NIVEL II
11.1 CREACIÓN DE LA PLANTILLA DE UN GENERADOR DE IMPULSOS
STANDARD
11.2 CREACIÓN DE UNA PLANTILLA CON NÚMEROS REALES
12. DIRECCIONAMIENTO INDIRECTO.
12.1 DIRECCIONAMIENTO INDIRECTO DE REGISTROS
13. BLOQUE DE DATOS DBs.
13.1 LECTURA DE DATOS DE UN BLOQUE DE DATOS (DB) (I)
13.2 LECTURA DE DATOS DE UN BLOQUE DE DATOS (DB) (II).
DIRECCIONAMIENTO INDIRECTO DE UN BLOQUE DE DATOS
14. PROGRAMACIÓN CON REGISTROS DE SISTEMA.
14.1 PROGRAMACIÓN DEL RELOJ
15. TRATAMIENTO DE SEÑALES ANALÓGICAS.
15.1 FUNCIÓN SCALE (ESCALAR UNA ENTRADA ANALÓGICA)
15.2 FUNCIÓN UNSCALE (DESESCALAR A UNA SALIDA ANALÓGICA)
15.3 CONSIGNA DE MÁXIMA Y MÍNIMA DE UNA ENTRADA
ANALÓGICA
15.4 CONSIGNA DE MÁXIMA Y MÍNIMA DE UNA ENTRADA
ANALÓGICA (II)
16. UTILIZACIÓN DE BLOQUES ESTÁNDAR DE LIBRERÍAS.
16.1 GRABACIÓN DE UNA TABLA EN UN BLOQUES DE DATOS.
FUNCIÓN ATT
16.2 LECTURA DE DATOS GRABADOS EN UNA TABLA. FUNCIÓN LIFO
16.3 GRABACIÓN DE UNA TABLA DE DATOS (II). SOBRESCRIBIR
DATOS
16.4 GRABACIÓN DE UNA TABLA DE DATOS (III). BORRADO DE
DATOS. FUNCIÓN FILL
16.5 GUARDAR DATOS DEL RELOJ Y DE UNA ENTRADA ANALÓGICA
17. DESPLAZAMIENTOS Y ROTACIONES.
17.1 EXPULSIÓN DE BOTELLAS DEFECTUOSAS
18. MÓDULOS DE ORGANIZACIÓN. PROCESAMIENTO DE ALARMAS.
18.1 PROGRAMACIÓN DEL OB10
18.2 PROGRAMACIÓN DEL OB20
18.3 PROGRAMACIÓN DEL OB35
18.4 PROGRAMACIÓN DEL OB121

Página 2 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
1. MÓDULOS DE ORGANIZACIÓN.
Características de los módulos OB.
OB1
 Es un módulo que se ejecuta cíclicamente
 El OB1 se ejecuta en cada scan.
 Es el que tiene la prioridad más baja
OB10 a OB17
 Realiza una interrupción horaria.
 Empieza en un momento programado
 Se ejecuta a partir de ese momento cada cierto tiempo:
 Una sola vez, cada minuto, cada hora, cada día, cada semana, cada mes, cada año,
a final de mes
OB20 a OB23
 Realiza una interrupción de retardo.
 Se ejecuta Al cabo de un tiempo de llamar al OB.
OB30 a OB38
Son OB que se ejecutan cada cierto tiempo prefijado y con prioridades diferentes

OB40 a OB47 Son interrupciones de proceso


 Se activa cuando en un proceso un registro ha superado unos límites máximos o
mínimos admisibles. (entradas analógicas, contadores de alta velocidad etc...)
OB80 a OB87 Error Asíncrono.
 OB80 Error de tiempo (Tiempo de ciclo excedido).Si no está programado y
detecta el error, el PLC pasa a STOP
 OB81 Fallo de alimentación (S7-400) o Fallo de batería
 OB82 Rotura de hilo de un módulo que tenga capacidad de diagnostico. Si no está
programado y detecta el error, el PLC pasa a STOP

Departamento Eléctrico. AT FORMACIÓN Página 3


Programación Avanzada NIVEL II
 OB83 Detección de presencia de módulo (Extraer/insertar).Si no está programado
y detecta el error, el PLC pasa a STOP
 OB84 Avería de la CPU. Error de la interface MPI o de la periferia
descentralizada. Si no está programado y detecta el error, el PLC pasa a STOP
 OB85 Evento de arranque para un OB no cargado. Si no está programado y detecta
el error, el PLC pasa a STOP.
 OB86 Detección de fallo en un bastidor. Si no está programado y detecta el error,
el PLC pasa a STOP.
 OB87 Detección de fallo en comunicación.
OB100 a 0B102 OB`s de modo de arranque (solo puede estar activado uno de ellos).
Se selecciona en Administrador→Hardware→CPU (picar dos veces) →pestaña „arranque‟.
OB100
 Rearranque completo. (Arranque en Caliente)
 Mantiene el estado de los elementos que tenga con memoria.
 Se ejecuta al pasar la CPU de STOP a RUN.
 Primero lee el OB100 y después el OB1 (empezando por la primera instrucción).
OB101 Rearranque. (Solo en S7-400)
 Mantiene el estado de los elementos que tenga con memoria.
 Se ejecuta al pasar la CPU de STOP a RUN.
 Primero lee el OB101 y después sigue leyendo en el punto donde dejo de leer al
pasar al estado STOP.
OB102 Arranque en frío
 Pone todos los elementos a 0 (incluso los que tienen memoria).
 Se ejecuta al pasar la CPU de STOP a RUN.
 Primero lee el OB102 y después el OB1 (empezando por la primera instrucción).
OB121 y OB122 OBs de error
OB121
 Error de ejecución de programa.
 Detecta errores de programación.
 Si no está programado y detecta el error, el PLC pasa a STOP.
OB122
 Error al intentar acceder a un módulo de datos (entradas, salidas, etc...).
 Si no está programado y detecta el error, el PLC pasa a STOP.

Página 4 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
2. BLOQUES DE FUNCIÓN.
Las Funciones, son módulos que se ejecutan al ser llamados desde otros módulos.
 Cuando se les llama, la función actúa como una subrutina del programa.
 Cuando termina de ejecutar el módulo, el programa retorna al módulo desde donde
fue llamado, en la instrucción posterior al salto.
Hay dos tipos de funciones:
 Funciones sin parámetros.
 Funciones parametrizables (Plantillas).
MÓDULOS DE BLOQUE DE FUNCIÓN
 Un módulo de bloque de función tiene un módulo adicional de memoria asociado
al (Módulo de datos).
 En el módulo de datos (DB) se mantiene una copia de los parámetros que van al
área de datos locales.
 Después de la ejecución del FB, se borra el área de memoria local, pero el DB
asociado, mantiene los valores.

Tipo de declaración dentro de un módulo:


IN Parámetros de entrada de los que se lee.
OUT Parámetros de salida en los que se puede escribir.
IN_OUT Parámetros que pueden ser leídos o escritos.
STAT Variable local cuyo valor se almacena en un DB de instancia.
TEMP Variable temporal cuyo valor no se guarda cuando el termina.
Todos los valores de la declaración local, menos los temporales, se almacenan en un bloque
de datos (DB de Instancia).
3. MÓDULOS DE DATOS.
Los módulos de datos, son áreas de memoria de la CPU que se utilizan para almacenar
datos.
 Los DB mantienen su valor ante un corte de tensión, siempre que tengamos la
pila tampón de respaldo.

Departamento Eléctrico. AT FORMACIÓN Página 5


Programación Avanzada NIVEL II
En caso de no tener pila, solo mantendrán su valor los DB configurados en el área de
elementos remanentes de la CPU. En las CPUs actuales que van con Memory Card,
mantienen la memoria todos los DBs
Hay dos tipos de módulos de datos:
 Módulos de datos globales
o Los módulos de datos globales, pueden ser utilizados por todos los
módulos del programa.
o Todos los FB, FC y OB pueden leer o escribir datos en los DB
globales.
o Para grabar o leer datos, antes hay que abrir el módulo OPN DB (en
KOP) o AUF DB (en AWL).
o Los datos permanecen almacenados en el DB aunque se cierre el DB.
 Módulos de datos de instancia:
o Un DB de instancia, está asociado a un módulo de función especifico
(FB)
o Los datos almacenados en el DB de instancia solo pueden ser leídos
o escritos por el módulo asociado a él.
o UN DB de instancia no necesita abrirse con ninguna instrucción, se
abre se lee y se escribe en el de forma automática.
o Al empezar a leer el bloque de función, se carga del DB una copia de
las variables locales en el bloque de función, se ejecuta el bloque y
cuando acaba, deposita el valor actual de las variables locales en el
DB de instancia.
4. ACUMULADORES.
Los acumuladores son registros auxiliares en la CPU que se utilizan para el intercambio de
datos, operaciones de comparación y operaciones aritméticas.
El S7-300 tiene dos acumuladores de 32 bits y el S7-400 tiene cuatro.
Carga: (L)
La operación de carga, siempre va al ACCU1 (las posiciones no utilizadas se ponen a 0), o
sea si cargo un Byte, los 24 bits restantes se ponen a 0.
El registro que antes de la carga estaba en el ACCU1, se desplaza al ACCU2.
Transferencia:(T)
La operación de transferencia solo transfiere el valor que haya en ACCU1 y el ACCU1
queda invariable. (Copia el valor del ACCU1 en un registro).
Manipulación de los acumuladores (AWL)
TAK: Intercambia el contenido del ACCU1 con el del ACCU2.
PUSH: Desplaza el contenido del ACCU1 al ACCU2.

Página 6 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
POP: Desplaza el contenido del ACCU2 al ACCU1.

5. FUNCIÓN MOVE
5.1 FUNCIÓN MOVER (TRANSFERENCIA).

 La función MOVE es ejecutada cuando tenemos un 1 en la entrada EN, entonces


el valor que hay en IN es copiado en OUT. (El valor en IN permanece
inalterable).
 En ENO tendremos un 1 si la función se ejecuta sin errores.
 Si tenemos un 0 en la entrada EN la función no se ejecuta (es saltada).
Los formatos en IN y en OUT pueden ser de 8 ,16 y 32 bits. (Los formatos en IN y
en OUT pueden ser diferentes.

Departamento Eléctrico. AT FORMACIÓN Página 7


Programación Avanzada NIVEL II

5.2 FUNCIÓN MOVER (CONSTANTES A UNA MISMA


PALABRA).
 En este caso queremos enviar diferentes constantes a una misma palabra.
 PAW752 es una salida analógica que trabajara entre valores 0 y 27648. Con esos
valores, dará una señal exterior de tensión que estará entre 0 y 10 Voltios que en
nuestro caso sería la consigna de velocidad de un variador de frecuencia de tal
modo que 0 V serian 0 rpm y 10 V serian 1500 rpm.
 En este caso tengo seis pulsadores del E124.0 al E124.5. Accionando los
pulsadores en orden ascendente queremos que la salida analógica nos de valores
de 0, 2, 4, 6, 8 y 10 voltios.
 Cuando accione la entrada E124.6, un potenciómetro que dará de 0 a 10 V a la
entrada analógica PEW752 enviara su valor a la salida analógica PAW752.
Haciendo una regla de 3, calculo las siguientes correspondencias:

Página 8 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Nota: Probar que ocurre cuando acciono dos pulsadores al mismo tiempo.
 Indicar que solución puedo tomar para que el ultimo valor activo sea el efectivo.
 Una vez probado el ejercicio, calcular los valores que tendríamos que enviar para
tener 1, 3, 5, 7 y 9 voltios de salida en PAW752.

Departamento Eléctrico. AT FORMACIÓN Página 9


Programación Avanzada NIVEL II

6. FUNCIÓN DE TEMPORIZACIÓN
6.1PRESELECCIÓN VARIABLE Y VISUALIZACIÓN DEL VALOR
DE UN TEMPORIZADOR.
 Realizaremos la preselección de un temporizador con un valor variable. Cada vez
que accionemos el E124.0, el temporizador cogerá como preselección el valor
que tenga en ese momento el MW0. El valor de MW0, debe estar en BCD o en
tiempo Simatic, en caso contrario el temporizador no lo entenderá y el PLC en
caso de no estar programado el OB121, se irá a STOP.

 Una vez se haya activado el temporizador, aunque cambie el valor de MW0, el


temporizador seguirá trabajando con el valor que tenia al ponerse en marcha.
 Para cargar el valor del temporizador, lo podremos ver en BCD (MW4) o en
Binario (MW2).

Página 10 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
 El valor cargado en BCD, contiene el valor y la base de tiempos. No obstante el
MW4 lo podemos visualizar en BCD (formato hexadecimal) o en tiempo
Simatic.

Nota: Cuando se coloca un tiempo en formato S5T (Tiempo Simatic), ajusta


automáticamente el valor a 3 dígitos y adapta la base de tiempos.
Forzar valores en el MW0 (Hexadecimal) con diferentes bases de tiempos en el digito 3 y
diferentes valores en los dígitos 0 al 2 y comprobar que tiempo Simatic coge.

6.2 PROGRAMACIÓN DE UN TEMPORIZADOR CON TRES


TIEMPOS DIFERENTES.
Tenemos un proceso de llenado de botes.
Hay tres tamaños de botes.
 Para llenar el bote pequeño, la electro
válvula (A124.0) debe funcionar 3
segundos.

Departamento Eléctrico. AT FORMACIÓN Página 11


Programación Avanzada NIVEL II
 Para llenar el bote mediano, la electro válvula (A124.0) debe funcionar 8 segundos.
 Para llenar el bote grande, la electro válvula (A124.0) debe funcionar 15 segundos.
Tendremos tres pulsadores que seleccionaran el tipo de bote a llenar.
Nota: El tiempo que enviamos a MW0, lo podemos expresar en tiempo Simatic
(S5T#15S) o en BCD W#16#1150.

 Nota: Indica como funcionaria el circuito si el segmento 4 estuviera programado


delante del segmento 1.

Página 12 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

7. FUNCIONES DE CONTAJE Y COMPARACIÓN


7.1 PRESELECCIÓN VARIABLE Y VISUALIZACIÓN DEL
VALOR DE UN CONTADOR. CONTROL DE PIEZAS EN UNA
CINTA TRANSPORTADORA.
Tenemos una cinta transportadora que llena
de piezas una caja.
 El operario primero accionara el selector
E124.0 y después pondrá en un terminal
de operador o en un SCADA un valor al
MW0 (preselección del número de piezas
que deseamos controlar en ese proceso).
Una vez hecho esto accionara el pulsador
E124.1 que cargara el valor de
preselección, esto provoca que la cinta
A124.0 se ponga en marcha al instante.
 Hay un detector de piezas E124.7 que cuenta las piezas que pasan. Cuando ha
contado las piezas preseleccionadas (el contador llega a 0), se para la cinta y se
pone en marcha de forma intermitente la lámpara A124.7.
 El operario retira entonces la caja llena, pone una caja vacía y repite el proceso
(Pone la nueva preselección en MW0 y acciona de nuevo el pulsador E124.1 con
lo cual el ciclo comienza de nuevo.

Departamento Eléctrico. AT FORMACIÓN Página 13


Programación Avanzada NIVEL II

7.2 INSTRUCCIONES DE COMPARACIÓN.


 Tenemos tres tipos de comparadores, según el formato a comparar:
o Comparación entre dos números enteros. Formato INT 16 bits.
o Comparación entre dos números de dobles enteros. Formato DINT 32 bits.

Página 14 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
o Comparación entre dos números reales. Formato REAL 32 bits.
 Hay seis tipos de comparadores según su condición de comparación:
o Segmento 1. Tendremos un 1 en el comparador si IN1 es igual a IN2.
o Segmento 2. Tendremos un 1 en el comparador si IN1 diferente a IN2.
o Segmento 3. Tendremos un 1 en el comparador si IN1 es mayor a IN2.
o Segmento 4. Tendremos un 1 en el comparador si IN1 es menor a IN2.
o Segmento 5. Tendremos un 1 en el comparador si IN1 es mayor o igual a
IN2.
o Segmento 6. Tendremos un 1 en el comparador si IN1 es menor o igual a
IN2.
NOTA: Un comparador, actúa como un contacto en el que habrá un 1 cuando se cumpla la
comparación.

Departamento Eléctrico. AT FORMACIÓN Página 15


Programación Avanzada NIVEL II

Si queremos realizar una comparación de un Byte o de números en formato


hexadecimal, deberemos hacer la comparación en AWL.
Ejemplo:
 Queremos que cuando el valor de la EW124 sea igual al valor H2A4D se active
la salida A124.7
 Queremos que cuando el valor del EB126 sea igual a 73 se desactive la salida
A124.7

Página 16 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

7.3 CONTROL DE INICIO DE MARCHA DE UN PROCESO.


 Para poner en funcionamiento un proceso, se deben de dar ciertas condiciones.
Estas son que algunas entradas deben estar a 0 y otras a 1.
 Este ejercicio resuelto de forma tradicional, implicaría la colocación de 16
contactos en serie con el elemento a activar.
 Resuelto con un comparador, se realizaría de la siguiente manera:
Estado que deben tener las entradas al poner en marcha el proceso:

El estado de las entradas en reposo, corresponde al valor decimal EW124= -22163


IMPORTANTE: Si queremos programar el comparador con números en formato
hexadecimal, debe de hacer el programa en AWL seria: L EW124 L W#16#A96D
==I
Entradas en estado correcto:
 Si al accionar el pulsador de marcha (E126.0) se cumplen las condiciones de
inicio, se activara la salida A124.0 y al mismo tiempo se activara la salida
A124.7 de forma fija.
 Accionando el E126.1 se desactivara el proceso.

Departamento Eléctrico. AT FORMACIÓN Página 17


Programación Avanzada NIVEL II
Entradas en estado incorrecto:
 Si al accionar el pulsador de marcha (E126.0) NO se cumplen las condiciones
de inicio, no se activara la salida A124.0 y al mismo tiempo se activara la
salida A124.7 de forma intermitente.

Página 18 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
7.4 CLAVE PARA ABRIR UNA CERRADURA.
 Para poder abrir una cerradura, debo de poner en MW0 el valor 1234. Este valor
seria introducido por un terminal de operador o por un SCADA.
 Si al accionar el pulsador E124.0 la clave es correcta, funcionara la cerradura
A124.0 (segmento 1) durante 5 segundos y borraremos la clave correcta de
MW0. (segmento 3).
 Si nos equivocamos tres veces, se bloqueara la cerradura y funcionara una sirena
(A124.7) de forma intermitente hasta que la paremos accionando el pulsador
E124.0 habiendo colocando antes en MW0 el valor 9999. (segmento 5).
 Programar en el OB100 la carga del valor de preselección 3 en el contador 1.
Ejercicio: Hacer el programa necesario para que una vez marque algún fallo demos
un tiempo de 15 segundos para abrir la cerradura, en caso de no hacerlo, debe de
activarse la alarma.

Departamento Eléctrico. AT FORMACIÓN Página 19


Programación Avanzada NIVEL II

8. PROGRAMACIÓN ESTRUCTURADA POR BLOQUES


8.1SELECCIÓN DE DOS TIPOS DE FUNCIONAMIENTO.
Se trata de programar en dos bloques de programa diferentes el mismo circuito pero
con funcionamiento diferente:
FC 1: Circuito de un Paro-Marcha con prioridad del pulsador de paro.
FB 1: Circuito de un Paro-Marcha con prioridad del pulsador de marcha.

Página 20 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
Y desde el OB1 dependiendo del estado de la entrada E124.0, deberá funcionar un
tipo u otro de funcionamiento.

Una posible solución sería:

9. OPERACIONES DE CÁLCULO BÁSICAS Y AVANZADAS.


9.1 OPERACIONES LÓGICAS ENTRE PALABRAS O DOBLES
PALABRAS.
Operación serie entre palabras WAND_W.
La función WAND__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación
serie (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo
envía a OUT.

Departamento Eléctrico. AT FORMACIÓN Página 21


Programación Avanzada NIVEL II

Operación paralelo entre palabras WOR_W.


La función WOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación
paralelo (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo
envía a OUT.

Operación OR exclusiva entre palabras WXOR_W.


La función WXOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación
OR exclusiva (bit a bit) de los bits de la misma posición (dentro de su palabra) y el
resultado lo envía a OUT. (Tendré un 1 cuando los bits de IN1 e IN2 sean diferentes).

Página 22 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

9.2 PROGRAMACIÓN DE UN TEMPORIZADOR CON


PRESELECCIÓN VARIABLE. BASE DE TIEMPOS FIJA.
 Tendríamos un terminal de operador o un SCADA donde pondríamos el valor al
MW0. Cuando accionemos el E124.4, el temporizador se activara con MW10 como
valor de preselección (segundos).
 Para lograr esto, primero deberemos de hacer un filtro para que los bits 12 a 15 no
afecten a la base de tiempos del temporizador y después haremos una función
paralela para poner la base de tiempos.
El registro MW10 debe estar en BCD. En caso de no estar, el PLC se va a STOP.
Nota: Si enviamos al PLC el OB121 (Detecta errores de programación) aunque sea vacío y
hay un error, el PLC no se irá a STOP aunque indicara con el leed SF que hay un error.

Departamento Eléctrico. AT FORMACIÓN Página 23


Programación Avanzada NIVEL II

9.3 OPERACIONES ARITMÉTICAS CON NÚMEROS ENTEROS


(COMA FIJA).
 (Segmento 1) Suma de números enteros: ADD_I suma los registros que tenga en IN1
e IN2 y envía el resultado a OUT. (OUT= IN1+IN2).
 (Segmento 2) Resta de números enteros: SUB_I resta los registros que tenga en IN1
e IN2 y envía el resultado a OUT. (OUT= IN1-IN2).

Página 24 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
 (Segmento 3) Multiplicación de números enteros: MUL_I multiplica los registros
que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1*IN2).
 (Segmento 4) División de números enteros: DIV_I divide los registros que tenga en
IN1 e IN2 y envía el resultado a OUT. (OUT= IN1/IN2).
 La función MOD, recupera el resto de esa división (solo en dobles palabras).
 En cualquier de estas cuatro operaciones, el resultado ha de estar comprendido
dentro de los limites de los números enteros.
En caso de no ser así:
 Se activa el bit de estado OV (desbordamiento).
 El resultado obtenido en OUT NO será válido.
 En ENO tendré un 0.

Límites número enteros de 16 bits: -32768 a +32767


Límites de números enteros de 32 bits: -2147483648 a +2147483647

La diferencia entre el OV (bit de desbordamiento) y el OS (bit de desbordamiento


memorizado) es que el segundo mantiene el valor durante todo el scan (aunque en otras
operaciones no hubiera desbordamiento, indicaría que lo hay) en cambio el OV se actualiza
en cada operación.

Departamento Eléctrico. AT FORMACIÓN Página 25


Programación Avanzada NIVEL II

Página 26 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
9.4 CREACIÓN DE UN CONTADOR REVERSIBLE CON
PRESELECCIÓN.
 La creación de este contador con preselección tiene algunas ventajas respecto al
contador normal.
 Con un contador normal (Z1) puedo contar como máximo hasta el valor 999,
mientras con este puedo contar hasta 32767 o si en lugar de trabajar con una
palabra (MW0) trabajo con una doble palabra puedo llegar al valor de
2147483647.
 Su valor es más fácil de leer en un sistema SCADA ya que tendremos el valor
directamente en decimal.
 Si le pongo como preselección una variable, esta también podrá ser un número
binario y podré poner su valor directamente en decimal.
 El registro que recibe el incremento puede ser una palabra de un DB (bloque de
datos), con lo cual siempre tendrá memoria.
Funcionamiento:
1º Segmento, cada vez que accionemos el E124.0 incrementara en 1 el valor del
MW0
2º Segmento, cada vez que accionemos el E124.1 decrementará en 1 el valor del
MW0
3º Segmento, cuando accionemos el E124.2, el valor del MW0 se pone a 0.
4º Segmento, cuando el valor de MW0 sea igual o superior a 10, se activara la salida
A124.4
 Una vez probado, cambiar el valor 10 por el registro MW10 y comprobar que el
valor que ponga en MW10 será a partir de ese momento la preselección de ese
“contador”.
 Ejercicios:
o Crear un programa en el que incrementando el valor de un registro sea
limitado entre los valores 0 y 10 (después del 10 seguirá el 0)
o Crear un programa en el que incrementando y decrementando el valor de un
registro sea limitado entre los valores 4 y 10. Cargar el OB100 el valor de 4
(para iniciar).

Departamento Eléctrico. AT FORMACIÓN Página 27


Programación Avanzada NIVEL II

9.5 CREACIÓN DE UN CONTADOR DE TIEMPOS.


 Mediante un generador de impulsos y una operación incremento hemos
creado un contador de tiempos.
 El MW0 contara los segundos y el MW2 contara las horas de funcionamiento
de un motor (A124.0).
 Si incluimos un comparador, conseguiremos que cuando el motor lleve por
ejemplo 5000 horas nos indique que le debemos hacer un mantenimiento
preventivo.

Página 28 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Para probar el ejercicio, cambiar:


 En IN2 del comparador del segmento 4, poner 6.
 En IN2 del comparador del segmento 6, poner 10.
En este caso, la salida A124.7 se activara cuando el motor lleve 60 segundos de
funcionamiento y no 5000 horas.

9.6 OPERACIONES ARITMÉTICAS CON NÚMEROS EN COMA


FLOTANTE.
 (Segmento 1)Suma de números reales: ADD_R suma los registros que tenga en
IN1 e IN2 y envía el resultado a OUT. (OUT= IN1+IN2).
 (Segmento 2)Resta de números reales: SUB_R resta los registros que tenga en
IN1 e IN2 y envía el resultado a OUT. (OUT= IN1-IN2).
 (Segmento 3)Multiplicación de números reales: MUL_R multiplica los registros
que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1*IN2).
 (Segmento 4) División de números reales: DIV_R divide los registros que tenga
en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1/IN2).

Departamento Eléctrico. AT FORMACIÓN Página 29


Programación Avanzada NIVEL II
 (Segmento 5)Raíz cuadrada: SQRT realiza la raíz cuadrada de IN y envía el
resultado a OUT.
 (Segmento 6)Elevar al cuadrado: SQR eleva al cuadrado el valor que hay en IN y
envía el resultado a OUT.
 (Segmento 7)Valor absoluto de un número: ABS toma el valor de IN (sea
positivo o negativo) y lo envía a OUT siempre con signo positivo.

Página 30 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

10. OPERACIONES DE INCREMENTAR Y DECREMENTAR


10.1 DIFERENTES MÉTODOS DE INCREMENTAR Y
DECREMENTAR.
Se trata de realizar un circuito que responda al funcionamiento expresado en la siguiente
figura:

Departamento Eléctrico. AT FORMACIÓN Página 31


Programación Avanzada NIVEL II

Una posible solución sería:

11. PARAMETRIZACIÓN DE BLOQUES FBs Y FCs.


11.1 CREACIÓN DE LA PLANTILLA DE UN GENERADOR
DE IMPULSOS STANDARD.
 Combinando el funcionamiento de dos temporizadores, conseguimos crear un
generador de impulsos standard.
 Creamos con ese circuito una plantilla que usaremos cuando nos convenga.
 En el primer segmento del OB1 usamos la plantilla con preselecciones
variables. Los tiempos en este caso los podríamos cambiar desde un terminal
de operador o un sistema SCADA.
 En el segmento usamos la plantilla con un tiempo fijo de 1 segundo de
conexión y 2 segundos de desconexión.
Para crear la plantilla, debemos de rellenar la tabla de declaración de variables y definir
estas.

Página 32 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Departamento Eléctrico. AT FORMACIÓN Página 33


Programación Avanzada NIVEL II

11.2 CREACIÓN DE UNA PLANTILLA CON NÚMEROS


REALES.
 Queremos hacer una plantilla con la cual podamos calcular el resultado del tanto
por ciento de un valor.
Para eso debemos realizar las siguientes operaciones:
Resultado= (Tanto por ciento*valor) / 100
Debemos realizar dos operaciones
1ª Auxiliar= Tanto por ciento*valor
2ª Resultado= Auxiliar /100
Para crear la plantilla, debemos de rellenar la tabla de declaración de variables y
definir estas.

Página 34 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Usaremos la plantilla tantas veces como nos sea necesario

Nota: Proteger la plantilla para que no se pueda abrir (KNOW_HOW_PROTECT).

Departamento Eléctrico. AT FORMACIÓN Página 35


Programación Avanzada NIVEL II
12.DIRECCIONAMIENTO INDIRECTO
12.1 DIRECCIONAMIENTO INDIRECTO DE REGISTROS.

 Mediante el direccionamiento indirecto


podemos direccionar diferentes módulos
y registros.
 Para el direccionamiento de OB,
temporizadores o contadores el
direccionamiento se hará mediante el
valor de una palabra.
 Para direccionar el valor de un registro,
se hará con una doble palabra.
 El MD0 ha de estar en formato puntero y
como direccionamos palabras, el último
número ha de ser siempre 0 y se expresa
P# X. 0 (Donde X indicara el número de
la palabra a direccionar).

Ejercicio 1.
-Queremos que unos datos grabados en 20 palabras del DB1 puedan ser movidas al MW10.
1º Para ello crearemos primero el DB1 con los siguientes valores marcados en la tabla.
2º Crearemos el programa en el FC17

3º Transferimos el DB1 y el OB1 al PLC.


4º Crearemos y editaremos la siguiente tabla de variables.
5º Forzaremos valores en MD0 en formato puntero y comprobaremos el resultado en
MW10.
Nota: No direccionar un valor superior a 20, ya que el DB solo tiene 20 palabras y por lo
tanto al no encontrar la palabra buscada el PLC se iría a STOP.

Valores de DB1

Página 36 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Dirección Nombre Tipo Valor Inicial Valor actual Comentario

Variable
0.0 DATOS │1│ INT 0 1
provisional

2.0 DATOS │2│ INT 0 2

4.0 DATOS │3│ INT 0 3

6.0 DATOS │4│ INT 0 4

8.0 DATOS │5│ INT 0 5

10.0 DATOS │6│ INT 0 6

12.0 DATOS │7│ INT 0 7

14.0 DATOS │8│ INT 0 8

16.0 DATOS │9│ INT 0 9

18.0 DATOS │10│ INT 0 10

20.0 DATOS │11│ INT 0 11

22.0 DATOS │12│ INT 0 12

24.0 DATOS │13│ INT 0 13

26.0 DATOS │14│ INT 0 14

28.0 DATOS │15│ INT 0 15

30.0 DATOS │16│ INT 0 16

32.0 DATOS │17│ INT 0 17

34.0 DATOS │18│ INT 0 18

36.0 DATOS │19│ INT 0 19

38.0 DATOS │20│ INT 0 20

Departamento Eléctrico. AT FORMACIÓN Página 37


Programación Avanzada NIVEL II

Ejercicio 2
Queremos realizar la suma de dos palabras del DB1 y mover el
resultado al MW20.
1º Crearemos el programa en el FC18

2º Forzaremos valores en MD0 y en MD4 en formato puntero


y comprobaremos el resultado en MW20.

13.BLOQUE DE DATOS DBs.


13.1 LECTURA DE DATOS DE UN BLOQUE DE DATOS (DB).
 Tenemos un proceso idéntico para realizar tres tipos de mezclas de dos
productos.
 En ese proceso, se hace una mezcla de una cantidad de un material con otra
cantidad de otro material durante un tiempo determinado.

Página 38 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
 La única diferencia que existe en el proceso, la cantidad del producto A (va
por tiempo de apertura de una válvula), la cantidad del producto B y el tiempo
de mezclado de los dos productos.
 Al accionar un pulsador se abren las dos electroválvulas que dan paso a los
productos y se pone en marcha el mezclador. Según van pasando los tiempos,
se cierra la válvula A, se cierra la válvula B y se para el mezclador.
 Pondremos los datos de los tiempos de cada tipo de pieza en un DB diferente.

Crear el DB1 (Mezcla 1)

Departamento Eléctrico. AT FORMACIÓN Página 39


Programación Avanzada NIVEL II

Ir a “Ver”→ “Datos”

Ir a “Edición”→ “Inicializar bloques de datos” (con esto el valor inicial se copiara en el


valor actual).

Repetir el mismo proceso en DB2 (Mezcla 2) y DB3 (Mezcla 3).

Página 40 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Departamento Eléctrico. AT FORMACIÓN Página 41


Programación Avanzada NIVEL II

Página 42 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
13.2 LECTURA DE DATOS DE UN BLOQUE DE DATOS (DB)
II. DIRECCIONAMIENTO INDIRECTO DE UN BLOQUE DE
DATOS.
Realización del ejercicio anterior utilizando el direccionamiento indirecto.
Modificar solo el FC19, el resto de módulos utilizarlos tal como están.
 En este ejercicio, mediante el E124.0 seleccionaremos el número de DB que
queremos abrir y al leerse el FC2 se cargaran los datos de ese DB en MW0,
MW2 y MW4.
 Al accionar el E124.7 se pondrá en marcha el proceso
Nota: La instrucción AUF en AWL es igual a OPN en KOP. AUF DB10 (Esto significa
“Abre el DB10”)
 La instrucción que usaremos la programaremos en AWL.
Al utilizar el direccionamiento indirecto para direccionar un DB, deberemos cargar un valor
en una palabra en este caso la MW210

Departamento Eléctrico. AT FORMACIÓN Página 43


Programación Avanzada NIVEL II

NOTA: Si tuviéramos el mismo proceso con 20 datos diferentes, crearíamos 20 DBs,


pondríamos esos datos desde el DB1 al DB20 y en el primer comparador del segmento 2
sustituiríamos el valor 4 por el valor 21.
 Razonar que ocurriría si el segmento 3 lo ponemos delante del segmento 2.
Cambiarlo y comprobar su funcionamiento.

Página 44 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
14.PROGRAMACIÓN CON REGISTROS DEL SISTEMA.
14.1 PROGRAMACIÓN DEL RELOJ.
La hora y fecha, se pueden cambiar en el editor o en el administrador en
”Sistema de destino”→ ”Diagnostico/configuración” →”ajustar la hora”. Cuando se
pone la fecha y hora nueva, se valida pulsando “Aplicar”.
Para trabajar con los datos del reloj, se puede hacer de dos formas:

 Una de ellas es la de trabajar con funciones especiales SFC.


 Otra de las formas, es recuperar los datos del reloj del OB1

Datos del reloj del OB1


 Hay un registro temporal en el OB1, el “OB1_DATE_TIME” donde se carga la fecha y
hora actual en la que se está ejecutando el OB1 (variable 12.0 y la componen 12 bytes)
las variables de lectura son del LB12 al LB19.
 Si quiero trabajar con el reloj solo en el OB1, puedo trabajar con esas variables
temporales. En caso que quiera trabajar en otro módulo, tendré que cargar esas variables
temporales en unos registros (por ejemplo en un DB).
Los datos del reloj están en BCD, por lo tanto deberé leerlos en hexadecimal:

Ejercicio 1:
 En este ejercicio, queremos que a las 5 y 15 de la tarde, se ponga en funcionamiento el
riego (A124.0) y que se pare a las 5 y 17 de la tarde.
 Programar después el mismo funcionamiento, pero que solo funcione de lunes a viernes.

Departamento Eléctrico. AT FORMACIÓN Página 45


Programación Avanzada NIVEL II

Al realizar este programa en OB1, los datos del reloj estarán en:

Página 46 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
Ejercicio 2
Queremos que de lunes a viernes una sirena funcione desde la 1 y 30 de la tarde hasta la 1 y
32. Para poder solucionar el ejercicio, debemos filtrar el día de la semana en una palabra o
en un byte para poder realizar comparaciones con él. (En este caso lo hemos puesto en
MW0)

Ejercicio 3
Creación de una plantilla para poder realizar la conexión y desconexión de un elemento
entre unas horas determinadas.

Departamento Eléctrico. AT FORMACIÓN Página 47


Programación Avanzada NIVEL II
Desde un terminal de operador o un sistema SCADA podremos programar ese reloj
(forzando las MW20 y MW22) para que la salida funcione cuando que nos interese
Para crear la plantilla, debemos de rellenar la tabla de declaración de variables y definir
estas.

Página 48 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
15.TRATAMIENTO DE SEÑALES ANALÓGICAS
15.1 FUNCIÓN SCALE (ESCALAR UNA ENTRADA
ANALÓGICA).
Esta función la podemos encontrar en:
Librerías→ Standard Library →TI-S7 Converting Blocks→ FC105
La función SCALE sirve para escalar el valor de una entrada analógica entre dos valores
(máximo y mínimo). También podríamos escalar cualquier otro registro que no sea una
entrada analógica.

Parámetros:

Cuando tengamos un 1 se ejecuta la función. Si hay un 0, la


EN
función es saltada (no se ejecuta).

Valor de entrada (número de entrada analógica). Formato entero


IN
16 bits INT.

Valor máximo deseado de salida (OUT). Número REAL, doble


HI_LIM
palabra o constante.

Valor mínimo deseado de salida (OUT). Número REAL, doble


LOW_LIM
palabra o constante.

Si vale 0 (trabajamos con valores entre 0 y 27648). Entrada


BIPOLAR analógica de 0 a 10 V. Si vale 1 (trabajamos con valores entre –
27648 y +27648) Entrada analógica de valor de –10V a +10 V

Valor de salida escalado entre el valor máximo y mínimo.


OUT
Formato REAL.

Departamento Eléctrico. AT FORMACIÓN Página 49


Programación Avanzada NIVEL II

Vale 0 si el valor de IN es superior o inferior al límite (-27648 o


ENO + 27648). En este caso, además en OUT sale el valor máximo o
el mínimo según se rebase en positivo o en negativo

Registro de error. Vale W#16#0000 si el escalado se ha hecho


RET_VALUE correctamente. Vale W#16#0008 si IN sale de los limites
máximo o mínimo.

En este caso, queremos controlar el valor de temperatura de una sonda que da 0 Voltios a
0ºC y 10 Voltios a 100ºC y queremos tener en MD100 el valor real de esa temperatura.

UNIPOLAR

SONDA DE TEMPERATURA RESULTADO ESCALADO

Página 50 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
BIPOLAR. Comprobar el funcionamiento de la función cuando activo el E124.0

15.2 FUNCIÓN UNSCALE (DESESCALAR A UNA SALIDA


ANALÓGICA).
Esta función la podemos encontrar en:

Librerías→ Standard Library→


TI-S7 Converting Blocks→
FC106

La función UNSCALE sirve


para desescalar el valor
(máximo y mínimo) de un
registro sobre una salida
analógica.
También podríamos desescalar
cualquier otro registro que no
sea una salida analógica.

Departamento Eléctrico. AT FORMACIÓN Página 51


Programación Avanzada NIVEL II

Programación FC 25
Parámetros:

Cuando tengamos un 1 se ejecuta la función. Si hay un 0, la


EN
función es saltada.

IN Valor de entrada .Registro en formato REAL 32 bits.

Valor máximo deseado del valor de entrada (IN). Número REAL,


HI_LIM
doble palabra o constante

Valor mínimo deseado del valor de entrada (IN). Número REAL,


LOW_LIM
doble palabra o constante

Si vale 0, daremos valores de salida entre 0 y 27648). Salida


analógica de 0 a 10 V
BIPOLAR
Si vale 1, daremos valores de salida entre –27648 y +27648)
.Salida analógica de –10V a +10 V

OUT Valor de salida escalado. Formato INT 16 bits.

Vale 0 si el valor de IN es superior al límite inferior o al superior


(HI_LIM o LOW_LIMIT). En este caso, además en OUT sale el
ENO
valor máximo o el mínimo según se rebase en por encima o por
debajo. ( 0 o 27648).

Registro de error. Vale W#16#0000 si el escalado se ha hecho


RET_VALUE correctamente.
Vale W#16#0008 si IN sale de los limites máximo o mínimo.

En este caso, queremos controlar la velocidad de un motor mediante un convertidor de


frecuencia.
El variador tiene una consigna de 0- 10 Voltios.
Con 0 voltios, el motor ira a 0 rpm y con 10 voltios, irá a 1500 rpm
Iremos dando un valor a MD100 entre 0 y 1500, ese valor se convertirá en un valor en la
salida analógica entre 0 y 27648, que a su vez hará que la salida analógica de una señal
entre 0 y 10 Voltios..
 Edita la siguiente tabla de estado y fuerza valores en el MD10. ( 0 a 1500)

 Fuerza un valor inferior a 0 o superior a 1500 y comprueba que ocurre en el AW752 y


en el MW0

Página 52 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Ejercicio 1: Añadir a este ejercicio las líneas del ejercicio E2 colocando en los IN de la
función mover: 0.0, 300.0, 600.0, 900.0, 1200.0 y 1500.0 y en todos los OUT colocar
MD10.
El colocar .0 se añade para decirle que ese valor es un número real.

15.3 CONSIGNA DE MÁXIMA Y MÍNIMA DE UNA ENTRADA


ANALÓGICA.
Queremos tener una alarma de mínimo y una de máximo de una temperatura. La
temperatura la lee la entrada analógica PEW752.

 Debe de activarse la alarma de máxima cuando el valor de la temperatura supere los


90ºC
 Debe de activarse la alarma de mínima cuando el valor de la temperatura este por
debajo de 40ºC.
 El E124.0 es el pulsador de enterado. Al accionarlo se borra la alarma de mínimo y de
máximo
 Las alarmas de mínimo o máximo, no volverán a activarse hasta que su valor no suba
(mínima) o baje (máxima) del valor de la consigna y se den de nuevo las condiciones
de activación de las alarmas.
 Para poder colocar las consignas de máxima y mínima, debo hacer una regla de tres y
así deduzco que:

Tendré 90ºC cuando el valor en PEW752 sea de 24883.


Tendré 40ºC cuando el valor en PEW752 sea de 11059.

Departamento Eléctrico. AT FORMACIÓN Página 53


Programación Avanzada NIVEL II

Página 54 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
15.4 CONSIGNA DE MÁXIMA Y MÍNIMA DE UNA ENTRADA
ANALÓGICA (II).
Queremos tener una alarma de mínimo y una de máximo de una temperatura. La
temperatura la lee la entrada analógica PEW752.
 Debe de activarse la alarma de máxima cuando el valor de la temperatura supere
los 90ºC.
 Debe de activarse la alarma de mínima cuando el valor de la temperatura este por
debajo de 40ºC.
 El E124.0 es el pulsador de enterado. Al accionarlo se borra la alarma de mínimo y
de máximo –Las alarmas de mínimo o máximo, no volverán a activarse hasta que
su valor no suba (mínima) o baje (máxima) del valor de la consigna y se den de
nuevo las condiciones de activación de las alarmas.
 En este caso, utilizando la función SCALE, ya tengo en MD10 en formato REAL
el valor de la temperatura que lee el PEW752, con lo cual puedo realizar la
comparación de forma directa.
 Si en lugar de poner las constantes 90.0 y 40.0 ponemos dos registros en formato
Real, desde un terminal de operador o desde un sistema Scada podríamos cambiar
los valor de consigna con solo forzar los valores que nos interesen a MD20
(consigna de máxima) y MD30 (Consigna de mínima).

Departamento Eléctrico. AT FORMACIÓN Página 55


Programación Avanzada NIVEL II
NOTA: Cuando pongamos una constante en formato REAL, aunque la constante no tenga
decimales como en nuestro caso, tenemos que poner 40.0 si solo ponemos 40 el entiende
que es un número entero y no tiene cabida en una función de números reales.

Página 56 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
16.UTILIZACIÓN DE BLOQUES ESTÁNDAR DE LIBRERÍAS
16.1 GRABACIÓN DE UNA TABLA EN UN BLOQUES DE
DATOS (DB). FUNCIÓN ATT.
Crear un módulo de datos:
Ir al administrador→ Insertar nuevo objeto→ Bloque de datos→ Poner nombre (DB10)
Editar el DB10:
 Queremos tener un bloque de datos de 12 palabras en formato INT (números enteros).
 Queremos que el valor que tenga la primera palabra de datos sea 10

Ir a Ver →Datos
Ir a Edición →Inicializar bloques de datos→ poner valor 10 en valor actual de la
palabra 0.0 →Salvar

La función ATT la encontraremos en:


Librerías→ Standard library →TI-S7 Converting Blocks→ FC84
Funcionamiento:
En DATA, indicamos el dato que queremos grabar.
En TABLE, indicamos cual será el primer registro de esa tabla.

Departamento Eléctrico. AT FORMACIÓN Página 57


Programación Avanzada NIVEL II
En ese primer registro, (poniéndole un valor) indicaremos el número de registros que podrá
grabar esa tabla.
En el segundo registro, se nos ira indicando el número de registros llenos (cada vez que
grabemos un valor en la tabla, ese registro incrementara en 1 su valor.
 Cuando en la entrada EN tenga un 1, se grabara un dato en la tabla (si no pusiéramos
flanco, en este caso en 10 scanes quedaría la tabla llena).
 Cuando el primer y el segundo registro de la tabla sean iguales (la tabla estará llena),
ya no se grabara ningún registro más.

 Cada vez que


accione el E124.0, el
valor que tenga en
ese momento la
entrada analógica
PEW752 irá al
primer registro libre
de la tabla.
 Cuando la tabla este
llena (DBW0 será
igual a DBW2),
funcionara de forma
intermitente la salida
A125.0

Página 58 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

16.2 LECTURA DE DATOS GRABADOS EN UNA TABLA.


FUNCIÓN LIFO.
La función LIFO la encontraremos en:
Librerías→ Standard Library→ TI-S7 Converting Blocks→ FC87
Funcionamiento:
En TABLE, indicamos cual será el primer registro de esa tabla.
En RET_VALUE se nos cargara el valor que recuperemos de la tabla.
El valor del segundo registro de la tabla, nos apuntara al registro que recuperaremos al
ejecutar la instrucción y al ejecutarla además ese valor será decrementado en 1.
La instrucción LIFO igual que la ATT debe ir siempre con flanco, en nuestro caso, en caso
de no hacerlo en 10 scanes nos enviaría los 10 valores de la tabla a RET_VALUE quedando
solo el primer valor grabado.

Departamento Eléctrico. AT FORMACIÓN Página 59


Programación Avanzada NIVEL II

16.3 GRABACIÓN DE UNA TABLA DE DATOS (II).


SOBRESCRIBIR DATOS.
En este ejercicio, podemos comprobar que cuando la tabla está llena de datos,
sobrescribimos de nuevo la tabla.
 Después de grabar el registro 10, empezaría a sobrescribir el 1, después el dos, etc.
 Con esto conseguiríamos tener siempre grabados los diez últimos datos.

Página 60 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
16.4 GRABACIÓN DE UNA TABLA DE DATOS (III).
BORRADO DE DATOS. FUNCIÓN FILL.
En este ejercicio, podemos comprobar cómo borramos todos los datos de una tabla.
 (Segmento 2 y 3)Al accionar el pulsador E124.1, cargamos el valor 0 en DBW2 y
durante 10 scanes escribimos el valor 0 en todos los registros de la tabla. (DBW2
quedara con valor 10).
 (Segmento 4) Al soltar el pulsador E124.1 pondremos a DBW2 al valor 0, con lo cual
la tabla quedara preparada para poder grabar nuevos datos.
A) Creación de un programa para borrar los datos

B) Uso de una función de sistema para borrar la tabla.


Borra los segmentos 2, 3 y 4 y añade el siguiente:
La función de sistema FILL (SFC21) la encontrareis en Librerías→Standard Library
→System Funtion

Departamento Eléctrico. AT FORMACIÓN Página 61


Programación Avanzada NIVEL II
Es una función que NO podremos transferirla (ni hace falta) porque al ser de sistema ya
está incluida en la CPU.

16.5 GUARDAR DATOS DEL RELOJ Y DE UNA ENTRADA


ANALÓGICA.
Queremos guardar el valor de una entrada analógica y al mismo tiempo que nos quede
registrado de forma paralela a qué hora y minuto se ha grabado ese dato.
Para ello primero utilizaremos el DB6 (tenemos en el los datos del reloj) el DB10 ya usado
anteriormente y además debemos crear un DB11 donde grabar los datos del reloj.
DB11

En el primer registro de la tabla, debemos indicar el número de registros que queremos


grabar. En nuestro caso son 10 por lo tanto como el formato del registro esta en
hexadecimal deberemos colocar W#16#A.
Ir a “Ver” →“Datos”.
Ir a “Edición” → “Inicializar bloques de datos” → poner valor W#16#000A en valor
actual de la palabra 0.0 →Salvar

Página 62 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Para salvar la hora y minuto


deberemos trabajar con DBW3
(DBB3 es la hora y DBB4 son
los minutos)
En nuestro caso para ser mas
operativos y poder ver antes los
resultados usaremos DBW4
(DBB4 son los minutos y DBB5
son los segundos)

Departamento Eléctrico. AT FORMACIÓN Página 63


Programación Avanzada NIVEL II

EB 124 Bit PEW 752 Regulor

3120 Valor

17.DESPLAZAMIENTOS Y ROTACIONES

17.1 EXPULSIÓN DE BOTELLAS DEFECTUOSAS.


Se trata de extraer las botellas defectuosas de un proceso de colocación de etiquetas, por
motivos de construcción no es posible colocar el dispositivo extractor y la derivación de la
cinta transportadora en el lugar de la detección de la etiqueta, es por ello que se deberá
registrar la botella defectuosa y después de haber contabilizado la segunda botella después
de la detectada como defectuosa, realizar la extracción de la misma mediante la actuación
de un cilindro.
En la siguiente figura representamos un esquema indicativo, para aclaración de su
funcionamiento.

Página 64 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Departamento Eléctrico. AT FORMACIÓN Página 65


Programación Avanzada NIVEL II

Página 66 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Departamento Eléctrico. AT FORMACIÓN Página 67


Programación Avanzada NIVEL II
18.MÓDULOS DE ORGANIZACIÓN. PROCESAMIENTO DE
ALARMAS.
18.1 PROGRAMACIÓN DEL OB10.
El OB10, permite interrumpir el OB 1 y ejecutarse en una fecha determinada o a diferentes
intervalos a partir de una fecha determinada.
Se puede programar para que se ejecute en los siguientes intervalos:
Una vez: Se ejecutara solo una vez en el momento especificado.
 Cada minuto: Se ejecutara 1 vez cada minuto a partir del momento especificado.
 Cada hora: Se ejecutara 1 vez cada hora a partir del momento especificado.
 Cada día : Se ejecutara una vez al día a partir del momento especificado
 Cada mes: Se ejecutara una vez al mes a partir del momento especificado.
 Cada año : Se ejecutara una vez al año a partir del momento especificado
 Al final de mes: Se ejecutara una vez al final del mes a partir del momento
especificado.
Tenemos dos formas de programarlo:
Primera forma:
1. Ir al Administrador →Hardware (Picar dos veces sobre el) → Picar dos veces sobre
CPU→ Seleccionar la pestaña “Alarmas horarias” → En periodicidad seleccionar
cada cuanto tiempo queremos que actúe (1 minuto) → En fecha y hora poner a
partir de qué momento queremos que empiece (fecha 23.10.02, hora 12:54) →
Compilar y transferir el Hardware a la CPU.
2. Programar el OB10. (Realizar el programa que viene a continuación).

Probar el ejercicio transfiriendo el OB10 y en la tabla de estado visualizar el valor de


MW10 en decimal.
Segunda forma:
1. Mediante la función FC3 (D_TOD_DT) de Librerías de Standard Library de IEC
Function Blocks pasamos la fecha y hora a la que queremos que empiece el OB10 a
la variable temporal “hora empezar” (definirla en el OB1 con formato de
DATE_AND_TIME)
2. Mediante la función SFC28 (SET_TINT) de Librerías de Standard Library de
System Function Blocks, indicamos cual es el OB con el que queremos

Página 68 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
trabajar(OB_NR), a qué hora queremos que empiece (SDT) y cuál va a ser su
periodicidad (PERIODO) y dónde va el código de error (RET_VAL)
PERIOD W#16#0000 = una vez
W#16#0201 = cada minuto
W#16#0401 = cada hora
W#16#1001 = diaria
W#16#1201 = semanal
W#16#1401 = mensual
W#16#1801 = anual
W#16#2001 = al final del mes
3. Mediante la función SFC30 (ACT_TINT) de Librerías de Standard Library de
System Function Blocks, activamos o desactivamos la ejecución del OB10.

4. Programar el OB10. (Realizar el programa que viene a continuación).

Departamento Eléctrico. AT FORMACIÓN Página 69


Programación Avanzada NIVEL II
18.2 PROGRAMACIÓN DEL OB20.
 El OB20, permite interrumpir el OB 1 y ejecutarse después de un tiempo de
demora determinado.
 El OB20 arranca después de una llamada al SFC32.
 El SFC32 lo podemos encontrar en Librerías→Standard Library→System
Funtion Blocks
Parámetros del SFC32

OB_NR Número del OB que arrancara con retardo.

DTIME Duración del retardo (1 a 60000 ms)

Identificador que se pone en la información de


SIGN
arranque del OB cuando se llama al OB de retardo.

Contiene el código del error si se produjera uno


RET_VALUE
mientras se procesa el OB.

OB20
SET
= A124.0
Enviar el OB1 y el OB20 al PLC y comprobar el funcionamiento.

18.3 PROGRAMACIÓN DEL OB35.


 El OB35, permite interrumpir la ejecución del OB1 a intervalos fijos y ser
ejecutado.
 El intervalo de tiempo es respecto al momento que la CPU se pone en RUN.

Página 70 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
 Hay que asegurarse que el tiempo de ejecución del programa del OB35 es
menor que el tiempo de intervalo programado como repetición de la ejecución
del OB35.
Configuración del OB35:
Ir al Administrador→ Hardware (Picar dos veces sobre el) → Picar dos veces sobre CPU
Seleccionar la pestaña “Alarmas cíclicas” → En periodicidad seleccionar cada cuanto
tiempo queremos que actúe (1 a 60000 ms), poner 125 ms→ Compilar y transferir el
Hardware a la CPU.

Comprobar que con los bits 0 al 7 de MW10, hemos creado generadores de impulsos
(MB11).
Si el tiempo de ejecución del OB35 es de 125 ms.
 El M11.0 será un generador de 0‟25 S
 El M11.1 será un generador de 0‟5 S
 El M11.2 será un generador de 1 S
 El M11.3 será un generador de 2 S
 El M11.4 será un generador de 4 S
 El M11.5 será un generador de 8 S
 El M11.6 será un generador de 16 S
 El M11.7 será un generador de 32 S

Transferir el OB35 y en la tabla de estado visualizar el valor de MW10 en Binario.

18.4 PROGRAMACIÓN DEL OB121.


 El sistema operativo de la CPU llama al OB 121 cuando aparece un error
durante la ejecución del programa.

Departamento Eléctrico. AT FORMACIÓN Página 71


Programación Avanzada NIVEL II
 Cuando se produzca un error si en el autómata no está programado el OB121,
el PLC se pone en STOP y se ilumina el led SF
 Cuando se produzca un error si en el autómata está programado el OB121, el
PLC sigue en RUN y se ilumina el led SF.
Ejemplos:
 Dentro del programa se llama a un bloque que no fue cargado en la CPU
 Se numera una entrada o una salida que no existe.
 Se numera un temporizador o contador inexistente.
 Error en llamada a DB o DB inexistente.
 Llamada a un FC no cargado.
Hay dos formas de localizar los errores:
 Una es utilizando las variables temporales del OB121 y descifrando lo que
quieren decir los valores escritos en ellos.
 Otra forma es la de usar la información del módulo (descrita en segundo lugar).

A) Primera forma de chequear errores de programación.

Página 72 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

OB121_SW_FLT
B#16#21 Error de conversión BCD
B#16#22 Infracción de área en la lectura
B#16#23 Infracción de área en la escritura
B#16#28 Acceso de lectura a un registro con un puntero cuyo dirección binaria es diferente
a0
B#16#29 Acceso de escritura a un registro con un puntero cuyo dirección binaria es
diferente a 0
B#16#24 Error en área de lectura
B#16#25 Error en área de escritura
B#16#26 Error en dirección de temporizador
B#16#27 Error en dirección de contador
B#16#30 Acceso a un DB global protegido contra escritura
B#16#31 Acceso a un DB de instancia protegido contra escritura
B#16#32 Error de número de DB en el acceso a un DB global
B#16#33 Error de número de DB en el acceso a un DB de instancia
B#16#34 Error de número de FC en la llamada a FC
B#16#3A Acceso a un DB no cargado, el número de DB esta dentro del área admisible
B#16#3C Acceso a un FC no cargado, el número de FC esta dentro del área admisible
B#16#3D Acceso a un SFC no cargado, el número de SFC está dentro del área admisible
B#16#3E Acceso a un FB no cargado, el número de FB está dentro del área admisible
B#16#3F Acceso a un SFB no cargado, el número de SFB está dentro del área admisible

OB121_FLT_REG
En la mayoría de los casos indica el número de registro afectado (decimal).

OB121_BLK_TYPE
Tipo de bloque en el que ha aparecido el error (en S7–300 no se consigna aquí un valor
vigente):
B#16#88: OB
B#16#8A: DB
B#16#8C: FC
B#16#8E: FB

Departamento Eléctrico. AT FORMACIÓN Página 73


Programación Avanzada NIVEL II

OB121_BLK_NUM (decimal)
Número del bloque donde ha aparecido el error
NOTA:-Transferir todos los módulos a excepción del FC34, e ir localizando los errores de
programación realizados.

Página 74 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

B) Chequeo de los errores en el búfer de diagnóstico.. Se hará en el editor


AWL/FUP/KOP

Activar la entrada E124.3 y comprobar en la tabla de variables los valores que me darán los
datos del error ocurrido.

Departamento Eléctrico. AT FORMACIÓN Página 75


Programación Avanzada NIVEL II

Ir a la información del módulo y comprobar el error ocurrido.

Página 76 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II
Activar la entrada E124.0 y comprobar en la tabla de variables los valores que me darán los
datos del error ocurrido.

Ir a la información del módulo y comprobar el error ocurrido.

Activar la entrada E124.1 y comprobar en la tabla de variables los valores que me darán los
datos del error ocurrido.

Departamento Eléctrico. AT FORMACIÓN Página 77


Programación Avanzada NIVEL II

Ir a la información del módulo y comprobar el error ocurrido.

Activar la entrada E124.2 y comprobar en la tabla de variables los valores que me darán los
datos del error ocurrido.

Página 78 Departamento Eléctrico. AT FORMACIÓN


Programación Avanzada NIVEL II

Ir a la información del módulo y comprobar el error ocurrido.

Transferir el FC34 al PLC y activar de nuevo la entrada E124.2 y comprobar en la tabla de


variables los valores que me darán los datos del error ocurrido.

Ir a la información del módulo y comprobar el error ocurrido.

Departamento Eléctrico. AT FORMACIÓN Página 79


Programación Avanzada NIVEL II

Página 80 Departamento Eléctrico. AT FORMACIÓN

También podría gustarte