lunes, 30 de marzo de 2015

El reloj del Siemens S7 1200

El reloj del Siemens S7 1200.

Con el reloj del autómata podemos hacer bastantes cosas. Lo primero que tenemos que aprender es a ponerlo en hora, para seguir, con diferencias de tiempo, contadores de funcionamiento y cambios de horarios.

Tipos de datos de fecha y hora que manejamos.

Tipo de datoTamañoRangoEjemplos
Time32bits
T#-24d_20h_31m_23s_648ms a
T#24d_20h_31m_23s_647ms
Almacenado como: -2.147.483.648 ms hasta
+2.147.483.647 ms
T#5m_30s
T#1d_2h_15m_30s_45ms
TIME#10d20h30m20s630ms
500h10000ms
10d20h30m20s630ms
Date16bitsD#1990-1-1 a D#2168-12-31
D#2009-12-31
DATE#2009-12-31
2009-12-31
Hora32bitsTOD#0:0:0.0 a TOD#23:59:59.999
TOD#10:20:30.400
TIME_OF_DAY#10:20:30.400
23:10:1
DTL12bits
Mín.: DTL#1970-01-01-00:00:00.0
Máx.: DTL#2554-12-31-23:59:59.999 999 999
DTL#2008-12-16-20:30:20.250
Creo que con esta tabla quedan muchas cosas claras de como utilizar los datos del reloj y sus posibles usos.

Falta añadir, que el tipo de dato DTL solo es posible su utilización a través de la programación en SCL, no es posible su utilización ni en FOB ni KOP. Si queremos poner el reloj en hora mediante un programa este tendrá que estar escrito en SCL, la otra opción es a través de TIAPortal en la configuración de la CPU.


Para terminar y que no decaiga la moral, si queremos trabajar con el reloj en hora local lo tendremos que hacer con la instrucción RD_LOC, que utiliza la información de la zona horaria (GMT+1) para proporcionar la hora correcta de nuestro país. La instrucción RD_SYS proporciona la hora del sistema, esto quiere decir que GMT+0 siempre. Estas instrucciones solo se pueden utilizar en programación SCL.

Leer la hora del reloj.

Para hacer una lectura del reloj podemos usar dos instrucciones RD_SYS y RD_LOC, ya explicado con anterioridad la diferencia entre las dos, ambas funcionan igual salvo el tema de la zona horaria RD_SYS no la usa y RD_LOC si. He hecho un pequeño programa que podéis descargar, esta escrito en SCL y a continuación paso a explicar.


El programa a sido escrito dentro de una FC. La primera linea carga en la variable “Terror” el dato de tipo INT que devuelve la función RD_LOC, este dato es una indicación del funcionamiento del reloj, si su valor es cero quiere decir que los datos presentes a la salida de la función son validos, en dicha salida tendremos un tipo de dato DTL. Posteriormente comprobamos mediante una sentencia IF-THEN que los datos son correctos, si es así activamos la salida binaria de la FC “HoraOK” y la descomposición del tipo de dato DTL en tipos de dato Usint y Time_Of_Day o TOD. en la que las primeras tendremos una salida en la FC para la hora, minuto, día, mes y año, todas por separado y en la segunda el tipo de dato TOD con hora, minuto y segundo todo en una misma salida.
Si la variable “Terror” es distinta del valor “0” es decir se a producido un error en el reloj la salida “HoraOK” vale “0” al igual que el resto de salidas.

Listado de variables.



Fijaros en el detalle HoraDeCPU es una variable de tipo DTL que en realidad es una variable de tipo compuesta.

Enlace de descarga del Programa:
Ejercicio manejo del reloj 1

Nota: en la explicación digo que el programa se ha hecho sobre una FB pero el ejercicio lo he modificado sobre el original y esta hecho sobre una FC.

Pongamos el reloj en hora.

Como he escrito con anterioridad hay dos formas de poner el reloj en hora, una a través de la instrucción WR_SYS que comentare mas a delante, la otra mediante la configuración de la CPU, para ello iremos al, árbol de proyecto>> Dispositivo CPU >> Online y Diagnostico >> Establecer Conexión >> Desplegar Funciones >> Ajustar hora >> Aplicar.

