Manual Wincc Total

APRENDE Version 5.1 CON EL GUAPERAS INDICE Cap1. Introducción a WinCC …………… 1 Cap2. Comunicación con autómatas S7

Views 110 Downloads 1 File size 7MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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:

CPU Memoria principal/ RAM RAM en caso de configuración online Disco duro (sin datos del proyecto) Memoria de trabajo virtual Memoria de trabajo para spooler de impresoras Windows Gráficos Resolución

Mínimo Intel Pentium II 400 MHz 256 MBytes (para servidores)

Recomendado 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

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 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 |

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. Para salir de WinCC, en el menú Archivo->Salir disponemos de dos opciones: 9 Salir de WinCC Explorer y cerrar el proyecto: 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. 9 Salir de WinCC Explorer : 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. 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 lógicamente necesitaremos conocer el nombre del nuevo ordenador donde estamos copiando el proyecto. Para ello, en Inicio->Configuración->Panel de control->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),"VENTANA_SALIR","Visible",TRUE);

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 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 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 // 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 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: 9 Administrar usuarios (lo de antes) 9 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","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 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),"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 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, 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 // 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 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: 9 Variable a chequear 9 Puntero a una doble palabra en la que la función deja el estado de las comunicaciones 9 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_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 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 // 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); }

//Tipo de retorno :BOOL

//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_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 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. 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 máscara 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 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: 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: 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: Se ejecuta al levantar el botón derecho del ratón.

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 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

de

dos

Global library: biblioteca general accesible desde cualquier proyecto. Project library: librería exclusiva del proyecto.

57

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: En la opción grid 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: 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 de los 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:

• • •

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 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

Aprende WinCC

Agrupar y desagrupar objetos.

Cuando se selecciona más de un objeto se permite la opción 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 rectángulos que combinados y agrupados forman una tubería. A estas agrupaciones de objetos se les puede asignar código para su dinamización de una manera sencilla, a la vez que exportarlos a la librería de proyecto para su posterior reutilización. Tab Secuence. Todos los objetos poseen un orden de tabulación. Este parámetro nos indica que objeto será activo en un determinado momento según el objeto que actualmente posea el foco (esté activo) al presionar la tecla tab. Existen dos órdenes de tabulación: • •

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 opción 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 tabulación automáticamente.

Para modificar el tab order deberemos seleccionar en el menu edit la opción 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 tabulación. Su número será sustituido por un asterisco. Para volver a insertar un objeto en el orden de tabulación manteniendo presionadas las teclas shift+ ctrl seleccionar el objeto que se desea insertar en el orden de tabulación. Su asterisco será sustituido por un número.

Barras de herramientas. Barra de colores Disponemos de una barra de colores para asignar a las propiedades estáticas 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 ratón 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 categorías: •

Standard Objects: Objetos estándar de dibujo, tales como líneas, polígonos, etc..



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



Windows Objects: Objetos comunes de Windows, tales como botones, cajas de selección, barras de desplazamiento, etc..

67

Aprende WinCC



Barra de layers:

La barra de layers nos indica las capas que actualmente están 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 botón) que asignemos diferentes capas, para que podamos desactivarlas pinchando sobre ellas y trabajar de una manera más cómoda en el editor de dibujo. •

Barra de alineación. Esta barra se utiliza para poder alinear varios objetos y también para igualarlos en tamaño tanto en altura como en anchura.

Para que aparezca activa lógicamente deberemos de tener seleccionados por lo menos dos objetos. El significado de cada uno de los botones de alineación 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 método...: • de abrir una ventana de selección: se toma como referencia el que esté más al extremo de la ventana. • utilizando el ratón y teniendo presionada la tecla mayúsculas: el primero que se seleccionó. •

Barra de fuentes

La mayoría de los objetos poseen algún texto asociado. Mediante la barra de fuentes podemos configurar el tamaño y fuente de los mismos sin tener que entrar en sus propiedades.



Barra de estilos

Al igual que el anterior, poseemos también una barra de herramientas solo para las líneas de los objetos, en las que podemos modificar el estilo de la línea, su grosor, su final y el relleno que deben tener (si poseen un grosor mayor de una simple línea).

69

Aprende WinCC

70

Aprende WinCC

Smart Objects Los smart objects son la base de construcción de los proyectos de WinCC. Los cuatro primeros los estudiaremos más adelante, ya que su estudio es más 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 -> orientación del texto de la caja (horizontal o vertical) X Alignement -> alineación con respecto al eje x (izquierda, centrado o derecha) Y Alignement -> Alineación con respecto al eje y (arriba, centrado o derecha)

72

Aprende WinCC

El flashing es una agrupación de propiedades no vista hasta ahora. Básicamente se utiliza para señalizar un cierto estado de algún elemento de la instalación que esté representado por dicho objeto. Si la presente caja de I/O está representando un valor de presión de agua, podemos representar aquí dicho valor con el fondo parpadeando cuando se exceda un determinado límite 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 rápida. 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 rápida. 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 rápida.

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 programación 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 también del código de página de idiomas seleccionado en el runtime. Operator activites Report: Cuando se activa esta opción, cada vez que se introduzca un valor en la caja, aparecerá una caja de texto solicitando que introduzcamos una explicación al respecto de la modificación 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 decisión. 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 automáticamente el tamaño de la caja al texto o número que contenga en cada momento. Cursor Control: Determina si después 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 automáticamente en modo de edición para introducir un valor, o no. 74

Aprende WinCC

Limits: •

Low Limit Value: Valor menor que se puede aceptar como válido a la hora de introducir un valor en proceso. • High Limit Value: Valor mayor que se puede aceptar como válido a la hora de introducir un valor en proceso. Si se sobrepasa cualquiera de estos valores, automáticamente aparece una caja indicándonos 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 también.

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 carácter 9 corresponde a un dígito. Los dígitos que se coloquen después del punto corresponderán 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 ->representación 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 carácter. a -> cualquier carácter o número A -> cualquier carácter en mayúsculas o número. b -> cualquier carácter en mayúsculas o minúsculas. B -> cualquier carácter en mayúsculas. d -> signo + o -, punto decimal, espacio en blanco o número. t -> separador (:,;) o espacio en blanco. 1 -> número 0 o 1 2 -> número 0, 1 o 2. h -> carácter hexadecimal. •

