Está en la página 1de 264

APRENDE

Version 5.1

CON EL GUAPERAS

INDICE
Cap1. Introduccin a WinCC Cap2. Comunicacin con autmatas S7 Cap3. Editor de grficos: Graphics Designer Cap4. Editor de alarmas: Alarm Logging ..... Cap5. Editor de curvas e histricos: Tagg Logging ..................................................... Cap6. Editor de informes: Report Designer..... Cap7. Programacin en C: Global Script ..... Cap8. Editor de textos: Text Library ..... 1 28 47 112

138 216 233 251

Cap9. Gestin de usuarios: User Administrator.. 254

Aprende WinCC

Captullo 1 Cap tu o IIntroducciin a WiinCC.. ntroducc n a W nCC


Notaciones.

En el presente manual se recogen una serie de notaciones simblicas que poseen el siguiente significado: Icono Significado Indica un click con el botn izquierdo del ratn. Indica un click con el botn derecho del ratn. Indica doble-click con el botn izquierdo del ratn. Indica una entrada desde teclado.

Aprende WinCC

Requisitos. Los requisitos mnimos y recomendables para trabajar con el WinCC a nivel hardware y software del PC son: Mnimo Intel Pentium II 400 MHz 256 MBytes (para servidores) 128 MBytes (para clientes) 32 MBytes adicionales 650 MBytes de espacio libre de memoria Memoria de trabajo doble 100 MBytes Recomendado Intel Pentium III > 400 MHz > 256 MBytes

CPU Memoria principal/ RAM RAM en caso de configuracin online Disco duro (sin datos del proyecto) Memoria de trabajo virtual Memoria de trabajo para spooler de impresoras Windows Grficos Resolucin

> 32 MBytes adicionales > 650 MBytes de espacio libre de memoria > Memoria de trabajo doble > 100 MBytes

SVGA (4 MBytes) 800 * 600

XGA (8 MBytes) 1024 * 768

Sistemas operativos para WinCC monopuesto o cliente: Sistema operativo Windows NT Configuracin Windows NT 4.0 Service Pack 6a o superior Windows 2000 Service Pack 2 Observaciones Instale el Service Pack antes de la instalacin de Internet Explorer. El Service Pack actual se encuentra en el CD de Internet Explorer V6.0 suministrado. El usuario ha de poseer para el manejo de WinCC como mnimo los derechos de un usuario principal ("Power User").

Windows 2000

Sistemas operativos para WinCC como server:

Sistema operativo Servidor de Windows NT 4.0 Servidor de Windows 2000 Windows 2000 Advanced Server

Configuracin Service Pack 6a Service Pack 2 con Hotfix Q300972 Service Pack 2 con Hotfix Q300972
2

Aprende WinCC

Licencias en WinCC. Si no se dispone de autorizacin de desarrollo para WinCC, se podr desarrollar durante aproximadamente una hora. Pasada la misma, pueden darse dos situaciones: Que est arrancado el runtime: en este caso aparece un mensaje de finalizacin de la demo. No podremos realizar ninguna accin hasta que validemos dicho mensaje. Sin embargo, el sistema runtime continua funcionando pese a no validar el mensaje, con lo que se continan registrando las tendencias y aparecen los mensajes de alarmas, as como refresco de variables en pantalla. A partir de este momento, cada aproximadamente 10 minutos vuelve a aparecer el mensaje. Que no est arrancado el runtime: en este caso automticamente se cierra el WinCC, permitindonos antes guardar los cambios que hubisemos realizado. Pero, cmo sabemos las licencias que tenemos instaladas en un determinado momento?. La de desarrollo lo podemos saber de una manera inmediata, ya que en la barra de estado de WinCC aparece la palabra DEMO cuando no disponemos de ella para desarrollar. Para conocer si disponemos de todas las dems (en especial necesitaremos una licencia de runtime de tantas variables como nos indique la barra de estado de WinCC) las podremos observar mediante una aplicacin llamada CCAuthorInformation, que se encuentra en el subdirectorio WinCC\bin. Lo que nos indica la ventana son las licencias de las cuales no disponemos y que nos son necesarias con nuestra configuracin actual. Con el botn view podemos ver si disponemos de una licencia en concreto. Tambin podemos saber el estado de las licencias actuales observando el fichero license.log que se encuentra en WinCC\diagnose. El fichero license.bak es la copia del fichero log con el estado de las licencias de la vez anterior que arrancamos el WinCC. Un ejemplo del fichero license.log sera:
10/06/2001 11:18:51 InitLicense CS | AppName = AppCS:Mcp | CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:18:51 InitLicense ED | AppName = AppEd:Mcp | CycleCheck = own | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:19:00 InitLicense RT | AppName = OptRT:CHIPCARD | CycleCheck = no | NameForMessageBox = | Name of License = A1WPC412 | Text of License = | 10/06/2001 11:19:08 InitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:31:51 ExitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:32:30 InitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags |

Aprende WinCC

Entrar a WinCC. A la hora de entrar al Windows Control Center V5.1 pueden darse tres circunstancias: Que no hubiera ningn proyecto abierto anteriormente, con lo que se nos pedir crear o abrir un nuevo proyecto. Que anteriormente hubiese ya abierto un proyecto, pero no se hubiese arrancado el runtime, con lo que entraremos al modo de desarrollo de WinCC. Que anteriormente hubiese un proyecto y que estuviese arrancado el runtime, con lo que automticamente entraremos al modo runtime. Esto puede ser un problema en determinadas circunstancias, como p. Ej. Que no se haya habilitado ninguna forma de salir del runtime y adems se haya deshabilitado la combinacin Alt+Tab, con lo que no tenemos manera de ir al software de desarrollo para solucionar este error. En estos casos, para evitar que al arrancar el WinCC entre automticamente al modo runtime, se debe de presionar la combinacin de teclas Ctrl+Shift durante el arranque del software, con lo que se detendr en el modo de desarrollo. Esta combinacin funciona en proyectos locales, y en un servidor, pero no en un cliente que est conectado a uno o varios servidores en sistema multiusuario.

Aprende WinCC

Salir de WinCC. Para salir de WinCC, en el men Archivo->Salir disponemos de dos opciones: Salir de WinCC Explorer y cerrar el proyecto: Si ha seleccionado esta opcin se sale de WinCC Explorer y la runtime se cerrar previamente. La siguiente vez que entremos a WinCC Explorer abrir el proyecto y arrancar la runtime automticamente. Salir de WinCC Explorer : Si ha seleccionado esta opcin, se sale de WinCC Explorer pero la runtime se queda activada. El proyecto abierto en ltimo lugar se abrir en el siguiente inicio de WinCC.

Aprende WinCC

Crear un nuevo proyecto en WinCC. Cuando se abre WinCC sin que anteriormente hubiera abierto otro proyecto, aparece el siguiente cuadro de dilogo, indicndonos las siguientes opciones:

Vamos a realizar un proyecto para estacin monopuesto. Se nos pide el nombre del proyecto, as como el nombre del subdirectorio de nuestro proyecto (generalmente dejaremos que coincidan ambos nombres, para una ms fcil identificacin de nuestro proyecto desde el explorador de Windows NT). Este primer proyecto lo denominaremos dunkerdemo_v51.mcp. A partir de ahora, para poder ejecutar nuestro proyecto, podremos ejecutar desde el explorador de NT el fichero dunkerdemo_v51.mcp, que al estar asociado a WinCC, nos abrir nuestro proyecto automticamente.

Aprende WinCC

El explorador de WinCC posee el siguiente aspecto, una vez generado el proyecto:

A partir de ahora, para poder trasladar o copiar el proyecto a otro ordenador, bastar con copiar este subdirectorio completo, normalmente comprimindolo con Winzip o Winrar en discos previamente (herramientas no suministradas con el software). Pero hay un dato importante: el proyecto est configurado para un ordenador en concreto, cuyo nombre indicativo aparece en el apartado Equipo->Propiedades. Si el nuevo ordenador no posee el mismo nombre, al intentar arrancar el runtime, aparecer el siguiente mensaje:

El nombre indicador se puede cambiar en Equipo->Propiedades, pero lgicamente necesitaremos conocer el nombre del nuevo ordenador donde estamos copiando el proyecto. Para ello, en Inicio->Configuracin->Panel de control->Sistema>Identificacin de Red se encuentra nuestro nombre de equipo.

Aprende WinCC

Lo primero: Definir la pantalla. El primer paso en nuestro proyecto ser definir la pantalla en la que vamos a trabajar. Pondremos en la parte superior una zona comn de 1024x100, y en la zona inferior otra zona comn de 1024x100. Como disponemos de una resolucin de 1024x768, nos queda la zona central de 1024x568 para poner nuestra ventana actual.

Zona superior: para acceder a las diferentes pantallas del proyecto Zona central: para mostrar la pantalla en la que estemos actualmente Zona inferior: para acceder a los botones de funciones. Como hemos dicho, se supone que sabes de WinCC, por lo que te lo dir en una sola frase: crate un proyecto, la pdl inicial que se llame start.pdl , que tenga un tamao de 1024x768, la guardas, te haces otra que llamas top.pdl, de tamao 1024x100, y otra que se llame bottom.pdl, del mismo tamao. Bien, teniendo esto claro, abrimos start.pdl, y en la parte superior colocamos una ventana de imagen de tamao 1024x100, y seleccionamos en ventana de imagen>otros->nombre de imagen: top.pdl. Tambin activamos aqu bordes: si.

Aprende WinCC

Realizamos la misma accin para la ventana de abajo, colocando otra ventana de aplicaicon, pero esta vez en sus propiedades ponemos posicion y:668, y como nombre de la ventana bottom.pdl. Tambin ponemos el borde activo. As, dispondremos de nuestra primera ventana, ms simple que el funcionamiento de un botijo, pero la base sobre la que vamos a trabajar. Debe tener el siguiente aspecto:

Aprende WinCC

Como salir de WinCC. An no hemos empezado y ya estamos saliendo, esto va bien. Para salir de WinCC nos ponemos un botn a la derecha del todo en bottom.pdl. A m me gusta ste, que se encuentra en la biblioteca de objetos:

Lo que queremos es que cuando se pulse dicho boton, aparezca una ventana en la que podamos seleccionar el tipo de salida que deseamos. Para ello hacemos una nueva pdl llamada salir.pdl, de 300x300. En ella ponemos los siguientes botones:

Deberemos de llamar a dicha picture cuando pulsemos el boton de salir. Para ello, dentro de la picture start.pdl, nos colocamos una ventana de imagen de cualquier tamao, ms o menos por el centro de start, como muestra la figura:

10

Aprende WinCC

Las propiedades de dicha ventana de imagen son:

Y como nombre de objeto, la llamamos VENTANA_SALIR Observar que no la hacemos visible y que le ponemos titulo a la ventana, a la vez que se ajustar al tamao de salir.pdl, es decir, 300x300. Ahora nos queda hacerla visible desde el botn que hemos puesto en bottom.pdl. Entramos a los eventos de dicho botn, y en el evento clic del ratn, creamos el siguiente cdigo C:
SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);

Vamos a explicar que hace esta lnea de cdigo: SetPropBOOL es una instruccin que cambia el valor de una propiedad de tipo bool de un objeto de una ventana en concreto. En este caso deseamos que active la propiedad visible de la ventana VENTANA_SALIR que hemos puesto dentro de la picture START.PDL. El problema est en que ahora la ventana se llama start.pdl, pero mas adelante se llamar de otra manera, dependiendo de que naveguemos por las diferentes ventana de nuestro proyecto. Luego no podemos escribir en el primer
11

Aprende WinCC

parmetro de la funcin SetPropBOOL un valor fijo, debe ser variable. Dicha variable es el valor que devuelve la funcin GetParentPicture. Esta funcin devuelve el nombre de la ventana en la que est contenida la ventana desde la que es llamada. Ya s que es lioso (me lo vas a contar a m). Por eso, vamos por partes. Nosotros estamos en un botn (el de salir), que est contenido en una pdl que se llama bottom.pdl, que a su vez est contenida dentro de otra, que en este momento es start.pdl, pero que ms adelante vete tu a saber como se llama. La variable lpszPictureName nos devuelve la ventana de bottom.pdl. Y como queremos la ventana padre que contiene a la misma ponemos GetParentPicture(lpszPictureName), que nos devolver ahora mismo start, que es nuestra ventana en la que tenemos nuestro objeto ventana_salir. En este punto deberias de poder abrir en la runtime la ventana con el botn de salir, y cerrarla con la x de la derecha de la ventana emergente. Ahora nos queda darle funcionalidad a los botones de salir.pdl. Para ello utilizamos los asistentes de WinCC.

Para el primer botn utilizamos el asistente dinmico salir de WinCC runtime

Para el segundo salir de WinCC. Para el tercero salir de Windows sin reiniciar. Y para el cuarto salir de WinCC y reiniciar windows.

12

Aprende WinCC

Bien, ya salimos de WinCC, pero claro, cualquiera puede apagarnos el ordenador. Tendremos que controlar quien toca y quien no en nuestros ordenadores. Controlando a los usuarios. Vamos a organizarnos un grupo de usuarios, dentro del User Administrator. Nos editamos los dos primeros privilegios, uno como salir otro como apagar el PC y otro como parar el WinCC. El primero lo dejamos como administrar usuarios para poder entrar desde el runtime a aadir o cambiar passwords.

Les ponemos una salida de sesin automtica, para que si no se desactivan ellos, los desactive el sistema pasados 10 minutos. Bien, hemos aadido un ususario, queda asignar el nivel de proteccin al botn de salir de la ventana start.pdl . Observa al salir que el User Administrator realiza las modificaciones en tiempo real, por lo que al salir no te pide grabar, ya que lo va ehaciendo sobre la marcha. Vamos, que no hay que equivocarse (como el regedit, ser
13

Aprende WinCC

del mismo tipo el invento). Volvemos a ella, y en la propiedad otros->autorizacion seleccionamos salir.

Ahora ya no podr salir de WinCC cualquiera, sino solo los que tengan el permiso de salir. Pero vamos a definir tambin quien puede parar el WinCC y quien solo apagar el ordenador o reiniciarlo. Para ello en la pdl salir.pdl, a los dos primeros botones les asignamos el permiso de parar el WinCC, mientras que a los dos siguientes el de apagar el pc. Pero: cmo se logan 1 los usuarios?. Hay dos maneras, una cutre salchichera y otra guay y complicada. Vamos con la cutre. En el control center, pinchando con el botn derecho sobre el nombre del proyecto, aparece la ventana en la que se puede asignar una combinacin de teclas a login (logarse) y otra a logoff (deslogarse)

Pero claro, se debe de recordar cual era esa combinacin, y siempre aparece el listo que quiere un botn para activar a los usuarios. Ya la hemos liado, pensars (y ests en lo cierto), ya que la otra va a travs de C. Quita las asignaciones que acabamos de hacer, que no vamos a hacerlo por ese camino, sino por el del botn. Nos
1

Logarse: darse de alta en un sistema protegido, introduciendo tu nombre y tu password. 14

Aprende WinCC

colocaremos un botn en la pdl bottom.pdl (recuerda, bottom ser nuestra ventana para los botones de funciones, mientras que top ser nuestra ventana para los botones de entrar a las diferentes partes en las que se muestra la instalacin). El botn lo cogemos de la biblioteca:

Ahora viene lo bueno, el cdigo C, asociado en el evento mouse activo: Este Cdigo lo escribimos en una funcin de proyecto que nos hacemos nueva en el Global Script, y que llamamos login:
void login() { #pragma code("useadmin.dll") #include "PWRT_api.h" #pragma code() long usuario; usuario=strcmp(GetTagCharWait("@CurrentUser"),""); if(usuario) { PWRTLogout(); } else { PWRTLogin('c'); } }

Luego vamos al evento del botn que hemos puesto antes (la llave), y le asociamos la funcin login();
#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { // WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END login (); //Tipo de retorno :void }

15

Aprende WinCC

Con esta funcin te logas y deslogas con el mismo botn (ha sido fcil, eh?). Es mejor hacerlo en una funcin de proyecto para poder reutilizar dicho cdigo en otros proyectos copindonos simplemente el fichero login.fct que nos ha creado dentro del subdirectorio library de nuestro proyecto. Para acabar de rematar la faena, pondremos en bottom.pdl una I/O box de solo lectura, que va asociada a la variable @current_user. Esta variable la genera le sistema y es una cadena de texto que posee el texto del usuario que actualmente est logado. Con ello podremos saber en todo momento si estamos activados en el sistema o no.

La cosa va cogiendo color. Pero nos falta un detalle. Nosotros estamos poniendo los usuarios en el sistema desde el User Administrator, y quitamos, ponemos y cambiamos passwords los que queremos y mas. Pero, y cuando nos vayamos de la instalacin?. quin podr cambiar los passwords, o aadir un usuario?. Tenemos que poner un segundo botn en la pantalla bottom.pdl. Ese botn nos acceder al User Administrator. Cmo?, fcil, as:
ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");

Bien, lo primero es colocarnos en bottom.pdl otro botn de la biblioteca:

El texto que aparece en medio del botn solo lo puedes quitar si cambias e idioma en el menu del Graphics Designer, en ver->idioma, a cualquiera, y vuelves a espaol. Luego vas a la propiedad fuente->texto del botn (un fallo de WinCC, me parece a m).

16

Aprende WinCC

Asociando este cdigo al botn de administracin de usuarios, ya puede un usuario dar de alta y borrar, es decir, administrar a los dems usuarios. Claro est, a este botn creado, deberemos de asociarle un nivel de password, para que nicamente puedan entrar los usuarios con capacidad para borrar a otros usuarios. Para Poder ejecutar este cdigo debe de estar arrancada la parte de Global Script runtime de nuestro PC.

Por supuesto, a este botn (el de las dos cabecitas) deberemos de colocarle el password administrar usuarios.

Llamar a ventanas variables. Ahora queremos que cuando pulsemos el botn de administrar usuarios nos abra una ventana de men en la que podamos seleccionar: Administrar usuarios (lo de antes) Ver el histrico de usuarios (para saber qu usuarios estaban logados en qu momentos). Para hacer esto podramos abrir otra ventana y hacerla visible con el botn, pero es mejor utilizar la ventana que hemos gastado anteriormente para salir, y en funcin de porqu botn sea llamada nos muestre una pdl u otra (llamada a ventanas parametrizables). Ya te has asustado, pero no tiene porqu, que vas a ver que es muy fcil.
17

Aprende WinCC

Primeramente vamos a hacer parametrizable la llamada a la ventana que hacamos con el botn de salir (objeto botn_salir de la pdl bottom.pdl). En el evento clic del ratn de dicho objeto escribimos ahora el siguiente cdigo:
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName","salir.PDL"); SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","Salir de WinCC"); SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);

Observa que lo que hacemos es decirle de manera dinmica que la picture a mostrar es salir.pdl, que va a tener como ttulo salir de WinCC y luego la hacemos visible. Ahora en el botn de usuarios (el de las ods cabecitas), en el evento clicl de ratn, escribimos el siguiente cdigo:
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName","USUARIO S.PDL"); SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","Ventana Usuarios"); SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);

Es lo mismo de antes, solo que esta vez llamamos a la pdl usuarios.pdl, con un ttulo llamado usuarios y posteriormente hacemos visible la ventana. Pero, quin es usuarios.pdl?. Tranquilo, que an no la hemos hecho. Es la pdl siguiente, tambin de 300x300:

El cdigo que le asociamos al botn modificar usuarios es el siguiente:


ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");

Si pruebas lo hecho hasta ahora deberas de poder abrir la ventana de manera parametrizable. nicamente nos queda con el botn registro de usuarios mostrar una ventana en la que aparezca un histrico de los diferentes usuarios que se han activado y desactivado en el sistema. El problema de WinCC es que no posee esta funcionalidad de manera sencilla, y es necesario recurrir a un truco para poder conseguirla. El truco se basa en utilizar una clase de alarmas como si fuera el registro de usuarios, para que cada vez que se loge un usuario activamos la alarma, y cuando se desloge la desactivamos.
18

Aprende WinCC

Vamos a dar por hecho que conoces como trabajar con alarmas en el WinCC. Primeramente nos vamos al Alarm Loggin, y en bloques de sistema aadimos los siguientes:

En bloques de texto de usuario los siguientes:

Y por ltimo en bloques de valor de proceso el siguiente:

No aparece el bloque usuario?. En realidad es el bloque de valor de proceso 1 que lo hemos renombrado como usuario, para luego podernos aclarar mejor. En clases de aviso aadimos una nueva clase, que nombraremos como usuarios.

19

Aprende WinCC

Dentro de esta clase creamos un tipo de clase que llamamos usuario, y con el botn derecho sobre la clase de aviso usuarios definimos los textos para cuando aparezca y desaparezca la alarma:

Con el botn derecho sobre el tipo de clase usuario seleccionamos el color con que queremos mostrar la lnea de alarmas de logado y deslogado de usuarios.

Ahora seleccionamos con el botn derecho archivos, y definimos un archivo circulante.

Y por ltimo definimos un informe de archivo para poder imprimir el histrico de usuarios.

20

Aprende WinCC

Con esto ya podemos crear nuestra primera alarma, que tendr las siguientes propiedades:

La variable Login_Usuarios es una variable interna de tipo bool que hemos creado previamente.

21

Aprende WinCC

La variable usuario es una variable interna de tipo texto de 8 bits. Despus de todo tengo claro que te estars preguntando...qu estamos haciendo, narices?. Bien, vamos a recapitular. Hemos creado una clase de alarmas que es usuarios, que se activa con el bit Login_Usuarios, y que cuando aparece dice aparecido en color azul, y cuando desaparece (el bit) dice desaparecido en color rojo. Tambin sabemos que en el campo usuario va a incluir una cadena de texto que es la que contenga la variable usuario. Aqu hemos acabado. Guardamos y salimos del Alarm Loggin. Ahora vamos al Glogal Script y creamos una nueva Accin en acciones globales, cuyo fichero denominaremos usuarios.pas, y que posee el siguiente cdigo:
#include "apdefap.h" int gscAction( void ) { // WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END #pragma code ("Kernel32.dll") void Sleep(int a); #pragma code() char usuario[40]; strcpy(usuario,GetTagChar("@CurrentUser")); if (strlen(usuario)!=0) { SetTagChar("Usuario",usuario); Sleep(1000); SetTagBit("Login_Usuarios",TRUE); } else { SetTagBit("Login_Usuarios",FALSE); } return 1; } 22

Aprende WinCC