Mediante la función WR_SYS, ajustamos solamente la hora y fecha del sistema, recordad que hora del sistema, no es la hora local; (H. Sistema GMT+0 y H. Local GMT+n).

Al igual que en la lectura del reloj empleamos una variable DTL, para escribir haremos lo mismo. Como ya sabemos el tipo de variable DTL, es una variable compuesta y no es necesario escribir en todo los términos, por ejemplo solo queremos escribir los que hacen referencia a la hora, minuto y segundo e ignorar los de la fecha, esto se puede hacer.

Descargar desde el enlace:
Ejercicio del manejo del reloj 2

miércoles, 25 de marzo de 2015

Conectamos Basic Panel

Conectamos Basic Panel (la Pantalla).

Bien llegamos a lo visual!!! y que sera algo que tendremos en cuenta a la hora de hacer las practicas, el darles una cara mas amable. A partir de aquí intentare que los ejercicios que haga cuenten con una interfaz gráfica.

Lo primero la parte física montar y conectar el panel. El panel que viene en el kit tiene dos tomas, una de alimentación y otra de ethernet.

La alimentación es de 24VCC y una corriente de consumo maxima de 550mA , no es aconsejable aprovechar la salida de alimentación del autómata, por que esta se quedaría muy justa para poder alimentar el panel y que ni decir tiene si la salida de alimentación del autómata tuviera algo mas conectado, (ver Manual del sistema S7 1200, pagina 744, Imax 300mA).

Creo que queda claro, que necesitamos una fuente de alimentación a parte,para poder hacer funcionar el panel de una forma segura, sin quemar nada.

Una vez hechas las advertencias necesarias, vamos a conectar el panel KTP600 (que es el que yo tengo). Conectamos la alimentación correctamente polarizada, si no el panel no funciona, después el cable de red, en un principio al PC con el que programamos y alimentamos el panel.

Una vez arrancado se queda a la espera de trasferencia del archivo que contiene nuestro programa. Pero, como es la primera vez tendremos que hacer otras cosa antes.

Lo primero es cancelar la espera de trasferencia, pulsaremos sobre “cancelar” y pasamos a otra ventana con tres botones de opciones elegimos “control panel”, aparece una nueva ventana con seis iconos, pulsamos sobre “profinet” y nos aparece el panel de configuración “Profinet Settings”. Aquí podemos dejar que se determine automáticamente la dirección IP o hacerlo nosotros de forma manual. Y ahora lo dejo a vuestro gusto, si optáis por el modo manual proceder de la siguiente forma, primero tenemos que estar en “Profinet Settings” en la pestaña “IP Adress” seleccionar “Specify an IP adress”, determinar IP y DNS, poner IP 192.168.02, DNS 255.255.255.0. y ahora os explico el porque, el ordenador tiene fijada es dirección para buscar el panel así dejaremos de modificar mas datos o tener que decir al ordenador en que dirección IP esta el panel. De segundo ir a la pestaña de “Device” dar un nombre al panel, con letras minúsculas, y por ultimo pulsar OK, si nos aparece un icono con un reloj de arena quiere decir que nuestra configuración se está grabando y que todo ha ido bien, si no..... ya sabéis algo hemos hecho mal.

Para terminar con el tema de la configuración de la pantalla recomiendo activar el protector de la misma. Situémonos ahora en “control panel” pulsar sobre el icono “Screensaver Settings” se abre otra ventana donde podemos determinar el tiempo que nuestra panel permanecer encendido después de un ultimo uso, el tiempo está en minutos. Para volver a encender la pantalla después de haberse apagado solo hay que pulsar sobre la misma pantalla.

Programación de la pantalla

Iremos a TIAportal e iniciaremos un nuevo proyecto, configuraremos el autómata como lo hemos hecho asta ahora y luego pasaremos a agregar pantalla y nos aparece el asistente del panel de operador, en mi caso elijo KTP600 Basic Color PN y muy importante elegir versión de Sofware correcta.




Para seguir dar a aceptar.



Ahora se abre el asistente para el panel del operador donde determinamos la conexión con el PLC que nos interesa en el caso de que halla varios. Pasamos a siguiente.