Formato

hexadecimal:

f -> carácter 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 dígitos del campo de manera automática, 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 después de que sea realizada la validación 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 válido en la caja, debe de borrarse de esta el valor erróneo para que sigamos introduciendo uno correcto, o nos permite editar el valor erróneo para modificarlo y que sea válido para el sistema. Hidden Input: Oculta el valor que se está introduciendo mediante caracteres de *. Esta opción es útil para la solicitud de passwords al usuario.

Además 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 más importantes del objeto en cuestión, es decir, un resumen de lo visto en las páginas 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 analógico y compararlo con unos límites establecidos para saber en que estado se encuentra el proceso con respecto al valor deseado.



Bar direction: dirección 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 sólido. • 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 sólido. • 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 indicándonos 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 límite superior o inferior de manera total, o solo el trozo que sobrepase dicho límite. Maximum value: Valor máximo de la escala de la barra. Zero point value: Valor del punto cero de la escala. Minimun value: Valor mínimo de la escala de la barra. Histeresys: Indica si el valor debe de comportarse según una histéresis al alcanzar el límite superior o inferior. Si alcanzamos un límite de 100, teniendo activado este parámetro, y seleccionando un rango de histéresis 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 límites precisos. Histeresys Range: Valor a tener en cuenta en la histéresis. Trend: Indicador del sentido de la barra. Nos indica si el proceso está aumentando o disminuyendo, realizando una comparación del valor actual con el anterior. Average Value: Seleccionando esta opción se muestra la media de los últimos 15 valores leídos en el proceso, no el instantáneo. 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 opción dibuja las barras largas de la escala en negrita. Label Each: Indica cada cuantas barras largas de la escala hay que colocar un valor numérico. 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 numérico de escala. Por ejemplo, cada 20 unidades, con lo que la cantidad de marcadores numéricos 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: Dígitos 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 límite que aparece a la izquierda de la barra indicándonos donde se encuentran los límites de control de la barra. Monitoring AL: Controlar alarma 1de mínimo. Limit AL: Valor del límite 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 máximo de la escala, o en porcentual (mucho más flexible, ya que ante cualquier modificación de límites continúa manteniendo la proporcionalidad).

Las demás opciones son idénticas pero para los cuatro siguientes limites de alarma mínima (La L de AL indica que es un límite de mínimo). Los límites de máximo comienzan con AH, siendo su funcionamiento y propiedades idéntico al descrito, salvo 85

Aprende WinCC

que la barra cambia de color cuando el valor del proceso está por encima del valor estipulado como límite 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 gráfico representa una imagen en pantalla. Su asignación suele ser dinámica, utilizándose el status display para realizar animaciones de imágenes, 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 también 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 serán 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 automáticamente en el subdirectorio GraCS de nuestro proyecto, por lo que una vez la seleccionemos en algún objeto estará disponible para todos los demás 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 máximo de 31 imágenes que se van mostrando en función 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 animación: que exista un valor que se va incrementando desde 0 hasta x. Esta opción suele ser una variable interna, y se incrementa mediante una función en C desde WinCC. que exista un valor de comunicaciones que nos indica en que posición se encuentra la máquina. Cada bit de la palabra muestra un estado de la máquina. En este caso hay que utilizar el botón 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 también:

90

Aprende WinCC

Text list. El objeto textlist es útil a la hora de realizar un control sobre valores numéricos que se encuentran claramente definidos mediante textos. Suelen ser estadios del proceso de tres o cuatro pasos máximo. Por ejemplo, un motor puede estar parado, arrancado en automático, o arrancado en manual. En estas situaciones el asociar textos a valores numéricos 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 instalación.

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: Asignación de los textos a los diferentes valores numéricos. 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 ratón en otro objeto, sin necesidad de pulsar la tecla enter prteviamente. Number of visibles lines: Líneas de texto visibles al desplegar la ventana de selección de valor. 91

Aprende WinCC

92

Aprende WinCC

Buttons. El objeto button es el encargado de la asignación de las funciones típicas de manejo por el programa de la aplicación (cambio de pantalla) y realización 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 botón. • Hotkey es la función del teclado que se asigna a ese botón, de tal manera que presionando dicha tecla se ejecuta la función que se haya asociado al mismo. Destacar que la asignación del teclado no se limita a las teclas de función pudiéndose 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 autorización requerido para poder ejecutar la acción del botón. El campo inferior de la ventana está reservado por si deseamos darle al botón la funcionalidad típica 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 botón es que podemos definir dos imágenes (picture on y picture off) para representar los dos estados del botón (presionado o no).

94

Aprende WinCC

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



Number of boxes: Cantidad de cajas de selección 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 número de Index. X Alignement: Alineación en el eje X de los textos. Y Alignement: Alineación en el eje Y de los textos.

Selected Boxes: Cajas que están activas por defecto según el array generado (en el ejemplo solo la primera de las tres). La visualización 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 característica de exclusión, lo que hace que seleccionando cualquiera de las opciones del objeto option automáticamente dejan de estar seleccionadas todas las demás. Todas las propiedades vistas en checkbox sirven para option button.

97

Aprende WinCC

Slider. La barra slider sirve para poder introducir valores analógicos en el proceso de una manera gráfica.



De las propiedades de slider solo destacar por no haber sido vista aún: Extended operation: Si se pincha copn el ratón en cualquier parte de la barra que no sean los botones de subir y bajar, el valor se va directamente al mínimo o al máximo 98

Aprende WinCC



estando activado este parámetro. 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 también colores a la barra y a los botones de máximo y mínimo de manera individualizada, así como al fondo con respecto a lo que lleva y lo que queda hasta el máximo.

99

Aprende WinCC

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

• •

Las opciones más interesantes son: Latch Down: Mantiene el botón enclavado en función set/reset pese a no estar presionándolo. Pressed: Valor actual del botón (0 = no presionado / 1 = presionado).

