APRENDE
Version 5.1
CON EL GUAPERAS
INDICE Cap1. Introducción a WinCC ……………
1
Cap2. Comunicación con autómatas S7 …
28
Cap3. Editor de gráficos: Graphics Designer …
47
Cap4. Editor de alarmas: Alarm Logging ….....
112
Cap5. Editor de curvas e históricos: Tagg Logging .....................................................
138
Cap6. Editor de informes: Report Designer.....
216
Cap7. Programación en C: Global Script .....
233
Cap8. Editor de textos: Text Library .....
251
Cap9. Gestión de usuarios: User Administrator.. 254
Aprende WinCC
.
C Caappí í ttuulloo 1 IInnttrroodduucccciióónn aa W WiinnC CC C.. Notaciones.
En el presente manual se recogen una serie de notaciones simbólicas que poseen el siguiente significado: Icono
Significado
Indica un click con el botón izquierdo del ratón. Indica un click con el botón derecho del ratón. Indica doble-click con el botón izquierdo del ratón. Indica una entrada desde teclado.
1
Aprende WinCC
Requisitos.
Los requisitos mínimos y recomendables para trabajar con el WinCC a nivel hardware y software del PC son: Mínimo CPU Memoria principal/ RAM RAM en caso de configuración online Disco duro (sin datos del proyecto)
Intel Pentium II 400 MHz 256 MBytes (para servidores)
Intel Pentium III > 400 MHz > 256 MBytes
128 MBytes (para clientes) 32 MBytes adicionales
> 32 MBytes adicionales
650 MBytes de espacio libre de memoria
100 MBytes
> 650 MBytes de espacio libre de memoria > Memoria de trabajo doble > 100 MBytes
SVGA (4 MBytes) 800 * 600
XGA (8 MBytes) 1024 * 768
Memoria de trabajo doble
Memoria de trabajo virtual Memoria de trabajo para spooler de impresoras Windows Gráficos Resolución
Recomendado
Sistemas operativos para WinCC monopuesto o cliente: Sistema operativo Windows NT
Windows 2000
Configuración
Observaciones
Windows NT 4.0 Service Pack 6a o superior
Instale el Service Pack antes de la instalación 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 mínimo los derechos de un usuario principal ("Power User").
Windows 2000 Service Pack 2
Sistemas operativos para WinCC como server : Sistema operativo Servidor de Windows NT 4.0 Servidor de Windows 2000 Windows 2000 Advanced Server
Configuración
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 autorización 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 finalización de la demo. No podremos realizar ninguna acción hasta que validemos dicho mensaje. Sin embargo, el sistema runtime continua funcionando pese a no validar el mensaje, con lo que se continúan 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 automáticamente se cierra el WinCC, permitiéndonos antes guardar los cambios que hubiésemos realizado. •
•
Pero, ¿cómo 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 demás (en especial necesitaremos una licencia de runtime de tantas variables como nos indique la barra de estado de WinCC) las podremos observar mediante una aplicación 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 configuración actual. Con el botón view podemos ver si disponemos de una licencia en concreto. También 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 sería: 10/06/2001 11:18:51 11:18:51 InitLicense CS | AppName = AppCS:Mcp | CycleCheck CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:18:51 11:18:51 InitLicense ED | AppName = AppEd:Mcp | CycleCheck CycleCheck = own | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:19:00 11:19:00 InitLicense RT | AppName = OptRT:CHIPCARD OptRT:CHIPCARD | CycleCheck = no | NameForMessageBox = | Name of License = A1WPC412 | Text of License = | 10/06/2001 11:19:08 11:19:08 InitLicense CS | AppName = DMAso:Mcp | CycleCheck CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags | 10/06/2001 11:31:51 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 11:32:30 InitLicense CS | AppName = DMAso:Mcp | CycleCheck CycleCheck = yes | NameForMessageBox = | Name of License = A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags |
3
Aprende WinCC
Entrar a WinCC.
A la hora de entrar al Windows Control Center V5.1 pueden darse tres circunstancias: Que no hubiera ningún 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 automáticamente 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 además se haya deshabilitado la combinación 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 automáticamente al modo runtime, se debe de presionar la combinación de teclas Ctrl+Shift durante el arranque del software, con lo que se detendrá en el modo de desarrollo. Esta combinación funciona en proyectos locales, y en un servidor, pero no en un cliente que esté conectado a uno o varios servidores en sistema multiusuario.
4
Aprende WinCC
Salir de WinCC. Archivo->Salir disponemos de dos opciones: Para salir de WinCC, en el menú Archivo->Salir
Si ha seleccionado esta opción 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 automáticamente.
Salir de WinCC Explorer :
Salir de WinCC Explorer y cerrar el proyecto:
Si ha seleccionado esta opción, 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.
5
Aprende WinCC
Crear un nuevo proyecto en WinCC.
Cuando se abre WinCC sin que anteriormente hubiera abierto otro proyecto, aparece el siguiente cuadro de diálogo, indicándonos las siguientes opciones:
Vamos a realizar un proyecto para estación 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 más fácil identificación 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 automáticamente.
6
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 comprimiéndolo 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. 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 Equipo->Propiedades, pero lógicamente necesitaremos conocer el nombre del nuevo ordenador donde estamos copiando el proyecto. Para ello, en Inicio->Configuració Inicio->Configuración->Panel n->Panel de control->Sistemacontrol->Sistema>Identificación de Red se encuentra nuestro nombre de equipo.
7
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 común de 1024x100, y en la zona inferior otra zona común de 1024x100. Como disponemos de una resolución 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: “créate un proyecto, la pdl inicial que se llame start.pdl , que tenga un tamaño de 1024x768, la guardas, te haces otra que llamas top.pdl, de tamaño 1024x100, y otra que se llame bottom.pdl , del mismo tamaño”. Bien, teniendo esto claro, abrimos start.pdl, y en la parte superior colocamos una ventana de imagen de tamaño 1024x100, y seleccionamos en ventana de imagen >otros->nombre de imagen: top.pdl. También activamos aquí bordes: si.
8
Aprende WinCC
Realizamos la misma acción 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. También ponemos el borde activo. Así, dispondremos de nuestra primera ventana, más simple que el funcionamiento de un botijo, pero la base sobre la que vamos a trabajar. Debe tener el siguiente aspecto:
9
Aprende WinCC
Como salir de WinCC.
Aún no hemos empezado y ya estamos saliendo, esto va bien. Para salir de WinCC nos ponemos un botón 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 tamaño, más 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 tamaño de salir.pdl, es decir, 300x300. Ahora nos queda hacerla visible desde el botón que hemos puesto en bottom.pdl. Entramos a los eventos de dicho botón, y en el evento clic del ratón, creamos el siguiente código C: SetPropBOOL(GetParentPicture(lpszPictureName),"VEN SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TR TANA_SALIR","Visible",TRUE); UE);
Vamos a explicar que hace esta línea de código: SetPropBOOL es una instrucción 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
parámetro de la función SetPropBOOL un valor fijo, debe ser variable. Dicha variable es el valor que devuelve la función GetParentPicture. Esta función 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 botón (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 más 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 botón 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 botón utilizamos el asistente dinámico “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 añadir o cambiar passwords.
Les ponemos una salida de sesión automática, para que si no se desactivan ellos, los desactive el sistema pasados 10 minutos. Bien, hemos añadido un ususario, queda asignar el nivel de protección al botón 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 también 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: ¿cómo se logan1 los usuarios?. Hay dos maneras, una cutre salchichera y otra guay y complicada. Vamos con la cutre. En el control center, pinchando con el botón derecho sobre el nombre del proyecto, aparece la ventana en la que se puede asignar una combinación de teclas a login (logarse) y otra a logoff (deslogarse)
Pero claro, se debe de recordar cual era esa combinación, y siempre aparece el listo que quiere un botón para activar a los usuarios. Ya la hemos liado, pensarás (y estás en lo cierto), ya que la otra va a través de C. Quita las asignaciones que acabamos de hacer, que no vamos a hacerlo por ese camino, sino por el del botón. Nos 1
Logarse: darse de alta en un sistema protegido, introduciendo tu nombre y tu password. 14
Aprende WinCC
colocaremos un botón 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 instalación). El botón lo cogemos de la biblioteca:
Ahora viene lo bueno, el código C, asociado en el evento mouse activo: Este Código lo escribimos en una función 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 botón que hemos puesto antes (la llave), y le asociamos la función login(); #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { // WINCC:TAGNAME_SECTION_START WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END WINCC:PICNAME_SECTION_END login (); //Tipo de retorno :void }
15
Aprende WinCC
Con esta función te logas y deslogas con el mismo botón (ha sido fácil, eh?). Es mejor hacerlo en una función de proyecto para poder reutilizar dicho código en otros proyectos copiándonos 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 instalación?. ¿quién podrá cambiar los passwords, o añadir un usuario?. Tenemos que poner un segundo botón en la pantalla bottom.pdl. Ese botón nos accederá al User Administrator. ¿Cómo?, fácil, así: ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");
Bien, lo primero es colocarnos en bottom.pdl otro botón de la biblioteca:
El texto que aparece en medio del botón solo lo puedes quitar si cambias e idioma en el menu del Graphics Designer, en ver->idioma, a cualquiera, y vuelves a español. Luego vas a la propiedad fuente->texto del botón (un fallo de WinCC, me parece a mí).
16
Aprende WinCC
Asociando este código al botón de administración de usuarios, ya puede un usuario dar de alta y borrar, es decir, administrar a los demás usuarios. Claro está, a este botón 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 código debe de estar arrancada la parte de Global Script runtime de nuestro PC.
Por supuesto, a este botón (el de las dos cabecitas) deberemos de colocarle el password “administrar usuarios”.
Llamar a ventanas variables.
Ahora queremos que cuando pulsemos el botón de administrar usuarios nos abra una ventana de menú en la que podamos seleccionar: Administrar usuarios (lo de antes) Ver el histórico de usuarios (para saber qué usuarios estaban logados en qué momentos). Para hacer esto podríamos abrir otra ventana y hacerla visible con el botón, pero es mejor utilizar la ventana que hemos gastado anteriormente para salir, y en función de porqué botón 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 fácil. 17
Aprende WinCC
Primeramente vamos a hacer parametrizable la llamada a la ventana que hacíamos con el botón de salir (objeto botón_salir de la pdl bottom.pdl). En el evento clic del ratón de dicho objeto escribimos ahora el siguiente código: SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName SetPropChar(GetParentPicture(lpszPictureName),"VENT ANA_SALIR","PictureName","salir.PDL"); ","salir.PDL"); SetPropChar(GetParentPicture(lpszPictureName),"VENT SetPropChar(GetParentPicture(lpsz PictureName),"VENTANA_SALIR","CaptionText","Salir ANA_SALIR","CaptionText","Salir de WinCC"); SetPropBOOL(GetParentPicture(lpszPictureName SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",T ),"VENTANA_SALIR","Visible",TRUE); RUE);
Observa que lo que hacemos es decirle de manera dinámica que la picture a mostrar es salir.pdl, que va a tener como título “salir de WinCC” y luego la hacemos visible. Ahora en el botón de usuarios (el de las ods cabecitas), en el evento clicl de ratón, escribimos el siguiente código: SetPropChar(GetParentPicture(lpszPictureName),"VENT SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureNam ANA_SALIR","PictureName","USUARIO e","USUARIO S.PDL"); SetPropChar(GetParentPicture(lpszPictureName),"VENT SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","Ve ANA_SALIR","CaptionText","Ventana ntana Usuarios"); SetPropBOOL(GetParentPicture(lpszPictureName),"VE SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TR NTANA_SALIR","Visible",TRUE); UE);
Es lo mismo de antes, solo que esta vez llamamos a la pdl “usuarios.pdl”, con un título llamado “usuarios” y posteriormente hacemos visible la ventana. Pero, ¿quién es usuarios.pdl?. Tranquilo, que aún no la hemos hecho. Es la pdl siguiente, también de 300x300:
El código que le asociamos al botón modificar usuarios es el siguiente: ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");
Si pruebas lo hecho hasta ahora deberías de poder abrir la ventana de manera parametrizable. Únicamente nos queda con el botón registro de usuarios mostrar una ventana en la que aparezca un histórico 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 Loggin, y en bloques de sistema añadimos 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 añadimos 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 botón derecho sobre la clase de aviso usuarios definimos los textos para cuando aparezca y desaparezca la alarma:
Con el botón derecho sobre el tipo de clase usuario seleccionamos el color con que queremos mostrar la línea de alarmas de logado y deslogado de usuarios.
Ahora seleccionamos con el botón derecho archivos, y definimos un archivo circulante.
Y por último definimos un informe de archivo para poder imprimir el histórico 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. Después de todo tengo claro que te estarás 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. También 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 Acción en acciones globales, cuyo fichero denominaremos usuarios.pas, y que posee el siguiente código: #include "apdefap.h" int gscAction( void ) { // WINCC:TAGNAME_SECTION_START WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END 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 acción 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 habrán extrañado al leer el código es porqué he definido la función Sleep. Como sabes la función Sleep lo que hace es parar la ejecución del programa durante los milisegundos que le pasemos como parámetro. Esta función 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 aparecería vacío 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 explicación prueba mas tarde a quitar la línea de Sleep y comprueba cual es su efecto. Ya estamos acabando. Solo nos queda disparar esta acción 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 acción 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 línea de avisos mostramos los siguientes bloques de avisos:
Además deberemos de filtrar las alarmas en esta ventana para que únicamente aparezcan las del tipo “usuarios”, ya que ahora mismo solo exite esta, pero más adelante crearemos más 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 botón Registro de usuarios, que habíamos puesto en la pdl usuarios.pdl. La función en c que asociaremos a dicho botón será la siguiente: OpenPicture("REGISTRO_USUARIOS.PDL");
24
Aprende WinCC
Ya podemos guardar y comprobar como nos ha quedado el invento, que debería de mostrar a medida que vamos logando usuarios algo como esto:
Nos queda únicamente sacar por impresora un informe con los el histórico de usuarios, igual que lo estamos sacando por pantalla. Para ello, nos vamos a ir al Report Designer. En formato de página 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 dinámica 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 impresión, que posee las siguientes características:
Ya tenemos la orden de impresión. 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 librería como muestra la figura:
En dicho botón vamos a asociar el siguiente código C: RPTJobPreview("orden_registro_usuarios");
Solo nos queda activar la parte de runtime referida a la impresión y las alarmas dentro de equipo en el explorador de WinCC:
26
Aprende WinCC
El resultado final al presionar el botón debe de ser algo como lo que muestra la figura:
27
Aprende WinCC
C Caappí í ttuulloo 2.. C Coom muunniiccaacciióónn ccoonn S S77.. Modos de comunicación.
Para el ejemplo que nos concierne vamos a realizar varios ejemplos de comunicación con S7. Lógicamente en una instalación real únicamente utilizaremos uno de ellos, por lo que te aconsejo vayas al capítulo en el que se explica el tipo de comunicación que debes de realizar. Comunicación por MPI.
Insertamos el canal Simatic S7, y dentro del protocolo MPI, con el botón derecho, seleccionamos una nueva conexión.
La nueva conexión la denominamos como nuestro PLC, en este caso 314_C_2DP, y en propiedades definimos la dirección MPI de nuestro equipo y el slot en el que se encuentra la CPU, que normalmente va a ser el 2. Poner como número 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 comunicación con S7 300, pero no para los S7 400. Una vez introducida la conexión nos aparece un icono en forma de dos manos unidas, indicándonos la conexión con nuestro PLC
28
Aprende WinCC
Si volvemos a presionar con el botón derecho sobre el canal MPI podemos determinar los parámetros del sistema del protocolo de comunicaciones.
29
Aprende WinCC
Comunicación por TCP/IP.
Vamos a realizar ahora la comunicación 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 dirección TCP de la tarjeta como muestra la figura:
Comprobamos que podemos comunicar por TCP/IP, p. Ej observando el programa desde Step 7 a través de TCP/IP. Para ello deberemos de cambiar el tipo de acceso en ajustar interface PG/PC.
30
Aprende WinCC
También deberemos de ajustar el punto de acceso del perfil de WinCC para que sea a través de nuestra tarjeta de comunicaciones.
Nuestra tarjeta de comunicaciones TCP del PC por supuesto deberá de poseer una dirección y submáscara 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 dirección fija de red). Para ello vamos en Windows 2000 a Inicio>Configuración->Conexiones de red y acceso telefónico y en las propiedades de nuestra red de área local, seleccionamos el protocolo TCP/IP.
Editamos las propiedades del protocolo, y le asignamos una dirección 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 conexión define tanto la dirección 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 parámetros 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 también 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 comunicación 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
Diagnóstico de las comunicaciones en el runtime.
Lo primero que nos interesa dentro del runtime es saber de una manera gráfica y visual si tenemos comunicación 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 rectángulo como muestra la figura:
En las propiedades del rectángulo, en color de fondo, definimos un cuadro de diálogo dinámico.
Asociamos la variable MB0 y activamos valor de estado de variables, seleccionando el color rojo para el tipo “ninguna conexión”, 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 comunicación o la CPU se coloca en stop el recuadro nos lo indica pasando a rojo. La reconexión es automática una vez se ha vuelto a run o colocado el cable de comunicaciones.
35
Aprende WinCC
También Podemos hacer lo mismo, pero a través de textos, que nos indiquen si la comunicación 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 dinámico en el que vamos a definir los textos que deseamos que aparezcan en función de que tengamos conexión (RUN) o no (STOP).
36
Aprende WinCC
De esta manera estamos obteniendo una indicación 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 información 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 rectángulo que colocamos anteriormente, de tal manera que cuando el operario pinche sobre el indicador saltará automáticamente a una ventana de diagnosis más detallada, 38
Aprende WinCC
como es esta que acabamos de realizar. Para ello, colocaremos la siguiente sentencia en el evento clic del raton del rectángulo 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 botón derecho del ratón 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 lógicamente nos interesa tener un histórico de fallos de comunicaciones. De esta manera podemos saber en qué momentos la instalación 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 están 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 función 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 función GetTagByteState. Tiene dos parámetros: Variable a chequear Puntero a una doble palabra en la que la función 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 función del tipo de error de comunicaciones nos devolverá: DM_VARSTATE_NOT_ESTABLISHE DM_VARSTATE_NOT_ESTABLISHED D 0x0001 // Verbindung zum Partner nicht aufgebaut DM_VARSTATE_HANDSHAKE_ERROR DM_VARSTATE_HANDSHAKE_ERROR 0x0002 // Protokollfehler DM_VARSTATE_HARDWARE_ERROR DM_VARSTATE_HARDWARE_ERROR 0x0004 // Netzwerkbaugruppe brennt DM_VARSTATE_MAX_LIMIT DM_VARSTATE_MAX_LIMIT 0x0008 // projektierte Obergrenze überschritten DM_VARSTATE_MIN_LIMIT DM_VARSTATE_MIN_LIMIT 0x0010 // projektierte Untergrenze unterschritten DM_VARSTATE_MAX_RANGE DM_VARSTATE_MAX_RANGE 0x0020 // Formatgrenze überschritten DM_VARSTATE_MIN_RANGE DM_VARSTATE_MIN_RA NGE 0x0040 // Formatgrenze unterschritten DM_VARSTATE_CONVERSION_ERROR DM_VARSTATE_CONVERSION_ERROR 0x0080 // Anzeige Wandlungsfehler DM_VARSTATE_STARTUP_VALUE DM_VARSTATE_STARTUP_VALUE 0x0100 // Initialisierungswert der Variablen DM_VARSTATE_DEFAULT_VALUE DM_VARSTATE_DEFAULT_VALUE 0x0200 // Ersatzwert der Variablen DM_VARSTATE_ADDRESS_ERROR DM_VARSTATE_ADDRESS_ERROR 0x0400 // Adressierungsfehler im Kanal DM_VARSTATE_INVALID_KEY DM_VARSTATE_INVALID_KEY 0x0800 // Variable nicht gefunden / nicht vorhanden DM_VARSTATE_ACCESS_FAULT DM_VARSTATE_ACCESS_FAULT 0x1000 // Zugriff auf Variable nicht erlaubt DM_VARSTATE_TIMEOUT DM_VARSTATE_TIMEOUT 0x2000 // Timeout / keine Rueckmeldung vom Kanal DM_VARSTATE_SERVERDOWN DM_VARSTATE_SERVERDOWN 0x4000 // Server ist down
Ya habias definido una variable de comunicaciones llamada MB0, por lo que ahora deberemos de realizar una acción 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 acción será de tipo global, y la denominaremos alarmas_cíclicas.pas, que posee el siguiente código: 40
Aprende WinCC
#include "apdefap.h" int gscAction( void ) { // WINCC:TAGNAME_SECTION_START WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END WINCC:PICNAME_SECTION_END DWORD *estado; estado=SysMalloc(sizeof(DWORD)); GetTagByteState("MB0",estado); GetTagByteState("MB0",estado); //Tipo de retorno :BYTE if(estado>0) { SetTagDWord("FALLO_COMUNICACIONES_EQUIP SetTagDWord("FALLO_COM UNICACIONES_EQUIPO_1",1); O_1",1); //Tipo de retorno :BOOL } else { SetTagDWord("FALLO_COMUNICACIONES_EQUIP SetTagDWord("FALLO_COM UNICACIONES_EQUIPO_1",0); O_1",0); //Tipo de retorno :BOOL } return 0; }
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. Podría complicar más la cosa si activáramos diferentes bits de la variable interna en función del fallo de comunicaciones. Como es una acción 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 acción, 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 tendrán 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 aparición para que cuando se produzca un error de comunicaciones tengamos que acusarlo, y así detectar cuando nos falla la comunicación aunque se produjese cuando no estábamos observando el scada.
42
Aprende WinCC
Por ultimo definimos los textos de estado de nuestras comunicaciones (aparece, desaparece...). El símbolo +/- indica una alarma que desaparece sin haber sido acusada por el operario (fallo de comunicaciones mientras no observábamos el scada que se ha solventado).
También definimos los colores con los que debe de aparecer la alarma de comunicaciones. Definimos acto seguido una alarma con los siguientes parámetros:
También 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 parámetros más importantes de esta ventana de alarmas serán: La ventana será de tipo ventana de aviso o ventana de archivo temporal. Deberemos de realizar una selección como muestra la figura inferior en la que determinemos que únicamente se van a mostrar las alarmas del tipo fallo_comunicaciones. La línea 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 están las capas de WinCC. Lo que debes de hacer es poner cada ventana en una capa, y activándolas y desactivándolas podrás manejarte con soltura. Si has observado, la ventana de winc chanel diagnosis control la hemos reducido un poco de tamaño para poder insetar dos botones como muestra la figura:
En estos botones vamos a introducir un código que nos permita mostrar las dos ventanas solapadas. En el botón de la izquierda, teclearemos: SetPropBOOL(lpszPictureName,"ALARMAS SetPropBOOL(lpszPictureName,"ALARMAS_COMUNICACIONES","Visible",F _COMUNICACIONES","Visible",FALSE); ALSE); SetPropBOOL(lpszPictureName,"COMUNICACIONE SetPropBOOL(lpszPictureName,"COMUNICACIONES","Visible",TRUE); S","Visible",TRUE);
45
Aprende WinCC
Siendo ALARMAS_COMUNICACIONES la ventana de alarmas y COMUNICACIONES la ventana de chanel diagnosis. Para el siguiente botón será el mismo código pero inviertiendo el TRUE por el FALSE y viceversa. Con esto ya tenemos un histórico de comunicaciones y diagnóstico de la misma exhaustivo.
46
Aprende WinCC
C Caappí í ttuulloo 3
G Grraapphhiiccss D Deessiiggnneerr..
El editor Graphics Designer se encarga de la confección de las pantallas de WinCC. Básicamente es un entorno de dibujo con la característica 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 aún no ha sido generada. Características Tips&Tricks
El editor Graphics Designer posee una opción 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 opción 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 botón derecho teniendo seleccionado Graphic Designer y un PDL o pantalla ya realizado, accederemos a la opción Properties del menú contextual, donde podremos observar una previsualización del mismo, así como sus propiedades más importantes. También podemos ver las estadísticas 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 imágenes o pictures. Para ello, basta con presionar el botón derecho teniendo seleccionado el Graphic Designer en el explorador de WinCC. En el menú, seleccionaremos la opción Convert pictures. Desde este menú también podremos convertir la librería de proyecto y la librería global de las funciones C de que dispusiera nuestro proyecto realizado con una versión anterior de WinCC.
49
Aprende WinCC
Propiedades de los objetos
Todos los objetos poseen dentro del Graphics Designer varias características 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 más de un objeto se pueden agrupar, de manera que conforman uno nuevo que posee las características de los dos pero tiene un nuevo nombre. La mayoría de los objetos de la biblioteca son agrupaciones de objetos más simples. Las agrupaciones se pueden desagrupar en cualquier momento. Linking: Cuando copiamos varios objetos, se copian también 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 rápidamente.
Configuration Dialog:
se accede a un resumen de las propiedades del objeto más
importantes. Properties: se accede a una caja de diálogo 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 código 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 botón derecho sobre ella y elija properties 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 : Color del fondo de la picture Fill Pattern Color : Color de la máscara de dibujado sobre el fondo Grid color : Color de los puntos de la rejilla • • •
51
de la picture.
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 asignación de niveles de usuario, vea capítulo User Administrator.
52
Aprende WinCC
• • •
Display: Mostrar la picture. Update cycle: Ciclo de actualización de la picture. Date of the last change: fecha de la última modificación
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 Action: Se ejecuta al presionar cualquier botón del ratón. o Press Left : Se ejecuta al bajar el botón izquierdo del ratón. o Release Left Left : Se ejecuta al levantar el botón izquierdo del ratón. o Press Rigth: Se ejecuta al bajar el botón derecho del ratón. o Release Rigth Rigth: Se ejecuta al levantar el botón derecho del ratón.
53
Aprende WinCC
•
Eventos Keyboard: 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.
Se ejecuta cuando el objeto recibe o pierde el foco (la posibilidad de actuarsobre el mismo desde el teclado).
Eventos Focus :
Eventos Miscelaneous 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. Copia las propiedades del objeto activo en ese momento en el portapapeles.
Copiar Propiedades:
Pega las propiedades copiadas en el portapapeles al objeto que esté activo en ese momento.
Pegar propiedades:
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 selección. Realiza un zoom a una selección 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 imágenes preconfiguradas que podemos utilizar en nuestras picture. Algunos de estos objetos en realidad son agrupaciones de varios de ellos y llevan ya asociado código C de tal manera que están preparados para realizar una tarea determinada (smart objects). La • •
biblioteca
se
compone
Global library: biblioteca general accesible desde Project library: librería exclusiva del proyecto.
57
de
dos
cualquier proyecto.
partes:
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: grid En la opción podemos seleccionar: • • •
Display grid : El visualizar o no la rejilla al crear o abrir un picture. Width in pixels: El tamaño que debe tener la rejilla. Snap to grid: El ajustar o no los objetos a la rejilla.
59
Aprende WinCC
En la pestaña options podemos seleccionar: •
Save settings on exit : Grabar los cambios cuando se sale del Graphic Designer o
no. •
•
•
• •
•
Display performance warnings warnings : avisar
cuando se detecte por el sistema un error de diseño, p. Ej., cuando se asigne una actualización crítica a un parámetro que pudiese sobrecargar la cpu del ordenador.
El tipo de selección selección de de los objetos objetos : o Surrounding: Los objetos
se seleccionan si se encuentran completamente dentro de la selección realizada. o Touching: Los objetos se seleccionan aunque solo una parte de los mismos se encuentre incluida en la selección. Nota: para seleccionar varios objetos basta con mantener presionada la tecla mayúsculas mientras se realiza un click sobre ellos. Object Tree: mostrar siempre igual el árbol de objetos, independientemente de cómo 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 automática o no. 60
Aprende WinCC
•
OCX display:
Muestra o no la solapa de OCX insertables en las pictures de
WinCC.
En esta opción 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 configuración 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 configuración 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:
•
•
•
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.
Flat style for:
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 página de idioma podamos modificar completamente el lenguaje del runtime en la aplicación. Para conseguir esto, primeramente deberemos definir el lenguaje de la pantalla en la que estamos. ¿Cómo saber el idioma actual de la pantalla que estamos editando?
Aparece en la barra de status, en la parte de debajo de la pantalla ¿Cómo poder modificar el idioma actual de la pantalla activa? En el menú del Graphic Designer, en la opción View->Language
aparece una
ventana como la de la figura y podemos seleccionar nuestro idioma. ¿Cómo hacer una misma pantalla en Inglés y en Español?
Seleccione al principio el idioma Español (tradicional), coloque todos los objetos que desee que aparezcan, escriba todos los textos, y grabe la pantalla. Ahora cambie de idioma al inglés y verá como todos los textos aparecen en interrogantes. Vuelva a escribirlos, esta vez en inglés.
64