En formato de imagen, determinaremos el color del fondo y quitaremos el encabezado, pasando a la siguiente.



Pantalla de avisos, yo los he quitado todos para hacer las primeras practicas, pasamos a siguiente asta llegar a la pantalla de botones donde los quitaremos todos menos el de encendido y apagado y finalizar.



Entramos ya en la pantalla de programación de TIAportal, como podemos comprobar se nos queda un mensaje de bienvenida en el centro de la representación del panel, este se puede quitar simplemente situando el cursor sobre el y pulsando el botón derecho del ratón, se despliega el menú y elegimos borrar y ya esta quitado.

He hecho un pequeño ejercicio, para mostrar el funcionamiento del panel y el PLC trabajando juntos . De momento no me voy a meter en explicaciones de como crear gráficos para el panel, pero si habéis trabajado con WinCC esto es casi igual. Para los que no colgare unos ejercicios que hice en WinCC para que vayáis conociendo el tema al igual que espero poder crear vídeos de como creo yo los míos en los ejercicios que vaya haciendo.

“La paciencia es la madre de todas las ciencias”

Descárgate el programa del siguiente enlace:
Activar una salida desde el panel

Ah!! se me olvidaba.

Si queremos volver a cargar una nueva imagen en el panel tenemos que proceder como la primera vez, compilar la imagen, grabar y proceder a cargar en el panel. Para ello tenemos que ir al panel físico (el de verdad) y situarnos en la ventana “Loader” y pulsar sobre el botón “Trasfer”, después volver al ordenador y pulsar en “cargar en el dispositivo”. Cuando finalice la carga nos aparecerá la nueva imagen en el panel.

Si, el dispositivo que estamos programando no nos aparece en el árbol de proyecto como HMI_1(KTP600 Basic Color PN). Tenemos que saber que tanto la IP como el nombre del dispositivo cambian, por lo tanto la comunicación entre TIAportal y el panel no sera posible, para que sea posible tendremos que cambiar la IP y el nombre en el propio panel.

Para saber cual es la nueva IP y el nombre iremos al árbol de proyecto >> HMI_1(KTP600 Basic Color PN) >> Configuración de dispositivo >> propiedades >> General >> Interfaz PROFINET.

Hay veremos los datos de la IP y el nombre que tendremos que poner en el panel.

sábado, 14 de marzo de 2015

Como conectar el S7 1200 al ordenador

Como conectar el S7 1200 al ordenador

Mis primeros pasos con TIA portal y el S7 1200.

instalación de TIA portal.
Lo primero, instalar el programa, tardara casi una hora, cuando ya esta todo prácticamente instalado nos pide que le conectemos el pendrive para que cargue la licencia del programa y se termina de instalar, ojo con el Windows 8 la carga del programa se puede quedar bloqueada a mi me ha pasado.
La mejor solución desistalar el programa y volverlo a instalar.

La primera ejecución del programa.
Lo primero que tenemos que hacer es elegir la CPU con la que vamos a trabajar. Para ello, tenemos que seguir los siguientes pasos.
  1. En el portal elegir la opción crear un proyecto, nombre, ubicación donde se guarda y comentarios.
  2. Configurar un dispositivo, elegir la opción agregar dispositivo, se despliega un menú con todas las CPUs que podemos elegir, seleccionar la que interese, mas el numero de serie y agregar.{si tienes problemas}
  3. En la ventana seleccionamos dispositivo PLC 1, automáticamente dejamos el portal y se nos abre una ventana el la que aparecerá el modelo de CPU elegida, seleccionamos con un “clic” de ratón sobre la CPU, con la tecla de la izquierda y luego con la tecla derecha del ratón se nos abre un nuevo menú donde elegiremos “propiedades” aquí es donde le damos un nombre a la CPU, su IP y varios datos mas. Si no queremos hacer nada especial y como principiantes que somos dejarlo como esta.
  4. Compilar el harware. Volvemos sobre la imagen de la CPU seleccionamos nuevamente y con el la tecla de la derecha del ratón abrimos de nuevo el menú elegir “compilar >harware y Sofware” se nos abre una ventana el la que veremos el proceso de compilación si todo es correcto las marcas serán todas de color azul, rojas o de otro color si hay problemas, algo.
  5. Conectaremos la CPU a la linea eléctrica para alimentarla y el cable de ETHERNET entre la CPU y el ordenador, una vez veamos que la CPU funciona, pasaremos a seleccionar la CPU sacar el menú y elegir “cargar en dispositivo > configuración del harware”, se abre otra ventana “Carga avanzada > Tipo interfaz >opción PN/IE, pasar a interfaz PG/PC > de todos los puertos de comunicación que aparecen elige la tarjeta red de tu PC que tienes conectada la CPU y si todo va bien nos deja > Cargar > nos pide asignar una IP al ordenador > si y en la siguiente ventana te aparece > “aceptar”, pulsar y se nos carga la configuración en la CPU ya podemos pasar a programar.