100

Aprende WinCC

Asistentes Los asistentes de programación son pequeños scripts o trozos de código de programa que se añaden de manera automática al objeto sobre el que se aplican, para realizar una determinada tarea de programación. 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. Código añadido: 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. Código: DMExitWinCCEx(DM_SDMODE_SYSTEM); • Exit WinCC: Sale de WinCC. Código:DMExitWinCCEx (DM_SDMODE_WINCC); • Exit WinCC and logon again: Sale de WinCC y vuelve a solicitar un nuevo usuario de Windows NT. Código:DMExitWinCCEx (DM_SDMODE_LOGOFF); • Exit WinCC and restart Win dows: Sale de WinCC y rearranca Windows NT. Código: 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. Código: DeactivateRTProject (); HardCopy: Imprime la pantalla actual por la impresora predeterminada de Windows. Código: WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); Language switch: Cambia de idioma los textos de la aplicación runtime. Código: SetLanguage(0x040A); /* SPANISH */

102

Aprende WinCC



Start another aplication: Arranca otra aplicación que deseemos ejecutar. Código: 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 través de un Wizard en lugar de hacerlo directamente en propiedades del objeto. • Color Dinamics: • Color Dinamics with table: • Copy tag value: incluye el código que copia una variable en otra. El código 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 través del wizard podemos establecer un rango de llenado diferente de 0 a 100 que sería mediante una conexión 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 función de las variables se moverá la posición 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 diálogo ya configurada anteriormente. Nos crea el código 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

Dinamización de propiedades Dinamización a través de una variable Las dinamización de las propiedades de un objeto se puede realizar de diferentes maneras. La más 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 representación de una asignación directa a una variable se realiza con una bombilla verde. Dinamización a través de dinamic dialog La segunda forma sencilla de dinamizar una propiedad es a través del dinamic dialog, una caja de diálogo que nos permite configurar cual debe ser el valor que controla la propiedad dependiendo de una fórmula que puede ser el resultado del valor de una variable o de una operación matemática. El dinamic dialog lo veremos más adelante en los ejemplos de programación, pero es conveniente saber que se representa su asignación a una propiedad mediante un rayo rojo.

Dinamización mediante código C La última forma de poder dinamizar una propiedad es directamente programar en C una operación que nos debe de devolver el valor que controlará la propiedad. Solo es necesaria esta solución en casos de cálculos matemáticos muy complejos.

La representación de su asignación se realiza por un rayo verde. Dinamización indirecta de una propiedad 109

Aprende WinCC

Además de poder dinamizar una propiedad asignándole un valor, ya sea a través de una variable o del resultado de operaciones matemáticas, podemos realizar una asignación 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 cuestión (en nuestro caso Output Value). Todas las propiedades tienen una caja de asignación a la derecha llamada indirect. Seleccionándola, 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.

Programación de eventos Los eventos de un objeto deben de programarse en C. Sin embargo, existe un pequeño asistente que nos puede evitar en algunas circunstancias tener que recurrir a la programación 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:

Programación en C de eventos Pero casi siempre hay que recurrir al C para realizar las acciones que deseamos. Cuando asignamos nuestro código de programación a un evento, se nos indica mediante una bombilla verde:

Sin embargo, no siempre la programación en C que realicemos será correcta. Cuando el código 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 código aunque se produzca el evento.

111

Aprende WinCC

C Caappííttuulloo 4..

A Allaarrm maass:: A Allaarrm m LLooggggiinngg Diferentes tratamientos de las alarmas. Las alarmas en WinCC las podemos utilizar para enterarnos de más cosas que exclusivamente si ha saltado un diferencial. Esto ya lo pusimos en práctica al principio, utilizándolas para almacenar un histórico de usuarios con el que poder determinar que operarios tenían el control del sistema en cada intervalo de tiempos del día. En el presente capítulo las vamos a utilizar para lo que están principalmente diseñadas: 9 Detección de alarmas actuales en la instalación. 9 Histórico de alarmas de la misma, y 9 Detección de fallos internos de programación y mensajes internos del compilador del sistema WinCC. El almacenamiento del histórico 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 histórico de la base de datos runtime. Como existe la limitación de que únicamente se permiten visualizar en WinCC 1000 alarmas en la ventana de alarmas, nos encontraríamos si utilizásemos el segundo tipo de almacenamiento con el problema de tener un histórico muy potente, pero tener que realizar filtros de selección por fechas para poder observar dichos valores constantemente, a la vez que estar obligados a borrar el histórico cada cierto tiempo. Es por esto que en el ejemplo vamos a utilizar el almacenamiento por tambor, que es mas práctico y produce casi el mismo resultado. La perdida de alarmas con el paso del tiempo se puede solventar a través de Access si lo deseamos, como veremos más adelante. Diseño de las alarmas. Una alarma se compone de bloques como sabemos, por lo que vamos a definirlos en primer término. 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 prediseñada 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 asignación de colores:

Ya estamos en disposición 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 características:

Observemos que la hemos asignado al tipo alarma de la clase Error, que deseamos que se archive (para que aparezca posteriormente en el histórico de alarmas), y que active una acción. ¿Qué es activar una acción 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 instalación. Luego necesitaremos que se ejecute una acción 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 función ya definida en WinCC que se llama gmsgfunc.fct. Un tema muy importante sobre esto que estamos comentando es el hecho de que dicha función 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 aplicación a otra instalación, o de nuestra oficina al ordenador de la fábrica. Cuando copiamos todo el subdirectorio de nuestro proyecto, deberemos de tener la precaución de copiar este archivo también, para posteriormente copiarlo en le mismo subdirectorio de WinCC del pc destino de nuestro proyecto, o no servirá para nada que tengamos activada la opción “activa un acción”, ya que acudirá al gmscgfunc.fct, pero no tendrá código, estará vacío. 114

Aprende WinCC

Continuando con la explicación, vemos también 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 más 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 más, 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 disposición de ir al Graphic Designer.

115

Aprende WinCC

Histórico de alarmas. Copiamos la pdl start.pdl y la renombramos como alarmas.pdl. En bottom.pdl introducimos el siguiente botón de la biblioteca:

El código asociado al mismo será el siguiente en el evento clic del ratón: OpenPicture("ALARMAS.PDL"); //Tipo de retorno :void

Observemos que en cuanto ejecutemos este código 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 navegación por ventanas. Para ello diseñamos al principio top.pdl, para colocar en ella botones de acceso a las diferentes pantallas de nuestra instalación. Pero ahora mismo no vamos a utilizar este método de navegación, sino unas funciones en c que nos permite ir a la pantalla inicial a la de la que veníamos, 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 podríamos asignar a cualquier otro botón 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 estarás 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 operación para los otros 5 botones y ya estamos en disposición 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 más cómoda de observarlas que utilizar el boton derecho del ratón y seleccionar propiedades). Esta ventana va a servirnos para ver el histórico de alarmas, por lo que seleccionaremos Ventana de archivo temporal, que es una desafortunada traducción de ventana de archivo en formato tambor.

118

Aprende WinCC

Si le pones titulo a la ventana de alarmas el WinCC la hace automáticamente movible, y que puede ser cerrada, por lo que desactivamos ver titulo de ventana Una de las cosas más importantes que deberemos de realizar en esta solapa es realizar un filtrado de selección 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 botón selección y definir que unicamente deseamos observar en esta pantalla las alarmas de clase error.

119

Aprende WinCC

En la siguiente solapa definiremos la selección de la alarma por fila, y un desplazamiento automático 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 exclusión: 9 Obtener fichero histórico: hemos quedado que es mejor fichero circulante para las alarmas, luego no tiene sentido tener un botón del mismo. 9 Función 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 compondrán nuestra línea de alarmas y el orden que poseerán 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 instalación. Para ello introduciremos un WinCC alarm control como muestra la figura:

Esta ventana de alarmas posee las siguientes propiedades: 9 El tipo de ventana es de aviso. 9 Tambien aplicamos aquí una selección para que únicamente nos muestre las alarmas de tipo error. 9 En la solapa parámetros no aplicamos selección, ni mostramos título de columna ni título de fila.

9 No mostramos ni barra de herramientas, ni barra de estado. 9 Por último seleccionamos los siguientes bloques para la ventana de alarmas. Aquí no son necesarios ni el número de alarma, ni la duración, ni el usuario, que quedan para la ventana del histórico.

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 botón 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 código al botón 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 botón de acuse, indicándonos que tenemos una alarma pendiente de acusar que aún no hemos atendido. Una idea podría ser esta que vamos a desarrollar a continuación. Vamos a crear una nueva variable interna de tipo bool denominada ACUSE. En la pdl bottom.pdl introducimos el siguiente icono de la librería:

En la propiedad del objeto visualización asociamnos la variable booleana.

También activamos la opción 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 botón de acuse que hemos colocado a la derecha de la ventana. Lo primero que hacemos es esta asociación, que conseguimos si pulsamos el botón 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 señalizador central la variable anterior. Además de realizar este proceso, es necesario que las alarmas de dicha clase (error) tengan activada la opción activa el señalizador central.

Ya podemos comprobar como nos queda nuestra imitación 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: 9 Alarmas actuales 9 Histórico de alarmas. Comenzaremos por realizar los dos Report con el Report Designer que nos permitirán 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 dinámica serán:

Si editamos la selección podremos seleccionar tanto los bloques que compondrán nuestra línea de alarmas como la selección de la clase de alarmas a mostrar.

126

Aprende WinCC

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

Ya podemos pasar al Report del histórico de alarmas. Creamos un nuevo Report con la siguiente tabla dinámica:

Las propiedades de bloques de línea y selección son las mismas que anteriormente para la de alarmas actuales. También realizamos una orden de impresión como la siguiente:

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

127

Aprende WinCC

El código que asociaremos al botón de alarmas actuales será el siguiente: RPTJobPreview("ORDEN_ALARMAS_ACTUALES");

Mientras que el del botón de histórico será el siguiente: RPTJobPreview("ORDEN_HISTORICO_ALARMAS");

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

128

Aprende WinCC

Filtrados de selección de alarmas. Cuando comenzamos a tener muchas alarmas en el histórico 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 número de alarma. Esto se puede realizar de una manera sencilla desde el botón de selección 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 selección también lo podemos realizar a través de código C. Veamos este mismo ejemplo, pero a través de un botón que nos filtra las alarmas de número 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 botón volver a mostrar todas las alarmas de clase error el código sería: char cadena[200]; strcpy(cadena,"MSGNR >= 4 AND MSGNR variable de selección.

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 día). 210

Aprende WinCC

Vamos a seleccionar 1 minuto para el cálculo, para poder observar en tiempo real una evolución dentro de dicho archivo sin tener que esperar días para obtener resultados. Ya podemos hacernos una nueva pdl, renombrando grafica_continua.pdl, que denominaremos historial.pdl, y cuya única modificación importante es la asignación de la variable a mostrar en la ventana gráfica:

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

211

Aprende WinCC

Exportación 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 opción probablemente sea la exportación en paralelo de dichos datos a ficheros externos en formato dbaseIII. El WinCC dispone de una opción de exportación de datos a dicho formato, con lo que cada vez que almacena datos en un archivo dentro de la base de runtime lo ejecuta también en un fichero externo. Deberemos abrir el Tag Logging y seleccionando con el botón derecho sobre el nombre de nuestro proyecto->propiedades podemos activar esta opción.

Es importante tener en cuenta que al activar esta opción se borran todos los datos del histórico de la base de datos de runtime, por lo que es aconsejable realizar dicha selección 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 adquisición del valor. Este campo es de texto y no separa la fecha de la hora, por lo que su tratamiento es relativamente difícil, 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: código de control interno. Sin relevancia para nosotros.

212

Aprende WinCC

Exportación de datos via consulta Sql. El motor de la base de datos de Sybase, núcleo 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 botón dentro de nuestra pdl de gráficas que nos permita exportar a un fichero en formato csv una curva que deseemos. En realidad es lo mismo que ya nos realiza automáticamente 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 botón en la pdl grafica_continua.pdl. El código que deberemos de asignar a dicho botón 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

