Leyendo y escribiendo fecha y hora desde PLC y WinCC RT Advanced

Contestando a una pregunta realizada, voy ha hacer la siguiente práctica de como leer y escribir la hora en una CPU S7-2xx y poder modificarla desde la pantalla, yo como pantalla voy a utilizar el PC con WinCC RT Advanced, esta misma configuracion se puede aplicar a WinCC Flexible PC Runtime.

Para poder leer y escribir disponemos de dos funciones o cuatro, dependiendo de la CPU que estes utilizando, en este caso tengo habilitadas las 4 funciones, pero voy a utilizar las básicas.

Lo primero que vamos ha hacer es consultar el manual para saber como funciona la función y el tipo de datos a utilizar

Una vez revisado, ya sabemos que en T vamos a introducir un puntero a la primera direccion de memoria. a partir de esta utilizara 7 bytes consecutivos, para almacenar año,mes,dia ...

Insertamos la funcion tanto de leer como escribir utilizando VB0.......VB

Con esto ya tendriamos suficiente, pero yo he utilizado unas marcas intermedias, que no son necesarias, podriamos escribir directamente sobre VB0 para el Año, VB1 para el mes y asi consecutivamente, pero como he mencionado he configurado 7 bytes a partir de la MB10... MB17 y el programa es sencillo, muevo los valores cargados a su correspondiente memoria VBx

Y la tabla de estado para comprobar su funcionamiento es la siguiente

Compilo, compruebo que no haya ningún error y cargo el programa a la CPU, si tienes alguna duda a la hora de cargar aqui hay un ejemplo, me pongo online y leo la configuracion del reloj de mi CPU, comprobando sus valores en la tabla de estado

Abrimos nuestro proyecto en WinCC Flexible o TIA Portal y creamos la configuración para ejecutar el Runtime en el PC comunicando con el S7-200 a través del cable PPI, aqui puedes encontrar el ejemplo de dicha configuración, creamos las variables que vamos a utilizar, según este  ejemplo las siguientes.

Insertamos unos campos de Entrada y Salida para la visualización y modificación de la fecha y hora, y aqui viene una de las cosas que hay que tener presente, de lo contrario nos dará un fallo que no se visualiza. Los formatos de la fecha y hora son en BCD, es decir, su formato es del 0 al 9, bien nosotros como no disponemos de ese formato vamos a utilizar el hexadecimal y vamos a introducir los valores como si fuese en BCD, es decir el 10, lo pondremos como tal y no como 16#A , y  repetimos esto con cada campo

El aspecto final de nuestra pantalla es el siguiente, donde una vez introducidos los valores en los campos de area de memoria MB, hacemos el move, según el programa al pulsar sobre Set Valores, que esta asociada con la marca M0.0, una vez realizado esto Escribimos con la marca M1.1 o bien leemos con la marca M1.0 que esta asociada al boton Leer Reloj

Ejecutamos el Runtime y aqui el resultado, podemos leer y escribir, y los valores los hemos introducido en decimal siendo el campo configurado como hexadecimal. Espero que con esto quede resuelta la duda.

28 de Noviembre del 2012