Empezar a crear un programa.
Ir a árbol de proyecto.
  1. Buscar “Variables PLC” y nos mostrara una tabla donde crearemos todas las variables que creamos necesarias para nuestro proyecto.
  2. Elegir lenguaje de programación. En el árbol de proyecto seleccionar “main OB1”> y con la tecla derecha del ratón volver a seleccionar, se despliega un menú, seleccionar “propiedades>General>lenguaje> elegir KOP o FUP > y “aceptar”.


Si tienes un problema 1.


Si no te deja elegir la CPU o mejor dicho agregarla, consulta la ayuda del programa en el apartado, dispositivos y redes > catalogo del hardware, leyendo la ayuda daremos con la solución, este problema solo pasa la primera vez que se usa el programa.

Otra forma de conectar el PLC a PG/PC.

Otra forma de conseguir que el PLC  se comunique con nuestro PG/PC es del siguiente modo. En el arbol de proyecto de TIAportal ir a Accesos Online, allí buscar  la tarjeta controladora de red en la que nos hallamos conectado al PLC, una vez localizada, hacemos clik sobre la flecha previa al nombre de la tarjeta y se despliega el contenido de la red con todo lo que tengamos ahí conectado. 
Si no es así  aparecerá "Actualizar dispositivos accesibles", hacer doble click y ahora si aparecerán todos los dispositivos de la red.

Antes de seguir me gustaría decir que yo la tarjeta de red del ordenador prefiero tenerla con una IP fija, para así tener claro cual es cada dispositivo.

Para los que no estén  familiarizados con el tema de redes TCP/IP, quiero recordar que cada dispositivo tiene su IP y que estos deben de estar dentro de una mis red TCP/IP.

Ejemplo de IP:

Estas dos IP son de dos dispositivos de una misma red.

Dispositivo 1 IP: 192.168.2.10
Dispositivo 2 IP: 192.168.2.11

Estas dos IP son de dos dispositivos de distinta red.

Dispositivo 1 IP: 192.168.0.10
Dispositivo 2 IP: 192.168.2.11

Aunque se podrían unir manipulando la mascara de red pero eso ahora no toca.

Volviendo a la actualización de dispositivos accesibles, nos aparecerán tanto los que estén físicamente conectados a nuestra red tanto si la IP es la correcta para la mascara de red o no.

Que hacer si las IPs que aparecen no son las apropiadas para nuestra red?. Aquí tratare sobre los PLCs que tengamos conectados a la red, de los otros dispositivos que nos aparezcan cada uno puede tener una forma distinta de cambiar las IPs como son las pantallas HMI.

En los PLCs, delante de cada PLC nos aparece una flecha pulsamos sobre esta y nos sale la opción "Online y diagnostico" hacemos doble click y se abre una ventana. En esta ventana si nos fijamos en su lado izquierdo hay un menú desplegable, iremos a funciones, donde podremos cambiar la dirección IP de nuestro PLC.

Primero es conveniente comprobar que reconoce la MAC del PLC coincide con la de la ventana, si no es así, pulsar sobre "Dispositivos Accesibles " si la MAC del dispositivo coincide con la de la ventana podemos pasar a cambiar la IP del PLC, por la que nos interese. Para terminar pulsar sobre "Asignar IP", la dirección IP sera asignada al PLC.