Lógicamente vamos a estudiar paso por paso la composición de la cadena de texto que realiza la exportación: DBISQLC.EXE : es el programa gestor de bases de datos sybase sqlanywhere 7. UID=dba . Identificación 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 históricos de curvas, escribiremos el path completo de nuestro archivo rt.db. DBN= Nombre de la base de datos desde el punto de vista de administración odbc. Para saber cual es dicho nombre, en Inicio->Configuración->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 mostrándolos en el instante en que fueron adquiridos, y no en el que son leídos desde el scada. Dos casos podrían ser: 9 Un valor que es almacenado en una db cada medio segundo durante 1 minuto y que no va a recibir más valores hasta pasadas unas horas. Si adquiriéramos los valores en tiempo real desde el scada correríamos el riesgo de perder valores o ralentizar durante ese minuto en demasía el PC al estar guardando en el disco duro cada tan corto espacio detiempo. 9 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 después de haber sido generados en la remota. En estas situaciones es necesario recurrir a la funciín AR_SEND, que se encarga de enviar dichos valores a un archivo en el scada guardándolos en el tiempo en que indiquemos en dicha función, y no en la hora actual del pc del scada. Esta función 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 función 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 parámetros: Tipo_de_cabecera: Tipo de cabecera 0 1 8 9

Tiempo de referencia

AR_ID Subnumero

Cabecera sin tiempo de referencia Cabecera con tiempo de referencia Cabecera sin tiempo de referencia Cabecera con tiempo de referencia

215

Cabecera sin AR_ID subnumero Cabecera con AR_ID subnumero Cabecera sin AR_ID subnumero Cabecera con AR_ID subnumero

Aprende WinCC

C Caappííttuulloo 6

R Reeppoorrtt D Deessiiggnneerr.. El módulo Report Designer se encarga de todas las tareas relacionadas con la impresión de datos y documentos desde WinCC a una impresora o a un archivo de texto. Un Report es un documento diseñado 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 están relacionados en la propia base de WinCC. La finalidad lógica 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 instalación 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, diseñarlo 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 más 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 diseño de la línea que debe de salir por la impresora. Print Job: Un layout como tal no puede imprimirse, sólo ser asignado a un job o tarea, que reúne 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 Características 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 documentación 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 extensión 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 página del documento, que puede contener campos de la base de datos, pero que será común 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: • • •

página de cubierta (cover-sheet) contenido del layout o Report. Página de contraportada (final page). Las partes del área de un layout son:

• • •

Área no impimible. Área imprimible (donde se encuentra la parte estática del documento). Cuerpo del documento (donde se encuentra la parte dinámica del Report).

La parte estática del documento está compuesta por campos cuyo valor va a ser común para todo el Report o son aportados por el sistema, como son la fecha, hora, el nombre del proyecto o el número de página actual. La parte dinámica está compuesta por los datos a mostrar en dicho Report, e irá en función del tipo de datos dinámicos que deseemos mostrar.

218

Aprende WinCC

Páginas de portada y contraportada. • •

La página de portada de un layout debe atender a las siguientes reglas: únicamente puede ocupar una página. Pese a que está permitidos campos dinámicos en la misma, no son aconsejables, ya que en determinadas ocasiones pueden presentarse cercenados.

Propiedades del layout Si presionamos con el botón derecho sobre el layout, podemos ver sus propiedades. Repasemos las más 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 botón de impresión de alarmas desde la ventana de alarmas está asignado a un contexto.)



Geometry: o Width: ancho de la página. o Height: alto de la página. o Paper size: formato de tamaño del papel en que se imprime el layout (carta, A4,etc..) o Orientación: 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 página y el comienzo de la parte dinámica del documento. Estas distancias determinan la anchura de la parte gris del layout (cabecera y pie de página). 219

Aprende WinCC



Miscelaneous: o Cover sheet: Todo layout puede tener una página inicial, en la que se puede introducir los textos informativos al respecto del tipo de layout, la instalación en la que se genera, etc…Aquí se determina si esta página inicial debe de aparecer o no en el documento final. o Final page: lo mismo, pero con una página de finalización de documento.

220

Aprende WinCC

Barra de herramientas del layout La barra de herramientas, además de varias funciones ya comentadas anteriormente, posee una serie de botones específicos, que son: Visualizar parte estática del documento. Solo puede modificar la parte cabecera y pierde del documento. Visualizar parte dinámica del documento. Solo se puede modificar la parte central, no la cabecera ni el pie de página. Visualizar portada del documento. Visualiza parte central del documento. Visualiza contraportada del documento.

Objetos del layout Como en el Graphic Designer, lo más importante del layout serán los objetos que insertemos en el mismo. Disponemos de una ventana en el que se nos muestran los mismos por categorías.

Objetos estáticos: 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 diseña, la instalación, etc…).

221

Aprende WinCC

Objetos dinámicos: su valor está en función 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 impresión gráfica o de una determinada pantalla que hayamos diseñado con el Graphic Designer, o de una gráfica.

Los objetos dinámicos requieren una conexión, que es el vínculo con el sistema que determina que valores del mismo deben plasmarse en el objeto a la hora de la impresión. En este caso, si queremos imprimir: • las pictures de WinCC: deberemos seleccionar General Display de picture. Nos mostrará todas las imágenes diseñadas, con el tamaño que le demos a dicho objeto.

222

Aprende WinCC



Una gráfica: deberemos seleccionar Trend.

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



Time range: rango de tiempo que debe aparecer en la gráfica.

223

Aprende WinCC



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



Format: fuente de los textos que componen la gráfica.

Dynamic Table: tabla de datos cuyas celdas se rellenan de los datos indicados mediante connect. Se utiliza para mostrar todo tipo de datos numéricos y de texto, en oposición a la anterior que mostraba dibujos y gráficas. 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 conexión a la tabla creada.

224

Aprende WinCC

