Empecemos
a programar.
El
programa o la base de nuestro programa, se escribe en el bloque de
organización (OB1), este programa se escribe en los segmentos del
bloque, en lenguaje que hayamos elegido para ese segmento.
Podemos
crear nuestro programa en este bloque, pero si este es extenso, lo
mejor es estructurarlo en FBs o Fcs para una mayor y mejor compresión
del programa. También podemos crear otros OBs para la atención de
eventos, alarmas y errores de nuestro bloque principal.
Que
son las FB y FC.
Son
otros bloques lógicos, que son llamados por otros FB,FC o OB a modo
de subrutinas, que cuando se ejecutan realizan las tareas asignadas
y a su termino devuelven el control al bloque que realizo la llamada.
Como
funciona una FB.
El
bloque que efectúa la llamada transfiere parámetros al FB e
identifica un bloque de datos determinado (DB) que almacena los datos
de la llamada o instancia específica de este FB. La modificación
del DB instancia permite a un FB genérico controlar el
funcionamiento de un conjunto de dispositivos.
Como
funciona una FC.
Una
función (FC) es una subrutina que se ejecuta cuando se llama desde
otro bloque lógico (OB, FB o FC). La FC no tiene un DB instancia
asociado. El bloque que efectúa la llamada transfiere los parámetros
a la FC. Los valores de salida de la FC deben escribirse en una
dirección de la memoria o en un DB global.
Como
puedes ver, este tipo de función es el mas parecido a las
subrutinas, que se tratan con el S7 200.
instrucciones
básicas.
Vamos
a ver unas cuantas instrucciones básicas y mas utilizadas a la hora
de crear un programa. Sin lugar a duda la mas utilizada va ser el
contacto abierto o cerrado, que podremos arrastrar desde la carpeta,
“operaciones lógicas de bits” en la pestaña de herramientas, o
bien si tenemos montada la interfaz de bloque, desde allí, lo
podemos arrastrar asta el segmento deseado y empezar a crear la
lógica de ese segmento.
Los
Temporizadores
En toda función, (OB,FB,FC)
hay que declarar el temporilizador que vamos a usar, para ello ir al
simbolo de cuadro vacio en la interfaz de bloque y arrastrar asta el
segmento que nos interese, en el simbolo de cuadro vacio pulsar sobre
"??" y en el menú contextual elegir función
que va a realizar (TON, TOF, ...) pero, elegir el
símbolo que es parecido a un enchufe de color azul y que no es otra
cosa que un bloque de organización. Después se abre una ventana
para dar nombre y orden a la base de datos, ya tenemos el bloque del
temporizador, ahora nos queda dar valor a “PT” que lo debemos
hacer como una variable de tipo TIME, constante o indirectamente y en
el que vendrá reflejado el tiempo en milisegundos que nuestro
temporizador estará poniendo o retrasando la puesta a nivel alto de
la salida “Q”, en la que conectaremos lo que queramos activar.
La salida ET,
no es otra cosa que el tiempo que nos queda de la temporalización,
el dato de salida de la variable es de tipo TIME.
Las bases de
datos de las temporizaciones, las podemos ver en la ventana del árbol
de proyecto, iremos al menú del proyecto, opción, Bloques de
programa > bloques del sistema > recursos del programa > y
aparecerá un listado con las bases de datos que estamos utilizando.
Otra manera de
colocar una temporización en un segmento de la ventana de
programación es,
ir a la
pestaña de “instrucciones” abrir carpeta de “temporizadores”
y elegir el bloque temporizador (recuerda el que tiene forma de
enchufe y es de color azul) que nos interesa y arrastrar asta el
segmento.
Arrancar
una temporización
Una vez ya
hemos declarado la temporización, la podemos arrancar desde la misma
declaración poniendo a uno la entrada “IN”. Pero si en otra
parte del programa nos hace falta volver a arrancar la temporización
no hace falta que la volvamos a declarar , simplemente iremos de
nuevo a la pestaña instrucciones elegiremos la carpeta
temporizadores y arrastraremos alguno de los símbolos que están
poniendo entre paréntesis el tipo de temporalización que deseamos
arrancar y lo arrastraremos al segmento que nos interese, una vez
allí, lo configuraremos haciendo referencia al temporizador que
deseamos arrancar.
Contadores
básicos en el S7 1200
Al igual que
ocurre con las temporizaciónes los contadores son también un
“objeto” por lo tanto también tienen una base de datos. El
proceso para crear el contador es idéntico al del temporizador, los
dos caminos explicados para colocar una temprización en el
segmento, es hacer lo mismo para el contador.
La diferencia
entre el contador y el temporizador a parte de su función propia, es
a la hora de activar su tarea o marcha, mientras en la temporización
tenemos que declarar el objeto y que este mismo ya realizara su
trabajo, pero, si posteriormente queremos volver a utilizar esa misma
temporización debemos utilizar una instrucción propia de arranque
para volver a usarla. El contador no tiene instrucciones de arranque
a parte del propio objeto por lo tanto debemos de usar un objeto
contador cada vez que nos haga falta.
Puesta en
marcha de un contador
Una vez
colocado el contador en el segmento deseado debemos de conectarlo.
- CU es la entrada que nos registra los pulsos que va a contar el contador.
- R es el borrado del contador “reset”.
- PV es el valor máximo que deseamos que cuente y que provocara la activación de la salida Q, el tipo de dato siempre entero (int o Dint).
- Q como ya e dicho es una salida de tipo binario que pasa a estado alto una vez se a alcanzado o superado el valor de PV.
- CV es el dato que nos indica cuanto nos falta para llegar a el valor tope indicado en PV.
Los dos tipos
de contadores que nos quedan son el, descontador y
contador-descontador. El descontador es lo mismo que el contador,
pero con la diferencia que PV tiene el valor a partir del cual
empezara a descontar y desaparece R y tenemos LD, que lo que hace es
volver a cargar el valor de PV he iniciar de nuevo el descontaje.
El
contador-decontador no es otra cosa que un contador reversible es
decir la suma de los dos anteriores si los pulsos los recibe la
entrada CU el contador cuenta y una vez alcanzado el valor de PV
activa QU. Si los pulsos los recibe CD descuenta y cuando llega a
cero activa la salida QD.
Descarga el programa desde este enlace:
Contador
Descarga el programa desde este enlace:
Contador
Crear
una Función FC
Crear un FC es sencillo,
tenemos que ir a la ventana del árbol de proyecto, pulsar dos veces
seguidas sobre la opción de menú “Agregar nuevo bloque”, se nos
abre una ventana nueva donde tenemos que elegir, bloque, función o
DB, evidentemente tenemos que elegir función FC, posteriormente
tenemos que dar nombre a la función, numerar y aceptar. Dicha
función nos aparecerá en el árbol de proyecto y si queremos
trabajar dentro de ella solo tenemos que pulsar dos veces seguidas
sobre la misma y en la ventana, interfaz de bloque nos aparece el
primer segmento de la función listo para ser escrito.
Para realizar la llamada de
la función desde OB, tenemos que proceder de la siguiente forma ,
nos dirigiremos nuevamente al árbol de proyecto situaremos el
cursor sobre el bloque FC 1 y lo arrastraremos asta el segmento que
nos interesa de la ventana de interfaz de bloque y soltaremos el
cursor. Si la llamada va a ser condicionada evidentemente la lógica
programada tendrá que ir delante del bloque FC1.
Como
interactua FC con OB
Lo puede hacer de dos
maneras diferentes usando las marcas de memoria o mediante una base
de datos global.
Mediante las marcas lo que
hace FC cuando se ejecuta es leer las que le hacen falta para su
ejecución y vuelca el resultado en otra marca de las variables del
PLC así de sencillo.
En cuanto a la DB global es
que en esta introduciremos todos los datos o variables en la DB,
menos, las variables que hagan referencia a entradas y salidas del
autómata por que estas no funcionaran.
Lo que la DB hace es de
intermediario entre FC y OB, la DB puede ser leída y escrita por
otras funciones que harán uso de los datos a su antojo. Otras
ventajas de usar DB es que estas se pueden copiar, guardar o enviar
fácilmente en otros dispositivos.
Un ejemplo podría ser, un
autómata recibe información de unos dispositivos externos que
mandan una DB con información conformada entre ambos, esta
información es procesada por el autómata y devuelve el resultado al
dispositivo solicitante mediante una DB de respuesta. Si esto lo
hiciéramos con variables del PLC cada dispositivo tendría que
tener sus variables reservadas en el PLC con el consiguiente
ocupación de memoria que ello tendría al igual que cada dispositivo
le tocaría tener una FC propia por lo tanto mas consumo de memoria
del PLC.
Descarga los programas de los siguientes enlaces:
programa con una FC
FC con DB global
Descarga los programas de los siguientes enlaces:
programa con una FC
FC con DB global
Crear
una Función FB
Quisiera poder seguir con el
tema de las funciones y ahora le tocaba a las FB, pero, a surgido un
problema y es que aunque TIAportal, deja las creemos no podemos
programarlas ni en KOP ni FUP solo en SCL, intentarlo vosotros y
veréis, que cuando indicáis un lenguaje distinto al SCL, creamos
el bloque de FB y después creamos y abrimos la DB no os deja meter
ninguna variable en la DB.
Por lo tanto vamos a dejar
el tema de las funciones y de la programación en SCL para mas
adelante ya que este tema el de la programación en SCL es bastante
extenso.