Esta accin lo que hace es copiar el nombre del usuario actual (contenido dentro de la variable interna @CurrentUser dentro de la variable interna usuario que hemos definido previamente, y activar el bit interno Login_Usuarios. Una de las cosas que te habrn extraado al leer el cdigo es porqu he definido la funcin Sleep. Como sabes la funcin Sleep lo que hace es parar la ejecucin del programa durante los milisegundos que le pasemos como parmetro. Esta funcin es necesaria debido a que si activamos inmediantamente el bit de alarma, el WinCC no tiene tiempo a actualizar el valor de la variable usuario con el nuevo valor del usuario que se est logando, por lo que aparecera vaco dicho campo al logarse, y relleno al deslogarse. Es un problema de refresco interno de la base de datos de variables de WinCC, el cual genera antes el evento de la alarma que el de refresco de la variable usuario. Si no te ha quedado claro con esta explicacin prueba mas tarde a quitar la lnea de Sleep y comprueba cual es su efecto. Ya estamos acabando. Solo nos queda disparar esta accin con un disparo que vendr dado por el cambio de la variable @CurrentUser, o lo que es lo mismo, que se active o desactive un usuario.

El disparo vendr dado por el ciclo al cambiar de @Current_User. Compilamos la accin y hemos finalizado en el Global Script. Ahora vamos al Graphic Designer y renombra la pdl start.pdl como registro_usuarios.pdl. En la zona central de la pantalla colocamos un control de tipo WinCC alarm control como muestra la figura:

23

Aprende WinCC

En las propiedades de la ventana de alarmas (que aparecen clickeando en la misma), definimos como tipode ventana=ventana de archivo temporal. Y por ltimo en la solapa lnea de avisos mostramos los siguientes bloques de avisos:

Adems deberemos de filtrar las alarmas en esta ventana para que nicamente aparezcan las del tipo usuarios, ya que ahora mismo solo exite esta, pero ms adelante crearemos ms alarmas, y no deseamos que nos aparezcan como si fuesen usuarios logandose.

Ya podemos guardar la pdl. Nos queda hacer que se muestre dicha pdl al pulsar el botn Registro de usuarios, que habamos puesto en la pdl usuarios.pdl. La funcin en c que asociaremos a dicho botn ser la siguiente:
OpenPicture("REGISTRO_USUARIOS.PDL");

24

Aprende WinCC

Ya podemos guardar y comprobar como nos ha quedado el invento, que debera de mostrar a medida que vamos logando usuarios algo como esto:

Nos queda nicamente sacar por impresora un informe con los el histrico de usuarios, igual que lo estamos sacando por pantalla. Para ello, nos vamos a ir al Report Designer. En formato de pgina tenemos un Report que se llama @alrtuma.rpl, y que lo editamos y grabamos como registro_usuarios.rpl. Vamos a modificar la cabecera del mismo para que tenga el siguiente aspecto:

La parte dinmica del mismo la editamos, y modifcamos los bloques que deseamos mostrar en el Report.

25

Aprende WinCC

Guardamos el Report y cerramos el editor. Ahora creamos una nueva orden de impresin, que posee las siguientes caractersticas:

Ya tenemos la orden de impresin. Nos queda activarla para que se imprima el Report. Para ello volvemos al Graphic Designer, y en la pdl registro_usuarios, en la parte superior, colocamos un objeto de la librera como muestra la figura:

En dicho botn vamos a asociar el siguiente cdigo C:


RPTJobPreview("orden_registro_usuarios");

Solo nos queda activar la parte de runtime referida a la impresin y las alarmas dentro de equipo en el explorador de WinCC:

26

Aprende WinCC

El resultado final al presionar el botn debe de ser algo como lo que muestra la figura:

27

Aprende WinCC

Captullo 2.. Cap tu o Comuniicaciin con S7.. Comun cac n con S7


Modos de comunicacin. Para el ejemplo que nos concierne vamos a realizar varios ejemplos de comunicacin con S7. Lgicamente en una instalacin real nicamente utilizaremos uno de ellos, por lo que te aconsejo vayas al captulo en el que se explica el tipo de comunicacin que debes de realizar. Comunicacin por MPI. Insertamos el canal Simatic S7, y dentro del protocolo MPI, con el botn derecho, seleccionamos una nueva conexin.

La nueva conexin la denominamos como nuestro PLC, en este caso 314_C_2DP, y en propiedades definimos la direccin MPI de nuestro equipo y el slot en el que se encuentra la CPU, que normalmente va a ser el 2. Poner como nmero de slot 2 es muy importante, ya que si no introducimos este valor (que por defecto viene a 0) no podremos comunicar en MPI con la CPU ya que el WinCC no la encontrar. Esto es necesario para comunicacin con S7 300, pero no para los S7 400. Una vez introducida la conexin nos aparece un icono en forma de dos manos unidas, indicndonos la conexin con nuestro PLC

28

Aprende WinCC

Si volvemos a presionar con el botn derecho sobre el canal MPI podemos determinar los parmetros del sistema del protocolo de comunicaciones.

29

Aprende WinCC

Comunicacin por TCP/IP. Vamos a realizar ahora la comunicacin por TCP/IP. En nuestro caso utilizaremos un 416 con una tarjeta 443-1. Primeramente deberemos de definir en nuestro proyecto de Step 7 la direccin TCP de la tarjeta como muestra la figura:

Comprobamos que podemos comunicar por TCP/IP, p. Ej observando el programa desde Step 7 a travs de TCP/IP. Para ello deberemos de cambiar el tipo de acceso en ajustar interface PG/PC.

30

Aprende WinCC

Tambin deberemos de ajustar el punto de acceso del perfil de WinCC para que sea a travs de nuestra tarjeta de comunicaciones.

Nuestra tarjeta de comunicaciones TCP del PC por supuesto deber de poseer una direccin y submscara de red apropiada para que pueda encontrarse en el mismo nodo de TCP que nuestro PLC (no podemos utilizar DHCP, sino que deberemos de configurar una direccin fija de red). Para ello vamos en Windows 2000 a Inicio>Configuracin->Conexiones de red y acceso telefnico y en las propiedades de nuestra red de rea local, seleccionamos el protocolo TCP/IP.

Editamos las propiedades del protocolo, y le asignamos una direccin compatible con nuestra tarjeta del PLC.

31

Aprende WinCC

Una vez tengamos definidas nuestras dos tarjetas de TCP (la del PC y la del PLC), podemos comprobar si efectivamente las tenemos bien configuradas realizando un ping a la tarjeta del PLC, desde Inicio->Ejecutar y escribimos: Ping 192.80.0.2 (para nuestra tarjeta de PLC del ejemplo) y Ping 192.80.0.1 (para nuestra tarjeta de PC del ejemplo) Ya podemos ir a nuestro proyecto de WinCC y definimos nuestro enlace con el plc.

La nueva conexin define tanto la direccin IP del PLC al que nos vamos a conectar, como el puesto de la CPU dentro del bastidor del PLC para que la tarjeta TCP sepa donde se encuentra y pueda suministrarle los datos (en nuestro caso el 400 tiene la CPU en el slot 3).
32

Aprende WinCC

En parmetros del sistema del canal TCP/IP podemos seleccionar la tarjeta por la que vamos a comunicar, en nuestro caso ya definida anteriormente en el perfil de WinCC desde ajustar interface PG/PC. En esta ventana tambin podemos definir si las peticiones de escritura poseen prioridad sobre las lecturas a la hora de comunicar con el PLC.

Llegados a este punto ya tenemos definida la comunicacin con la 443-1 del 400. Ya podemos arrancar el runtime de nuestro proyecto y observar el estado de las comunicaciones en el menu del WinCCExplorer Herramientas->Estado de las conexiones.

33

Aprende WinCC

34

Aprende WinCC

Diagnstico de las comunicaciones en el runtime. Lo primero que nos interesa dentro del runtime es saber de una manera grfica y visual si tenemos comunicacin con el PLC. Para ello vamos a definir una variable, la MB0, que accede a dicha zona de memoria dentro del PLC. Vamos al Graphic Designer y abrimos la pdl bottom.pdl, y en la esquina inferior izquierda colocamos un objeto de tipo rectngulo como muestra la figura:

En las propiedades del rectngulo, en color de fondo, definimos un cuadro de dilogo dinmico.

Asociamos la variable MB0 y activamos valor de estado de variables, seleccionando el color rojo para el tipo ninguna conexin, mientras que para estado de comunicaciones normal (otros), seleccionamos el color verde. Con esto ya podemos arrancar el runtime y comprobar que cuando nos falla la comunicacin o la CPU se coloca en stop el recuadro nos lo indica pasando a rojo. La reconexin es automtica una vez se ha vuelto a run o colocado el cable de comunicaciones.

35

Aprende WinCC

Tambin Podemos hacer lo mismo, pero a travs de textos, que nos indiquen si la comunicacin es correcta o no. Para ello vamos a colocar un campo de E/S al lado del piloto anterior en bottom.pdl como muestra la figura:

Las propiedades las definimos como muestra la figura inferior, teniendo en cuenta que vamos a asignar un cuadro dinmico en el que vamos a definir los textos que deseamos que aparezcan en funcin de que tengamos conexin (RUN) o no (STOP).

36

Aprende WinCC

De esta manera estamos obteniendo una indicacin del estado de las comunicaciones, pero a un nivel muy simple (sin indicarnos el tipo de error, y sin poder determinar siquiera si el problema es de que tenemos la CPU en stop o que nos falla el cable de comunicaciones). Podemos obtener una informacin mucho mas precisa utilizando un objeto denominado WinCC Chanel Diagnosis Control, que se encuentra en controles del Graphic Designer.

37

Aprende WinCC

Lo vamos a insertar en una pdl que haremos nueva. Para ello abrimos start.pdl y la renombramos como diagnosis_comunicaciones_pdl. En esta nueva pdl, en la zona central de la pantalla insertamos el objeto como muestra la figura:

Ahora tendremos que entrar a dicha pdl. Lo haremos con el evento clic del rectngulo que colocamos anteriormente, de tal manera que cuando el operario pinche sobre el indicador saltar automticamente a una ventana de diagnosis ms detallada,
38

Aprende WinCC

como es esta que acabamos de realizar. Para ello, colocaremos la siguiente sentencia en el evento clic del raton del rectngulo indicador:
OpenPicture("DIAGNOSIS_COMUNICACIONES.PDL");

Ya podemos comprobar el resultado, que ser algo como lo que muestra la figura:

En esta pantalla, pinchando con el botn derecho del ratn podemos obtener ayuda online sobre la causa del error de comunicaciones. Mediante esta utilidad s que es posible distinguir entre cpu en stop y fallo de comunicaciones.

39

Aprende WinCC

Generando alarmas de fallo de comunicaciones. A nosotros lgicamente nos interesa tener un histrico de fallos de comunicaciones. De esta manera podemos saber en qu momentos la instalacin ha dejado de comunicar con un determinado PLC y por cuanto tiempo (incluso podemos saber hasta por qu causa). Para poder realizar esto vamos a utilizar las alarmas de WinCC. El problema reside en que las alarmas estn pensadas para que cuando una variable se active en el PLC se genere la alarma, y en este caso cuando fallan las comunicaciones no se va a activar nada en el mismo. Para solventar este problema vamos a recurrir a una funcin de WinCC que se llama GetTagByteState(valor_del_plc), la cual nos va a devolver una variable de doble palabra, en la que cada uno de los bits tiene un significado de error de comunicaciones. Esta variable est chequeando el valor de la variable contenida en valor_del_plc, y nosotros debemos de comprobar que su estado es cero. En cuanto sea distinta de cero deberemos de activar una variable interna de tipo doble palabra. Esta variable interna es la que nos generar la alarma. Parece complicado pero se hace en un momento. Vamos all. Primeramente veamos que hace la funcin GetTagByteState. Tiene dos parmetros: Variable a chequear Puntero a una doble palabra en la que la funcin deja el estado de las comunicaciones Devuelve un byte con el valor actual de la variable chequeada. Nos queda saber qu nos va a devolver en el puntero de doble palabra del estado de las comunicaciones. En funcin del tipo de error de comunicaciones nos devolver:
DM_VARSTATE_NOT_ESTABLISHED 0x0001 // Verbindung zum Partner nicht aufgebaut DM_VARSTATE_HANDSHAKE_ERROR 0x0002 // Protokollfehler DM_VARSTATE_HARDWARE_ERROR 0x0004 // Netzwerkbaugruppe brennt DM_VARSTATE_MAX_LIMIT 0x0008 // projektierte Obergrenze berschritten DM_VARSTATE_MIN_LIMIT 0x0010 // projektierte Untergrenze unterschritten DM_VARSTATE_MAX_RANGE 0x0020 // Formatgrenze berschritten DM_VARSTATE_MIN_RANGE 0x0040 // Formatgrenze unterschritten DM_VARSTATE_CONVERSION_ERROR 0x0080 // Anzeige Wandlungsfehler DM_VARSTATE_STARTUP_VALUE 0x0100 // Initialisierungswert der Variablen DM_VARSTATE_DEFAULT_VALUE 0x0200 // Ersatzwert der Variablen DM_VARSTATE_ADDRESS_ERROR 0x0400 // Adressierungsfehler im Kanal DM_VARSTATE_INVALID_KEY 0x0800 // Variable nicht gefunden / nicht vorhanden DM_VARSTATE_ACCESS_FAULT 0x1000 // Zugriff auf Variable nicht erlaubt DM_VARSTATE_TIMEOUT 0x2000 // Timeout / keine Rueckmeldung vom Kanal DM_VARSTATE_SERVERDOWN 0x4000 // Server ist down

Ya habias definido una variable de comunicaciones llamada MB0, por lo que ahora deberemos de realizar una accin con el Global Script que nos chequee el estado de la misma. Previamente definimos una variable interna de tipo 32bits sin signo que se denominar FALLO_COMUNICACIONES_EQUIPO_1. La accin ser de tipo global, y la denominaremos alarmas_cclicas.pas, que posee el siguiente cdigo:
40

Aprende WinCC

#include "apdefap.h" int gscAction( void ) { // WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END DWORD *estado; estado=SysMalloc(sizeof(DWORD)); GetTagByteState("MB0",estado); //Tipo de retorno :BYTE if(estado>0) { SetTagDWord("FALLO_COMUNICACIONES_EQUIPO_1",1); } else { SetTagDWord("FALLO_COMUNICACIONES_EQUIPO_1",0); } return 0; }

//Tipo de retorno :BOOL

//Tipo de retorno :BOOL

Como puedes observar lo que hacemos es activar a 1 la variable interna en cuanto detectamos que el estado de la variable es distinto de cero. Podra complicar ms la cosa si activramos diferentes bits de la variable interna en funcin del fallo de comunicaciones. Como es una accin deberemos de definir un disparo de la misma. En este caso creo que con que chequeemos cada 10 segundos es bastante.

Una veza tenemos compilada la accin, salimos del Global Script y activamos la parte de golbal script runtime si no lo estuviese. Nos queda ir al alarm loggin para definir las alarmas de comunicaciones.
41

Aprende WinCC

Las alarmas de comunicaciones tendrn su propia clase de alarmas, para que posteriormente las podamos filtrar en un ventana de alarmas que nicamente muestre las alarmas concernientes a las comunicaciones.

Definimos dicha clase de avisos y dentro de ella el tipo de aviso comunicaciones.

Activamos el acuse de aparicin para que cuando se produzca un error de comunicaciones tengamos que acusarlo, y as detectar cuando nos falla la comunicacin aunque se produjese cuando no estbamos observando el scada.

42

Aprende WinCC

Por ultimo definimos los textos de estado de nuestras comunicaciones (aparece, desaparece...). El smbolo +/- indica una alarma que desaparece sin haber sido acusada por el operario (fallo de comunicaciones mientras no observbamos el scada que se ha solventado).

Tambin definimos los colores con los que debe de aparecer la alarma de comunicaciones. Definimos acto seguido una alarma con los siguientes parmetros:

Tambin definiremos el texto que debe de aparecer en la alarma cuando fallen las comunicaciones, as como el lugar que comunican con el centro de control (donde se encuentra el scada).

43

Aprende WinCC

Ya hemos finalizado con el alarm loggin. Salimos del mismo y arrancamos la parte de runtime que le compete en equipo. Vamos a reutilizar la picture diagnosis_comunicaciones.pdl. En el centro de la misma colocaremos un control de tipo WinCC alarm control como muestra la figura:

Los parmetros ms importantes de esta ventana de alarmas sern: La ventana ser de tipo ventana de aviso o ventana de archivo temporal. Deberemos de realizar una seleccin como muestra la figura inferior en la que determinemos que nicamente se van a mostrar las alarmas del tipo fallo_comunicaciones. La lnea de avisos tendr el siguiente aspecto:

44

Aprende WinCC

No te preocupes que el objeto de ventana de alarmas se superponga al anterior de diagnosis de canal. Para eso estn las capas de WinCC. Lo que debes de hacer es poner cada ventana en una capa, y activndolas y desactivndolas podrs manejarte con soltura. Si has observado, la ventana de winc chanel diagnosis control la hemos reducido un poco de tamao para poder insetar dos botones como muestra la figura:

En estos botones vamos a introducir un cdigo que nos permita mostrar las dos ventanas solapadas. En el botn de la izquierda, teclearemos:
SetPropBOOL(lpszPictureName,"ALARMAS_COMUNICACIONES","Visible",FALSE); SetPropBOOL(lpszPictureName,"COMUNICACIONES","Visible",TRUE);

45

Aprende WinCC

Siendo ALARMAS_COMUNICACIONES la ventana de alarmas y COMUNICACIONES la ventana de chanel diagnosis. Para el siguiente botn ser el mismo cdigo pero inviertiendo el TRUE por el FALSE y viceversa. Con esto ya tenemos un histrico de comunicaciones y diagnstico de la misma exhaustivo.

46

Aprende WinCC

Captullo 3 Cap tu o

Graphiics Desiigner.. Graph cs Des gner

El editor Graphics Designer se encarga de la confeccin de las pantallas de WinCC. Bsicamente es un entorno de dibujo con la caracterstica de que los objeto poseen la capacidad de asociar sus propiedades a variables de comunicaciones que son proporcionadas por el Tag Management. Desde el propio Graphics Designer podremos crear nuevas variables de comunicaciones, por lo que no ser necesario salirse del mismo si la variable a usar an no ha sido generada. Caractersticas Tips&Tricks El editor Graphics Designer posee una opcin de Tips&Tricks o ideas que nos proporciona algunas sugerencias cada vez que entramos al mismo al respecto de alguna funcionalidad del mismo.

47

Aprende WinCC

Si se desactiva la opcin Show tips at startput, para volver a mostrar la ventana de tips & tricks cada vez que se entre al Graphics Designer, es necesario seleccionar en Option->Extras->Settings->Display tips & tricks. Propiedades de las pictures

Desde el Explorador de WinCC, presionando el botn derecho teniendo seleccionado Graphic Designer y un PDL o pantalla ya realizado, accederemos a la opcin Properties del men contextual, donde podremos observar una previsualizacin del mismo, as como sus propiedades ms importantes. Tambin podemos ver las estadsticas de la picture en la solapa dynamics.

48

Aprende WinCC

Convertir pictures de versiones anteriores. Uno de los aspectos iniciales a la hora de convertir un proyecto de versiones anteriores a la 5.0 es la necesidad de convertir sus imgenes o pictures. Para ello, basta con presionar el botn derecho teniendo seleccionado el Graphic Designer en el explorador de WinCC. En el men, seleccionaremos la opcin Convert pictures. Desde este men tambin podremos convertir la librera de proyecto y la librera global de las funciones C de que dispusiera nuestro proyecto realizado con una versin anterior de WinCC.

49

Aprende WinCC

Propiedades de los objetos Todos los objetos poseen dentro del Graphics Designer varias caractersticas comunes, incluyendo a la propia superficie en la que vamos a colocar los objetos (picture).

Customize object: podemos asociar una nueva propiedad a un grupo de objetos para generar nuevas funcionalidades a las agrupaciones de los mismos. Ejemplos de ello son los smart objects de la biblioteca de objetos. Group objects: cuando se selecciona ms de un objeto se pueden agrupar, de manera que conforman uno nuevo que posee las caractersticas de los dos pero tiene un nuevo nombre. La mayora de los objetos de la biblioteca son agrupaciones de objetos ms simples. Las agrupaciones se pueden desagrupar en cualquier momento. Linking: Cuando copiamos varios objetos, se copian tambin sus enlaces a variables. Imaginemos que hacemos un I/O asignado a una variable y lo copiamos 10 veces. Entrando en la ventana linking podemos observar el resumen de las propiedades que se encuentran dinamizadas y modificarlas rpidamente.

Configuration Dialog: se accede a un resumen de las propiedades del objeto ms importantes. Properties: se accede a una caja de dilogo en la que disponemos por un lado de todas las propiedades del objeto y por otro de los eventos frente a los cuales reacciona. Dentro de estos eventos podremos colocar nuestro cdigo programado para que ejecute el programa ciertas acciones cuando se generen estos eventos del objeto.
50

Aprende WinCC

Propiedades del objeto Picture

La propia pantalla en la que trabajamos posee propiedades y eventos. Presione el botn derecho sobre ella y elija properties. Las propiedades son: Geometry: Picture Width: Ancho de la pantalla (en pixels). Picture Height: Alto de la pantalla (en pixels). Grid On: Activar la rejilla de puntos Grid Width: Ancho de la rejilla de puntos Grid Height: Alto de la rejilla de puntos

Colors: Background Color: Color del fondo de la picture Fill Pattern Color: Color de la mscara de dibujado sobre el fondo de la picture. Grid color: Color de los puntos de la rejilla

51

Aprende WinCC

Miscelaneous: Operator-Control Enabled: la picture se encuentra habilitada. User Level: Nivel de usuario al que le est permitido entrar en esta ventana. Para conocer como realizar la asignacin de niveles de usuario, vea captulo User Administrator.

52

Aprende WinCC

Display: Mostrar la picture. Update cycle: Ciclo de actualizacin de la picture. Date of the last change: fecha de la ltima modificacin que se hizo a la picture. Cursor Mode: Tipo de modo de desplazamiento con el cursor (alpha o tab). Con respecto a los eventos, las posibilidades para una picture son:

Eventos Mouse: o Mouse Action: Se ejecuta al presionar cualquier botn del ratn. o Press Left: Se ejecuta al bajar el botn izquierdo del ratn. o Release Left: Se ejecuta al levantar el botn izquierdo del ratn. o Press Rigth: Se ejecuta al bajar el botn derecho del ratn. o Release Rigth: Se ejecuta al levantar el botn derecho del ratn.

53

Aprende WinCC

Eventos Keyboard: Press: Se ejecuta al presionar una tecla, siempre y cuando el foco activo sea dicho objeto. Release: Se ejecuta al levantar la tecla presionada anteriormente.

Eventos Focus: Se ejecuta cuando el objeto recibe o pierde el foco (la posibilidad de actuarsobre el mismo desde el teclado). Eventos Miscelaneous: Objetc Change: Se ejecuta cada vez que cambia alguna propiedad del objeto. Open Picture: Se ejecuta al entrar al picture. Property topics: Se ejecutan cuando la propiedad seleccionada cambia en el objeto.

54

Aprende WinCC

55

Aprende WinCC

Iconos de la ventana propiedades Todas las ventanas de propiedades poseen tres iconos en su esquina derecha. El significado de los mismos es: Clip: Al presionarse impide que la ventana desaparezca, por lo que podemos movernos por varios objetos de la pantalla observando sus propiedades sin que desaparezca cada vez la ventana de la pantalla. Copiar Propiedades: Copia las propiedades del objeto activo en ese momento en el portapapeles. Pegar propiedades: Pega las propiedades copiadas en el portapapeles al objeto que est activo en ese momento. Barra de herramientas del Graphic Designer La barra de herramientas del Graphics Designer posee los siguientes iconos:

Nueva picture Abrir picture Guardar imagen Arrancar el runtime desde la picture actualmente abierta en el Graphics Designer. Traer objeto al frente. Util cuando existen varios objetos que se solapan. Enviar objeto al fondo. Util cuando el objeto est tapando a otros. Visualizar rejilla Forzar objetos a rejilla Aumentar zoom de la ventana Disminuir zoom de la ventana Realizar zoom a la seleccin. Realiza un zoom a una seleccin que hagamos. Copiar las propiedades del objeto en el portapapeles Pegar las propiedades en el portapapeles
56

Aprende WinCC

Biblioteca de objetos. La ventana del Graphics Designer con sus barras de herramientas activadas se presenta as:

Biblioteca de objetos La biblioteca de objetos es el lugar donde disponemos de imgenes preconfiguradas que podemos utilizar en nuestras picture. Algunos de estos objetos en realidad son agrupaciones de varios de ellos y llevan ya asociado cdigo C de tal manera que estn preparados para realizar una tarea determinada (smart objects). La biblioteca se compone de dos partes:

Global library: biblioteca general accesible desde cualquier proyecto. Project library: librera exclusiva del proyecto.

57

Aprende WinCC

Para pasar un objeto a nuestra picture basta con arrastrarlo y soltarlo sobre la misma.

58

Aprende WinCC

Opciones del men Settings En el men Tools ->Settings disponemos de las siguientes opciones para configurar el Graphic Designer: En la opcin grid podemos seleccionar: Display grid: El visualizar o no la rejilla al crear o abrir un picture. Width in pixels: El tamao que debe tener la rejilla. Snap to grid: El ajustar o no los objetos a la rejilla.

59

Aprende WinCC

En la pestaa options podemos seleccionar: Save settings on exit: Grabar los cambios cuando se sale del Graphic Designer o no. Display performance warnings: avisar cuando se detecte por el sistema un error de diseo, p. Ej., cuando se asigne una actualizacin crtica a un parmetro que pudiese sobrecargar la cpu del ordenador. El tipo de seleccin de los objetos: o Surrounding: Los objetos se seleccionan si se encuentran completamente dentro de la seleccin realizada. o Touching: Los objetos se seleccionan aunque solo una parte de los mismos se encuentre incluida en la seleccin. Nota: para seleccionar varios objetos basta con mantener presionada la tecla maysculas mientras se realiza un click sobre ellos. Object Tree: mostrar siempre igual el rbol de objetos, independientemente de cmo se qued la ltima vez al salir. Edit properties: Edita las propiedades al realizar clic sobre el dibujo. Configuration Dialog: usar el dialog box para configurar los objetos al insertarlos en la picture o no. Display tops and tricks: Mostrar la ventana de tips and tricks al arrancar de manera automtica o no.
60

Aprende WinCC

OCX display: Muestra o no la solapa de OCX insertables en las pictures de WinCC.

En esta opcin podemos seleccionar las capas que deben estar activas por defecto en una picture y las que no.

61

Aprende WinCC

Save configuration on exit: Memorizar la configuracin de toolbars y posiciones de las ventanas al salir del graphic administrator. Se puede escoger abajo el fichero en el que se desea almacenar la configuracin que por defecto ser el fichero default.pdd que se alamacena en el subdirectorio GraCs. Default Trigger: Define el tiempo para el refresco de los objetos en pantalla. En la solapa Menu/Toolbar podemos seleccionar:

Flat style for: El estilo de la barra de herramientas del Graphics Designer (botones planos o con relieve, mostrar la linea lateral de la toolbar para desplazamiento o no, mostrar color en los botones o no). Standard toolbar: podemos definir si se pueden configurar los botones de la toolbar o no. Para configurar los botones, basta con presionar la tecla ALT y seleccionando un icono de la misma, arrastrarlo fuera de la barra de herramientas. Display Buttons in Menu: podemos seleccionar si deben aparecer iconos al lado de los textos del menu o no.

62

Aprende WinCC

63

Aprende WinCC

Idioma de la pantalla: Podemos seleccionar diferentes idiomas para los textos asociados a todos los objetos que coloquemos en las pantallas de WinCC, de tal manera que simplemente cambiando de pgina de idioma podamos modificar completamente el lenguaje del runtime en la aplicacin. Para conseguir esto, primeramente deberemos definir el lenguaje de la pantalla en la que estamos. Cmo saber el idioma actual de la pantalla que estamos editando? Aparece en la barra de status, en la parte de debajo de la pantalla Cmo poder modificar el idioma actual de la pantalla activa? En el men del Graphic Designer, en la opcin View->Language aparece una ventana como la de la figura y podemos seleccionar nuestro idioma. Cmo hacer una misma pantalla en Ingls y en Espaol? Seleccione al principio el idioma Espaol (tradicional), coloque todos los objetos que desee que aparezcan, escriba todos los textos, y grabe la pantalla. Ahora cambie de idioma al ingls y ver como todos los textos aparecen en interrogantes. Vuelva a escribirlos, esta vez en ingls.

64

Aprende WinCC

Agrupar y desagrupar objetos.

Cuando se selecciona ms de un objeto se permite la opcin de agrupar los mismos en un elemento que posee las propiedades de ambos. La idea es crear agrupaciones de objetos que posean una determinada funcionalidad, p. Ej., cuadrados y rectngulos que combinados y agrupados forman una tubera. A estas agrupaciones de objetos se les puede asignar cdigo para su dinamizacin de una manera sencilla, a la vez que exportarlos a la librera de proyecto para su posterior reutilizacin. Tab Secuence. Todos los objetos poseen un orden de tabulacin. Este parmetro nos indica que objeto ser activo en un determinado momento segn el objeto que actualmente posea el foco (est activo) al presionar la tecla tab. Existen dos rdenes de tabulacin: Alpha cursor sequence: nicamente para cajas I/O. Tab order: todos aquellos objetos que se puedan seleccionar con el tabulador. Esto se define dentro del menu Edit->tab sequence->tab order->settings.

Si seleccionamos en el menu edit la opcin Tab sequence->Alpha cursor>sequence->edit podremos modificar el orden de alternancia entre los distintos campos de entrada/salida de nuestra picture actual. Para modificar el orden basta con clickear en el cuadrado de secuencia de uno de ellos. Si al realizar click se presiona la tecla shift el objeto seleccionado adquiere el orden 1 de tabulacin automticamente.

Para modificar el tab order deberemos seleccionar en el menu edit la opcin Tab sequence->tab order->sequence->edit Para eliminar un objeto de la secuencia de tab deberemos de seleccionar de nuevo tab order, y manteniendo presionadas las teclas shift+ ctrl seleccionar el objeto
65

Aprende WinCC

que se desea eliminar del orden de tabulacin. Su nmero ser sustituido por un asterisco. Para volver a insertar un objeto en el orden de tabulacin manteniendo presionadas las teclas shift+ ctrl seleccionar el objeto que se desea insertar en el orden de tabulacin. Su asterisco ser sustituido por un nmero.

Barras de herramientas. Barra de colores Disponemos de una barra de colores para asignar a las propiedades estticas de los objetos. Dichos colores pueden personalizarse gracias al ltimo de los iconos de la barra.

Barra de zoom Gracias al zoom podemos hacer escalados a la picture hasta de 8 aumentos y reducciones hasta 1/4 parte. Podemos acceder al zoom sin necesidad de ratn presionando Alt+z y las teclas de subir y bajar.

66

Aprende WinCC

Barra de objetos Los objetos de la barra de objetos se dividen en tres categoras: Standard Objects: Objetos estndar de dibujo, tales como lneas, polgonos, etc..

Smart Objects: Objetos inteligentes, cada uno con unas propiedades especiales.

Windows Objects: Objetos comunes de Windows, tales como botones, cajas de seleccin, barras de desplazamiento, etc..

67

Aprende WinCC

Barra de layers:

La barra de layers nos indica las capas que actualmente estn activas en nuestra ventana. Todos los objetos poseen una propiedad layer que indica a qu capa pertenecen. Disponemos de un total de 16 capas, apareciendo por defecto todas activas.

Es conveniente, cuando necesitemos poner objetos que se superponen (p. Ej. Un efecto de sobra bajo un texto, o un mensaje de ayuda que aparece sobre un botn) que asignemos diferentes capas, para que podamos desactivarlas pinchando sobre ellas y trabajar de una manera ms cmoda en el editor de dibujo. Barra de alineacin. Esta barra se utiliza para poder alinear varios objetos y tambin para igualarlos en tamao tanto en altura como en anchura.

Para que aparezca activa lgicamente deberemos de tener seleccionados por lo menos dos objetos. El significado de cada uno de los botones de alineacin comenzando por la izquierda de la ventana es el siguiente: alinear todos los objetos seleccionados a la izquierda. Alinear todos los objetos seleccionados a la derecha.
68

Aprende WinCC

Alinear todos los objetos seleccionados por arriba. Alinear todos los objetos seleccionados por abajo. Centrar todos los objetos horizontalmente. Centrar todos los objetos verticalmente. Igualar el espacio entre todos los objetos de manera horizontal. Igualar el espacio entre todos los objetos de manera vertical. Dar igual anchura a todos los objetos. Dar igual altura a todos los objetos. Dar igual altura y anchura a todos los objetos.

Es muy importante saber cual va a ser el objeto que se tome como referencia para las acciones. Si se han seleccionado los objetos por el mtodo...: de abrir una ventana de seleccin: se toma como referencia el que est ms al extremo de la ventana. utilizando el ratn y teniendo presionada la tecla maysculas: el primero que se seleccion.

Barra de fuentes

La mayora de los objetos poseen algn texto asociado. Mediante la barra de fuentes podemos configurar el tamao y fuente de los mismos sin tener que entrar en sus propiedades.

Barra de estilos

Al igual que el anterior, poseemos tambin una barra de herramientas solo para las lneas de los objetos, en las que podemos modificar el estilo de la lnea, su grosor, su final y el relleno que deben tener (si poseen un grosor mayor de una simple lnea).

69

Aprende WinCC

70

Aprende WinCC

Smart Objects
Los smart objects son la base de construccin de los proyectos de WinCC. Los cuatro primeros los estudiaremos ms adelante, ya que su estudio es ms amplio y complicado. Nos centraremos ahora en los siguientes objetos. I/O Field:

Caja de entrada/Salida para visualizar el valor de una variable y poderlo modificar.

71

Aprende WinCC

Destacar en estas propiedades: Bold : La fuente de la caja en negrita Underline: La fuente de la caja subrayada Text orientation -> orientacin del texto de la caja (horizontal o vertical) X Alignement -> alineacin con respecto al eje x (izquierda, centrado o derecha) Y Alignement -> Alineacin con respecto al eje y (arriba, centrado o derecha)

72

Aprende WinCC

El flashing es una agrupacin de propiedades no vista hasta ahora. Bsicamente se utiliza para sealizar un cierto estado de algn elemento de la instalacin que est representado por dicho objeto. Si la presente caja de I/O est representando un valor de presin de agua, podemos representar aqu dicho valor con el fondo parpadeando cuando se exceda un determinado lmite de seguridad. Las opciones disponibles son: Flashing border active: Que parpadee el borde de la caja. Flashing border color off: Color del parpadeo del borde en estado off Flashing border color on: Color del parpadeo del borde en estado on. Border Flashing frequency: Frecuencia del parpadeo. Disonemos de tres velocidades: lenta, media y rpida. Flashing Background active: Que parpadee el fondo de la caja. Flashing background color off: Color del parpadeo del fondo en estado off. Flashing background color on: Color del parpadeo del fondo en estado on. Background Flashing frequency: Frecuencia del parpadeo del fondo. Disonemos de tres velocidades: lenta, media y rpida. Flashing Text active: Que parpadee el texto de la caja. Flashing Text color off: Color del parpadeo del texto en estado off. Flashing Text color on: Color del parpadeo del texto en estado on. Text Flashing frequency: Frecuencia del parpadeo del texto. Disonemos de tres velocidades: lenta, media y rpida.

73

Aprende WinCC

Opciones Miscelaneous: Operator Control Enable: Indica si el usuario puede tener acceso a la caja para introducir valores. Esta propiedad es independiente de que tenga o no nivel para poder introducir valores. Equivale al Locked de los controles de programacin de objetos. User level: Nivel que debe disponer el usuario para poder introducir datos en esta caja. Display: Si debe ser visible o no la caja. Tooltip Text: Texto que debe aparecer en el cursor al posicionarse con el mismo sobre la caja. Los tooltip dependen tambin del cdigo de pgina de idiomas seleccionado en el runtime. Operator activites Report: Cuando se activa esta opcin, cada vez que se introduzca un valor en la caja, aparecer una caja de texto solicitando que introduzcamos una explicacin al respecto de la modificacin realizada en el valor del proceso. Este mensaje queda almacenado en el sistema como seguridad antes posibles fallos debidos a los cambios realizados, o como nota aclaratoria de porqu se toma dicha decisin. Operator Input Message: Cuando el nuevo valor ha sido llevado a cabo por el sistema se alamacena dicho mensaje en el sistema para su posterior estudio. Adapt Border: Ajusta automticamente el tamao de la caja al texto o nmero que contenga en cada momento. Cursor Control: Determina si despus de realizar una entrada en la caja se debe saltar al siguiente objeto en el orden de Alpha-cursor seleccionado o se debe de continuar en el campo en el que se acaba de introducir el valor. Inmediate input: Indica si la caja al recibir el foco debe ponerse automticamente en modo de edicin para introducir un valor, o no.
74

Aprende WinCC

Limits: Low Limit Value: Valor menor que se puede aceptar como vlido a la hora de introducir un valor en proceso. High Limit Value: Valor mayor que se puede aceptar como vlido a la hora de introducir un valor en proceso. Si se sobrepasa cualquiera de estos valores, automticamente aparece una caja indicndonos dicho suceso. Output/Input: Field Type: Tipo de valor del campo a representar o introducir. Las diferentes posibilidades son: Output: Solo leer el valor en el PLC, sin poder escribir. Input: Solo escribir el valor en el PLC sin poder leer. I/O field: leer el valor en el PLC y poder modificarlo tambin.

75

Aprende WinCC

Output value: Variable de proceso que contiene la caja. Data format: Formato de los datos a representar.

Output Format: formato de salida del valor a introducir. Cada carcter 9 corresponde a un dgito. Los dgitos que se coloquen despus del punto correspondern a los decimales a los que se ajuste el valor a representar.

76

Aprende WinCC

Las diferentes posibilidades en formatos de entrada son : Formato binario: debe estar compuesto por unos y ceros. Formato decimal: debe estar

compuesto

por:

s -> proporcionar signo (+ o -) e ->representacin exponencial. 9 -> numero entre 0 y 9. 0 -> ceros de relleno a la izquierda que deben aparecer. . -> punto decimal. Ejemplo: 9.9 s9.9 s9.9e 09.99 Formato

-> -> -> ->

1.0 +1.0 +1.0E+00 01.00 string: compuesto por:

* -> cualquier cadena ? -> un carcter. a -> cualquier carcter o nmero A -> cualquier carcter en maysculas o nmero. b -> cualquier carcter en maysculas o minsculas. B -> cualquier carcter en maysculas. d -> signo + o -, punto decimal, espacio en blanco o nmero. t -> separador (:,;) o espacio en blanco. 1 -> nmero 0 o 1 2 -> nmero 0, 1 o 2. h -> carcter hexadecimal. Formato hexadecimal:

f -> carcter hexadecimal. 0 -> cero de relleno a la izquierda de caracteres hexadecimales.

77

Aprende WinCC

Apply on full: Determina si el valor introducido se da por validado cuando se han completado todos los dgitos del campo de manera automtica, o es necesario presionar enter o cambiar de campo activo con tab para que se considere validado el campo. Apply on exit: Fuerza al sistema a dar como validado el campo inmediatamente despus de que sea realizada la validacin por el usuario (mediante enter o el tabulador). Clear on new Input: Indica si cuando se va a introducir valores en el campo, debe de borrarse el valor que existiera anteriormente, o se conserva y editamos el nuevo valor sobre el anteriormente existente. Clear on invalid input: Indica si al introducir un valor no vlido en la caja, debe de borrarse de esta el valor errneo para que sigamos introduciendo uno correcto, o nos permite editar el valor errneo para modificarlo y que sea vlido para el sistema. Hidden Input: Oculta el valor que se est introduciendo mediante caracteres de *. Esta opcin es til para la solicitud de passwords al usuario.

Adems de las propiedades, todo objeto (incluyendo el objeto I/O que estamos tratando ahora) posee un Configuration Dialog, perteneciente a su men contextual, en el cual se representan las propiedades ms importantes del objeto en cuestin, es decir, un resumen de lo visto en las pginas anteriores. El Configuration dialog de la caja I/O es:

78

Aprende WinCC

Bar. La barra es un objeto que nos permite representar un valor analgico y compararlo con unos lmites establecidos para saber en que estado se encuentra el proceso con respecto al valor deseado.

Bar direction: direccin en la que debe de crecer la barra (hacia arriba, hacia abajo...)

79

Aprende WinCC

Colors: Border Color: Color del borde de la barra. Border Background Color: Color del fondo del borde de la barra. Solo es visible si el estilo del borde de la barra no es slido. Background color: Color del fondo de la ventana de la barra. Fill Pattern color: Color de rellenado de la ventana de la barra. Solo es visible si el estilo del fondo de la ventana no es slido. Bar color: Color de la barra. Scale color: Color de la escala. Bar Background color: Color del fondo de la barra. Trend color: Color de la tendencia. La tendencia es un indicador que aparece en la esquina inferior de la barra indicndonos el sentido del proceso (creciente o decreciente).

Styles: o Border Weight: Anchura del borde de la ventana de la barra. o Border Style: Estilo del borde de la ventana. o Fill Pattern: Estilo de rellenado del fondo de la ventana de la barra. o Bar Pattern: Estilo de rellenado de la barra.

80

Aprende WinCC

Font: o Font: Fuente de la escala e la barra. o Font Size: Escala de la fuente de la escala de la barra. o Bold: Si dicha fuente debe aparecer en negrita.

81

Aprende WinCC

Miscelaneous: Change color: Cambia el color de la barra al superar un lmite superior o inferior de manera total, o solo el trozo que sobrepase dicho lmite. Maximum value: Valor mximo de la escala de la barra. Zero point value: Valor del punto cero de la escala. Minimun value: Valor mnimo de la escala de la barra. Histeresys: Indica si el valor debe de comportarse segn una histresis al alcanzar el lmite superior o inferior. Si alcanzamos un lmite de 100, teniendo activado este parmetro, y seleccionando un rango de histresis de 20, hasta que el valor no baja de 80 no volver la barra a representar modificaciones en su valor. Esto permite evitar las oscilaciones propias de los fluidos una vez alcanzados los lmites precisos. Histeresys Range: Valor a tener en cuenta en la histresis. Trend: Indicador del sentido de la barra. Nos indica si el proceso est aumentando o disminuyendo, realizando una comparacin del valor actual con el anterior. Average Value: Seleccionando esta opcin se muestra la media de los ltimos 15 valores ledos en el proceso, no el instantneo. Ideal para procesos muy fluctuantes. Process Drive Connection: Valor del proceso a mostrar.

82

Aprende WinCC

Axis: Scale: Mostrar o no la escala de referencia de la barra. Alignment: Lugar en el que colocar la escala (derecha o izquierda). Long Axis Section: La escala se compone de barras largas y cortas. Esta opcin dibuja las barras largas de la escala en negrita. Label Each: Indica cada cuantas barras largas de la escala hay que colocar un valor numrico. Only long axis sections: Mostrar solo las barras largas de la escala, no las intermedias cortas. Lenght of axis section: Longitud en pixels de las barras divisoras de la escala de la barra. Exponent display: Mostrar la escala en valor exponencial o lineal. Bar Scaling: Tipo de escala de la barra.

83

Aprende WinCC

LINEAL

LOGARIT.

NEG. LOGARIT.

AUTOMATIC TANGENT

CUADRATIC

CUBIC

Zero point: Lugar donde se encuentra el punto cero en la escala. Axis Section: Cada cuantas unidades queremos poner un indicador numrico de escala. Por ejemplo, cada 20 unidades, con lo que la cantidad de marcadores numricos en la escala ser de 100/20=6. Scale marcs: La distancia en las divisiones de la escala. Digits to the left of the decimal: Dgitos del valor entero de la escala. Digits to the rigth of the decimal: Cantidad de decimales del valor del a escala.
84

Aprende WinCC

Limits: Limit Marker: Marca de lmite que aparece a la izquierda de la barra indicndonos donde se encuentran los lmites de control de la barra. Monitoring AL: Controlar alarma 1de mnimo. Limit AL: Valor del lmite de alarma 1. Bar color AL: Color que debe adoptar la barra cuando el valor del proceso est por debajo de lo especificado en Limit AL. Type AL: El valor de Limit AL puede ser expresado en valor absoluto, con lo cual es necesario conocer a priori el valor mximo de la escala, o en porcentual (mucho ms flexible, ya que ante cualquier modificacin de lmites contina manteniendo la proporcionalidad).

Las dems opciones son idnticas pero para los cuatro siguientes limites de alarma mnima (La L de AL indica que es un lmite de mnimo). Los lmites de mximo comienzan con AH, siendo su funcionamiento y propiedades idntico al descrito, salvo
85

Aprende WinCC

que la barra cambia de color cuando el valor del proceso est por encima del valor estipulado como lmite de alarma. Como ya dijimos, todo objeto tiene su Configuration dialog, o resumen de propiedades. En el caso de la barra son:

86

Aprende WinCC

Graphic Object. El objeto grfico representa una imagen en pantalla. Su asignacin suele ser dinmica, utilizndose el status display para realizar animaciones de imgenes, aunque puede dinamizarse la imagen que representa.

Picture: Picture: Imagen actual a representar. Picture referenced: Indica si se debe almacenar en el objeto la imagen o solo la referencia a la misma, para que al cambiar esta en el disco duro, cambie tambin en el objeto. Picture transparent color: Color que se considera transparente en la imagen. Picture transparent color on: Activar el color transparente, con lo que todos los pixels de dicho color sern reemplazados por la imagen que se encuentre por debajo del objeto. Los formatos que soporta el objeto son: Bmp Emf Wmf Dib. Cuando se selecciona una imagen, esta se copia automticamente en el subdirectorio GraCS de nuestro proyecto, por lo que una vez la seleccionemos en algn objeto estar disponible para todos los dems que realicemos.

87

Aprende WinCC

El Configuration Dialog del Graphic Object es el que se muestra en la imagen siguiente.

88

Aprende WinCC

Status display. El status display es el objeto a utilizar para mostrar animaciones en pantalla. Estas animaciones se componen de hasta un mximo de 31 imgenes que se van mostrando en funcin del valor que adopte una variable asignada. El Configuration Dialog del status display es el siguiente:

Existen dos posibilidades a la hora de realizar la animacin: que exista un valor que se va incrementando desde 0 hasta x. Esta opcin suele ser una variable interna, y se incrementa mediante una funcin en C desde WinCC. que exista un valor de comunicaciones que nos indica en que posicin se encuentra la mquina. Cada bit de la palabra muestra un estado de la mquina. En este caso hay que utilizar el botn Add que nos ir incrementando el valor a chequear para el cambio de imagen en potencias de 2.

89

Aprende WinCC

Algunas propiedades interesantes de este objeto son tambin:

90

Aprende WinCC

Text list. El objeto textlist es til a la hora de realizar un control sobre valores numricos que se encuentran claramente definidos mediante textos. Suelen ser estadios del proceso de tres o cuatro pasos mximo. Por ejemplo, un motor puede estar parado, arrancado en automtico, o arrancado en manual. En estas situaciones el asociar textos a valores numricos dentro del PLC permite gobernar variables del proceso simplemente seleccionando un texto de una lista, o que un texto nos describa el estado de un determinado elemento de la instalacin.

Output/Input: Field Type: Campo de salida (solo leer el valor), de entradas (solo modificar el valor en el PLC) o de ambos (leer y escribir en el PLC). Output Value: Valor del proceso relacionado con los textos. List Type: Tipo de lista de texto.

Asignement: Asignacin de los textos a los diferentes valores numricos. Bit number: Bit de la palabra que define el estado. Unicamente itene sentido para el tipo list type:bit. Apply on exit: Aplica los cambios al abandonar el foco de dicho objeto, ya sea con la tecla tab o pichando con el ratn en otro objeto, sin necesidad de pulsar la tecla enter prteviamente. Number of visibles lines: Lneas de texto visibles al desplegar la ventana de seleccin de valor.
91

Aprende WinCC

92

Aprende WinCC

Buttons. El objeto button es el encargado de la asignacin de las funciones tpicas de manejo por el programa de la aplicacin (cambio de pantalla) y realizacin de funciones predefinidas (activar una determinada bomba, etc...). La ventana de configuration dialog de button es la siguiente:

El campo text es el texto que aparece sobre el botn. Hotkey es la funcin del teclado que se asigna a ese botn, de tal manera que presionando dicha tecla se ejecuta la funcin que se haya asociado al mismo. Destacar que la asignacin del teclado no se limita a las teclas de funcin pudindose asignar hasta la tecla de ESC o la de ENTER para salirse de las pantallas o entrar a elllas como si se estuviese en una OP.

93

Aprende WinCC

Password es el campo en el que indicamos el nivel de autorizacin requerido para poder ejecutar la accin del botn. El campo inferior de la ventana est reservado por si deseamos darle al botn la funcionalidad tpica de cambiar de pantalla. Podemos asignar con el icono que aparece a la derecha una de las pictures ya definidas

Dos opciones no vistas del botn es que podemos definir dos imgenes (picture on y picture off) para representar los dos estados del botn (presionado o no).

94

Aprende WinCC

Check box. El control checkbox es la manera de seleccionar opciones no excluyentes entre s dentro de una seleccin requerida al usuario.

Number of boxes: Cantidad de cajas de seleccin a introducir en el control.

95

Aprende WinCC

Index: Indice actual dentro del array de cajas de control. Text: Texto asignado para este idioma y este ndice de caja. Para cambiar los textos de otras cajas, cambie el nmero de Index. X Alignement: Alineacin en el eje X de los textos. Y Alignement: Alineacin en el eje Y de los textos.

Selected Boxes: Cajas que estn activas por defecto segn el array generado (en el ejemplo solo la primera de las tres). La visualizacin del control tal como lo hemos configurado es la siguiente:

96

Aprende WinCC

Option button. El objeto option button se utiliza para realizar una entrada en el proceso de un valor que solo puede adoptarse de entre una serie definida de posibilidades excluyentes entre s. La nica diferencia entre l y checkbox, visto anteriormente es precisamente esta caracterstica de exclusin, lo que hace que seleccionando cualquiera de las opciones del objeto option automticamente dejan de estar seleccionadas todas las dems. Todas las propiedades vistas en checkbox sirven para option button.

97

Aprende WinCC

Slider. La barra slider sirve para poder introducir valores analgicos en el proceso de una manera grfica.

De las propiedades de slider solo destacar por no haber sido vista an: Extended operation: Si se pincha copn el ratn en cualquier parte de la barra que no sean los botones de subir y bajar, el valor se va directamente al mnimo o al mximo
98

Aprende WinCC

estando activado este parmetro. En caso contrario, se incrementa el valor en una unidad cada vez que se pinche en la barra de desplazamiento. Operation steps: incrementos en que aumenta o disminuye la variable de proceso cada vez que nos desplazamos por la barra.

Podemos asignar tambin colores a la barra y a los botones de mximo y mnimo de manera individualizada, as como al fondo con respecto a lo que lleva y lo que queda hasta el mximo.

99

Aprende WinCC

Round. El objeto round est ideado como pulsador con enclavamiento o como visualizador de estado (presionado o no presionado).

Las opciones ms interesantes son: Latch Down: Mantiene el botn enclavado en funcin set/reset pese a no estar presionndolo. Pressed: Valor actual del botn (0 = no presionado / 1 = presionado).

100

Aprende WinCC

Asistentes Los asistentes de programacin son pequeos scripts o trozos de cdigo de programa que se aaden de manera automtica al objeto sobre el que se aplican, para realizar una determinada tarea de programacin. Cuando se aplica un Dinamic Wizard a un objeto aparece un asistente que nos permite seleccionar el evento con el cual deseamos ejecutar el script. Dinamic Dialogs System Functions:

Exit WinCC: Sale del runtime de WinCC y del propio WinCC. Cdigo aadido: ExitWinCC(); Exit WinCC or Windows: Nos permite seleccionar la forma de salir de WinCC. Las opciones posibles son: Exit Windows without restart:Apaga el sistema Windows NT, cerrando todas las aplicaciones. Cdigo: DMExitWinCCEx(DM_SDMODE_SYSTEM); Exit WinCC: Sale de WinCC. Cdigo:DMExitWinCCEx (DM_SDMODE_WINCC); Exit WinCC and logon again: Sale de WinCC y vuelve a solicitar un nuevo usuario de Windows NT. Cdigo:DMExitWinCCEx (DM_SDMODE_LOGOFF); Exit WinCC and restart Win dows: Sale de WinCC y rearranca Windows NT. Cdigo: DMExitWinCCEx (DM_SDMODE_REBOOT);

101

Aprende WinCC

Exit WinCC runtime: Sale de la runtime de WinCC, pero no del desarrollo de WinCC si estuviese abierto. Cdigo: DeactivateRTProject (); HardCopy: Imprime la pantalla actual por la impresora predeterminada de Windows. Cdigo: WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); Language switch: Cambia de idioma los textos de la aplicacin runtime. Cdigo: SetLanguage(0x040A); /* SPANISH */