Una vez asignada la nueva IP, toca cambiar la IP del Proyecto que cargaremos en el PLC. Para ello iremos a el árbol del menú de proyecto y desplegamos el menú de el PLC  elegido para nuestro proyecto y que tiene que coincidir con el PLC conectado a la red en tipo, modelo y versión, para una conexión efectiva.

Desplegado el menú del PLC del proyecto, iremos a "Configuración de dispositivos" haciendo doble click sobre el, se abre una ventana donde aparece la imagen  del PLC, situando el cursor sobre esta imagen hacer click con el botón derecho. Aparece un menú, ir a a la opción "Propiedades" emergerá una ventana nueva, en esta buscar la opción del menú de la izquierda "Direcciones Ethernen"  a la derecha aparece la dirección IP del proyecto que debe de coincidir con con la IP que hemos asignado anteriormente en la configuración de red. Si no es así deberemos de modificar para que las dos sean iguales.

Todo este proceso lo tenemos que hacer sin haber establecido conexión con el PLC. El estableciento de conexión al que me refiero es el que realizamos a la hora de pasar el programa al PLC y no a la Conexión física que si que tendrá que estar hecha como es evidente.   


lunes, 9 de marzo de 2015

Empezamos a programar

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.

descarga el programa en este enlace:
Temporizadores

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


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

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.


sábado, 7 de marzo de 2015

Álgebra de Boole



Álgebra de Boole

Son necesarias las matemáticas en nuestro día a día? SI!, es necesario conocer el álgebra para diseñar? SI! Y te diré el porque. Cuando empezamos a idear un automatismo nuestra mente empieza a imaginar un circuito y de seguida nos ponemos delante del ordenador a crear ese automatismo con sus circuitos, bien de contactos o con puertas lógicas. Este es nuestro primer error, o al menos que seamos alguien ya muy experimentando solucionando problemas de lógica, lo mas probable es que simulación tras simulación vayamos dándonos cuenta de todos los errores que hemos cometido durante el diseño. Si esos errores, son simplemente cambiar un contacto abierto por otro cerrado, o eliminar o recolocar otros contactos, son fallos menores, pero si fallo tras fallo nos damos cuenta de que el diseño esta mal, tendremos que volver a empezar de nuevo con la consiguiente perdida de tiempo, “El tiempo es oro, tanto si trabajas para ti como para tu jefe”.

El conocer el álgebra de Boole y empezar con un buen planteamiento del problema de automatización, no nos asegura que el automatismo nos funciona a la primera pero si que cometamos errores nos obliguen a plantearnos de nuevo todo el diseño.

En este blog no voy a explicar el álgebra con profundidad, pues existe mucha literatura ya publicada tanto, en internet, como por ediciones escritas, que personalmente las prefiero.

Enlaces de Paraninfo y Marconbo

principios del álgebra de Boole

Pongamos los principios claros, un repaso:
un contacto abierto es = 0

un contacto cerrado = 1


Ni que decir tiene que tenemos que conocer el sistema binario.

Binario 0010 = 2 decimal
binario 1100000 = 96 decimal

Pasar de decimal a binario.




Pasar de binario a decimal.




La resta
Semirestador

Un semirestador no es otra cosa que una suma exclusiva o puerta lógica tipo XOR.
Expresión algebraica
R = A (+) B (resta)
C= ĀB (acarreo)

tabla de la verdad

A
B
Resta
acarreo
0
0
0
0
0
1
1
1
1
0
1
0
1
1
0
0
Esto es si queremos restar un bit, pero si queremos restar un byte?

Restador completo por complementos a uno

la resta de complementos a uno se realiza sumando, el sustraendo al minuendo pero, primero hemos de hacer la inversión lógica del sustraendo es decir tenemos que pasar los 0 a 1 y los 1 a 0 y posteriormente sumar sustraendo y minuendo. En caso de producirse acarreo en en el bit de mayor peso este pasara a sumarse al bit de menor peso del resultado y se considera una resta positiva.

Si el resultado de la suma no produce acarreo la resta es negativa, con lo cual tenemos que hacer la inversión lógica del resultado para tener el resultado correcto.