En las propiedades de la conexión podemos determinar la selección 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 representación 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 dinámica 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 representación (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 sólo pueden introducirse en la parte estática del documento, no en la dinámica. • Date/Time: Permite introducir la fecha y la hora dentro de un Report. • Page Number: número de página. • Project name: nombre del proyecto. • Layout name: nombre del layout que se está imprimiendo. 225

Aprende WinCC

Line printer layout La impresión por líneas se utiliza para mostrar generalmente las alarmas o eventos de la instalación en tiempo real por impresora.

Podemos definir la cantidad de líneas que queremos que ocupe una hoja, los márgenes, y los textos de cabecera y pie de página. Todas estas opciones evidentemente están ideadas para una impresora matricial que solo utilizaremos para caracteres de texto. Definidos estos parámetros, no queda determinar el formato del mensaje que vamos a sacar en la línea de layout. Para ello, si seleccionamos el botón Selection de esta ventana, podemos acceder a los bloques que hayamos creado en la parte de Alarm Logging. Mediante estos bloques confeccionamos nuestra línea. Los archivos de line printer poseen la extensión 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 después 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 impresión realizada en este trabajo (solo lectura en tiempo de runtime). Next printout: próxima impresión realizada en este trabajo (solo lectura en tiempo de runtime). Start time: hora de comienzo de las impresiones si se desean cíclicas. Cycle: Cada cuanto tiempo debe imprimirse el layout.

Page range: rango de páginas a imprimir del trabajo. Time range: el rango de tiempo que debe mostrar en datos que dependan del tiempo (gráficas, tablas de valores). Puede ser: • Relative: relativo al inicio del arranque de la runtime. • Absolute: indica el comienzo y la finalización 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. También 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 más la fecha y la hora en que se imprime, donde se almacena cada página de nuestro documento en formato EMF (gráfico).

Los iconos de un job indican si está configurado para disparase a través de un evento de tiempo de manera automática 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 función en C de ejecución de Reports. Existe la posibilidad de poder realizar una visualización previa del Report sin necesidad de esperarse al evento de tiempo ni tener que llamarlo desde C. Si presionamos sobre el job con el botón derecho estando el runtime activado, podemos seleccionar Job Preview, con lo que podremos observar como nos quedaría la impresión en el momento actual, e incluso imprimir desde esta ventana el Report.

230

Aprende WinCC

Diagnosis de la impresión de Reports. El WinCC dispone de una serie de ventanas de diagnosis para poder saber que Report se están 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

C Caappííttuulloo 7

G Glloobbaall S Sccrriipptt..

El Global Script es un compilador de C incorporado con el WinCC, que nos permite realizar compilaciones de código objeto (con un formato un tanto especial, ya que no lo deja en obj) sin necesidad de salir del propio entorno. Este código generado puede ser añadido 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 acción en C, automáticamente se nos activa el Global Script para permitirnos editar dicha acción 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 categorías de funciones: •

Project functions: funciones de proyecto. Son aquellas funciones que deben ser llamadas desde otras partes del programa para devolver valores después de realizar alguna operación en C. Anteriormente vimos como arrancábamos una gráfica y la parábamos con dos funciones de proyecto. Las funciones de proyecto quedan almacenadas automáticamente en el subdirectorio Library de nuestro proyecto, con la extensión fct. Para traerse una función 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 estándar se pueden modificar, pero dicha modificación 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 función 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 acción 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 extensión pas que se guarda en el subdirectorio pas, ya sea del ordenador en cuestión (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 función de proyecto, que mediante código C nos suma dos valores enteros y nos devuelve el resultado. El código es el siguiente: int Suma_Dos_Valores(int Valor_1, int Valor_2) { int Temporal; Temporal=Valor_1+Valor_2; return(Temporal); }

A continuación asociaremos en el evento action mouse de un botón el código siguiente, el cual realiza la llamada a la Project Function generada por nosotros, tomando dos parámetros 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 extensión fct en el subdirectorio Library de nuestro proyecto. Esto es interesante a la hora de reutilizar funciones ya generadas anteriormente. Para utilizar una función generada en otro proyecto, sólo 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 típicas subrutinas de cualquier lenguaje de programación, dentro de las cuales podemos programar en C y utilizar las funciones incorporadas en el propio WinCC. Este código se almacena en un fichero de texto de extensión fct y puede ser llamada la función desde un evento de un objeto, o desde una acción.

235

Aprende WinCC

Standard Functions Las funciones standard son funciones de proyecto (subrutinas de programación en C) también de extensión 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 código de las funciones por defecto o standard simplemente realizando click sobre ellas, modificándolas o borrándolas si no nos interesan (la modificación 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 acción compile header, como se vio anteriormente. Resumiendo, una función standard es como una función 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 básicas con las que se puede trabajar a la hora de realizar funciones o acciones en C. Son propiamente las instrucciones de programación de que dispone el WinCC para poder realizar las subrutinas por código. Dichas funciones también son comunes y se encuentran en el subdirectorio aplib, pero se diferencian de las anteriores en la extensión, que en este caso es icf. Además, 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 gráfica, 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 epígrafe de Global Actions, y las que pertenecen exclusivamente a nuestro ordenador, que se agrupan bajo el nombre dado a nuestra estación. En sistemas monopuesto la diferencia es inexistente, dando igual en qué apartado se genere la acción para luego poder ser llamada. Una acción se almacena siempre en un fichero de extensión pas, que suele guardarse en el subdirectorio pas de nuestro proyecto. Si la generamos como acción local (de nuestra estación), se almacenará en el pas que cuelga del subdirectorio generado con el nombre de nuestra estación. 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 ejecutarán cuando el proyecto sea multiusuario en el equipo donde se crearon, y no será posible realizar dicha acción en otro equipo del proyecto. Cada dez que se genera una nueva acción, el fichero apdefap.h es integrado automáticamente en el subdirectorio library de nuestro proyecto Una acción no es una función, 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 acción. • Ni cambiarle el nombre, que por defecto es gscAction. • Ni pasarle parámetros 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 acción (que es gcsAction), sino el del archivo en el que la almacenamos, que finaliza en extensión pas.

237

Aprende WinCC

Funciones en C. Partes de las acciones. •

Una acción o función de C se divide en 4 partes: Cabecera de función: En la lisma se recoge la declaración 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 función, un puntero con el nombre del objeto actual, y de la propiedad que ejecuta la función. #include “apdefap.h” long _main(char *lpszPicturename, char *lpzObjectName, char *PropertyName)



Declaración de constantes para tags: En estas líneas se definen constantes para las variables que vayamos a utilizar. En la versión 5.1 de WinCC estas constantes y el lugar donde se declaran son necesarias para posteriormente poder realizar una sustitución 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



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



Declaración de variables: Int pepe=0; BOOL juan=FALSE;



Código C de nuestra función: If(juan==TRUE) { pepe=3;}



Retorno de la función: Return pepe;

Printf. La instrucción printf posee la siguiente estructura: 238

Aprende WinCC

printf(“El valor vale %d pesetas”,valor)

Los parámetros de variables a utilizar son: %d: entero. %ld: doble entero %c: carácter. %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. %%: carácter % \n: cambio de linea de texto (como el return) \r: ir a primera posición. Generalmente cuando se utiliza \n se sigue de un \r para ponerse en el primer carácter de la nueva linea. \t: tabulación. \\: carácter \. La función prinf es muy interesante para mostrar mensajes por el objeto Global Script diagnose que nos informen de acciones en las funciones que se están ejecutando en C.

239

Aprende WinCC

Definición de variables en C. Los tipos de variables que podemos definir en C son los siguientes: Data Type

Value

Range

Int unsigned int short unsigned short long unsigned long char unsigned char float double

-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

Operadores matemáticos en C. Los operadores que podemos utilizar para nuestras operaciones matemáticas y lógicas son los siguiente: Operaciones + * / % ++ --

matemáticas: Suma Resta Multiplicacion División Modulo (resto de una división) 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=uno8

Mayor que Mayor o igual que Igual que Distinto de Menor o igual que

if(uno>dos) if(uno>=dos) if(uno==dos) if(uno!=dos) if(uno Operaciones lógicas: > >= == != Global Script->GSC Runtime. Es importante recordar que si no se activa la parte de runtime de Global Script no se ejecutará lógicamente 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, alamacenándolos automáticamente en un fichero que se puede guardar en formato texto. Además es posible enviar mensajes a dicha ventana para que nosotros mismos nos indiquemos que estamos realizando una acción 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 método en el capítulo “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á lógicamente este objeto. Para enviar mensajes a la ventana basta con ejecutar una función printf de C dentro de nuestra acción.

247

Aprende WinCC

Funciones standard. A continuación repasaremos las funciones standard que acompañan 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 selección 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 selección de filtro de alarmas. GmsgFunction: OnBtn...: Realizan la misma funcionalidad que las homólogas AXC_OnBtn.. que acabamos de estudiar. Sin embargo, en futuras versiones de WinCC únicamente se soportarán las primeras, por lo que no es recomendable utilizarlas.

248

Aprende WinCC

Standard Graphics. • •

• • • • •

void AcknowledgeMessage(DWORD MsgNr): Reconoce un mensaje de sistema de número x. char* GetLinkedVariable(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName): La función 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 función 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 extensión 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 extensión 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 función 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 parámetro lpMethodName ejecutará una función u otra, adoptando los valores: • "PRINT": imprime el job. • "PREVIEW" : ejecuta la visualización previa del job. BOOL RPTJobPreview(LPSTR lpJobName): Ejecuta una previsualización 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 función podremos obtener una estructura de datos que nos indiquen la causa del error. En pszFailedFunction deberemos de indicar la función que estamos utilizando para imprimir el job. La estructura de error posee la siguiente declaración: typedef struct { DWORD dwError1, DWORD dwError2, DWORD dwError3, DWORD dwError4, DWORD dwError5; TCHAR szErrorText[MAX_ERROR_LEN]; } CMN_ERROR,

Siendo: • •

*PCMN_ERROR;

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

C Caappííttuulloo 8

TTeexxtt LLiibbrraarryy.. Text Library es la parte de WinCC que se encarga de gestionar los mensajes de textos. Cuando necesitamos realizar una aplicación que deba cambiar sus textos según el idioma seleccionado, necesariamente deberemos realizar una asignación de dichos textos en un idioma u otro. Mediante Text Library se consigue enlazar a través de un número identificativo cadenas de texto de diferentes idiomas. Dicho número se asigna automáticamente a los controles que utilizamos en el Graphic Designer. De esta manera, cuando dentro de WinCC en modo runtime cambiamos de código de idioma, automáticamente sustituye los textos asignados a un número en un idioma por el correspondiente.

251

Aprende WinCC

Idiomas ¿Cómo 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 Inglés. Evidentemente, el hecho de que el idioma sea el Inglés no implica que podemos poner los textos en castellano, y no tener que cambiar de página de idioma. Sin embargo, si deseamos disponer de dos idiomas, lo correcto sería generar nuestros mensajes en el idioma correspondiente (español o los diferentes dialectos, si así correspondiera en la provincia). Vamos a generar dos nuevos idiomas, Español y Catalán. Para ello, en el menú Options->Add language podemos añadir 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 inglés, traduciéndolos nosotros mismos al idioma correspondiente. ¿Cómo 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

¿Cómo cambiar de idioma desde el Graphic Designer? En el menú View->Language podemos seleccionar el código de idioma activo actualmente para los objetos de nuestra picture. Podemos escribir los textos modificando su propiedad de texto objeto a objeto, aunque es más cómodo 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 método visto en este punto para configurarle los dos idiomas, sin necesidad de recurrir esta vez al Text Library.

253

Aprende WinCC

C Caappííttuulloo 9

U Usseerr A Addm miinniissttrraattoorr.. El apartado de WinCC denominado User Administrator se encarga de la administración de los usuarios que van a trabajar en el runtime del sistema WinCC. La principal diferencia que hay que observar en la filosofía de usuarios de WinCC con respecto al típico control de privilegios por niveles es que en el WinCC el disponer de privilegio o nivel para realizar algo que los demás no estén autorizados no implica que se permita acceder a todo lo que los demás 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, más aquello que se permite solo a los de nivel 3. Cuando se bloquea una acción para nivel de password 3, significa que todos los que dispongan de nivel igual o superior a 3 podrán realizarla. En WinCC esto no es así, definiéndose 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, sólo para una más fácil identificación, 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. ¿Cómo crear un nuevo grupo de usuarios?

Vamos a crear un grupo de usuarios que se llame operadores. Para ello, presionando sobre el grupo de administración el botón derecho, seleccionaremos add group. Introducimos el nombre del grupo y presionando de nuevo sobre el grupo creado, le añadimos dos usuarios.

• • • •

La caja de diálogo que configura un nuevo usuario nos pide: Login: Nombre identificativo del usuario en cuestión (sólo puede ser una palabra, p. Ej. Juan_Perez). Password: Cadena de texto de un mínimo de 6 caracteres, que puede incluir espacios y números y letras indistintamente. Verify password: La misma cadena del password debemos de repetirla para confirmar que no hemos introducido ninguna letra por equivocación. Copy group settings also: Se puede preestablecer una configuración 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 características predefinidas de su grupo.

El número máximo de grupos que pueden ser generados es de 10. El número máximo de usuarios es de 128.

255

Aprende WinCC

Passwords. ¿Cómo asignar un nivel de password a un nuevo usuario? Las capacidades que dispone un usuario aparecen con un piloto rojo indicativo seleccionadas. Para añadir 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 operación es necesario realizar de nuevo doble click en el mismo lugar. ¿Cómo crear una nueva capacidad? Lógicamente, lo primero que debemos realizar, será estudiar los diferentes bloqueos o límites que requerimos en nuestro desarrollo para posteriormente asignárselos a los usuarios creados. Un bloqueo es una acción cuya capacidad de realización diferencia a unos usuarios de otros. Normalmente se suele bloquear el acceso a determinadas pantallas, la impresión de determinadas gráficas, la activación de determinados elementos de campo (p. Ej. pasarlos a manual y que no realicen su actividad en automático) y sobretodo la modificación de los valores de proceso, ya sea en producción (bloqueo de cajas), como a de manera posterior (modificación de archivos de proceso). Para crear un nuevo bloqueo o límite que permita definir una capacidad a un usuario, debemos seleccionar en el menú Table-> Add New Authorization Level. Nos indica un número de nivel de autorización, que debemos aceptar como bueno, ya que no podemos duplicar dicho número indicado. Esta acción nos lleva a disponer de una línea nueva con el número de orden indicado, pero que no dispone de ningún texto descriptivo, por lo que será de difícil asignación dicho nivel si posteriormente olvidamos a que correspondía este bloqueo. Para añadir 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 asignación del privilegio del bloqueo a los usuarios se realiza como vimos anteriormente.

¿Cómo 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 autorización son comunes para todos los usuarios y grupos, por lo que el borrar un nivel en un grupo lo borra de los demás. No se puede borrar el nivel 1 User Administrator, ya que es el propio del administrador del sistema.

256

Aprende WinCC

¿Cómo 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 botón derecho sobre el usuario, y seleccionando del menú Change password podemos cambiar su password, siempre uy cuando conociésemos de antemano el password a cambiar.

Si no conocemos su password, deberemos necesariamente darlo de baja. ¿Cómo 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 ningún tipo de clave, por lo que un superusuario puede modificarlo a su entera voluntad sin ninguna autorización por parte de los mismos usuarios. Desactivación automática 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 continúan activos, por lo que si un usuario deja el sistema activado con su login, un par de horas después puede utilizar el sistema WinCC cualquier usuario sin necesidad de darse de alta en el mismo y utilizando todos los accesos habilitados en función del nivel del anterior usuario aún 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 desconexión automática en base de minutos.

Si la casilla es distinta de cero, pasados dichos minutos automáticamente 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 opción Chipcard, aparece una casilla que nos permite realizar los logins de los operarios a través de la tarjeta chipcard. ¿Cómo asignar un nivel de password a una acción? 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, deberán disponer previamente del nivel requerido.

Passwords estándar. El WinCC al crear un nuevo proyecto ya genera por defecto una serie de niveles de password estándar. El significado de los mismos es el siguiente: • User administration: si este nivel está activo, se permite la entrada al módulo 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/automático. • 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 método mediante una acción de C que nos permite asignar a un botón la apertura de la ventana de activación. El código a añadir al botón es el siguiente: #pragma code(“USEADMIN.DLL”) #include “PWRT_API.H” #pragma code() PWRTLogin(‘1’);

Siendo 1 la tecla que activa la visualización del cuadro de diálogo de activación e usuarios. Para dar de baja a un usuario el código es el siguiente: #pragma code(“USEADMIN.DLL”) #include “PWRT_API.H” #pragma code() PWRTLogout();

259

Aprende WinCC

Addons. Variable login. La opción 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 acción son los siguientes: • Asignar a un ordenador una variable de usuario. • Especificar un valor mínimo y máximo 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 opción del menú Computer assignement… perimte realizar esta acción.

El tipo de variable debe de ser entero, para comprender un valor que irá desde 0 a 10. Configuration En la opción configuration…podremos seleccionar el valor mínimo y máximo que puede adoptar la variable seleccionada como variable login.

260

Aprende WinCC

Asignar un valor de usuario. La opción del menú User assignement…permite asignar un valor de vairable a un determinado usuario.

Chipcard. Es posible dar de alta a operarios mediante tarjetas magnéticas que se pasan por un aparato denominado chipcard que se conecta al puerto serie del PC. Este software más hardware es una opción de WinCC, cuyo funcionamiento se explica a continuación. 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 activación en el User Administrator disponemos de la opción 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 grabación 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 opción podemos leer el usuario grabado en la tarjeta, con el objeto de comprobar que se ha grabado correctamente.

Activación mediante una chipcard durante el runtime. Al insertar la tarjeta en la lectora chipcard automáticamente se da de alta el usuario. Ningún otro operario puede darse de alta hasta que no se retira la tarjeta del lector. En dicho momento automáticamente 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