102

Aprende WinCC

Start another aplication: Arranca otra aplicacin que deseemos ejecutar. Cdigo: ProgramExecute("C:\\Archivos de programa\\Microsoft Office\\Office\\EXCEL.EXE");

Standard Dinamics:

Add dinamics to the prototype: permite dinamizar una propiedad del objeto seleccionado a travs de un Wizard en lugar de hacerlo directamente en propiedades del objeto. Color Dinamics: Color Dinamics with table: Copy tag value: incluye el cdigo que copia una variable en otra. El cdigo asociado es el siguiente:
double VarInh; { VarInh=GetTagDouble(TAG_0); SetTagDouble(TAG_1,VarInh); }

Es importante tener en cuenta que nicamente se copian variables de tipo word, no apareciendo la posibilidad de copiar las de otro tipo. Cuando sea necesario copiar una variable en otra, es mejor realizarlo a mano en C.

103

Aprende WinCC

Fill object: rellena los objetos que permitan dinamic filling, pero con la ventaja de que a travs del wizard podemos establecer un rango de llenado diferente de 0 a 100 que sera mediante una conexin directa de la variable de llenado con la propiedad de llenado.

104

Aprende WinCC

Make a property dinamic: dinamizar una propiedad. Move object: dinamiza las coordenadas de un objeto seleccionado de acuerdo a dos variables definidas de tal manera que en funcin de las variables se mover la posicin del objeto.

105

Aprende WinCC

Display error: muestra una ventana de error en pantalla. Este Wizard es muy til para sacar mensajes al operario frente a error de manejo.

106

Aprende WinCC

El resultado es el siguiente:

Display WinCC dialog: mostrar una ventana de dilogo ya configurada anteriormente. Nos crea el cdigo necesario para que al presionar sobre el objeto, aparezca la ventana indicada.

107

Aprende WinCC

Single picture change: abrir una ventana. Equivale a Openpicture();

108

Aprende WinCC

Dinamizacin de propiedades
Dinamizacin a travs de una variable Las dinamizacin de las propiedades de un objeto se puede realizar de diferentes maneras. La ms sencilla de todas reside en conectar la propiedad a una variable de manera directa, de tal forma que el valor que posea la variable ser el que tenga la propiedad, y viceversa.

La representacin de una asignacin directa a una variable se realiza con una bombilla verde. Dinamizacin a travs de dinamic dialog La segunda forma sencilla de dinamizar una propiedad es a travs del dinamic dialog, una caja de dilogo que nos permite configurar cual debe ser el valor que controla la propiedad dependiendo de una frmula que puede ser el resultado del valor de una variable o de una operacin matemtica. El dinamic dialog lo veremos ms adelante en los ejemplos de programacin, pero es conveniente saber que se representa su asignacin a una propiedad mediante un rayo rojo.

Dinamizacin mediante cdigo C La ltima forma de poder dinamizar una propiedad es directamente programar en C una operacin que nos debe de devolver el valor que controlar la propiedad. Solo es necesaria esta solucin en casos de clculos matemticos muy complejos.

La representacin de su asignacin se realiza por un rayo verde. Dinamizacin indirecta de una propiedad
109

Aprende WinCC

Adems de poder dinamizar una propiedad asignndole un valor, ya sea a travs de una variable o del resultado de operaciones matemticas, podemos realizar una asignacin indirecta del valor de la propiedad. Supongamos que tenemos una caja de I/O y queremos mostrar la temperatura de la sala. Dependiendo de una serie de botones, podremos seleccionar una sala u otra. La caja de I/O deber cada vez estar asociada a una variable distinta. Para conseguir esto, se asocia una variable de tipo texto a la propiedad en cuestin (en nuestro caso Output Value). Todas las propiedades tienen una caja de asignacin a la derecha llamada indirect. Seleccionndola, el valor de la cadena VAR_TEXTO indica el nombre de la variable que debe de conectarse a la salida de la caja. Por lo tanto, cambiando VAR_TEXTO cambiamos la variable conectada en dicha propiedad.

Programacin de eventos Los eventos de un objeto deben de programarse en C. Sin embargo, existe un pequeo asistente que nos puede evitar en algunas circunstancias tener que recurrir a la programacin para realizar nuestras acciones en los eventos. En WinCC este asistente se denomina Direct connection y tiene el aspecto inferior:

110

Aprende WinCC

Cuando se realiza un direct connection a un evento queda indicado mediante un rayo azul:

Programacin en C de eventos Pero casi siempre hay que recurrir al C para realizar las acciones que deseamos. Cuando asignamos nuestro cdigo de programacin a un evento, se nos indica mediante una bombilla verde:

Sin embargo, no siempre la programacin en C que realicemos ser correcta. Cuando el cdigo asociado contenga errores y no pueda ser compilado por WinCC, se nos indicar mediante un rayo amarillo. Tenemos que tener en cuenta que en esta circunstancia no se ejecutar el cdigo aunque se produzca el evento.

111

Aprende WinCC

Captullo 4.. Cap tu o

Allarmas: Allarm Loggiing A armas: A arm Logg ng


Diferentes tratamientos de las alarmas.
Las alarmas en WinCC las podemos utilizar para enterarnos de ms cosas que exclusivamente si ha saltado un diferencial. Esto ya lo pusimos en prctica al principio, utilizndolas para almacenar un histrico de usuarios con el que poder determinar que operarios tenan el control del sistema en cada intervalo de tiempos del da. En el presente captulo las vamos a utilizar para lo que estn principalmente diseadas: Deteccin de alarmas actuales en la instalacin. Histrico de alarmas de la misma, y Deteccin de fallos internos de programacin y mensajes internos del compilador del sistema WinCC. El almacenamiento del histrico de alarmas puede realizarse en formato de tambor, o de manera ilimitada. En este segundo caso, ser necesario a la larga borrar a mano el histrico de la base de datos runtime. Como existe la limitacin de que nicamente se permiten visualizar en WinCC 1000 alarmas en la ventana de alarmas, nos encontraramos si utilizsemos el segundo tipo de almacenamiento con el problema de tener un histrico muy potente, pero tener que realizar filtros de seleccin por fechas para poder observar dichos valores constantemente, a la vez que estar obligados a borrar el histrico cada cierto tiempo. Es por esto que en el ejemplo vamos a utilizar el almacenamiento por tambor, que es mas prctico y produce casi el mismo resultado. La perdida de alarmas con el paso del tiempo se puede solventar a travs de Access si lo deseamos, como veremos ms adelante. Diseo de las alarmas. Una alarma se compone de bloques como sabemos, por lo que vamos a definirlos en primer trmino. Entramos al Alarm Logging y definimos los siguientes bloques de sistema:

112

Aprende WinCC

Como bloques de usuario:

Pasamos a las clases de aviso. Esta vez no vamos a crear una nueva clase de aviso, sino que utilizaremos la que ya viene prediseada en el WinCC, llamada Error. En las propiedades de la clase definiremos los textos que deseamos que identifiquen sus diferentes apariciones y desapariciones.

Vamos a utilizar el tipo de alarma Alarma, por lo que entramos a sus propiedades y realizamos la siguiente asignacin de colores:

Ya estamos en disposicin de definir nuestras primeras alarmas. Las alarmas deben dentro de la memoria del PLC de agruparse en palabras de 32 bits para ahorrar tiempo de lectura de comunicaciones y variables a adquirir en el runtime. Lo recomendable es crear dentro del PLC una DB, en la cual cada uno de los bits de la misma identifica una alarma del proceso, y otra DB para los avisos del sistema que no requieren acuse. En nuestro ejemplo, para poder mostrar mejor todas las posibilidades, vamos a crear una variable interna de 32 bits que llamaremos ALARMAS.
113

Aprende WinCC

De nuevo en el Alarm Logging definimos una nueva alarma, que posee las siguientes caractersticas:

Observemos que la hemos asignado al tipo alarma de la clase Error, que deseamos que se archive (para que aparezca posteriormente en el histrico de alarmas), y que active una accin. Qu es activar una accin y para qu lo vamos a utilizar?. Bien, mas adelante vamos a desear que suene un sonido por los altavoces del pc cada vez que aparezca una nueva alarma en la instalacin. Luego necesitaremos que se ejecute una accin en c ante la llegada de una nueva alarma. El activar esta casilla indica a WinCC que ante cualquier evento de dicha alarma (que aparezca, desaparezca, sea reconocida), entre a un funcin ya definida en WinCC que se llama gmsgfunc.fct. Un tema muy importante sobre esto que estamos comentando es el hecho de que dicha funcin no reside dentro de nuestro proyecto, sino en el subdirectorio c:\Siemens\WinCC\aplib\alarm. Y qu importa?. Nada, si tenemos esto en cuenta a la hora de llevarnos la aplicacin a otra instalacin, o de nuestra oficina al ordenador de la fbrica. Cuando copiamos todo el subdirectorio de nuestro proyecto, deberemos de tener la precaucin de copiar este archivo tambin, para posteriormente copiarlo en le mismo subdirectorio de WinCC del pc destino de nuestro proyecto, o no servir para nada que tengamos activada la opcin activa un accin, ya que acudir al gmscgfunc.fct, pero no tendr cdigo, estar vaco.
114

Aprende WinCC

Continuando con la explicacin, vemos tambin que hemos asignado la variable interna alarmas, y que deseamos que el bit 0 de la misma active la presente alarma. Los textos de la alarma los introducimos de lo ms clarificadores para este ejemplo:

Y en el bloque usuario esta vez no vamos a colocar nada, ya que para esta alarma no lo vamos a gastar.

Definimos dos alarmas ms, una con el bit 1 y otra con el 2 de la variable alarmas, cambiando los textos para poder posteriormente identificarlas de una manera sencilla. Recuerda que puedes seleccionar la que acabas de realizar copiarla y pegarla para crear las dos nuevas.

Ya hemos finalizado con el Alarm Logging. Activamos la parte de runtime de alarmas de nuestro equipo y ya estamos en disposicin de ir al Graphic Designer.

115

Aprende WinCC

Histrico de alarmas. Copiamos la pdl start.pdl y la renombramos como alarmas.pdl. En bottom.pdl introducimos el siguiente botn de la biblioteca:

El cdigo asociado al mismo ser el siguiente en el evento clic del ratn:


OpenPicture("ALARMAS.PDL"); //Tipo de retorno :void

Observemos que en cuanto ejecutemos este cdigo nos vamos a ir a la pdl alarmas, abandonando la pdl start. Y luego como volvemos?. Es necesario en este punto poseer un sistema de navegacin por ventanas. Para ello diseamos al principio top.pdl, para colocar en ella botones de acceso a las diferentes pantallas de nuestra instalacin. Pero ahora mismo no vamos a utilizar este mtodo de navegacin, sino unas funciones en c que nos permite ir a la pantalla inicial a la de la que venamos, o regresar a la que fuimos, fuese en cada momento la que fuese. Para observar esta funcionalidad en bottom introduciremos los siguientes botones de la biblioteca a la izquierda de la pdl:

Estos botones de la biblioteca ya poseen las siguientes funciones asociadas (que podramos asignar a cualquier otro botn para conseguirlas): OpenPrevPicture(); OpenHomePicture(); OpenNextPicture(); Estas funciones se encuentran en el siguiente subdirectorio de funciones c:

116

Aprende WinCC

Ya podemos por lo menos ir a larmas.pdl y volver a start.pdl. Vamos adefinir la ventana de alarmas. Abrimos alarmas.pdl e introducimos un objeto de tipo

La ventana tendr el siguiente aspecto:

Te estars preguntando que qu son los botones de la derecha que aparecen sobre la ventana de alarmas. Vamos a colocarlos, para poder activar y desactivar bits de la
117

Aprende WinCC

variable alarmas, con lo que en realidad estaremos generando y haciendo desaparecer nuestras tres alarmas anteriormente creadas a voluntad desde esta pantalla.

Para poder activar o desactivar bits utilizaremos un wizard de WinCC como muestra la figura:

Repetimos la operacin para los otros 5 botones y ya estamos en disposicin de hacer aparecer alarmas en la ventana de alarmas. Vamos a editar las propiedades de la ventana de alarmas (clickeando dos veces sobre la misma, que es una forma ms cmoda de observarlas que utilizar el boton derecho del ratn y seleccionar propiedades). Esta ventana va a servirnos para ver el histrico de alarmas, por lo que seleccionaremos Ventana de archivo temporal, que es una desafortunada traduccin de ventana de archivo en formato tambor.

118

Aprende WinCC

Si le pones titulo a la ventana de alarmas el WinCC la hace automticamente movible, y que puede ser cerrada, por lo que desactivamos ver titulo de ventana Una de las cosas ms importantes que deberemos de realizar en esta solapa es realizar un filtrado de seleccin de alarmas. Porqu?. Bien, recordemos que habiamos utilizado las alarmas para fallo de comunicaciones, y para registro de usuarios. En esta en concreto no deseamos observar dichas alarmas, porque le damos otro tratamiento distinto. Por todo esto, deberemos de presionar el botn seleccin y definir que unicamente deseamos observar en esta pantalla las alarmas de clase error.

119

Aprende WinCC

En la siguiente solapa definiremos la seleccin de la alarma por fila, y un desplazamiento automtico para que acuda a la ltima alarma cuando no nos quepan en pantalla.

La barra de herramientas no poseer todos los botones. Veamos los no deseados y el porqu de su exclusin: Obtener fichero histrico: hemos quedado que es mejor fichero circulante para las alarmas, luego no tiene sentido tener un botn del mismo. Funcin de informe: el tratamiento de informes lo realizaremos nosotros para tener un mayor control sobre los mismos.

120

Aprende WinCC

Por ltimo definimos los bloques que compondrn nuestra lnea de alarmas y el orden que poseern en la misma

Ya podemos comprobar nuestra ventana de alarmas en el runtime.

121

Aprende WinCC

Alarmas Actuales. Nuestro siguiente objetivo es poder mostrar en bottom.pdl una ventana en la que aparezca reflejada la ltima alarma que ha aparecido en la instalacin. Para ello introduciremos un WinCC alarm control como muestra la figura:

Esta ventana de alarmas posee las siguientes propiedades: El tipo de ventana es de aviso. Tambien aplicamos aqu una seleccin para que nicamente nos muestre las alarmas de tipo error. En la solapa parmetros no aplicamos seleccin, ni mostramos ttulo de columna ni ttulo de fila.

No mostramos ni barra de herramientas, ni barra de estado. Por ltimo seleccionamos los siguientes bloques para la ventana de alarmas. Aqu no son necesarios ni el nmero de alarma, ni la duracin, ni el usuario, que quedan para la ventana del histrico.

122

Aprende WinCC

Si lo ejecutamos y activamos alguna alarma comprobamos que falta algo: como acusarlas desde la propia bottom.pdl. Tenemos que ir a acusarlas a alarmas.pdl. Debemos pues de poner un botn como muestra la figura en bottom que nos permita acusar las alarmas actuales desde cualquier pantalla.

A la ventana de alarmas de bottom.pdl la nombraremos como VENTANA_ALARMAS_ACTUALES. Hecho esto deberemos de asociar el siguiente cdigo al botn de acuse de alarmas: AXC_OnBtnSinglAckn(lpszPictureName,"VENTANA_ALARMAS_ACTUALES");

Ya podemos comprobar como queda en nuestro proyecto la nueva ventana de alarmas en la parte inferior de nuestras ventanas.

123

Aprende WinCC

Un indicador de nueva alarma. Puede que nos interese hacer un indicador al estilo de los paneles de operador, de tal manera que cuando aparezca una nueva alarma parpadee en la pantalla hasta que presionemos el botn de acuse, indicndonos que tenemos una alarma pendiente de acusar que an no hemos atendido. Una idea podra ser esta que vamos a desarrollar a continuacin. Vamos a crear una nueva variable interna de tipo bool denominada ACUSE. En la pdl bottom.pdl introducimos el siguiente icono de la librera:

En la propiedad del objeto visualizacin asociamnos la variable booleana.

Tambin activamos la opcin de parpadeo con velocidad media para que parpadee cada medio segundo cuando sea visible. Volvemos al Alarm Logging. Nuestro objetivo va a ser que cuando aparezca una nueva alarma de tipo error se active el bool ACUSE y se desactive con el botn de acuse que hemos colocado a la derecha de la ventana. Lo primero que hacemos es esta asociacin, que conseguimos si pulsamos el botn derecho sobre clase de avisos->error, en la segunda solapa, como muestra la figura:

124

Aprende WinCC

El truco est en asociar en acuse del sealizador central la variable anterior. Adems de realizar este proceso, es necesario que las alarmas de dicha clase (error) tengan activada la opcin activa el sealizador central.

Ya podemos comprobar como nos queda nuestra imitacin de panel de operador.

125

Aprende WinCC

Imprimir las alarmas en papel. A la hora de realizar Reports de alarmas nos interesa disponer de dos: Alarmas actuales Histrico de alarmas. Comenzaremos por realizar los dos Report con el Report Designer que nos permitirn realizar estas tareas. Podemos crear uno desde cero o abrir el Report @ccalgrtonlinemessages.rpl y renombrarlo. Crearemos primero un Report denominado alarmas_actuales.rpl. Las propiedades de la parte dinmica sern:

Si editamos la seleccin podremos seleccionar tanto los bloques que compondrn nuestra lnea de alarmas como la seleccin de la clase de alarmas a mostrar.

126

Aprende WinCC

Ya tenemos nuestro Report. Necesitamos ahora realizar una nueva orden de impresin, como la siguiente:

Ya podemos pasar al Report del histrico de alarmas. Creamos un nuevo Report con la siguiente tabla dinmica:

Las propiedades de bloques de lnea y seleccin son las mismas que anteriormente para la de alarmas actuales. Tambin realizamos una orden de impresin como la siguiente:

Ya estamos en disposicin de llamar a estos Report desde dos botones que colocaremos sobre la ventana de alarmas de alarmas.pdl.

127

Aprende WinCC

El cdigo que asociaremos al botn de alarmas actuales ser el siguiente:


RPTJobPreview("ORDEN_ALARMAS_ACTUALES");

Mientras que el del botn de histrico ser el siguiente:


RPTJobPreview("ORDEN_HISTORICO_ALARMAS");

El resultado final lo podemos apreciar en la imagen, en la que estamos visualizando el Report del histrico de alarmas.

128

Aprende WinCC

Filtrados de seleccin de alarmas. Cuando comenzamos a tener muchas alarmas en el histrico necesitaremos hacer filtrados de las mismas para poder saber, p. Ej. Las que se produjeron hace 3 meses, o todas las que conciernen a un determinado nmero de alarma. Esto se puede realizar de una manera sencilla desde el botn de seleccin de la ventana de alarmas. En el ejemplo de la figura estamos filtrando en la ventana de alarmas nicamente

Esto mismo que estamos realizando por la ventana de seleccin tambin lo podemos realizar a travs de cdigo C. Veamos este mismo ejemplo, pero a travs de un botn que nos filtra las alarmas de nmero 4 (igual que el ejemplo anterior, pero esta vez en C).
BOOL ret; MSG_FILTER_STRUCT Filter; CMN_ERROR Error; ( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) ); ( Filter.szFilterName, " Ventana_Alarmas "); Filter.dwFilter = MSG_FILTER_NR_FROM | MSG_FILTER_NR_TO; Filter.dwMsgNr[0] = 4; Filter.dwMsgNr[1] = 4; ret = AXC_SetFilter(lpszPictureName,"Ventana_Alarmas",&Filter,&Error);

Si queremos mediante un botn volver a mostrar todas las alarmas de clase error el cdigo sera:
char cadena[200]; strcpy(cadena,"MSGNR >= 4 AND MSGNR <= 4 AND CLASS IN( 1 ) AND TYPE IN( 1 ,2 ,3 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena);

En la primera parte del cdigo creo que queda claro como se define el rango de seleccin. La pregunta surge con la segunda parte, con la asignacin a la cadena de texto cadena. Cmo podemos saber que cadena de texto es la que realiza el filtrado que nosotros deseamos. Es bastante sencillo. Unicamente tenemos que realizar dicho
129

Aprende WinCC

filtrado con la ventana de seleccin de WinCC (como al principio del presente captulo), aceptar dicha ventana y volver a abrirla. En la parte inferior, seleccionamos la consulta que nos indica y la copiamos al portapapeles con ctrl.+c, para despus pegarla en nuestra subrutina.

130

Aprende WinCC

Hacer sonar la alarma por los altavoces. Ahora nos interesa que suene un sonido wav cada vez que aparece una nueva alarma en la instalacin, para que si no estamos mirando la pantalla la detectemos de manera acstica. Para ello primeramente necesitamos un sonido en formato wav (o varios, ya que podemos hacer que suene uno diferente para cada alarma, o para unas cuantas). En nuestro proyecto nos vamos a windows, y con el explorador de windows creamos una nueva carpeta que llamamos wav como muestra la figura:

En esta carpeta copiamos el wav que deseamos que suene. Ya podemos volver a WinCC. Ahora necesitamos recordar un concepto que vimos anteriormente: cuando se activa una alarma podemos hacer que entre automticamente el WinCC a una funcin del sistema llamada gmsgfunc.fct. Vamos al Global Script, y en funciones estndar->alarm disponemos de esta funcin. Deberemos de introducir el siguiente cdigo en la misma:
BOOL GMsgFunction( char* pszMsgData) { MSG_RTDATA_STRUCT mRT; memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) ); if( pszMsgData != NULL ) { sscanf( pszMsgData, "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d", &mRT.dwMsgNr, // mensaje de alarma &mRT.dwMsgState, &mRT.stMsgTime.wYear, // ao &mRT.stMsgTime.wMonth, // Mes &mRT.stMsgTime.wDay, // dia &mRT.stMsgTime.wHour, // hora &mRT.stMsgTime.wMinute, // Minuto &mRT.stMsgTime.wSecond, // Segundo 131

Aprende WinCC

&mRT.stMsgTime.wMilliseconds, &mRT.dwTimeDiff, &mRT.dwCounter, &mRT.dwFlags, &mRT.wPValueUsed, &mRT.wTextValueUsed ); }

// Milisegundo // Diferencia de tiempo // Contador interno de alarmas // Marca interna

printf("Alarma Nr : %d, Estado: %x, Fecha:%d-%d-%d Hora:%d:%d:%d.%d, Dur: %d, Cnt %d, Fl %d\r\n" , mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear, mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wSecond, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff, mRT.dwCounter, mRT.dwFlags ) ; if (mRT.dwMsgState==MSG_STATE_COME) // Si la alarma aparece sonar { #pragma code("Winmm.dll"); VOID WINAPI PlaySoundA(char* pszSound, char* hmode, DWORD dwFlag); #pragma code(); unsigned long nummer=mRT.dwMsgNr; // variable del nmero de alarma

if(nummer==3) { PlaySoundA("C:\\siemens\\WinCC\\WinCCProjects\\dunkerdemo_v51\\Wave\\Sound136.wa v",NULL,1); } if(nummer==4 ) { PlaySoundA("C:\\siemens\\WinCC\\WinCCProjects\\dunkerdemo_v51\\Wave\\ringin.wav",N ULL,1); } } return( TRUE ); }

Como podemos apreciar, utilizamos una funcin API que declaramos llamada PlaySoundA para hacer sonar el wav cuando aparezca la alarma. En este ejemplo hacemos sonar el wav sound136.wav cuando aparece la alarma 3, y el ringin.wav cuando aparece la alarma 4. Si no queremos complicarnos la vida podemos modificar el ejemplo para que siempre que aparezca cualquiera suene el mismo wav. Aunque parece un poco complicado, si estudias el cdigo vers que no tiene mayor complicacin que hacerlo una vez para tu proyecto y te valdr para siempre.

132

Aprende WinCC

Controlar las alarmas desde Access. Si utilizamos el formato tambor para las alarmas no necesitaramos este captulo, ya que cuando llega al valor predeterminado para el tambor nunca lo sobrepasa. Pero en el caso de que deseemos almacenarlas secuencialmente necesitaremos borrarlas con el paso del tiempo. La forma ms sencilla es a traves de un enlace odbc desde Access. Inicializar la base de datos de runtime no es posible, ya que dentro de dicha base se guardan tambin los histricos de grficas, que perderamos si utilizsemos este mtodo (el de cargarnos la rt.db de nuestro proyecto). El primer problema radica en conocer donde se encuentran las alarmas dentro de la base rt.db. Para ello vamos a crear una nueva base de datos desde Access (no importa el nombre que le des), y en el menu seleccionamos archivos->obtener datos externos>vincular. En tipo de archivo seleccionamos odbc y seleccionamos la runtime de nuestro proyecto, como muestra la figura:

Hay dos tablas que nos interesan: Dba.msarchlong para alarmas secuenciales, y Dba.msarchshort para alarmas formato tambor.

133

Aprende WinCC

Nos aparece una tabla de Access en la que vemos el histrico de alarmas de nuestra runtime. Ahora ya podemos borrarlas, o hacer lo que deseemos con ellas utilizando las herramientas de Access. No es conveniente realizar esta operacin con el runtime en marcha, ya que puede que WinCC intente generar una alarma mientras estamos borrando el histrico y tengamos problemas, por lo que sera conveniente para previamente la parte de runtime.

134

Aprende WinCC

Alarmas internas del sistema. El cdigo interno de WinCC tiene la posibilidad de enviarnos unas alarmas predefinidas por el mismo para indicarnos errores internos que se estn produciendo en el cdigo. No est de ms que utilicemos dicha funcionalidad en nuestro ejemplo, aunque no llega a ser todo lo til que deseamos, ya que frente a la llamada por cdigo de una variable que no exsite, o la ejecucin de un Report errneo no nos genera una alarma de sistema, siendo necesario recurrir a la ventana de depuracin de c que vimos en anteriores captulos. Lo pruimero que necesitaremos ser generar las alarmas del sistema de WinCC. Acudimos al Alarm Logging y en el men herramientas->avisos del sistema WinCC podemos crear las alarmas internas de WinCC.

Los mensajes son creados a partir del nmero de alarma 1.000.000 para que no nos machaque alguno que hubiesemos generado nosotros previamente.

Ya hemos finalizado en el Alarm Logging. Vamos a editar la pdl de alarmas que realizamos anteriormente para poder observar dichas alarmas cuando se produzcan. Observar que las alarmas del sistema de WinCC son sin acuse y se almacenan en el tambor de alarmas.
135

Aprende WinCC

Para poder visualizar las alarmas del sistema en nuestra ventana de alarmas vamos a colocar los siguientes botones en la misma:

El botn amarillo se denominar BOTON_ALARMAS, mientras que el gris BOTON_INTERNAS. Porqu hemos pintado el color de fondo del botn boton_alarmas de amarillo?. Vamos a utilizarlos para seleccionar un tipo de alarmas u otro en la ventana de alarmas, y necesitaremos saber en cada momento cual es la seleccin de alarmas que se est visalizando. Por lo tanto, tenemos dos trabajos: 1 . Cambiar el color de fondo a amarillo en el botn que seleccionemos en cada momento. 2 . Realizar un filtrado de seleccin de alarmas, segn deseemos ver las de clase error (nuestras alarmas) o sin acuse (la clase que utiliza WinCC para mostrar las alarmas internas). El cdigo que realiza esta operacin en el botn BOTON_INTERNAS ser el siguiente:
char cadena[200]; strcpy(cadena,"CLASS IN( 18 ) AND TYPE IN( 273 ,274 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena); SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_LTGRAY); SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_YELLOW

Observemos que primeramente hemos realizado un filtro SQL a la ventana de alarmas (la sentencia SQL contenida en la variable cadena la hemos obtenido previamente en el runtime realizando la seleccin de la clase sin acuse como muestra la figura inferior.

136

Aprende WinCC

El cdigo para el botn BOTON_ALARMAS ser el siguiente:


char cadena[200]; strcpy(cadena,"CLASS IN( 1 ) AND TYPE IN( 1 ,2 ,3 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena); //Tipo de retorno :BOOL SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_LTGRAY); SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_YELLOW);

Con esto ya podemos observar nuestras alarmas, o las del sistema interno de errores de windows de una manera sencilla con dos simples botones. La cuestin que se habr preguntado es: cmo conozco el color que debo de pasar como parmetro a la funcin SetBackColor?. WinCC posee una serie de colores ya predefinidos con unas constantes (hemos utilizado ya dos de ellos). La tabla completa de dichos colores es la siguiente:

Color VALOR COLOR (Hex) ROJO 0x000000FF ROJO OSCURO 0x00000080 VERDE 0x0000FF00 VERDE OSCURO 0x00008000 AZUL 0x00FF0000 AZUL OSCURO 0x00800000 CYAN 0x00FFFF00 CYAN OSCURO 0x00808000 AMARILLO 0x0000FFFF AMARILLO OSCURO 0x00008080 MAGENTA 0x00FF00FF MAGENTA OSCURA 0x00800080 GRIS CLARO 0x00C0C0C0 GRIS 0x00808080 NEGRO 0x00000000 BLANCO 0x00FFFFFF

CONSTANTE CO_RED CO_DKRED CO_GREEN CO_DKGREEN CO_BLUE CO_DKBLUE CO_CYAN CO_DKCYAN CO_YELLOW CO_DKYELLOW CO_MAGENTA CO_DKMAGENTA CO_LTGRAY CO_DKGRAY CO_BLACK CO_WHITE

Si no desea uno des estos colores sino uno personalizado, asignelo previamente a un botn, y consulte su valor con GetBackColor, asocindolo a una variable y observndola. Nos devolver un doble entero que identifica a dicho color personalizado.

137

Aprende WinCC

Captullo 5 Cap tu o

Tag Loggiing.. Tag Logg ng

El Tag Logging es el editor de WinCC que se encarga del almacenamiento de los valores de proceso en el disco duro, as como de mostrarlos tanto en formato de grfica como de tabla de valores. As mismo, permite editar dichos valores a posteriori desde la base de datos. La presentacin del Tag Logging en pantalla es la siguiente:

138

Aprende WinCC

Propiedades del proyecto Si pulsamos sobre el nombre de nuestro proyecto con el botn derecho, podemos seleccionar sus propiedades.

Exportar variables en formato Dbase III La opcin ms interesante es que podemos seleccionar el almacenar las variables de un archivo Short-term que generemos en formato Dbase III. Esta opcin es especialmente aconsejable cuando queramos disponer de un archivo de tambor que deba disponer de un gran nmero de variables, ya que el acceso en formato Dbase III es ms rpido. Tambin es una eleccin aconsejable cuando necesitemos exportar nuestros valores a otra base de datos que no sea la del propio WinCC. Si activamos esta casilla, todas las variables que definamos en los archivos de nuestro proyecto generarn en el subdirectorio Pde\archivo_de_valores un archivo en el que almacenan su valor de proceso, componindose dicho archivo del nombre de la variable, con la extensin DBF. El formato Dbase III es exportable por la mayora de las aplicaciones. El archivo que genera posee 3 columnas: T: Fecha y hora de la adquisicin del valor. Este campo es de texto y no separa la fecha de la hora, por lo que su tratamiento es relativamente difcil, requiriendo de una macro que nos descomponga los campos en celdas separadas si deseamos posteriormente realizar consultas por fechas o intervalos de tiempo. V: valor del proceso. Este es el valor del proceso que almacena en el archivo. F: Cdigo de error de lectura del valor del proceso. Si el valor es correcto, este campo est a cero. En la imagen se puede apreciar un archivo exportado automticamente a Dbase III y abierto con Excel.
139

Aprende WinCC

Observar que el campo fecha, en realidad es 1999-01-02 y 19:40:34:990, es decir, el 2 de enero de 1999 a las 19:40:34 y 990 milisegundos. Esta descomposicin es necesaria realizarla a mano, ya que no almacena cada valor en un campo de la base de datos. Sin embargo, es posible su tratamiento debido a que siempre se encuentran los datos de fecha, hora, etc.. en las mismas posiciones de la cadena de texto. Nota: Hay que observar que la notacin de la fecha es estilo americano (ao, mes, da), no europeo.

140

Aprende WinCC

Tiempos de adquisicin de valores Podemos definir timers, es decir, temporizadores de proceso, que posteriormente podremos utilizar para la adquisicin o el almacenamiento de valores de proceso a intervalos propios.

Los predefinidos aparecen en la figura, pero si deseamos uno nuevo, solo necesitamos rellenar la pantalla de nuevo timer, o modificar un o existente.

En la imagen se puede ver un nuevo temporizador que actuar cada 3 segundos. Las opciones son:
141

Aprende WinCC

Que se dispare el temporizador solo entrar a WinCC, pese a que no le corresponda an. Que se dispare el temporizador al salir de WinCC, pese a que an no le corresponda. Poder seleccionar la fecha exacta de comienzo del ciclo de disparo. A partir de ese minuto y ese segundo, comenzar cada 3 segundos a dispararse.

142

Aprende WinCC

Crear archivos de valores en el disco duro

La opcin archives de la ventana del Tag Logging es la que se encarga de la configuracin de los archivos de almacenamiento de valores en el disco duro. Para realizar la configuracin de los mismos disponemos de un Wizard que aparece en el men contextual presionando sobre archives con el botn derecho. Archive Wizard Lo primero que se nos pide en el Wizard es el nombre de nuestro archivo. Dicho nombre debe de ser una nica palabra, por lo que si queremos hacerla significativa deberemos generalmente de separar varias palabras con subrayados, como muestra la figura.

Tambin se nos permite elegir entre los tres tipos de archivos posibles. Los archivos de WinCC pueden ser: Archivos de proceso: archivo que almacena los valores de una o varias variables en el disco duro. Compressed Archives: archivos de valores comprimidos. Se realiza una compresin de los datos antes de almacenarlos, y una descompresin a la hora de
143

Aprende WinCC

sacarlos de nuevo de la base de datos. Este tipo de archivos es ideal para el almacenamiento de grandes cantidades de datos que no requieran un almacenamiento inferior al minuto.

En el paso 2 del Wizard podemos seleccionar aquellas variables que van a ser almacenadas en el archivo. Con el botn select podemos ir aadindolas a la lista. Estas variables slo comparten el lugar de almacenamiento, pero no necesariamente el tiempo de lectura ni el de almacenamiento, como posteriormente veremos. Propiedades de los archivos de valores Si presionamos con el botn derecho sobre el nuevo archivo de valores que se nos ha generado en el Tag Logging podemos editar sus propiedades. Las opciones que podemos modificar son: Archive name: podemos cambiar su nombre a posteriori. Comment: podemos aadir un comentario sobre dicho archivo. Archiving at system starts: Indica si el almacenamiento en el disco duro debe de comenzar solo entrar en la runtime de WinCC, o cuando nosotros se lo indiquemos con una funcin. La opcin enabled comienza a almacenar nada ms entrar en la runtime, la opcin locked no. Archive type: Esta funcin de solo lectura nos indica de que tipo es nuestro archivo. Esto quiere decir que una vez generado un tipo de archivo no podr ser modificado posteriormente, por lo que tendremos que generar otro y borrar el actual si deseamos cambiar de tipo de archivo nuestros valores.

144

Aprende WinCC

Authorization level: Nivel de autorizacin requerido para poder leer los valores del archivo, y para poder editarlos. Hay que tener en cuenta que estos datos son variables dependiendo del archivo en cuestin, luego se puede hacer archivos protegidos (nivel elevado de proteccin) y otros desprotegidos. Tambin se puede dejar desprotegida la lectura, y proteger la escritura para que solo el responsable pueda modificar los datos en el archivo.
Hay que tener en cuenta que si no se ha creado por lo menos un usuario en el User Administrator, lgicamente no aparecer la ventana de niveles de usuario al presionar el botn select. Para poder seleccionar los niveles de lectura, o escritura en archivos de proceso, primeramente deber ir al captulo dedicado a User Administrator y generar por lo menos un usuario nuevo, asignndole unos niveles que sean de leer archivos y otro de escribir en archivos. Al volver a esta pantalla, ya podr seleccionar el nivel deseado en la misma.

145

Aprende WinCC

Action during start/enabled: podemos definir una accin en C que se ejecutar cada vez que se habilite la lectura y almacenamiento en el archivo.

En la solapa archive parameters, podemos definir: si el archivo seleccionado es short-term el tambor de valores deseado. Memory location: donde guardar los valores ledos. Se pueden guardar en la memoria RAM del ordenador o en el disco duro. Si se selecciona en la memoria del ordenador, el clculo para saber cuanta RAM estamos consumiendo es: Memoria RAM consumida=Numero de valores de proceso * 28 bytes Si no se dispone de un SAI en la instalacin no es recomendable almacenar en la memoria del ordenador, ya que si se desconecta la alimentacin los datos almacenados se pierden. Solo sera interesante esta opcin cuando necesitamos leer muchos valores rpidamente y o no los vamos a almacenar de manera permanente, o solo deseamos obtener en pantalla una representacin p. Ej,. de una curva de temperaturas en los ltimos 20 segundos con una lectura cada medio segundo. En estos casos, el almacenamiento en el disco duro producira un acceso constante al mismo, por lo que el WinCC sera ingobernable si no se accede a memoria. Action for exporting the short-term archive: Accin en C que se tiene que ejecutar para exportar el archivo short-term. Cuando se llega al final del tambor, se ejecutar automticamente esta accin en C, en la cual debemos de incluir nuestra
146

Aprende WinCC

programacin para el almacenamiento de dichos valores en otro archivo. Si no incluimos en este punto dicha accin, el tambor da la vuelta y comienza a machacar el primer valor que almacen con el nuevo adquirido, y as sucesivamente. Archive type: Los archivos pueden ser una vez definido su tipo (de proceso, comprimido o de usuario) de dos tipos: Short-term: archivos de tambor. Sequence: archivos lineales.

Adquirir variables de archivo Propiedades de variables de archivo

Las variables que hemos definido en nuestro archivo, aparecen en la ventana inferior en forma de tabla. Si presionamos el botn derecho sobre cada una de ellas podemos editar sus propiedades particulares.

147

Aprende WinCC

Las propiedades de una variable almacenada dentro de un archivo son: Name of the archive tag: podemos dar un nombre distinto a la variable almacenada que el respectivo de la variable de proceso. Name of the process tag: Valor de proceso que se est almacenando en dicha variable de archivo. Desde esta ventana tambin podemos cambiar de variable de proceso a almacenar a posteriori. Comments: Un comentario individualizado para cada variable de archivo. Supplying tags: Se puede seleccionar la adquisicin de datos desde el administrador de variables hasta el archivo de manera: Automatic: los valores se transfieren de uno a otro de manera automtica. Manual: Los valores requieren de una orden para ser transferidos desde el administrador hasta el archivo. Archiving at system starts: Comenzar a guardar valores en esta variable de archivo automticamente al arrancar la runtime de WinCC o no. Archiving type: Existen tres tipo de almacenamiento para una variable de proceso: Acyclic: Se almacenan valores de proceso cuando arranca la habilitacin del mismo y cuando se deshabilita. Cyclic-Continous: Se almacenan valores de proceso desde que se habilita el mismo, con una frecuencia marcada por el ciclo de almacenamiento, hasta que se deshabilita. Cyclic Selective: Igual que el ciclo continuo, con la diferencia de que adems se puede gobernar cuando debe durante el tiempo de habilitacin de almacenamiento mediante una funcin que determina el comienzo de lectura y la finalizacin de la misma. Upopn change:

Este apartado es el ms importante de una variable de archivo, ya que determina su funcionamiento. Cundo gastar cada uno de ellos?, depende del uso que deseemos darle a la variable, claro est. Variables Acyclic: Valores que solo deseamos guardar en el disco duro cuando un bit se active en el PLC (p. Ej. guardar los valores de presin cuando una pieza pase por el horno). El problema con este tipo de variables es que almacenan dicho valor cuando aparece el bit y cuando desaparece (por flanco positivo y por flanco negativo), por lo que nos duplica el valor deseado, con el agravante de que el valor al aparecer el bit no necesariamente debe ser igual al que almacena cuando desaparece el bit. La solucin esta en almacenar la media de los valores ledos durante el tiempo que el bit est activo. En cualquier caso, no solventa este tipo de variable de archivo el problema, ya que el duplicar las variables hace prcticamente ingobernable el posterior estudio del archivo en el disco duro.

148

Aprende WinCC

Para solventar este problema se puede utilizar una funcin de telerruptor en el PLC, de tal manera que cada vez que se da un pulso positivo, se obtiene una variacin en la salida, pasando de 0 a 1 y viceversa, pero en cualquier caso, la solucin viene a travs de programacin en el PLC.

149

Aprende WinCC

Variables Cyclic-Continous: Valores que deseamos guardar siempre en el WinCC cada x tiempo.

150

Aprende WinCC

Variables Cyclic Selective: Valores que deseamos guardar en el WinCC solo durante determinados perodos de tiempo (p. Ej: cada vez que pase un ladrillo por el horno, y mientras est dentro, almacenar los valores de presin en el WinCC).

151

Aprende WinCC

Also put archived value in tag: determina que variables deben tambin almacenarse en esta variable de archivo adems de la que se indic al principio. Cycle acquisition: Este tiempo indica cada cuanto debe ser ledo el valor de proceso del administrador de variables para pasar a la variable de archivo. Cycle Archiving: Este tiempo indica cada cuanto debe ser almacenada la variable de archivo en el disco duro (o en la memoria de WinCC, si as se decidi). El valor que se almacena depende del mtodo que se utilice para su procesamiento (vase Processing).

En la solapa parameters podemos definir: Processing: Mtodo de clculo para el almacenamiento de la variable de archivo. Las opciones posibles son: Actual Value: Almacena el ltimo valor adquirido, despreciando si los hubiera otros valores que se hubieran adquirido pero an no se hubieran almacenado. Sum: Suma todos los valores adquiridos y los almacena. Maximum value: Almacena el valor mayor de todos los adquiridos durante el perodo de tiempo entre el ltimo almacenamiento y ste. Mean Value: Calcula la media de todos los valores adquiridos y almacena dicho valor. Es el ideal para la mayora de los procesos. Action: Realiza una accin en C cada vez que deba almacenar el valor de archivo en el disco duro. Esta opcin es ideal para clculos complejos de estadstica que no sean la suma, el mximo o la media, que ya son contemplados
152

Aprende WinCC

por el propio WinCC. El botn select permite seleccionar que accin es la que se realizar. Minimum value: Almacena el valor menor de todos los adquiridos durante el perodo de tiempo entre el ltimo almacenamiento y ste.

Unit: The unit for the entered time value is either entered here directly or the associated unit of the tag is selected via a structure element. This entry is used primarily for tag display. Save on error: permite determinar que valor almacenar ante la aparicin de un error en la lectura de la variable desde el proceso. Las opciones posibles son: Last value: Almacena el ltimo valor ledo desde el administrador de variables. Substitute value: toda variable dispone de un valor de substitucin. Podemos determinar el almacenar dicho valor frente a un error de comunicaciones. Archive upon change: Esta opcin permite almacenar el valor exclusivamente si cambia dicho valor en el proceso. Es muy interesante, ya que permite substituir las carencias del Tag Logging en la adquisicin de datos realizando programacin en el PLC. Por ejemplo, ante el fallo del acyclic, que nos archiva valores en el flanco de subida y el de bajada, podemos programar en el PLC una subrutina que cada vez que un bit est activo, nos transfiera un valor del plc a otra variable de comunicaciones. Si el valor es el mismo que posea se le aumenta o disminuye en una cantidad insignificante para su posterior anlisis desde WinCC. As, solo adquiere el valor el WinCC cuando se modifica, que en realidad es cuando existe un bit en el PLC. Hysteresis: % que debe de variar la variable de proceso con respecto al ltimo valor almacenado para que se vuelva a considerar su almacenamiento como necesario. Esta opcin es interesante en valores que est variando ligeramente en el PLC, pero slo nos interesa almacenarlos cuando su variacin sea significativa, ya que en caso contrario se convertira en un almacenamiento continuo de la variable.

153

Aprende WinCC

En display podemos definir: No display limitation: almacena en la variable de archivo cualquier valor que provenga de la variable de proceso asignada. Configured directly:. Si la variable de proceso ha alcanzado un lmite mximo o mnimo, permite configurar el valor a almacenar en la variable de archivo de manera independiente al valor que proviene del proceso. Esta opcin es interesante cuando deseamos ante un valor que se ha salido de escala presentar en la grfica un valor 0.

154

Aprende WinCC

La ventana events nos permite configurar: Start Events: La funcin en C que permite habilitar el almacenamiento de variables de archivo en el disco duro. Stop Events: La funcin en C que deshabilita el almacenamiento de variables de archivo en el disco duro. Dynamic: La funcin que se ejecuta cada vez que un valor de archivo es almacenado en el disco duro.

Para que una de estas funciones realicen la accin deseada, deben devolver un 1. As, si deseamos arrancar el almacenamiento de valores en la grfica con un bit, lo que haremos ser consultarlo dentro de una funcin. Supongamos que deseamos arrancar la grfica cuando un bit de proceso est a uno y pararlo con ese mismo bit cuando est a cero. Tenemos que generar dos funciones, una para el arranque y otra para la parada. Seleccionamos como tipo Cycle-selective. El cdigo de las funciones se encuentra abajo indicado.

155

Aprende WinCC

int Arrancar_Grafica() { if (GetTagBit("NewTag")==TRUE) { return(1); } else { return(0); } }

La funcin para parar el almacenamiento en el archivo es el siguiente:


Int Parar_Grafica() { if (GetTagBit("NewTag")==FALSE) { return(1); } else { return(0); } }

Presettings de variables de archivo Todas estas propiedades que hemos definido para cada variable de archivo podemos preconfigurarlas, para que cada vez que definamos una nueva variable no tengamos que asignrselas de nuevo. Las posibles preconfiguraciones son:

Process Archive. Compressed archive Analog tag: Preconfiguracin de una variable analgica (mayor que un bit).: Binary tag: Preconfiguracin de una variable digital (0 o 1).: Con respecto a las variables digitales, destacar que se puede seleccionar que se almacenen siempre, frente a un flanco positivo o uno negativo. Lgicamente aqu slo existe el ciclo de almacenamiento, ya que no se pueden hacer medias
156

Aprende WinCC

de valores, ni sumas. Podemos as su vez asignar un texto a el estado 0 y otro al 1 (p. Ej 0=parado y 1=arrancado) para una mayor claridad en la grfica.

157

Aprende WinCC

Compressed tag: Preconfiguracin para los valores comprimidos dentro de archivos comprimidos. Las caractersticas de los mismos difieren ligeramente de los archivos normales (ver imagen inferior).

158

Aprende WinCC

Archivos comprimidos. Los archivos comprimidos son como los archivos normales, salvo que se realiza una compresin de la informacin antes de ser almacenada. La nica diferencia es que en ellos vamos a poder determinar: El tipo de compresin de los datos. El tiempo de que se dispone para comprimir los datos (compresin cada da, cada hora, etc..). Se permite indicar un mensaje cuando el disco duro est lleno de datos. Los archivos comprimidos son siempre long-term, por lo que no se permite realizar tambor en los datos.

159

Aprende WinCC

Curvas de valores Las tendencias de valores son utilizadas para mostrar la evolucin de una variable de proceso en el tiempo de manera grfica. La limitacin ms importante es que el eje X siempre obligatoriamente debe ser de tiempo. Cmo crear una curva de valores. En esta versin de WinCC las curvas de valores, a diferencia de versiones anteriores, no se realiza desde el Tag Logging, sino desde el Graphic Designer, insertando un objeto WinCC online trend.

Propiedades de la ventana de tendencias Dentro de una ventana de tendencias podemos tener una o ms curvas, cada una con un color identificativo, y que asociaremos a variables de archivo que formarn parte de un archivo generado anteriormente, como ya vimos.

160

Aprende WinCC

Las

propiedades

de

general

information

son:

Window title: nombre descriptivo de la curva (p. Ej: presin zona 1). Display: Muestra o no la curva o tendencia definida. Open screen: Display ruler: mostrar la regla de posicin al entrar a la picture donde est la ventana de curvas. Display trends staggered: Muestra las tendencias en grficas separadas. Esta opcin es interesante en ciertas situaciones en las que los valores de dos o ms tendencias van parejos en el tiempo, por lo que se estn solapando, y deseamos observarlos o plasmarlos de manera individual. Common X axis: Si en la primera de las tendencias se selecciona esta casilla, todos los ejes X de las tendencias sern comunes. Es decir todos los valores representados en un punto del eje X fueron o estn siendo generados en el mismo instante de tiempo. Si no se selecciona, cada tendencia muestra su propio eje de tiempos, por lo que no se tiene que producir necesariamente una correspondencia temporal entre dos curvas mostradas en la pantalla a una misma altura del eje X. Common Y Axis: Ejecuta la misma accin que antes, pero para el eje Y. Esto es interesante cuando los valores del proceso a mostrar no presentan una correspondencia en unidades (una es presin y otra es temperatura), pero s en temporalidad (las dos variables es interesante mostrarlas a la vez en la misma pantalla para compararlas en el tiempo). Sizeable: la ventana puede ser dimensionada durante el runtime. Can be closed: la ventana puede ser cerrada durante el runtime. Data source: Los datos a mostrar en la grfica pueden proceder de un archivo en el disco duro, o no, con lo que tal como se lean del proceso se mostrarn en pantalla.
161

Aprende WinCC

162

Aprende WinCC

Color: podemos definir el color de la tendencia para poder identificarla con respecto a las dems curvas.

Con respecto a la solapa tag, aqu se puede definir la variable de proceso con la cual estamos conectados o almacenando dicho valor. Observar que en tiempo de ejecucin podemos desde esta ventana modificar dicha variable, con lo cual es posible realizar la operacin de cambiar de seal de proceso a representar sin modificar el desarrollo de visualizacin, siempre y cuando se haya tenido la precaucin de almacenar el valor reserva de proceso en un archivo de valores.

163

Aprende WinCC

En este pestaa podremos crear las curvas que van a componer nuestra ventana de curvas. Podemos configurar: Name: nombre de cada una de las curvas. Display: mostrar o no la curva en cuestin. Color: color asignado a la curva actual. Selection of archives: seleccionar el archivo o la variable de la que tomaremos el valor a representar. Display type: tipo de unin entre los valores representados (barras, lineas, puntos,).

Botones de la barra de herramientas: podemos definir que botonos debern aparecer en la barra de herramientas, as como la tecla de acceso directo que se les asigna a cada uno de ellos.

164

Aprende WinCC

En esta solapa definiremos las propiedades del eje X de tiempos. Recordar que no es posible otro tipo de grfica que no sea temporal. Display: o Coarse Grid: muestra una lnea de divisin en el eje y cada x valores del eje. El valor de x se puede introducir por el campo que aparece a la derecha de dicha opcin. o Fine grid: muestra una lnea de subdivisin al igual que la lnea coarse, pero con la diferencia de que esta es ms estrecha, y no presenta nmero de escala. o Time: o Selection: Seleccin del rango del eje X a mostrar en pantalla. Existen dos posibilidades: Seleccionar un time range, con lo cual veremos elltimo x tiempo, siendo x el valor de factor x rea. O seleccionar una cantidad de puntos de medida a visualizar.

165

Aprende WinCC

En esta solapa configuraremos el eje Y de cada curva. Podemos definir: Si disponemos de divisin gruesa en el eje Y. Si disponemos de divisin fina entre cada divisin coarse grid. Si deben presentarse lineas de ejes y como fondo de grfica. Decimal places: cantidad de decimales a mostrar en el eje Y Label: como denominar a cada una de las curvas. Range selection: seleccin de la escala en el eje Y. Existen dos posibilidades: o Automatic, con lo cual estar en funcin del valor mximo a representar en cada momento. o Definido por el programador, con lo cual no variar sea cual sea el valor a mostrar. En este caso, si el valor a mostrar sobrepasa los lmites indicados para el eje ser limitado al mximo del eje Y configurado.

166

Aprende WinCC

En esta solapa definiremos los cambios de colores de las curvas frente a: Nivel inferior al indicado. Nivel superior al indicado. Solapamiento de valor en el tiempo (overlap). Saltos en el tiempo sin valores (timejump).

Overlamp: cambio de color de la curva cuando se produce un solapamiento de tiempos (se vuelve a repetir el mismo tiempo en el sistema que ya hubo. Jump: Salto del tiempo del sistema. Se ha realizado un salto temporal, adelantando el tiempo del sistema.

167

Aprende WinCC

Con respecto a la unin de los valores en la curva, existen las siguientes posibilidades: Stepped trend: mediante escalones cuadrados que unen nuestros puntos.

Show only dots: une los puntos con lneas discontinuas.

Connect dots linearly: Conecta los puntos mediante lneas.

168

Aprende WinCC

Fill area interpolated trend: muestra los puntos como un rea que rellena del color de la tendencia. Este tipo impide que otras tendencias se puedan apreciar. En la figura se observa como la tendencia 2 queda oculta tras la tendencia 1 debido a que sta ltima se presenta bajo el tipo rea rellena. Slo es aconsejable este tipo para una sola curva, o cuando la curva a la que se le aplica este estilo ocupa la ltima posicin.

Fill area stepped trend: Igual que el anterior pero la unin se realiza mediante cuadrados y no de manera lineal.

169

Aprende WinCC

Adicin y borrado de curvas

En la ventana choose object podemos aadir y restar las curvas que van a componer nuestra ventana de tendencias. A su vez podemos seleccionndolas editar mediante el botn Template las caractersticas de la ventana. Estas son:

Name of the template: Nombre identificativo de la ventana de curvas. Title bar: Muestra sobre la ventana un ttulo con el nombre de la ventana. Status bar: Barra de estado en la que se indica el proceso que est teniendo lugar actualmente. Toolbar: Barra de herramientas con opciones accesibles desde botones ya preconfigurados. Read data from archive inmediately: Leer los datos del archivo al entrar en la ventana. Cuando existe en el archivo una gran cantidad de datos, puede ser
170

Aprende WinCC

interesante desactivar esta opcin y que no pierda tiempo leyndolos. Unicamente cuando rebobinemos marcha atrs en el histrico, leer los datos del disco duro. Font: Fuente de los textos de la escala. Color: Color del fondo de la grfica.

Barra de herramientas Mediante la opcin configure podemos configurar la barra de herramientas que nos aparece en la ventana de curvas.

Las opciones posibles son: Online help system: ayuda en pantalla sobre las opciones ms importantes para poder configurar la ventana de curvas. Set parameters: Esta ventana posibilita que un usuario de WinCC parametrice sus ventana de curvas a su gusto, despus de haber configurado el programador la instalacin. Las modificaciones que se realicen, pueden ser de tres tipos: Voltiles, que se pierden en cuanto se sale de la ventana actual. Esta situacin se produce si en la ventana Persistence no se selecciona nada.

Persistentes en el runtime: seleccionando esta opcin las modificaciones que realice el usuario se mantendrn siempre que no desactive el WinCC. Cuando desactive la runtime de WinCC, o apague el ordenador y lo encienda de nuevo, restablecer la configuracin original.
171

Aprende WinCC

Persistentes en el Runtime y el CS: seleccionando esta opcin las modificaciones que realice el usuario sern permanentes.

Primer dato: si la grfica est detenida, se desplaza al primer elemento del archivo. Dato anterior: muestra el dato anterior del archivo, hasta llegar al primero. Dato siguiente: muestra el dato siguiente del archivo hasta llegar al ltimo. Ultimo dato: se posiciona en el ltimo dato del archivo. Regla: muestra la regla de referencia y la ventana de valores. Lupa: realiza una ampliacin de una zona que determinemos de la grfica. Restablecer tamao: restablece el tamao de la grfica despus de haber hecho un zoom. Modificacin de la variable de archivo seleccionada: mediante esta opcin podemos modificar en el runtime la variable de archivo que asignamos a una determinada curva. La ventana de dilogo es la siguiente:

Mostrar curvas: mediante esta opcin podemos seleccionar que curvas deseamos observar en la ventana La ventana de dilogo aparece abajo indicada..

172

Aprende WinCC

Seleccionar el rango de tiempos: con esta opcin se puede seleccionar el rango de tiempos para cada una de las curvas de la ventana.

Curva previa al frente: esta opcin trae la curva que tengamos en segundo plano al primero y viceversa. Deshacer Curva previa al frente: Esta opcin deshace la accin anterior. Start/Stop: arranque/parada de la actualizacin de los datos en la ventana. Destacar que la parada no significa que se deje de guardar los valores en la base de datos. Estos continan siendo almacenados de igual manera.

173

Aprende WinCC

Tablas de valores Las tablas de valores permiten representar los datos de los archivos en forma de tablas, para poder comparar los valores numricos, adems de poder editar dichos valores directamente desde las mismas, lo que posibilita la modificacin de los datos de proceso con posterioridad al desarrollo de los mismos. Crear una tabla de valores Como pasaba con las grficas, para generar tablas en la versin 5.1 de WinCC es necesario acceder al Graphic Designer donde podremos insertar un objeto de tipo Online table control.

174

Aprende WinCC

En esta ventana podremos generar las columnas que deseemos para nuestra tabla de valores. A su vez, podemos determinar cual va a ser la fuente de datos (de un fichero o de una variable) de la que adquiriremos los datos paramostrarlos en cada una de las columnas.

En esta solapa podemos definir las propiedades de nuestra ventana, como son el ttulo, si debe cargar los datos automticamente al entrar a la picture donde se encuentre, si es dimensionable durante el runtime, etc.. El parmetro common time determina si se utiliza un timepo comn para los valores mostrados en las columnas.

175

Aprende WinCC

176

Aprende WinCC

Con respecto a la barra de herramientas, sus posibilidades y parametrizacin son similares a las de las curvas, salvo por las siguientes nuevas opciones: Editar una columna: Presionando este botn y seleccionando una celda de una columna, si dicha columna tiene activada la opcin Can be edited, ser posible modificarla. Enviar la columna previa a la primera posicin. Invierte la accin del anterior icono. Nivel de password: permite introducir un nivel de password. Insertar fila: en los archivos de usuario, es posible insertar una fila. Borrar fila: en los archivos de usuario, es posible borrar una fila.

177

Aprende WinCC

Grficas.
Grficas continuas. Nuestro siguiente paso en la realizacin del proyecto ejemplo que estamos desarrollando ser trabajar con grficas continuas. Las graficas continuas se basan en adquirir de proceso unos valores y almacenarlos al disco duro cada cierto tiempo. Existe un tiempo de adquisicin y otro (mayor por lo general) de almacenamiento. Se suele gastar un tiempo de adquisicin de segundos y otro de almacenamiento de minutos, para no sobrecargar al sistema con los frecuentes accesos al disco duro del PC.

En el cronograma se puede observar como frente a una adquisicin de un valor de proceso, se est almacenando la media de los valores adquiridos durante el periodo de muestreo, o el valor instantneo en el mismo instante que se cumple el periodo de archivado.

178

Aprende WinCC

En este primer apartado vamos a trabajar con grficas continuas, realizando diferentes ejemplos de programacin con grficas desde c, para al final del captulo ver los otros tres tipos de grficas de que dispone WinCC, cuya clasificacin se realiza en funcin del evento que genera el almacenamiento de los valores de proceso. Para ello lo primero que necesitaremos ser un botn en bottom.pdl que nos acceda a las grficas de nuestro proyecto. Tomaremos el siguiente de la biblioteca:

Dicho botn nos servir para entrar a un men que el desarrollo del presenta captulo nos permitir navegar por las pantallas que tienen que ver con los diferentes tipos de grficas. De momento vamos a comenzar renombrando la pdl salir.pdl, como graficas.pdl, y dejndola con el siguiente aspecto:

179

Aprende WinCC

El cdigo que asignaremos al botn de bottom.pdl ser el siguiente: SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName" ,"GRAFICAS.PDL");


SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","GRAFICAS"); SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);

Mientras que el cdigo que asociaremos al primero botn de graficas.pdl ser el siguiente:
OpenPicture("GRAFICA_CONTINUA.PDL");

Ahora vamos a copiar start.pdl y renombrarla como grafica_continua.pdl. Ya tenemos la estructura de ventanas como para empezar a trabajar con las grficas. De momento hemos finalizado con el Graphic Designer. Podramos trasbajar con variables de comunicaciones para este ejemplo o con variable internas. Elegimos esta segunda opcin por ser ms faciles de simular desde WinCC. Para ello, vamos a generar 3 nuevas variables internas, llamadas respectivamente curva_1, curva_2 y curva_:3, de 32 bits de coma flotante. Estas variables son cuyos valores alamacenaremos en nuestras curvas dentro de nuestro archivo. Vamos ahora al Tag Logging, a desarrollar nuestro fichero de curvas.

Vamos a crear un fichero de valores de proceso, en que incluiremos 3 curvas, cada una asignada a las variables internas definidas previamente. Si pulsamos con el botn derecho sobre el nombre de nuestro proyecto, podremos seleccionar sus propiedades. En dichas propiedades podemos activar la exportacin de los valores que vamos a lmacenar en nuestra runtime automticamente a ficheros externos en formato csv. Esto nos permitir ms adelante poder trabajar desde Access con dichos valores de una manera sencilla. Si esta operacin la efectuaramos a posteriori perderamos el histrico de valores que se hubiese realizado hasta ese momento.

180

Aprende WinCC

En las propiedades de nuestro fichero de curvas podremos definir el tamao del tambor de nuestro archivo circulante. Cul debera de ser dicho valor?. Bien, para ello vamos a poner un ejemplo, y cada uno podr sustituir sus propios parmetros por los que aqu se muestran. Supongamos que deseo alamacenar la temperatura de una sala, y deseo tener un histrico de 1 ao. La temperatura la alamacenar cada hora. Como en 1 da hay 24 horas, y en 1 ao hay 365 das, el resultado ser: 24 valores por da * 365 das =8760 datos de archivo circulante.

Las curvas para esta instalacin de ejemplo, deberan de guardarse cada hora, pero podemos realizar una lectura del valor cada minuto, y alamacenar al disco duro la media de los 60 valores obtenidos durante la hora para obtener un valor mas estable de evolucin.

181

Aprende WinCC

En nuestro ejemplo de este libro, vamos a seleccionar 1 segundo de adquisicin y 1 segundo de archivado, ya que de otra manera sera inviable mostrar una evolucin rpida (deberamos de esperar 1 hora para ver 1 valor en la pantalla). En la solapa parmetros podemos definir que calcule la media de los valores obtenidos antes de realizar el almacenamiento al disco duro.

Ya disponemos de nuestra base de datos. Deberemos ahora de volver al Graphic Designer para trabajar con dicha base a travs de nuestra ventana de curvas. Para ello, abrimos de nuevo la pdl grafica_continua.pdl, e insertamos el objeto online trend.

Clickeando dos veces sobre dicho objeto en el Graphic Designer podemos editar sus propiedades, y definir tres curvas (procedentes de nuestro archivo anterior). Para ello, iremos seleccionndolas con el botn de seleccin que nos muestra la base de datos creada y las tendencias de que dispone.

182

Aprende WinCC

A continuacin desactivamos el ttulo de la ventana. Esto es as debido a que en caso contrario la ventana ser desplazable por el operario, y deseamos que sea fija en la pantalla. Puedes comprobar esto que estamos explicando activndola y desactivndola posteriormente y observando el efecto del ttulo sobre la movilidad de la pantalla. Asignaremos un eje x comn y un eje y comn. El fondo de la ventana de grficas es mejor dejarlo de color blanco si el cliente lo permite (luego lo comprenderemos cuando veamos la impresin de grficas).

183

Aprende WinCC

En la solapa del eje de tiempos vamos a realizar una asignacin orientada a poder mostrar una grfica lo ms rpidamente ahora que se encuentra parendiendo las nociones de WinCC. La idea es mostrar en 1 minuto valores que van evolucionando. Evidentemente, en una instalacin real, generalmente definiremos como intervalo de tiempo 1 da o ms, para poder percibir una evolucin de datos significativos. Es importante observar como en formato deberemos de seleccionar el formato de tiempos adecuados (milisegundos carecen de sentido en instalaciones reales).

Pasamos ahora al eje y de la grfica. Como hemos indicado que deseamos un eje y comn, el WinCC nos va a mostrar un nico eje, pero en realidad el continua con un eje y diferente para cada curva. Es por esto que cuando copie los valores que va a ver en la siguiente imagen, deber de repetirlos volviendo a seleccionar cada una de las curvas en esta pantalla, y volviendo a introducir dichos valores.

184

Aprende WinCC

Si no introduce los mismos valores para los tres ejes y de las tres curvas, no le funcionarn correctamente las parametrizaciones de cdigo c que posteriormente vamos a realizar. Con esto ya hemos finalizado nuestra ventana de grficas. Si arrancramos ahora el runtime, veramos que ya disponemos de la misma, pero no poseemos valores, y por lo tanto las curvas se encuentran en el punto 0. Para tener datos que visualizar, a la hora de aprender a manejar el WinCC, es muy til utilizar el simulador de variables que lo acompaa. Dicho simulador de variables es una opcin de la instalacin, por lo que si no dispone del mismo en Inicio->Simatic->WinCC->Tools->WinCC variable simulator deber de recurrir al cd-rom de WinCC para instalarlo. Suponemos que ya se encuentra instalado en nuestro disco duro, por lo que podramos ejecutarlo a travs del men inicio de windows. Pero en nuestro ejemplo vamos a incluir un botn en nuestra pdl de graficas que permita ejecutar el simulador desde nuestro proyecto directamente. Incluimos a la drecha de nuestra pdl el siguiente objeto de la biblioteca:

En el evento hacer clic de dicho objeto introducimos el siguiente cdigo:


ProgramExecute("C:\\SIEMENS\\WinCC\\SmartTools\\Simulator\\Simulation.exe");

Esto nos permitir arrancar el simulador desde la runtime de WinCC. Al arrancarlo definimos las siguientes funciones matemticas para cada una de las variables internas que utilizamos para simular nuestras curvas: Curva 1: seno de amplitud 50, paso por cero 50, y periodo de oscilacin de 25. Curva 2: valor random (aleatorio) de 0 a 100. Curva 3: valor incremental de 0 a 100. Evidentemente tendremos que ir aadiendo dichas variables en le simulador desde el menu de edicin. Con esto ya podemos comenzar la simulacin con el botn de start de la primera solapa del simulador.
185

Aprende WinCC

El resultado debera de parecerse al de la figura:

186

Aprende WinCC

Juntar y separar curvas. WinCC permite de una manera sencilla juntar y separar diferentes curvas dentro de una misma ventana. En el siguiente ejemplo podremos apreciarlo claramente. Para su realizacin vamos a utilizar un botn que colocaremos a la izquierda de nuestra pdl como muestra la figura:

Dicho botn se denominar BOTON_SEPARAR y poseer el siguiente cdigo:


BOOL valor; valor=GetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",TRUE); SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",FALSE); SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",FALSE); SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","JUNTAR");

//Tipo de retorno :BOOL //Tipo de retorno :BOOL //Tipo de retorno :BOOL //Tipo de retorno :BOOL

} else { SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",FALSE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",TRUE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","SEPARAR"); //Tipo de retorno :BOOL }

Veamos que hace el cdigo anterior: 1 . Primeramente conocemos el estado de la propiedad realycurves, que nos indica si ya estn separadas las curvas o se encuentran juntas. 2. Si se encuentran juntas, las separa, y adems deshabilita eje x y eje y comunes, ya que en caso contrario no surte efecto la separacin. Adems cambiamos el texto del botn, para saber que la siguiente vez que pulsemos lo que vamos ha relizar es lo contrario, es decir, juntarlas.

187

Aprende WinCC

3 . Si se encuentran separadas las junta y coloca los ejes x e y comunes, a la vez que coloca el texto de separar al botn para que sepamos que la siguiente vez que lo pulsemos se van a juntar las curvas. El resultado de cada una de las pulsaciones podemos apreciarlo en las siguientes pantallas:

188

Aprende WinCC

Mostrar la gua por programacin. A continuacin vamos a mostrar la gua de la grfica a travs de programacin en C. Para ello colocaremos otro botn como muestra la figura:

Dicho botn lo denominaremos BOTON_GUIAS, y poseer el siguiente cdigo:


BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",0); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","GridLines"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","GridLines",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_GUIAS","Text","OCULTAR GUIAS"); //Tipo de retorno :BOOL } else { SetPropBOOL(lpszPictureName,"GRAFICA","GridLines",FALSE);//Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_GUIAS","Text","MOSTRAR GUIAS"); //Tipo de retorno :BOOL }

Igual que anteriormente, cambiamos el texto del botn para saber que accin es la que realizar el botn en cada una de las pulsaciones. Las guas del fondo de la pantalla nos permitirn referencias nuestros datos de una manera ms sencilla.

189

Aprende WinCC

190

Aprende WinCC

Mostrar u ocultar curvas por programacin C. Continuando con nuestro ejemplo de grficas, vamos a crear tres botones, cada uno de ellos con la finalidad de poder mostrar u ocultar las respectivas curvas de nuestra ventana de grficas. Cada uno de los botones se denominar BOTON_MOSTRAR1 a BOTON_MOSTRAR3. El cdigo para el primer botn ser el siguiente:
BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",0); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR1","Text","OCULTAR CURVA 1"); } else { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR1","Text","MOSTRAR CURVA 1"); }

Es importante observar como colocamos el indice de la grafica a 0 para ocultar la curva 1. Tambin cambiamos el texto del botn comovenimos haciendo en los anteriores ejemplos. Para el botn segundo el cdigo sera:
BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",1); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",TRUE); //Tipo de retorno :BOOL