45>>0101101 invertido 1010010
81>>1010001 invertido 0101110
81 >>1010001
45>+ 1010010
         10100011
                    +1
                     0100100 >> 36

Restador por complemento a doses

Consiste en hacer la inversión lógica del sustraendo y sumarle 1 en el bit de menor peso. Si el resultado de la suma del sustraendo y el minuendo es positivo por que ha habido acarreo el resultado es el correcto ignorando el acarreo, si es negativo, por que no ha habido acarreo tendremos que hacer el complemento a dos del resultado. Es decir haremos la inversión lógica del resultado y le sumaremos 1.

45>>0101101 invertido 1010010 complemento a dos 1010011
81>>1010001 invertido 0101110
1010001
+1010011
10100100

ignorar

Semisumador y sumador completo

semisumador

A
B
R
0
0
0
0
1
1
1
0
1
1
1
1


Sumador completo

Cn
A
B
R
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
1

A = primer sumando.
B = segundo sumando.
Cn = acarreo.
R = resultado.

Postulados del álgebra de Boole


NOTA: como no puedo representar bien algunas de las formulas e decidido colgar un archivo PDF en el siguiente enlace:
1º postulado.
A+B=R
para contactos en paralelo.

A
B
R
0
0
0
0
1
1
1
0
1
1
1
1

2º Postulado.
AxB=R
para contactos en serie.

A
B
R
0
0
0
0
1
0
1
0
0
1
1
1

3º Postulado.
A+1=1
La asociación de dos contactos en paralelo con uno de ellos siempre cerrado (1) equivale a (1)

4º Postulado.
A+0=A
La asociación en paralelo de un contacto siempre abierto con otro (A) es igual a (A).

5º Postulado.
Ax0=0
La asociación en serie de un contacto (A) con otro siempre abierto es igual a cero.

6º Postulado.
Ax1=1
La asociación de dos contactos en serie y uno de ellos siempre cerrado es igual a (A).

7º Postulado.
A+xA=A
La asociación de dos contactos iguales en paralelo equivale a uno de ellos.

8º Postulado.
AxA=A
La asociación de dos contactos en serie e iguales equivale a uno de ellos.

9º Postulado.
A+B=B+A

10º Postulado.
AxB=BxA

11º Postulado.
A+B+C=A+(B+C)=(A+B)+C
AxBxC=A(BxC)=(AxB)C

12º Postulado.
A(B+C)=AxB+AxC
Propiedad distributiva respecto al producto

13º Postulado.
A+BxC=(A+B)x(A+C)
Propiedad distributiva de la suma respecto al producto.

14º Postulado.
A+Ā=1

15º Postulado.
AxĀ=0

16º Postulado.
=
A=A
Dos veces negado es igual a la misma variable.

17º Postulado.
A+B=C también A+B=C

Teoremas de Morgan

Permite trasformar funciones suma por funciones producto y viceversa, con lo cual, entre otras cosas, permite realizar los circuitos con un único tipo de puerta logica.

Teorema 1.
A+AxB=A

Teorema 2.
A(A+B)=A

Teorema 3.
A+AxB=A+B

Teorema 4.
(A+B)xB=AxB

Teorema 5.
(A+B)x(A+C)=AC+AB

Teorema 6.
A+B=AxB

Teorema 7.
AxB=A+B

Todos estos, postulados y teoremas, son los que nos ayudan a diseñar el circuito, tenerlos presentes considero que son imprescindibles y espero poder demostrártelo mas adelante.

Tabla de Karnaugh

La tabla de Karnaugh, nos ayudara de forma gráfica a simplificar nuestro circuito a partir de la tabla de la verdad y el resultado es una función. Aunque este método es valido asta cuatro variables del mismo problema, no deja de tener su utilidad y ayuda a reducir el tamaño del circuito sin perder toda su funcionalidad.
También añadiré, que es importante como ordenamos las variables en la tabla de la verdad, ya que nos puede ayudar a simplificar el problema y si lo hacemos mal, complicarlo.
No me voy a extender mas en ejemplos y explicaciones al menos de momento ya que como dije al principio hay mucha literatura sobre el tema.