SetPropChar(lpszPictureName,"BOTON_MOSTRAR2","Text","OCULTAR CURVA 2"); //Tipo de retorno :BOOL

} else { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR2","Text","MOSTRAR CURVA 2"); //Tipo de retorno :BOOL }

Con esta funcionalidad podemos abrir por ejemplo una ventana al operario en la que decida que curvas deben de visualizarse en cada momento.

191

Aprende WinCC

Imprimir grficas mediante Reports. Existen dos formas de imprimir grficas, mediante el uso de un Report o por impresin directa de la pantalla actual. Vamos a estudiar en este apartado el metodo primero, que aun siendo ms elegante, presenta el inconveniente de no poder parametrizar el eje de tiempos de una manera sencilla. Es por ello, que en funcin de la exigencia del cliente a la hora de mostrar en papel la grfica ser preferible un mtodo u otro. Comenzaremos creando lgicamente creando con el Report Designer un formato de pgina que denominaremos curva_continua.rpl. Lo primero que haremos ser darle tamao apaisado, para que nuestra grfica ocupe toda la hoja. Esto podemos conseguirlo seleccionando con el botn derecho las propiedades de la hoja en la parte gris externa al propio Report, como muestra la figura:

En formato->geometra->orientacin seleccionaremos landscape (apaisado). En la parte dinmica de nuestro Report introduciremos un objeto de tipo metaarchivo dinmico, con las siguientes propiedades:

A continuacin editaremos el intervalo de tiempo, seleccionando el que nos convenga. El problema de este mtodo es que no s permite mostrar todos los datos del tambor, o un tiempo determinado (1 da, 1 hora, etc..) pero siempre a partir de la fecha actual del reloj del pc. Es por esto que si el cliente desea mostrar otro rango de fechas (por
192

Aprende WinCC

ejemplo, la grfica de la evolucin de la semana pasada) no podr utilizar este mtodo teniendo que recurrir al expuesto en el siguiente captulo. En nuestro ejemplo vamos a mostrar los ltimos 10 minutos de evolucin, pero siempre a partir de la fecha actual del pc hacia atrs.

En seleccin de variables seleccionaremos nuestras curvas.

Y por ltimo en formato seleccionaremos ejes y comunes.

El Report finaliza introduciendo una parte esttica con nuestro logotipo de empresa y el nombre de nuestro proyecto y formulario. Ya podemos salir y crear una orden de impresin como la que muestra la figura:

193

Aprende WinCC

Ya estamos finalizando. Nos queda volver al Graphic Designer y en nuestra pdl de grficas crear un botn, denominado IMPRIMIR, que posea el siguiente cdigo:
RPTJobPreview("ORDEN_CURVA_CONTINUA"); //Tipo de retorno :BOOL

El resultado a la hora de imprimir la grfica debera de ser similar al siguiente:

194

Aprende WinCC

Imprimir grficas con hardcopy.

El truco est en imprimir la pantalla, pero modificndola antes de imprimirla para que parezca un Report, y dejndola como estaba posteriormente. Comenzaremos por enviar la ventana de aplicacin TOP que tenemos insertada en la parte superior de la pdl grafica_continua.pdl a la capa 1, desactivando dicha capa con la barra de herramientas del Graphic Designer. En la posicin donde se encontraba la ventana podemos escribir textos estticos, como el nombre de la grfica, etc... Luego volvemos a activar la capa 1, con lo que los textos por defecto quedarn ocultos por dicha ventana. Ahora colocamos un botn de imprimir grfica, al que le asociamos el siguiente cdigo:
SetPropBOOL(lpszPictureName,"TOP","Visible",FALSE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"BOTTOM","Visible",FALSE); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Top",100); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Height",660); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","Toolbar",FALSE); //Tipo de retorno :BOOL WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); SetPropBOOL(lpszPictureName,"TOP","Visible",TRUE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"BOTTOM","Visible",TRUE); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Top",170); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Height",490); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","Toolbar",TRUE); //Tipo de retorno

Estudiemos el cdigo. Primeramente ocultamos la ventana top y bottom. Despus estiramos la grfica hasta el antiguo borde de la ventana top por la parte inferior, con lo que tapamos los botones superiores de la ventana de grficas, y nos ahorramos ocultarlos uno a uno. A continuacin estiramos la grfica hasta la parte inferior de la pantalla del ordenador, ocupando la antigua posicin de la ventana bottom, que ya no es visible. Y por ltimo ocultamos la barra de herramientas de la ventana de grficas. En esta situacin, la pantalla debe de tener el aspecto de la imagen posterior. Una vez tenemos la pantalla en la situacin adecuada, la imprmimos con la funcin externa PRTSCR. Posteriormente, volvemos a dejar todo como estaba. Si el fondo de la ventana de grficas no es de color gris gastaremos mucha tinta, por lo que recomendamos se parametrice desde un principio de color blanco, para no tener que cambiarle el color cuando se imprime la pantalla, adems del efecto visual de pantallazo al cambiar de color. Lgicamente antes de imprimir la pantalla podemos seleccionar el rango de fechas deseado desde la barra de herramientas de la ventana de grficas.

195

Aprende WinCC

196

Aprende WinCC

Control sobre la barra de herramientas de las grficas. Disponemos de la propiedad ToolbarButtons que nos indica mediante un valor numrico qu botones se estn mostrando actualmente. Cada uno de los bits de dicha propiedad es un botn, siguiendo el siguiente esquema:

Por lo tanto, asignando una variable interna de tipo unsigned int a dicha propiedad, podremos realizar adiciones y extracciones de bits en funcin de qu botn deseamos o no mostrar en la barra de toolbar de la ventana de grficas.

197

Aprende WinCC

Cambiar de forma de representacin de grfica. Como sabemos podemos tener diferentes tipos de curvas en una grfica. Los diferentes tipos son: Curva escalonada:

Mostrar solo puntos:

Unir linealmente los puntos:

Rellenar superficie curva interpolada: igual que la anterior pero rellenando el rea. Rellenar superficie curva escalonada: igual que la primera pero rellenado el rea.

Teniendo claros los tipos, vamos a hacer que podamos cambiar de tipo desde unos botones externos a la ventana de grficas. Para ello vamos a utilizar una variable interna de tipo unsigned 8 bits value, que denominaremos tipo_de_curva. Teniendo esta variable, accedemos a la ventana de grficas, y en las propiedades de la misma asignamos la variable tipo_de_curva a la propiedad curveform. Dicha propiedad de una ventana de grficas permite cambiar de tipo e curva segn el siguiente baremo (atencin, los valores se muestran en hexadecimal):

198

Aprende WinCC

Por lo tanto, a nicamente tendremos que colocarnos varios botones, que posean una funcin de C que asigne: Para grfica de lneas: valor a 20, que es un 14 en hexadecimal. Para grficas de puntos: valor a 18 que es un 12 en hexadecimal. Para grfica de barras: valor a 17 que es un 11 en hexadecimal. Para grfica de lneas rellenas: 33, que es un 21 de hexadecimal. Para grfica de barras rellenas: valor de 34, que es un 22 en hexadecimal.

199

Aprende WinCC

Control de grfica con botones externos. Otra accin que podemos desear es arrancar y parar la grfica igual que hacemos con el botn de la barra de toolbar. El tema est en que debemos de dar un ttulo a nuestra ventana de grficas. Pinchamos dos veces en la ventana, y parametrizamos el titulo que debe de poseer:

No es necesario que se vea, y en realidad nosotros no vamos a mostrarlo, ya que si no tendremos que hacer movible la ventana Otro tema de los que ponen a uno contento de verdad es que distingue entre maysculas y minsculas, o sea que como pongas en minsculas la llamada que va debajo no te va ni para atrs. Las funciones a asociar la botn externo son: Parar/Arrancar la grfica.
Set_Focus(lpszPictureName,"ventana_grafica"); TlgTableWindowPressStartStopButton(TITULO_GRAFICA");

Con una pulsacin para la grfica y con otra arranca la misma.

Mostrar la regla. Aunque ya sabemos que hay un botn en la barra de herramientas de la ventana de grficas que nos permite mostrar una regla con la que podemos desplazarnos por la misma y observar de qu valores disponemos en cada momento en cada una de las curvas, puede ser que deseemos mostrarla a travs de un botn externo (uno de los motivos puede ser para poder protegerlo con un nivel de usuario, cosa que de otra manera no es posible). Esto es bastante sencillo incluyendo en el botn las siguientes instrucciones C:
Set_Focus(lpszPictureName,"ventana_grafica"); TlgTrendWindowPressLinealButton("TITULO_GRAFICA");

Hacer un zoom a una parte de la grfica.


Set_Focus(lpszPictureName,"ventana_grafica"); TlgTrendWindowPressZoomInButton ("TITULO_GRAFICA");

200

Aprende WinCC

Ir al ltimo valor de la grfica.


Set_Focus(lpszPictureName,"ventana_grafica"); SetPropWord(lpszPictureName,"ventana_grafica","Index",0); TlgTrendWindowPressLastButton("TITULO_GRAFICA");

Avanzar hacia adelante en la grfica.


#pragma code ("Kernel32.dll"); void WINAPI Sleep(DWORD dwMilliseconds); #pragma code();

Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressNextButton("TITULO_GRAFICA "); Sleep(5000); TlgTrendWindowPressNextButton("TITULO_GRAFICA ");

Avanzar un poco hacia adelante en la grfica.


Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressNextButton("TITULO_GRAFICA ");

Retroceder un poco hacia atrs en la grfica.


Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");

Retroceder en la grfica.
#pragma code ("Kernel32.dll"); void WINAPI Sleep(DWORD dwMilliseconds); #pragma code(); Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressPrevButton("TITULO_GRAFICA "); Sleep(5000); TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");

201

Aprende WinCC

Archivo acclico de valores. Una vez visto el almacenamiento cclico pasamos al segundo tipo de alamacenamiento: el acclico. Como su nombre indica, su forma de almacenamiento del valor de proceso no se basa en un perodo de tiempo determinado, sino por el cambio de una variable binaria de control. Es importante que observe como tanto frente a los cambios por flanco positivo como por negativo se producen alamacenamientos en el disco duro en este tipo de archivado.

Es por este motivo que ser necesario realizar una funcin de telerruptor en el plc en el caso de que se desee almacenar nicamente por flanco positivo. Un ejemplo tpico de este tipo de almacenamiento acclico sera el caso de un transfer de piezas. nicamente cuando una pieza se encuentra frente a la sonda de medida tiene sentido el almacenar una de sus propiedades (el tamao de la pieza, p. Ej). Una barrera fotoelctrica o un detector inductivo podran ser esta variable de control que nos dispara el almacenamiento de dicho valor. La funcin del telerruptor necesaria en el plc podra tener el siguiente aspecto en Step 7 (atencin, esto es un ejemplo de programacin para sep 7, no para programar en el WinCC):

202

Aprende WinCC

En nuestro ejemplo, para poder gobernar fcilmente la variable, vamos a crear una variable interna de tipo bool, que denominaremos ACICLICA en WinCC. Abrimos el Global Script, y creamos una nueva funcin de proyecto, que denominaremos ACICLICA, y que tiene el siguiente aspecto:
BOOL ACICLICA() { BOOL valor; valor=GetTagBit("ACICLICA"); //Return - Type :BOOL return(valor); }

La funcin lo nico que nos hace es devolvernos un valor booleano en funcin del valor de la variable interna. Es necesario realizar esta funcin porque realmente el archivado acclico se realiza en funcin del valor devuelto por una funcin de tipo booleano. A continuacin cerramos el Global Script y abrimos el Tag Logging, editando las propiedades de la curva 1. Vamos a cambiar su forma de almacenamiento de continuo a acclico. Observar como ya carece de importancia el ciclo de adquisicin y de almacenamiento al realizar dicha seleccin (ver imagen adjunta).

203

Aprende WinCC

En la solapa eventos deberemos de asociar la funcin de proyecto que acabamos de realizar.

Ya podemos cerrar el Tag Logging y abrimos la pdl grafica_continua.pdl. La renombramos como grafica_aciclica.pdl, borrando de la ventana de alarmas todas las curvas salvo la primera. Vamos a incluir un botn como muestra la figura:

204

Aprende WinCC

Lo que deseamos es que cuando pulsemos una vez dicho botn se active la variable ACICLICA, y cuando pulsemos de nuevo se desactive, para poder realizar la simulacin acclica. El cdigo para realizar esto es el siguiente:
BOOL valor; valor=GetTagBit("ACICLICA"); if (valor==TRUE) { SetTagBit("ACICLICA", FALSE); } else { SetTagBit("ACICLICA",TRUE); }

Nos queda crear un botn en el men GRAFICAS.PDL que nos acceda a GRAFICA_ACICLICA.PDL como muestra la figura:

205

Aprende WinCC

Archivado ciclo selectivo. El archivado de ciclico selectivo es igual que el archivado de ciclo contnuo, diferencindose nicamente en que se comienza a archivar a travs de una funcin de proyecto que devuelve un true, y se para por otro de igual manera.

Un ejemplo de este tipo de almacenamiento sera el caso de una prensa, que se encuentra en reposo normalmente, pero que frente a un evento de inicio de ciclo debe de registrarse durante el tiempo que dura la prensada una magnitud (temperatura de material, p. Ej). Dispondremos en el plc de una marca que nos indica el ciclo de prensado, y deberemos de detectar cuando aparece dicha variable para almacenar los valores de proceso cada x tiempo, hasta que caiga dicha seal en el plc. Creamos una nueva variable interna de tipo bool denominada SELECTIVA. Nuestro primer cometido ser realizar dos funciones de proyecto, una con el siguiente cdigo:
BOOL ARRANCA_CICLO_SELECTIVO() { BOOL valor; valor=GetTagBit("SELECTIVA"); 206

Aprende WinCC

return(valor); }

Y la funcin de parada la siguiente:


BOOL PARA_CICLO_SELECTIVO() { BOOL valor; valor=GetTagBit("SELECTIVA"); return(!valor); }

Cerramos el Global Script y acudimos al Tag Logging. Igual que hicimos antes, vamos a trabajar sobre la curva 1, que editamos y cambiamos su forma de archivado a ciclo selectiva.

En la solapa eventos deberemos de asociar los dos eventos realizados:

Como anteriormente, con el Graphic Designer abrimos la pdl grafica_ciclica.pdl y la renombramos como grafica_selectiva.pdl. Vamos a colocar un botn que nos active la variable SELECTIVA definida anterirmente.
207

Aprende WinCC

El cdigo asociado a dicho botn ser el siguiente:


BOOL valor; valor=GetTagBit("SELECTIVA"); if (valor==TRUE) { SetTagBit("SELECTIVA", FALSE); SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","ARRANCAR SELECTIVO"); } else { SetTagBit("SELECTIVA",TRUE); SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","PARAR SELECTIVO"); } }

Lgicamente tendremos que poner un botn en graficas.pdl para que podamos acceder a esta nueva pdl generada. Ya podemos probar el ejemplo y controlar el almacenamiento desde el botn generado.

208

Aprende WinCC

Archivado al cambiar. Existe un ltimo mtodo de almacenamiento denominado al cambiar. Es igual al ciclo continuo (el primero que vimos), salvo por dos diferencias: 1. El tiempo de adquisicin de la variable de proceso est asignado a 1 segundo. 2. No se almacenan valores si no cambia el valor de proceso. Es por este motivo que este tipo de almacenamiento es muy interesante para la mayora de las adquisiciones de una instalacin, ya que libera al sistema de tener que almacenar valores repetidos con el ahorro de tiempo al acceder al disco duro, y de espacio en el mismo.

209

Aprende WinCC

Almacenando histricos de evolucin. Si deseamos almacenar cada minuto muchos valores, y queremos tener un histrico de los mismos durante aos, podemos tener la seguridad de que el sistema no va a poder con el archivo resultante, no solo por el espacio en disco duro, sino por el acceso a los datos, que cuanto mas grande es el archivo mas tiempo tarda en almacenar los datos en el mismo. Como hemos visto la solucin pasa por utilizar un tambor de datos y decidir cual es el histrico mnimo que deseamos. Sin embargo, si lo que nos interesa es un histrico para observar la evolucin a lo largo de un gran espacio de tiempo, viendo los datos desde una visin global, aun perdiendo el valor en concreto en una fecha determinada se pueden utilizar ficheros comprimidos, denominacin que se utiliza en WinCC a calcular la media de los valores durante un tiempo, y almacenando dicho valor en representacin de todos los de ese espacio de tiempo. Casos posibles sera la evolucin de las prdidas energticas en un sistema de intercambio de energa. Tendremos nuestro histrico en formato tambor de los ltimos 6 meses, pero adems podemos tener un archivo comprimido en el que observemos la evolucin de nuestro intercambio energtico a lo largo de aos, siendo cada unos de los valores de dicho archivo comprimido un da. Por lo tanto, para poder disponer de un fichero comprimido es necesario previamente disponer de un fichero de valores de proceso en el Tag Logging. Como nosotros ya disponemos del fichero curvas, vamos a crear un nuevo fichero, pero esta vez ser de tipo comprimido.

A continuacin realizaremos la asignacin de nuestros valores del fichero a nuestro histrico. Esto lo conseguiremos seleccionando con el botn derecho del ratn sobre nuestro fichero comprimido->variable de seleccin.

En las propiedades de nuestro fichero comprimido podemos especificar como debe de agrupar los valores a la hora de comprimirlos (cada minuto, cada hora, cada da).
210

Aprende WinCC

Vamos a seleccionar 1 minuto para el clculo, para poder observar en tiempo real una evolucin dentro de dicho archivo sin tener que esperar das para obtener resultados. Ya podemos hacernos una nueva pdl, renombrando grafica_continua.pdl, que denominaremos historial.pdl, y cuya nica modificacin importante es la asignacin de la variable a mostrar en la ventana grfica:

Solo tenemos que poner un botn de acceso en graficas.pdl, y podremos observar como hasta que no pasa 1 minuto no obtenemos valores en dicho fichero.

211

Aprende WinCC

Exportacin de archivos a Access o Excel. Para poder exportar a una herramienta externa los archivos que se encuentran dentro de la base de runtime de nuestro proyecto, la mejor opcin probablemente sea la exportacin en paralelo de dichos datos a ficheros externos en formato dbaseIII. El WinCC dispone de una opcin de exportacin de datos a dicho formato, con lo que cada vez que almacena datos en un archivo dentro de la base de runtime lo ejecuta tambin en un fichero externo. Deberemos abrir el Tag Logging y seleccionando con el botn derecho sobre el nombre de nuestro proyecto->propiedades podemos activar esta opcin.

Es importante tener en cuenta que al activar esta opcin se borran todos los datos del histrico de la base de datos de runtime, por lo que es aconsejable realizar dicha seleccin al principio del proyecto, en la puesta en marcha. Los datos nos los almacena en el subdirectorio de nuestro proyecto PDE, generando un subdirectorio por cada archivo, y un fichero por cada tendencia. Cada uno de los archivos que genera posee 3 columnas: T: Fecha y hora de la adquisicin del valor. Este campo es de texto y no separa la fecha de la hora, por lo que su tratamiento es relativamente difcil, requiriendo de una macro que nos descomponga los campos en celdas separadas si deseamos posteriormente realizar consultas por fechas o intervalos de tiempo. V: valor del proceso. Este es el valor del proceso que almacena en el archivo. F: cdigo de control interno. Sin relevancia para nosotros.

212

Aprende WinCC

Exportacin de datos via consulta Sql. El motor de la base de datos de Sybase, ncleo del sistema de almacenamiento de valores de WinCC posee una herramienta que permite manejar tanto la base de datos de runtime como la de desarrollo. Podemos utilizar esta posibilidad para incluir un botn dentro de nuestra pdl de grficas que nos permita exportar a un fichero en formato csv una curva que deseemos. En realidad es lo mismo que ya nos realiza automticamente en Dbase III, pero esta posibilidad va mas all ya que permite consultas sql con rango de fechas, consulta a varias tablas, etc.. Supongamos que hemos incluido un botn en la pdl grafica_continua.pdl. El cdigo que deberemos de asignar a dicho botn para que nos exporte una curva ser el siguiente:
char cadena[200]; strcpy(cadena,"DBISQLC.EXE -q -b -c UID=dba;PWD=sql;DBF=C:\SIEMENS\Step7\S7proj\Dunkerde\wincproj\DUNKERDEMO_V51\DUN KERDEMO_V51rt.db;DBN=CC_DUNKERDE_02-06-27_18:20:38R; select t,v from PDE#HD#CURVAS#CURVA_1 order by t ASC; output to c:\\pepe.csv format ascii"); ProgramExecute(cadena); //Tipo de retorno :unsigned long int

Lgicamente vamos a estudiar paso por paso la composicin de la cadena de texto que realiza la exportacin: DBISQLC.EXE : es el programa gestor de bases de datos sybase sqlanywhere 7. UID=dba . Identificacin de usuario. Es siempre dba. PWD=sql . Password. Es siempre sql. DBF= Ruta y nombre del fichero donde se encuentra la base de datos. Como lo que queremos es acceder a la base de datos de runtime, que es donde se encuentran las tablas de los histricos de curvas, escribiremos el path completo de nuestro archivo rt.db. DBN= Nombre de la base de datos desde el punto de vista de administracin odbc. Para saber cual es dicho nombre, en Inicio->Configuracin->Panel de control->Herramientas administrativas->origenes de datos odbc podemos saber el nombre de nuestra base de datos. Lo siguiente ya es la consulta sql, que se compone de: Select t,v : selecciona los campos tiempo y valor From pde#hd#curvas#curva_1 : de la tabla ...de la runtime. Para poder saber cual es la tabla interna dentro de la base de datos de runtimesolo tenemos que sustituir la palabra curva por el nombre del archivo, y curva_1 por el nombre de la tendencia. Order by t : ordenados los campos por fecha de menor a mayor. ASC: ascendente (podria ser descendente). Output to c\\pepe.csv format ascii : el resultado de la consulta sql lo deja en el fichero c:\pepe .csv en formato de texto separado por punto y coma.

213

Aprende WinCC

AR_SEND. Existen situaciones en las cuales la lectura y almacenamiento de valores de proceso se realiza en un determinado instante y posteriormente deben ser adquiridos por el scada dichos valores mostrndolos en el instante en que fueron adquiridos, y no en el que son ledos desde el scada. Dos casos podran ser: Un valor que es almacenado en una db cada medio segundo durante 1 minuto y que no va a recibir ms valores hasta pasadas unas horas. Si adquiriramos los valores en tiempo real desde el scada correramos el riesgo de perder valores o ralentizar durante ese minuto en demasa el PC al estar guardando en el disco duro cada tan corto espacio detiempo. En sinaut, una remota almacena valores que son requeridos por la maestra cada x horas. Dichos valores son adquiridos por el scada desde la maestra un par de horas despus de haber sido generados en la remota. En estas situaciones es necesario recurrir a la funcin AR_SEND, que se encarga de enviar dichos valores a un archivo en el scada guardndolos en el tiempo en que indiquemos en dicha funcin, y no en la hora actual del pc del scada. Esta funcin AR_SEND nicamente est disponible en los equipos S7 400, no siendo posible generarla en los equipos S7 300. Supongamos que tenemos un proyecto de S7 con un equipo 400 conectado al scada por TCP/IP. Nuestro objetivo es transferir 100 valores que han sido almacenados cada hora a partir de una fecha y hora determinada al scada de una sola vez, y que este los guarde en el orden correcto. Lo primero que necesitamos es una DB con una estructura de datos determinada por el tipo de utilidad que le vamos a dar a la funcin ar_send. Dicha estructura es la siguiente:

214

Aprende WinCC

Creamos una DB10 que posee la siguiente estructura:

Veamos que significado tienen cada uno de los parmetros: Tipo_de_cabecera: Tipo de cabecera 0 1 8 9 Tiempo de referencia Cabecera sin tiempo de referencia Cabecera con tiempo de referencia Cabecera sin tiempo de referencia Cabecera con tiempo de referencia AR_ID Subnumero Cabecera sin AR_ID subnumero Cabecera con AR_ID subnumero Cabecera sin AR_ID subnumero Cabecera con AR_ID subnumero

215

Aprende WinCC

Captullo 6 Cap tu o

Report Desiigner.. Report Des gner


El mdulo Report Designer se encarga de todas las tareas relacionadas con la impresin de datos y documentos desde WinCC a una impresora o a un archivo de texto. Un Report es un documento diseado previamente que posee una serie de campos, en el momento de enviarse el documento a impresora o fichero, toman el valor de los datos con los que estn relacionados en la propia base de WinCC. La finalidad lgica de dicho Reports a impresora es permitir al usuario tener constancia en papel de un resumen organizado de los valores del proceso, alarmas, o estado de la instalacin en un momento determinado. Partes del Report Designer Dentro del apartado Report Designer existen tres subdivisiones, cada una con una finalidad distinta.

Layout: Un layout es el propio documento que queremos imprimir. En layout podemos generar dicho documento, disearlo como deseemos y asociar los campos a la base de datos. Todos los propios del sistema WinCC vienen identificados por el signo @ al comienzo del nombre. Line printer layout: a veces no deseamos enviar todo un informe a la impresora, sino ms bien ir imprimiendo un determinado estado en tiempo real (cada vez que se imprima una alarma, sacarla por impresora). En este caso, en lugar de enviar un layout, deberemos configurar un line printer layout, que se encarga de configurar el diseo de la lnea que debe de salir por la impresora. Print Job: Un layout como tal no puede imprimirse, slo ser asignado a un job o tarea, que rene los datos del layout o documento a imprimir, la impresora por la que deseamos realizarlo, y cada cuanto tiempo queremos hacerlo. Es por tanto el job el verdadero Report, pero previamente debe necesariamente haberse generado un layout o un line printer layout para poder ejecutarse.
216

Aprende WinCC

Layout Caractersticas generales

El WinCC, en el momento de generar el proyecto por primera vez, copia en el subdirectorio prt una serie de layouts de sistema. Estos layouts pueden ser modificados por el usuario, pero no deben ser borrados, ya que el WinCC los utiliza a la hora de imprimir la documentacin en sus diversas partes de desarrollo (curiosamente el nombre puede cambiarse sin problemas, el sistema lo identifica internamente y no por el nombre del layout).

217

Aprende WinCC

Todos los layouts poseen la extensin rpl y se encuentran en el subdirectorio prt de nuestro proyecto, por lo que pasar layouts de un proyecto a otro es copiar dicho fichero. El editor de layouts tiene el aspecto que muestra la figura. Si generamos un nuevo layout, podemos observar que nuestro documento se divide en dos partes, una de color gris y otra central de blanco. La parte gris corresponde a la cabecera y pie de pgina del documento, que puede contener campos de la base de datos, pero que ser comn a todas las hojas que compongan el layout. La parte central ser donde se almacenen los datos del Report. Partes de un layout. Un layout se divide en: pgina de cubierta (cover-sheet) contenido del layout o Report. Pgina de contraportada (final page). Las partes del rea de un layout son: rea no impimible. rea imprimible (donde se encuentra la parte esttica del documento). Cuerpo del documento (donde se encuentra la parte dinmica del Report).

La parte esttica del documento est compuesta por campos cuyo valor va a ser comn para todo el Report o son aportados por el sistema, como son la fecha, hora, el nombre del proyecto o el nmero de pgina actual. La parte dinmica est compuesta por los datos a mostrar en dicho Report, e ir en funcin del tipo de datos dinmicos que deseemos mostrar.

218

Aprende WinCC

Pginas de portada y contraportada. La pgina de portada de un layout debe atender a las siguientes reglas: nicamente puede ocupar una pgina. Pese a que est permitidos campos dinmicos en la misma, no son aconsejables, ya que en determinadas ocasiones pueden presentarse cercenados.

Propiedades del layout Si presionamos con el botn derecho sobre el layout, podemos ver sus propiedades. Repasemos las ms importantes: Layout: o Name: nombre del objeto layout. o Context: a que contexto debe relacionarse este layout. Desde el Graphic Designer existen asignaciones a layouts de sistema a la hora de imprimir determinadas acciones (p. Ej., el botn de impresin de alarmas desde la ventana de alarmas est asignado a un contexto.)

Geometry: o Width: ancho de la pgina. o Height: alto de la pgina. o Paper size: formato de tamao del papel en que se imprime el layout (carta, A4,etc..) o Orientacin: Vertical o apaisado. o Left print margin: margen izquierdo a partir del que se empieza a imprimir. o Top dinamic margin: margen entre la parte superior de la pgina y el comienzo de la parte dinmica del documento. Estas distancias determinan la anchura de la parte gris del layout (cabecera y pie de pgina).
219

Aprende WinCC

Miscelaneous: o Cover sheet: Todo layout puede tener una pgina inicial, en la que se puede introducir los textos informativos al respecto del tipo de layout, la instalacin en la que se genera, etcAqu se determina si esta pgina inicial debe de aparecer o no en el documento final. o Final page: lo mismo, pero con una pgina de finalizacin de documento.

220

Aprende WinCC

Barra de herramientas del layout La barra de herramientas, adems de varias funciones ya comentadas anteriormente, posee una serie de botones especficos, que son: Visualizar parte esttica del documento. Solo puede modificar la parte cabecera y pierde del documento. Visualizar parte dinmica del documento. Solo se puede modificar la parte central, no la cabecera ni el pie de pgina. Visualizar portada del documento. Visualiza parte central del documento. Visualiza contraportada del documento.

Objetos del layout Como en el Graphic Designer, lo ms importante del layout sern los objetos que insertemos en el mismo. Disponemos de una ventana en el que se nos muestran los mismos por categoras.

Objetos estticos: su valor es el mismo independientemente del momento en que se imprima el layout (p. Ej. El nombre de nuestra empresa, la persona que lo disea, la instalacin, etc).

221

Aprende WinCC

Objetos dinmicos: su valor est en funcin del momento en que se imprima el documento, ya que es entonces cuando toman el valor de la base de datos.

Dynamic metafile: realiza una impresin grfica o de una determinada pantalla que hayamos diseado con el Graphic Designer, o de una grfica.

Los objetos dinmicos requieren una conexin, que es el vnculo con el sistema que determina que valores del mismo deben plasmarse en el objeto a la hora de la impresin. En este caso, si queremos imprimir: las pictures de WinCC: deberemos seleccionar General Display de picture. Nos mostrar todas las imgenes diseadas, con el tamao que le demos a dicho objeto.

222

Aprende WinCC

Una grfica: deberemos seleccionar Trend.

Las propiedades de la curva a mostrar que podemos parametrizar son:

Time range: rango de tiempo que debe aparecer en la grfica.

223

Aprende WinCC

Tag selection: archivo del que hay que sacar los datos y tendencias a mostrar en la grfica.

Format: fuente de los textos que componen la grfica.

Dynamic Table: tabla de datos cuyas celdas se rellenan de los datos indicados mediante connect. Se utiliza para mostrar todo tipo de datos numricos y de texto, en oposicin a la anterior que mostraba dibujos y grficas. Las posibilidades dentro de connect son muy amplias, por lo que ejemplificaremos creando una lista de valores de proceso en impresora.

Dentro de Tag Logging runtime, tag table se encarga de mostrar una tabla con los valores de variables de proceso durante un periodo de tiempo determinado. Asignamos esta conexin a la tabla creada.

224

Aprende WinCC

En las propiedades de la conexin podemos determinar la seleccin de los datos a mostrar en la tabla, seleccionando el archivo origen de dichos datos. De esta manera se pueden realizar tablas de datos por impresora, listados de alarmas, y en general cualquier representacin de datos durante el tiempo o listas almacenadas en la base de datos, ya sea del desarrollo CS o de runtime RT. Continuando con los objetos que podemos utilizar tenemos:

Dynamic text: Si disponemos un texto que puede cambiar de manera dinmica en cualquier picture mediante este objeto podemos imprimir el valor actual en un Report. Embedded layout: mostrar otro layout ya configurado dentro de una ventana. Tag: Mostrar el valor de un tag dentro de una celda. Se puede aplicar desde las propiedades el formato deseado y el tipo de representacin (decimal, texto, hexadecimal, etc). Este objeto es el ideal para realizar Reports a impresora de un grupo de valores de proceso en un instante determinado.

System Objects: Son campos que rellenar el WinCC de su propio sistema, no de la base de datos del proyecto. Estos objetos slo pueden introducirse en la parte esttica del documento, no en la dinmica. Date/Time: Permite introducir la fecha y la hora dentro de un Report. Page Number: nmero de pgina. Project name: nombre del proyecto. Layout name: nombre del layout que se est imprimiendo.
225

Aprende WinCC

Line printer layout La impresin por lneas se utiliza para mostrar generalmente las alarmas o eventos de la instalacin en tiempo real por impresora.

Podemos definir la cantidad de lneas que queremos que ocupe una hoja, los mrgenes, y los textos de cabecera y pie de pgina. Todas estas opciones evidentemente estn ideadas para una impresora matricial que solo utilizaremos para caracteres de texto. Definidos estos parmetros, no queda determinar el formato del mensaje que vamos a sacar en la lnea de layout. Para ello, si seleccionamos el botn Selection de esta ventana, podemos acceder a los bloques que hayamos creado en la parte de Alarm Logging. Mediante estos bloques confeccionamos nuestra lnea. Los archivos de line printer poseen la extensin rp1 y se almacenan en el subdirectorio Prt de nuestro proyecto.

226

Aprende WinCC

227

Aprende WinCC

Jobs Un job o trabajo es un fichero que vincula nuestro layout o documento con la impresora y el momento en que se debe imprimir dicho documento.

En la ventana podemos observar el nombre del trabajo o job, y el layout al que est asociado. La P o F que aparecen despus del nombre del layout significan respectivamente Printer y File, indicando si el trabajo est configurado para salir por impresora, a un fichero o a ambos. Al igual que en los layouts, ya existen jobs configurados por el sistema, que nosotros podemos modificar, pero no debemos borrar, ya que son los que utiliza WinCC. Si realizamos un nuevo job, podemos acceder a sus propiedades que son:

228

Aprende WinCC

Name: nombre del trabajo. Project: proyecto en el que se encuentra el trabajo (solo lectura). Layout: Layout al que est asociado el trabajo. Last printout: ltima impresin realizada en este trabajo (solo lectura en tiempo de runtime). Next printout: prxima impresin realizada en este trabajo (solo lectura en tiempo de runtime). Start time: hora de comienzo de las impresiones si se desean cclicas. Cycle: Cada cuanto tiempo debe imprimirse el layout.

Page range: rango de pginas a imprimir del trabajo. Time range: el rango de tiempo que debe mostrar en datos que dependan del tiempo (grficas, tablas de valores). Puede ser: Relative: relativo al inicio del arranque de la runtime. Absolute: indica el comienzo y la finalizacin del periodo de tiempo a mostrar en los datos del job.

229

Aprende WinCC

Printer setup nos permite seleccionar la impresora de todas las que posea el sistema por la que deseamos imprimir. Podemos indicar hasta 3 impresoras si existen en el sistema, para que si una de ellas actualmente est desconectada o no responde (falta de papel, etc..), poder imprimir por la siguiente que est en la lista asignada. Tambin podemos exportar el documento o Report a un fichero emf en el disco duro. En este caso, se genera en nuestro proyecto un subdirectorio llamado Prt_Out, dentro del cual se genera otro directorio con el nombre del job ms la fecha y la hora en que se imprime, donde se almacena cada pgina de nuestro documento en formato EMF (grfico).

Los iconos de un job indican si est configurado para disparase a travs de un evento de tiempo de manera automtica o no. En la imagen se aprecia que el primero arrancar por tiempo, mientras que el segundo deber de ser llamado desde el Graphic Designer mediante la funcin en C de ejecucin de Reports. Existe la posibilidad de poder realizar una visualizacin previa del Report sin necesidad de esperarse al evento de tiempo ni tener que llamarlo desde C. Si presionamos sobre el job con el botn derecho estando el runtime activado, podemos seleccionar Job Preview, con lo que podremos observar como nos quedara la impresin en el momento actual, e incluso imprimir desde esta ventana el Report.

230

Aprende WinCC

Diagnosis de la impresin de Reports. El WinCC dispone de una serie de ventanas de diagnosis para poder saber que Report se estn imprimiendo, y cada cuanto tiempo. Para poder insertar estos objetos, en cualquier pdl, deberemos de seleccionar aplication window->jobs.

All jobs. Muestra el estado de todos los Reports en una sola pantalla.

Job detail view. Muestra el estado actual del Report que seleccionemos en el desplegable.

231

Aprende WinCC

232

Aprende WinCC

Captullo 7 Cap tu o

Glloball Scriipt.. G oba Scr pt

El Global Script es un compilador de C incorporado con el WinCC, que nos permite realizar compilaciones de cdigo objeto (con un formato un tanto especial, ya que no lo deja en obj) sin necesidad de salir del propio entorno. Este cdigo generado puede ser aadido directamente al propio runtime y generarse cada cierto tiempo, o posteriormente asociarse a un evento de un objeto. Si desde el editor del Graphic Designer seleccionamos realizar una accin en C, automticamente se nos activa el Global Script para permitirnos editar dicha accin en el compilador de C. Tipos de funciones en Global Script Dentro del compilador de Global Script podemos observar que existen cuatro tipos de clases o categoras de funciones: Project functions: funciones de proyecto. Son aquellas funciones que deben ser llamadas desde otras partes del programa para devolver valores despus de realizar alguna operacin en C. Anteriormente vimos como arrancbamos una grfica y la parbamos con dos funciones de proyecto. Las funciones de proyecto quedan almacenadas automticamente en el subdirectorio Library de nuestro proyecto, con la extensin fct. Para traerse una funcin de proyecto de un proyecto a otro deberemos de copiar dicho archivo en dicho subdirectorio del proyecto fuente al destino.
233

Aprende WinCC

Standard Functions: Son las funciones standard del propio WinCC, que no residen en nuestro proyecto, sino en el subdirectorio aplib de WinCC. Estas funciones estndar se pueden modificar, pero dicha modificacin es permanente hasta que no se reinstale el WinCC, ya que como se dijo los archivos fct de standard functions son comunes para todos nuestros proyectos. Si deseamos generar subrutinas que sean utilizadas por todos los proyectos en que trabajemos, solo tenemos que copiarlas en el subdirectorio aplib. Cuando volvamos al Global Script no nos aparece en el rbol la funcin hasta que no seleccionamos en el men Options-> Regenerate Header. Internal Functions: Funciones que realizan acciones predeterminadas, como son proporcionar un valor de una variable, o asignar un valor a una variable. Estas funciones son por supuesto comunes, y no pueden ser modificadas. Actions: Una accin es una subrutina que no se ejecuta cuando sea llamada por un evento, sino cuando un trigger o disparo, ya sea por tiempo o por cambio de variable ocurra. Las actions no se pueden cambiar de nombre (siempre se llaman gscaction), y generan un fichero de extensin pas que se guarda en el subdirectorio pas, ya sea del ordenador en cuestin (monopuesto) o de manera global para todos los ordenadores (multipuesto). El fichero pas por defecto se llama gsccs1.pas, pero se puede renombrar a posteriori.

Project Functions Vamos a realizar una funcin de proyecto, que mediante cdigo C nos suma dos valores enteros y nos devuelve el resultado. El cdigo es el siguiente:
int Suma_Dos_Valores(int Valor_1, int Valor_2) { int Temporal; Temporal=Valor_1+Valor_2; return(Temporal); }

A continuacin asociaremos en el evento action mouse de un botn el cdigo siguiente, el cual realiza la llamada a la Project Function generada por nosotros, tomando dos parmetros de entrada y devolviendo un resultado.

234

Aprende WinCC

#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { int Temporal; int temp1,temp2; temp1=GetTagSWord("CANTIDAD_1"); //Return-Type :short int temp2=GetTagSWord("CANTIDAD_2"); //Return-Type :short int Temporal=Suma_Dos_Valores(temp1,temp2); SetTagSWord("VAR_1",Temporal); } //Return-Type :long int

//Return-Type :BOOL

Cualquier Project function que definamos en nuestro proyecto se almacenar en un fichero de extensin fct en el subdirectorio Library de nuestro proyecto. Esto es interesante a la hora de reutilizar funciones ya generadas anteriormente. Para utilizar una funcin generada en otro proyecto, slo tendremos que copiar el fichero fct en el subdirectorio indicado, y posteriormente desde el Global Script seleccionar en el men Options->Regenerate Header, que nos actualiza el rbol de funciones de la ventana del Global Script. Resumiendo, las funciones de proyecto son las tpicas subrutinas de cualquier lenguaje de programacin, dentro de las cuales podemos programar en C y utilizar las funciones incorporadas en el propio WinCC. Este cdigo se almacena en un fichero de texto de extensin fct y puede ser llamada la funcin desde un evento de un objeto, o desde una accin.

235

Aprende WinCC

Standard Functions Las funciones standard son funciones de proyecto (subrutinas de programacin en C) tambin de extensin fct, pero con la particularidad de que vienen generadas por el propio sistema, y no se encuentran en nuestro proyecto, sino en el subdirectorio aplib de WinCC. La estructura del rbol que cuelga de standard function se basa en los subdirectorios que cuelgan del directorio aplib, pudiendo nosotros modificarlo a nuestro gusto, e incluir project functions que sean accesibles a todos los proyectos. Es decir, por un lado podemos acceder al cdigo de las funciones por defecto o standard simplemente realizando click sobre ellas, modificndolas o borrndolas si no nos interesan (la modificacin ser para todos los proyectos, ya que son funciones comunes a los mismos). Por otro lado, podemos incluir en un directorio nuestro archivo fct y ser accesible a todos los proyectos a partir de ese momento. Se debe recordar que para que se actualice el rbol del Global Script hay que realizar la accin compile header, como se vio anteriormente. Resumiendo, una funcin standard es como una funcin de proyecto, con la diferencia de que es accesible a todos los proyectos, ya que existe en un subdirectorio fuera del propio del proyecto actual. Internal functions Las funciones internas son las bsicas con las que se puede trabajar a la hora de realizar funciones o acciones en C. Son propiamente las instrucciones de programacin de que dispone el WinCC para poder realizar las subrutinas por cdigo. Dichas funciones tambin son comunes y se encuentran en el subdirectorio aplib, pero se diferencian de las anteriores en la extensin, que en este caso es icf. Adems, no pueden ser editadas las funciones internas, y por lo tanto no se pueden modificar por parte del usuario. Actions Las actions son funciones que son llamadas o disparadas generalmente de manera independiente a los objetos de las pictures. Se utilizan para realizar disparos de acciones por tiempo (cada 10 segundos hacer x), para realizar acciones frente a cambios de variables (cuando cambie la variable x o la y, realizar su suma), y para ser llamadas cuando acontecen ciertos eventos (cuando finalice la grfica, cuando el valor ha sido superado, etc..). Existen dos tipos de acciones, las comunes a todos los ordenadores de nuestro proyecto, que se agrupan bajo el epgrafe de Global Actions, y las que pertenecen exclusivamente a nuestro ordenador, que se agrupan bajo el nombre dado a nuestra estacin. En sistemas monopuesto la diferencia es inexistente, dando igual en qu apartado se genere la accin para luego poder ser llamada. Una accin se almacena siempre en un fichero de extensin pas, que suele guardarse en el subdirectorio pas de nuestro proyecto. Si la generamos como accin local (de nuestra estacin), se almacenar en el pas que cuelga del subdirectorio generado con el nombre de nuestra estacin. Si por el contrario la generamos global, se
236

Aprende WinCC

almacena en el subdirectorio pas de nuestro proyecto. Esto significa que las acciones locales solo se ejecutarn cuando el proyecto sea multiusuario en el equipo donde se crearon, y no ser posible realizar dicha accin en otro equipo del proyecto. Cada dez que se genera una nueva accin, el fichero apdefap.h es integrado automticamente en el subdirectorio library de nuestro proyecto Una accin no es una funcin, por lo que no podemos: Ni definir el valor de retorno (siempre ser un int). Por lo tanto, deberemos terminar con un return que indique si ha finalizado adecuadamente la accin. Ni cambiarle el nombre, que por defecto es gscAction. Ni pasarle parmetros de entrada, ya que siempre es de tipo void. Por lo tanto, el nombre por el que luego la identificaremos no ser el de la accin (que es gcsAction), sino el del archivo en el que la almacenamos, que finaliza en extensin pas.

237

Aprende WinCC

Funciones en C. Partes de las acciones. Una accin o funcin de C se divide en 4 partes: Cabecera de funcin: En la lisma se recoge la declaracin de la cabecera h en la cual se encuentran declaradas las funciones a utilizar, un puntero de texto que contiene el nombre de la picture desde donde es llamada la funcin, un puntero con el nombre del objeto actual, y de la propiedad que ejecuta la funcin.
#include apdefap.h long _main(char *lpszPicturename, char *lpzObjectName, char *PropertyName)

Declaracin de constantes para tags: En estas lneas se definen constantes para las variables que vayamos a utilizar. En la versin 5.1 de WinCC estas constantes y el lugar donde se declaran son necesarias para posteriormente poder realizar una sustitucin completa de una variable por otra mediante cross reference.
// WINCC: TAGNAME_SECTION_START // syntax #define Tagnameinaction Tagname #define Variable_1 MW10_TiempoPresion // next TagID: 1 // WINCC: TAGNAME_SECTION_END

Declaracin de constantes para pictures: Lo mismo de antes pero para los nombres de las pictures que vayamos a utilizar dentro de nuestra funcin C.
// WINCC: PICNAME_SECTION_START // syntax #define PicNameInAction Picturename #define Picture_1 Picture_Consignas_Tiempo // next PicID: 1 // WINCC: PICNAME_SECTION_END

Declaracin de variables:
Int pepe=0; BOOL juan=FALSE;

Cdigo C de nuestra funcin:


If(juan==TRUE) { pepe=3;}

Retorno de la funcin:
Return pepe;

Printf. La instruccin printf posee la siguiente estructura:


238

Aprende WinCC

printf(El valor vale %d pesetas,valor)

Los parmetros de variables a utilizar son: %d: entero. %ld: doble entero %c: carcter. %x: hexadecimal %o: octal %u: entero sin signo. %f: real en formato de coma flotante %e: real en formato de exponencial. %s: cadena de texto %le: real en formato exponencial de 64 bits. %%: carcter % \n: cambio de linea de texto (como el return) \r: ir a primera posicin. Generalmente cuando se utiliza \n se sigue de un \r para ponerse en el primer carcter de la nueva linea. \t: tabulacin. \\: carcter \. La funcin prinf es muy interesante para mostrar mensajes por el objeto Global Script diagnose que nos informen de acciones en las funciones que se estn ejecutando en C.

239

Aprende WinCC

Definicin de variables en C. Los tipos de variables que podemos definir en C son los siguientes: Data Type Int unsigned int short unsigned short long unsigned long char unsigned char float double Value -2 147 483 648 to 2 147 483 647 0 to 4 294 967 295 -32 768 to 32 767 0 to 65 535 -2 147 483 648 to 2 147 483 647 0 to 4 294 967 295 -128 to 127 (all ASCII characters) 0 to 255 (all ASCII characters) -10 ^38 to 0 ^38 -10 ^308 to 0 ^308 Range

Operadores matemticos en C. Los operadores que podemos utilizar para nuestras operaciones matemticas y lgicas son los siguiente: Operaciones + * / % ++ -Operaciones con bits & | ^ ~ << >> Operaciones lgicas: > >= == != <= Mayor que Mayor o igual que Igual que Distinto de Menor o igual que
240

matemticas: Suma Resta Multiplicacion Divisin Modulo (resto de una divisin) Incrementar Decrementar valor=uno+dos valor=uno-dos valor=uno*dos valor=uno/dos valor=uno%dos ++valor --valor

Bit-a-Bit AND Bit-a-Bit OR Bit-a-Bit XOR Bit-a-Bit inversion Mueve los bits a la izquierda Mueve los bits a la derecha

valor=uno&dos valor=uno|dos valor=uno^dos valor=uno~dos valor=uno<<8 valor=uno>>8

if(uno>dos) if(uno>=dos) if(uno==dos) if(uno!=dos) if(uno<=dos)

Aprende WinCC

< && || !

Menor que AND lgica OR lgica inversion lgica

if(uno<dos) if(uno&&dos) if(uno!!dos) if(!uno)

241

Aprende WinCC

Disparo de acciones

El disparo de acciones se realiza seleccionando la accin y en el men Edit>Info. En la solapa info podemos indicar: Quin y cuando realiz la accin (la program o la modific). Podemos proteger nuestra accin para que solo nosotros podamos visualizar su contenido. Esto permite proteger el know-how del desarrollador y poder ser utilizada por el usuario. Podemos indicar un nmero de versin y un comentario.

Curiosamente, si no se aprieta el botn de aplicar antes de salir, aunque se acepte, las modificaciones realizadas se pierden. Atencin con este error de programacin que puede hacer perder el trabajo introducido. En la solapa trigger definimos el disparo de la accin, disponiendo de tres tipos posibles de disparo (que no son excluyentes los unos de los otros): Acclico: El disparo de la accin se realiza slo una vez un da y a una hora determinada. Pulsando sobre Add podemos definir la fecha y hora, as como el nombre del disparo.

242

Aprende WinCC

243

Aprende WinCC

Cclico: La accin se realizar cada x tiempo de manera automtica en el PC a partir de que arranque la runtime y hasta que pare.

En event podemos seleccionar por ciclo standard, con lo cual podemos asignar la llamada a un ciclo de usuario personalizado, o por hora, da, semana, mes o ao. En este segundo caso, nos permite indicar a partir e que fecha u hora debe empezar a realizar dicha accin.

244

Aprende WinCC

Tag: Podemos disparar una accin cuando alguna o varias variables cambien de valor.

Compilacin de funciones externas a travs de DLLs. Si deseamos utilizar funciones ya realizadas por nosotros en alguna de nuestras subrutinas desde WinCC, deberemos primeramente compilarlas en formato DLL desde nuestro compilador original (Visual C, Visual Basic, Delphi). Una vez dispongamos de dichas funciones a utilizar dentro de una DLL de 32 bits compilada, deberemos de declarar las funciones en nuestro cdigo C de WinCC para poderlas utilizar. Al principio de la subrutina donde vayamos a realizar la llamada a la funcin externa, deberemos de escribir la siguiente declaracin:
#pragma code(NOMBRE_DE_LA_DLL.DLL) #include NOMBRE_DE_LA_CABECERA.h #pragma code()

Esta declaracin indica al precompilador de C que aada a su biblioteca de funciones las incluidas en NOMBRE_DE_CABECERA.h, que se encuentran en NOMBRE_DE_LA_DLL.DLL.

Definicin de variables globales y variables locales Una variable local es toda aquella cuyo mbito de accin se circunscribe a la subrutina en que es definida, mientras que una variable global es accesible desde cualquier subrutina generada en WinCC. En numerosas ocasiones se utilizan en WinCC variables internas para realizar tareas que con variables globales quedan fcilmente solventadas.
245

Aprende WinCC

Para definir una variable local, simplemente hay que declararla dentro de una funcin o evento. Sin embargo para definir una variable global:

si estamos declarndola en una accin de C, se debe declarar antes de la declaracin de la funcin:


int variable=0; void subrutina() {

si estamos declarndola en una propiedad o evento, deberemos de antecederla de la instruccin extern:


void OnProertyChange() { extern int variable; a=0;

Nota: Si declaramos una variable externa sobre una funcin standard, esta funcin existir en todos los proyectos que generemos.

Exportar acciones. A veces puede ser interesante exportar una accin de un proyecto a otro, p. Ej., en el caso de haber realizado una funcin que nos calcule cuando debemos de salvar datos a una grfica, y queremos implementarla en un nuevo proyecto que hayamos realizado (si copiramos el cdigo C a travs del portapapeles los datos de disparo, autor, password, etc se deberan de volver a crear). Para ello, pulsamos en el botn de esportacin en la barra de herramientas del Global Script, grabando la accin con la extensin act. Para importar la accin, cerramos el proyecto fuente y abrimos el proyecto destino. Dentro del Global Script tenemos el botn de importar y capturamos el fichero anteriormente generado.

246

Aprende WinCC

Diagnstico de funciones C. Una de las tareas ms importantes a la hora de trabajar con funciones C es poder realizar diagnstico de las mismas durante su ejecucin, ya que a menudo las acciones que realizan no poseen un control visual de su ejecucin, y no podemos saber si se estn ejecutando bien, y porqu en el caso de que lo realicen mal. Vamos a estudiar las posibilidades de diagnstico que soporta WinCC V5.1. Global Script runtime. Durante el runtime, podemos colocar un objeto Global Script runtime en cualquier picture, que nos indicar que funciones se estn ejecutando, el tiempo de proceso que se est dedicando a cada una de ellas, cuando arrancaron y los valores de retorno y de error que estn devolviendo las mismas en el momento actual.

seleccionar Window contents->Global Script->GSC Runtime. Es importante recordar que si no se activa la parte de runtime de Global Script no se ejecutar lgicamente este objeto.

Global Script diagnostic. Otra posibilidad muy interesante es utilizar el Global Script diagnostics, una ventana en la que podremos observar los errores o avisos internos del sistema WinCC, alamacenndolos automticamente en un fichero que se puede guardar en formato texto. Adems es posible enviar mensajes a dicha ventana para que nosotros mismos nos indiquemos que estamos realizando una accin concreta. Hay dos formas de utilizar esta ventana: como una ventana de WinCC o como un ocx incrustado. En este apartado vamos a verlo como una ventana de WinCC, explicando el segundo mtodo en el captulo controles ocx de WinCC. Para insertar la ventana Global Script runtime en una picture, es necesario seleccionar Window contents->Global Script->GSC Diagnostics. Es importante recordar que si no se activa la parte de runtime de Global Script no se ejecutar lgicamente este objeto. Para enviar mensajes a la ventana basta con ejecutar una funcin printf de C dentro de nuestra accin.

247

Aprende WinCC

Funciones standard. A continuacin repasaremos las funciones standard que acompaan a WinCC. Standard Alarm. Las funciones disponibles para el manejo de la ventana de alarmas son las siguientes: AXC_OnBtnArcLong: Activar la ventana de archivo continuo de alarmas. AXC_OnBtnArcShort: Activar la ventana del archivo de tambor de alarmas. AXC_OnBtnComment: Activar la ventana de comentarios sobre la alarma seleccionada. AXC_OnBtnEmergAck: Activar el acuse de emergencia de alarma. AXC_OnBtnHornAck: Activar el acuse de Horn Alarm. AXC_OnBtnInfo: Activar la ayuda infor sobre la alarma seleccionada. AXC_OnBtnLock: Activar la ventana de bloqueo de alarmas. AXC_OnBtnLoop: Activar el salto a la picture asociada a la alarma actual mediante loop in alarm. AXC_OnBtnMsgFirst: Ir a la primera alarma de la ventana. AXC_OnBtnMsgLast: Ir a la ltima alarma de la ventana. AXC_OnBtnMsgNext: Ir a la siguiente alarma de la ventana. AXC_OnBtnMsgPrev: Ir a la alarma anterior de la ventana. AXC_OnBtnMsgWin: Activar la ventana de alarmas actuales. AXC_OnBtnPrint: Imprimir las alarmas actuales en un Report. AXC_OnBtnScroll: Activar el scroll para poder desplazarse por la ventana de alarmas. AXC_OnBtnSelect: Activar la ventana de seleccin de alarmas. AXC_OnBtnMsgFirst: Ir a la primera alarma de la ventana. AXC_OnBtnSinglAckn: Reconocer la alarma actual seleccionada. AXC_OnBtnVisibleAckn: Reconocer todas las alarmas de la pantalla de alarmas actuales. AXC_OnBtnSetFilter: Activar la ventana de seleccin de filtro de alarmas. GmsgFunction: OnBtn...: Realizan la misma funcionalidad que las homlogas AXC_OnBtn.. que acabamos de estudiar. Sin embargo, en futuras versiones de WinCC nicamente se soportarn las primeras, por lo que no es recomendable utilizarlas.

248

Aprende WinCC

Standard Graphics. void AcknowledgeMessage(DWORD MsgNr): Reconoce un mensaje de sistema de nmero x. char* GetLinkedVariable(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName): La funcin GetLinkedVariable devuleve un puntero a una cadena de texto en la que se encuentra la variable asociada a una propiedad de un objeto. Supongamos que el objeto I/O posee la propiedad value asociada a una variable denominada valor. Esta funcin nos devolver la cadena valor si en ObjectName le pasamos I/O y en PropertyName value. char* GetLocalPicture(char* lpszPictureName): Devuelve un puntero a una cadena de texto en la que se encuentra el nombre de la picture que se le pasa como argumento, pero sin la extensin pdl. char* GetParentPicture(char* lpszPictureName): Devuelve un puntero a una cadena de texto en la que se encuentra el nombre de la picture padre desde la que se llam a la que se le pasa como argumento, pero sin la extensin pdl. char* GetParentPictureWindow(char* lpszPictureName): Devuelve un puntero a una cadena de texto en la que se encuentra el nombre de la picture en la que se encuentra la window actual. void OpenPicture(char* lpszPictureName): Salta a una picture especificada. char* Registry2(char* mode, char* String0, char* String1): Mediante esta funcin podemos utilizar un par de cadenas de texto para almacenar valores. Las diferentes posibilidades son: Registry2("set", "[String0]", "[String1]"):introduce las dos cadenas en la lista. Registry2("get", "[String0]", ZERO):returns the first string pair partner [String1], which belongs to the passed [String0] and then deletes the string pair from the list Registry2("reset", ZERO, ZERO):deletes all the string pairs in the list Registry2("display", ZERO, ZERO):displays the string pairs stored in the list in a Global Script diagnostics window.

249

Aprende WinCC

Standard Reports. void ReportJob(LPSTR lpJobName, LPSTR lpMethodName): Ejecuta un Report. Dependiendo del parmetro lpMethodName ejecutar una funcin u otra, adoptando los valores: "PRINT": imprime el job. "PREVIEW" : ejecuta la visualizacin previa del job. BOOL RPTJobPreview(LPSTR lpJobName): Ejecuta una previsualizacin de un job. BOOL RPTJobPrint(LPSTR lpJobName): Imprime un job. void RptShowError(LPCSTR pszFailedFunction, CMN_ERRORA* pCmnErrorA): si se produce un error a la hora de imprimir un job, mediante esta funcin podremos obtener una estructura de datos que nos indiquen la causa del error. En pszFailedFunction deberemos de indicar la funcin que estamos utilizando para imprimir el job. La estructura de error posee la siguiente declaracin:
typedef struct { DWORD dwError1, DWORD dwError2, DWORD dwError3, DWORD dwError4, DWORD dwError5; TCHAR szErrorText[MAX_ERROR_LEN]; } CMN_ERROR,

*PCMN_ERROR;

Siendo:

dwError1 a dwError5: valores de error devueltos por la API de Windows. SzErrorText: cadena de texto que contiene el mensaje de error devuelto por el sistema.

250

Aprende WinCC

Captullo 8 Cap tu o

Text Liibrary.. Text L brary


Text Library es la parte de WinCC que se encarga de gestionar los mensajes de textos. Cuando necesitamos realizar una aplicacin que deba cambiar sus textos segn el idioma seleccionado, necesariamente deberemos realizar una asignacin de dichos textos en un idioma u otro. Mediante Text Library se consigue enlazar a travs de un nmero identificativo cadenas de texto de diferentes idiomas. Dicho nmero se asigna automticamente a los controles que utilizamos en el Graphic Designer. De esta manera, cuando dentro de WinCC en modo runtime cambiamos de cdigo de idioma, automticamente sustituye los textos asignados a un nmero en un idioma por el correspondiente.

251

Aprende WinCC

Idiomas Cmo crear un nuevo idioma? Lo primero que necesitamos en el Text Library es generar un nuevo idioma, ya que por defecto solo nos genera la columna en Ingls. Evidentemente, el hecho de que el idioma sea el Ingls no implica que podemos poner los textos en castellano, y no tener que cambiar de pgina de idioma. Sin embargo, si deseamos disponer de dos idiomas, lo correcto sera generar nuestros mensajes en el idioma correspondiente (espaol o los diferentes dialectos, si as correspondiera en la provincia). Vamos a generar dos nuevos idiomas, Espaol y Cataln. Para ello, en el men Options->Add language podemos aadir los idiomas que soporta el WinCC.

Nos parecen dos nuevas columnas, cada una con el idioma correspondiente. Ahora, debemos de rellenar todos los mensajes que aparecen en la columna ingls, traducindolos nosotros mismos al idioma correspondiente. Cmo borrar un idioma? Para borrar un idioma, en el men Options->Delete language podemos deshacernos de un idioma no deseado. Hay que tener en cuenta que se pierden todos los mensajes configurados bajo ese idioma de manera irrevocable.

252

Aprende WinCC

Cmo cambiar de idioma desde el Graphic Designer? En el men View->Language podemos seleccionar el cdigo de idioma activo actualmente para los objetos de nuestra picture. Podemos escribir los textos modificando su propiedad de texto objeto a objeto, aunque es ms cmodo insertar todos los objetos en un determinado idioma, y una vez finalizada la picture, ir al Text Library, rellenando all la columna correspondiente al nuevo idioma. Si posteriormente aparece un nuevo objeto, se puede utilizar el mtodo visto en este punto para configurarle los dos idiomas, sin necesidad de recurrir esta vez al Text Library.

253

Aprende WinCC

Captullo 9 Cap tu o

User Admiiniistrator.. User Adm n strator


El apartado de WinCC denominado User Administrator se encarga de la administracin de los usuarios que van a trabajar en el runtime del sistema WinCC. La principal diferencia que hay que observar en la filosofa de usuarios de WinCC con respecto al tpico control de privilegios por niveles es que en el WinCC el disponer de privilegio o nivel para realizar algo que los dems no estn autorizados no implica que se permita acceder a todo lo que los dems usuarios son capaces de realizar.

En los sistemas de privilegios por nivel, si un usuario dispone de nivel 3, podr realizar todo lo que pueden realizar los de nivel 2, ms aquello que se permite solo a los de nivel 3. Cuando se bloquea una accin para nivel de password 3, significa que todos los que dispongan de nivel igual o superior a 3 podrn realizarla. En WinCC esto no es as, definindose en lugar de niveles, capacidades de realizar cosas (cambiar valores en archivos, entrar a determinadas pantallas, resetear alarmas, etc..). Dichas capacidades pueden ser o no compartidas por usuarios. Estos usuarios se pueden agrupar en grupos, slo para una ms fcil identificacin, ya que no es imprescindible que compartan las mismas capacidades dos usuarios de un mismo grupo. Hasta un total de 999 niveles de privilegios pueden ser creados en WinCC V5.1.
254

Aprende WinCC

Usuarios. Cmo crear un nuevo grupo de usuarios?

Vamos a crear un grupo de usuarios que se llame operadores. Para ello, presionando sobre el grupo de administracin el botn derecho, seleccionaremos add group. Introducimos el nombre del grupo y presionando de nuevo sobre el grupo creado, le aadimos dos usuarios.

La caja de dilogo que configura un nuevo usuario nos pide: Login: Nombre identificativo del usuario en cuestin (slo puede ser una palabra, p. Ej. Juan_Perez). Password: Cadena de texto de un mnimo de 6 caracteres, que puede incluir espacios y nmeros y letras indistintamente. Verify password: La misma cadena del password debemos de repetirla para confirmar que no hemos introducido ninguna letra por equivocacin. Copy group settings also: Se puede preestablecer una configuracin para todos los nuevos usuarios que se generen dentro de un grupo. Con esta casilla se activa el hecho de que un nuevo usuario copia las caractersticas predefinidas de su grupo.

El nmero mximo de grupos que pueden ser generados es de 10. El nmero mximo de usuarios es de 128.

255

Aprende WinCC

Passwords. Cmo asignar un nivel de password a un nuevo usuario? Las capacidades que dispone un usuario aparecen con un piloto rojo indicativo seleccionadas. Para aadir una capacidad a un usuario, simplemente hay que hacer doble click en el lugar donde debe aparecer el piloto rojo de la capacidad. Para deshacer dicha operacin es necesario realizar de nuevo doble click en el mismo lugar. Cmo crear una nueva capacidad? Lgicamente, lo primero que debemos realizar, ser estudiar los diferentes bloqueos o lmites que requerimos en nuestro desarrollo para posteriormente asignrselos a los usuarios creados. Un bloqueo es una accin cuya capacidad de realizacin diferencia a unos usuarios de otros. Normalmente se suele bloquear el acceso a determinadas pantallas, la impresin de determinadas grficas, la activacin de determinados elementos de campo (p. Ej. pasarlos a manual y que no realicen su actividad en automtico) y sobretodo la modificacin de los valores de proceso, ya sea en produccin (bloqueo de cajas), como a de manera posterior (modificacin de archivos de proceso). Para crear un nuevo bloqueo o lmite que permita definir una capacidad a un usuario, debemos seleccionar en el men Table-> Add New Authorization Level. Nos indica un nmero de nivel de autorizacin, que debemos aceptar como bueno, ya que no podemos duplicar dicho nmero indicado. Esta accin nos lleva a disponer de una lnea nueva con el nmero de orden indicado, pero que no dispone de ningn texto descriptivo, por lo que ser de difcil asignacin dicho nivel si posteriormente olvidamos a que corresponda este bloqueo. Para aadir un texto descriptivo debemos realizar doble click en la casilla del texto, e introducir un comentario que nos resulte intuitivo para el bloqueo que realiza dicho nivel. La asignacin del privilegio del bloqueo a los usuarios se realiza como vimos anteriormente.

Cmo borrar una nueva capacidad? Para borrar una capacidad o bloqueo ya existente simplemente seleccione primeramente el nivel de bloqueo que desea borrar realizando un click sobre l. Seleccione del men Table->Delete Authorization Level, y confirme el borrado del mismo. Los niveles de autorizacin son comunes para todos los usuarios y grupos, por lo que el borrar un nivel en un grupo lo borra de los dems. No se puede borrar el nivel 1 User Administrator, ya que es el propio del administrador del sistema.

256

Aprende WinCC

Cmo cambiar el password de un usuario? Si un determinado usuario desea cambiar el password que ya dispone, no es necesario borrarlo y volver a generarlo. Presionando el botn derecho sobre el usuario, y seleccionando del men Change password podemos cambiar su password, siempre uy cuando conocisemos de antemano el password a cambiar.

Si no conocemos su password, deberemos necesariamente darlo de baja. Cmo cambiar el login de un usuario? Para cambiar el login o nombre identificativo solo es necesario realizar un solo click sobre dicho nombre y se podr curiosamente cambiar, sin necesidad de ningn tipo de clave, por lo que un superusuario puede modificarlo a su entera voluntad sin ninguna autorizacin por parte de los mismos usuarios. Desactivacin automtica de un usuario Una vez se ha activado un usuario, el sistema dispone de los privilegios derivados del nivel de dicho usuario. Hasta que dicho usuario no se da de baja en el sistema, los privilegios continan activos, por lo que si un usuario deja el sistema activado con su login, un par de horas despus puede utilizar el sistema WinCC cualquier usuario sin necesidad de darse de alta en el mismo y utilizando todos los accesos habilitados en funcin del nivel del anterior usuario an en activo. Como el olvido de dejar activado el password es muy frecuente con el tiempo, resulta inservible un sistema de passwords que siempre se encuentra habilitado. Para evitar este punto, todo usuario dispone de una casilla de desconexin automtica en base de minutos.

Si la casilla es distinta de cero, pasados dichos minutos automticamente el sistema desconecta al usuario, por lo que si quiere utilizar de nuevo el sistema WinCC con sus privilegios deber de volver a darse de alta en el mismo. Este tiempo es independiente de si el usuario est utilizando el sistema o no.
257

Aprende WinCC

Nota: si se habilita la opcin Chipcard, aparece una casilla que nos permite realizar los logins de los operarios a travs de la tarjeta chipcard. Cmo asignar un nivel de password a una accin? Las acciones a realizar que requieren un password determinado siempre van asociadas a un objeto. Todos los objetos disponen de una propiedad en miscelaneous que se llama User Level. Si realizamos doble click sobre ella, nos aparece una ventana en la que se muestran los diferentes niveles generados anteriormente con el User Administrator. Podemos seleccionar uno, en cuyo caso todos los usuarios que deseen realizar las acciones asociadas a dicho objeto, debern disponer previamente del nivel requerido.

Passwords estndar. El WinCC al crear un nuevo proyecto ya genera por defecto una serie de niveles de password estndar. El significado de los mismos es el siguiente: User administration: si este nivel est activo, se permite la entrada al mdulo user administration y realizar cambios en el mismo. Tag entering: cuando est activo este nivel, se permite introducir valores de manera manual en los campos de I/O. Process controlling: permite al operario realizar cambios del tipo manual/automtico. Picture editing: Permite ejecutar el grapich Designer para realizar cambios en las pantallas. Change Picture: Permite al operario realizar cambios en las pantallas durante el runtime. Windows Selection: Permite al operario cambiar a las aplicaciones Windows que se estuvieran ejecutando en background junto con el WinCC. Hardcopy: Habilita que se puedan realizar hardcopys de la pantalla. Confirm alarm: Habilita que el operario pueda confirmar alarmas.
258

Aprende WinCC

Lock alarms: Habilita que el operario pueda bloquear alarmas para que no vuelvan a aparecer. Free alarms: Habilita que el operario pueda liberar alarmas que estuviesen bloqueadas previamente. Project alarms: Permite al operario acceder al Alarm Logging para cambiar alarmas. Start archive: Permite al operario arrancar un archivo de proceso. Stop archive: Permite al operario parar un archivo de proceso. Edit archive value: Permite al operario editar un valor de un archivo desde una tabla. Project archive value: Si st activa, permite al operario configurar los archivos en el Tag Logging. Project manager: Habilita al operario para poder salir al Explorador de WinCC.

Como activar odesactivar a un usuario mediante C. Para poder dar de alta o baja a un usuario es necesario asignar una hotkey a la ventana de usuarios. Existe un mtodo mediante una accin de C que nos permite asignar a un botn la apertura de la ventana de activacin. El cdigo a aadir al botn es el siguiente:
#pragma code(USEADMIN.DLL) #include PWRT_API.H #pragma code() PWRTLogin(1);

Siendo 1 la tecla que activa la visualizacin del cuadro de dilogo de activacin e usuarios. Para dar de baja a un usuario el cdigo es el siguiente:
#pragma code(USEADMIN.DLL) #include PWRT_API.H #pragma code() PWRTLogout();

259

Aprende WinCC

Addons. Variable login. La opcin variable login permite asignar un valor concreto a una variable de usuario. De esta manera esposible asignar un nivel de password de manera directa simplemente presionando una tecla. Los pasos a seguir para realizar esta accin son los siguientes: Asignar a un ordenador una variable de usuario. Especificar un valor mnimo y mximo para dicha variable de usuario. Asignar una tag a la variable de usuario. Si se asigna el valor logout a la tag asignada a la variable de usuario se podr dar de baja un operario de manera directa. En el momento que un operario se da de alta en el sistema mendiante el metodo variable login no es posible que otro lo haga con la ventana de user dialog que aparece al presionar la hotkey de login. Esto ser as hasta que el usuario primero se d de baja con logout. Asignar un ordenador a una tag. La opcin del men Computer assignement perimte realizar esta accin.

El tipo de variable debe de ser entero, para comprender un valor que ir desde 0 a 10. Configuration En la opcin configurationpodremos seleccionar el valor mnimo y mximo que puede adoptar la variable seleccionada como variable login.

260

Aprende WinCC

Asignar un valor de usuario. La opcin del men User assignementpermite asignar un valor de vairable a un determinado usuario.

Chipcard. Es posible dar de alta a operarios mediante tarjetas magnticas que se pasan por un aparato denominado chipcard que se conecta al puerto serie del PC. Este software ms hardware es una opcin de WinCC, cuyo funcionamiento se explica a continuacin. Suponemos que se ha instalado el software opcional Chipcard y conectado el lector/escritor al puerto serie del PC. Parametrizar el Chipcard. En el panel de control de Windows NT disponemos de un icono denominadoChipcard que nos permite configurar el modo de funcionamiento de la lectora chipcard.

261

Aprende WinCC

A partir de su activacin en el User Administrator disponemos de la opcin chipcard para trabajar con el lector/escritor. Escribir en una tarjeta desde la chipcard. La primera posibilidad de que disponemos es la escritura en una tarjeta que dispongamos dentro de la lectora/escritora.

Lo nico que tenddremos que seleccionar es el usuario a grabar en la tarjeta. La grabacin borra cualquier dato que pudiese existir previamente en la tarjeta. Existe la posibilidad de adicionalmente a la tarjeta, obligar al operario a introducir la clave (para el caso de que se le sustrayese la tarjeta a un operario). Para ello, es necesario seleccionar la casilla Aditional manual password requiered. Chequear una tarjeta chipcard. Mediante esta opcin podemos leer el usuario grabado en la tarjeta, con el objeto de comprobar que se ha grabado correctamente.

Activacin mediante una chipcard durante el runtime. Al insertar la tarjeta en la lectora chipcard automticamente se da de alta el usuario. Ningn otro operario puede darse de alta hasta que no se retira la tarjeta del lector. En dicho momento automticamente se da de baja el usuario. Si un usuario se activa mediante la tarjeta chipcard no influye el tiempo de logout, sino que est activo mientras la tarjeta se encuentre en el lector.

262