264
APRENDE Version 5.1 CON EL GUAPERAS

Manual Wincc Total

Embed Size (px)

Citation preview

Page 1: Manual Wincc Total

APRENDE

Version 5.1

CON EL GUAPERAS

Page 2: Manual Wincc Total

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

Page 3: Manual Wincc Total

Aprende WinCC

1

CCCaaapppííítttuuulllooo 111...

IIInnntttrrroooddduuucccccciiióóónnn aaa WWWiiinnnCCCCCC...

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.

Page 4: Manual Wincc Total

Aprende WinCC

2

Requisitos.

Los requisitos mínimos y recomendables para trabajar con el WinCC a nivel hardware y software del PC son: Mínimo Recomendado

CPU Intel Pentium II 400 MHz

Intel Pentium III > 400 MHz

Memoria principal/ RAM

256 MBytes (para servidores) 128 MBytes (para clientes)

> 256 MBytes

RAM en caso de configuración online

32 MBytes adicionales > 32 MBytes adicionales

Disco duro (sin datos del proyecto)

650 MBytes de espacio libre de memoria

> 650 MBytes de espacio libre de memoria

Memoria de trabajo virtual

Memoria de trabajo doble > Memoria de trabajo doble

Memoria de trabajo para spooler de

impresoras Windows

100 MBytes > 100 MBytes

Gráficos SVGA (4 MBytes) XGA (8 MBytes) Resolución 800 * 600 1024 * 768

Sistemas operativos para WinCC monopuesto o cliente:

Sistema

operativo Configuración Observaciones

Windows NT 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.

Windows 2000

Windows 2000 Service Pack 2

El usuario ha de poseer para el manejo de WinCC como mínimo los derechos de un usuario principal ("Power User").

Sistemas operativos para WinCC como server:

Sistema operativo Configuración Servidor de Windows NT 4.0 Service Pack 6a Servidor de Windows 2000 Service Pack 2 con Hotfix Q300972

Windows 2000 Advanced Server Service Pack 2 con Hotfix Q300972

Page 5: Manual Wincc Total

Aprende WinCC

3

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 |

Page 6: Manual Wincc Total

Aprende WinCC

4

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.

Page 7: Manual Wincc Total

Aprende WinCC

5

Salir de WinCC.

Para salir de WinCC, en el menú Archivo->Salir disponemos de dos opciones:

Salir de WinCC Explorer y cerrar el proyecto: Si ha seleccionado esta opción se sale de WinCC Explorer y la runtime se cerrará previamente. La siguiente vez que entremos a WinCC Explorer abrirá el proyecto y arrancará la runtime automáticamente.

Salir de WinCC Explorer : 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.

Page 8: Manual Wincc Total

Aprende WinCC

6

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.

Page 9: Manual Wincc Total

Aprende WinCC

7

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.

Page 10: Manual Wincc Total

Aprende WinCC

8

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.

Page 11: Manual Wincc Total

Aprende WinCC

9

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:

Page 12: Manual Wincc Total

Aprende WinCC

10

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:

Page 13: Manual Wincc Total

Aprende WinCC

11

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

Page 14: Manual Wincc Total

Aprende WinCC

12

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

Page 15: Manual Wincc Total

Aprende WinCC

13

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á

Page 16: Manual Wincc Total

Aprende WinCC

14

del mismo tipo el invento). Volvemos a ella, y en la propiedad otros->autorizacion seleccionamos “salir”. Ahora ya no podrá salir de WinCC cualquiera, sino solo los que tengan el permiso de salir. Pero vamos a definir también quien puede parar el WinCC y quien solo apagar el ordenador o reiniciarlo.

Para ello en la pdl salir.pdl, a los dos primeros botones les asignamos el permiso de parar el WinCC, mientras que a los dos siguientes el de apagar el pc. Pero: ¿cómo se logan1 los usuarios?. Hay dos maneras, una cutre salchichera y otra guay y complicada. Vamos con la cutre. En el control center, pinchando con el botón derecho sobre el nombre del proyecto, aparece la ventana en la que se puede asignar una combinación de teclas a login (logarse) y otra a logoff (deslogarse)

Pero claro, se debe de recordar cual era esa combinación, y siempre aparece el listo que quiere un botón para activar a los usuarios. Ya la hemos liado, pensarás (y estás en lo cierto), ya que la otra va a través de C. Quita las asignaciones que acabamos de hacer, que no vamos a hacerlo por ese camino, sino por el del botón. Nos

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

Page 17: Manual Wincc Total

Aprende WinCC

15

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 }

Page 18: Manual Wincc Total

Aprende WinCC

16

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í).

Page 19: Manual Wincc Total

Aprende WinCC

17

Asociando este código al botón de administración de usuarios, ya puede un usuario dar de alta y borrar, es decir, administrar a los demás usuarios. Claro está, a este botón creado, deberemos de asociarle un nivel de password, para que únicamente puedan entrar los usuarios con capacidad para borrar a otros usuarios.

Para Poder ejecutar este código debe de estar arrancada la parte de Global Script runtime de nuestro PC.

Por supuesto, a este botón (el de las dos cabecitas) deberemos de colocarle el

password “administrar usuarios”.

Llamar a ventanas variables. Ahora queremos que cuando pulsemos el botón de administrar usuarios nos abra una ventana de menú en la que podamos seleccionar:

Administrar usuarios (lo de antes) Ver el histórico de usuarios (para saber qué usuarios estaban logados en qué

momentos). Para hacer esto podríamos abrir otra ventana y hacerla visible con el botón, pero es

mejor utilizar la ventana que hemos gastado anteriormente para salir, y en función de porqué botón sea llamada nos muestre una pdl u otra (llamada a ventanas parametrizables). Ya te has asustado, pero no tiene porqué, que vas a ver que es muy fácil.

Page 20: Manual Wincc Total

Aprende WinCC

18

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.

Page 21: Manual Wincc Total

Aprende WinCC

19

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.

Page 22: Manual Wincc Total

Aprende WinCC

20

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.

Page 23: Manual Wincc Total

Aprende WinCC

21

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.

Page 24: Manual Wincc Total

Aprende WinCC

22

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

Page 25: Manual Wincc Total

Aprende WinCC

23

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:

Page 26: Manual Wincc Total

Aprende WinCC

24

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");

Page 27: Manual Wincc Total

Aprende WinCC

25

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.

Page 28: Manual Wincc Total

Aprende WinCC

26

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:

Page 29: Manual Wincc Total

Aprende WinCC

27

El resultado final al presionar el botón debe de ser algo como lo que muestra la

figura:

Page 30: Manual Wincc Total

Aprende WinCC

28

CCCaaapppííítttuuulllooo 222...

CCCooommmuuunnniiicccaaaccciiióóónnn cccooonnn SSS777... 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

Page 31: Manual Wincc Total

Aprende WinCC

29

Si volvemos a presionar con el botón derecho sobre el canal MPI podemos determinar los parámetros del sistema del protocolo de comunicaciones.

Page 32: Manual Wincc Total

Aprende WinCC

30

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.

Page 33: Manual Wincc Total

Aprende WinCC

31

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.

Page 34: Manual Wincc Total

Aprende WinCC

32

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

Page 35: Manual Wincc Total

Aprende WinCC

33

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.

Page 36: Manual Wincc Total

Aprende WinCC

34

Page 37: Manual Wincc Total

Aprende WinCC

35

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.

Page 38: Manual Wincc Total

Aprende WinCC

36

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

Page 39: Manual Wincc Total

Aprende WinCC

37

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.

Page 40: Manual Wincc Total

Aprende WinCC

38

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,

Page 41: Manual Wincc Total

Aprende WinCC

39

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.

Page 42: Manual Wincc Total

Aprende WinCC

40

Generando alarmas de fallo de comunicaciones.

A nosotros lógicamente nos interesa tener un histórico de fallos de comunicaciones. De esta manera podemos saber en qué momentos la instalación ha dejado de comunicar con un determinado PLC y por cuanto tiempo (incluso podemos saber hasta por qué causa).

Para poder realizar esto vamos a utilizar las alarmas de WinCC. El problema reside en que las alarmas están pensadas para que cuando una variable se active en el PLC se genere la alarma, y en este caso cuando fallan las comunicaciones no se va a activar nada en el mismo.

Para solventar este problema vamos a recurrir a una función de WinCC que se llama GetTagByteState(valor_del_plc), la cual nos va a devolver una variable de doble palabra, en la que cada uno de los bits tiene un significado de error de comunicaciones. Esta variable está chequeando el valor de la variable contenida en valor_del_plc, y nosotros debemos de comprobar que su estado es cero. En cuanto sea distinta de cero deberemos de activar una variable interna de tipo doble palabra. Esta variable interna es la que nos generará la alarma. Parece complicado pero se hace en un momento. Vamos allá.

Primeramente veamos que hace la función GetTagByteState. Tiene dos parámetros:

Variable a chequear Puntero a una doble palabra en la que la función deja el estado de las

comunicaciones Devuelve un byte con el valor actual de la variable chequeada.

Nos queda saber qué nos va a devolver en el puntero de doble palabra del estado

de las comunicaciones. En función del tipo de error de comunicaciones nos devolverá:

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

Page 43: Manual Wincc Total

Aprende WinCC

41

#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); //Tipo de retorno :BOOL } else { SetTagDWord("FALLO_COMUNICACIONES_EQUIPO_1",0); //Tipo de retorno :BOOL } return 0; }

Como puedes observar lo que hacemos es activar a 1 la variable interna en cuanto detectamos que el estado de la variable es distinto de cero. Podría complicar más la cosa si activáramos diferentes bits de la variable interna en función del fallo de comunicaciones.

Como es una acción deberemos de definir un disparo de la misma. En este caso creo que con que chequeemos cada 10 segundos es bastante.

Una veza tenemos compilada la acción, salimos del Global Script y activamos la

parte de golbal script runtime si no lo estuviese. Nos queda ir al alarm loggin para definir las alarmas de comunicaciones.

Page 44: Manual Wincc Total

Aprende WinCC

42

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.

Page 45: Manual Wincc Total

Aprende WinCC

43

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

Page 46: Manual Wincc Total

Aprende WinCC

44

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:

Page 47: Manual Wincc Total

Aprende WinCC

45

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

Page 48: Manual Wincc Total

Aprende WinCC

46

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.

Page 49: Manual Wincc Total

Aprende WinCC

47

CCCaaapppííítttuuulllooo 333

GGGrrraaappphhhiiicccsss DDDeeesssiiigggnnneeerrr...

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.

Page 50: Manual Wincc Total

Aprende WinCC

48

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.

Page 51: Manual Wincc Total

Aprende WinCC

49

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.

Page 52: Manual Wincc Total

Aprende WinCC

50

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.

Page 53: Manual Wincc Total

Aprende WinCC

51

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

Page 54: Manual Wincc Total

Aprende WinCC

52

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

Page 55: Manual Wincc Total

Aprende WinCC

53

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

Page 56: Manual Wincc Total

Aprende WinCC

54

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

Page 57: Manual Wincc Total

Aprende WinCC

55

Page 58: Manual Wincc Total

Aprende WinCC

56

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

Page 59: Manual Wincc Total

Aprende WinCC

57

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

configuradas 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 partes:

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

Page 60: Manual Wincc Total

Aprende WinCC

58

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

Page 61: Manual Wincc Total

Aprende WinCC

59

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.

Page 62: Manual Wincc Total

Aprende WinCC

60

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.

Page 63: Manual Wincc Total

Aprende WinCC

61

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

Page 64: Manual Wincc Total

Aprende WinCC

62

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

Page 65: Manual Wincc Total

Aprende WinCC

63

Page 66: Manual Wincc Total

Aprende WinCC

64

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.

Page 67: Manual Wincc Total

Aprende WinCC

65

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

Page 68: Manual Wincc Total

Aprende WinCC

66

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.

Page 69: Manual Wincc Total

Aprende WinCC

67

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

Page 70: Manual Wincc Total

Aprende WinCC

68

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

Page 71: Manual Wincc Total

Aprende WinCC

69

• 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).

Page 72: Manual Wincc Total

Aprende WinCC

70

Page 73: Manual Wincc Total

Aprende WinCC

71

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.

Page 74: Manual Wincc Total

Aprende WinCC

72

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)

Page 75: Manual Wincc Total

Aprende WinCC

73

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.

Page 76: Manual Wincc Total

Aprende WinCC

74

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.

Page 77: Manual Wincc Total

Aprende WinCC

75

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.

Page 78: Manual Wincc Total

Aprende WinCC

76

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

Page 79: Manual Wincc Total

Aprende WinCC

77

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 -> 1.0 s9.9 -> +1.0

s9.9e -> +1.0E+00 09.99 -> 01.00

• Formato 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.

Page 80: Manual Wincc Total

Aprende WinCC

78

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

Page 81: Manual Wincc Total

Aprende WinCC

79

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

Page 82: Manual Wincc Total

Aprende WinCC

80

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

Page 83: Manual Wincc Total

Aprende WinCC

81

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

Page 84: Manual Wincc Total

Aprende WinCC

82

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.

Page 85: Manual Wincc Total

Aprende WinCC

83

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.

Page 86: Manual Wincc Total

Aprende WinCC

84

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.

Page 87: Manual Wincc Total

Aprende WinCC

85

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

Page 88: Manual Wincc Total

Aprende WinCC

86

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:

Page 89: Manual Wincc Total

Aprende WinCC

87

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.

Page 90: Manual Wincc Total

Aprende WinCC

88

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

Page 91: Manual Wincc Total

Aprende WinCC

89

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.

Page 92: Manual Wincc Total

Aprende WinCC

90

Algunas propiedades interesantes de este objeto son también:

Page 93: Manual Wincc Total

Aprende WinCC

91

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.

Page 94: Manual Wincc Total

Aprende WinCC

92

Page 95: Manual Wincc Total

Aprende WinCC

93

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.

Page 96: Manual Wincc Total

Aprende WinCC

94

• 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).

Page 97: Manual Wincc Total

Aprende WinCC

95

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.

Page 98: Manual Wincc Total

Aprende WinCC

96

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

Page 99: Manual Wincc Total

Aprende WinCC

97

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.

Page 100: Manual Wincc Total

Aprende WinCC

98

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

Page 101: Manual Wincc Total

Aprende WinCC

99

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.

Page 102: Manual Wincc Total

Aprende WinCC

100

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

Page 103: Manual Wincc Total

Aprende WinCC

101

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

Page 104: Manual Wincc Total

Aprende WinCC

102

• 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 */

Page 105: Manual Wincc Total

Aprende WinCC

103

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

Page 106: Manual Wincc Total

Aprende WinCC

104

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

Page 107: Manual Wincc Total

Aprende WinCC

105

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

Page 108: Manual Wincc Total

Aprende WinCC

106

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

Page 109: Manual Wincc Total

Aprende WinCC

107

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.

Page 110: Manual Wincc Total

Aprende WinCC

108

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

Page 111: Manual Wincc Total

Aprende WinCC

109

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

Page 112: Manual Wincc Total

Aprende WinCC

110

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:

Page 113: Manual Wincc Total

Aprende WinCC

111

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.

Page 114: Manual Wincc Total

Aprende WinCC

112

CCCaaapppííítttuuulllooo 444...

AAAlllaaarrrmmmaaasss::: AAAlllaaarrrmmm LLLoooggggggiiinnnggg

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:

Detección de alarmas actuales en la instalación. Histórico de alarmas de la misma, y 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:

Page 115: Manual Wincc Total

Aprende WinCC

113

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

Page 116: Manual Wincc Total

Aprende WinCC

114

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.

Page 117: Manual Wincc Total

Aprende WinCC

115

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.

Page 118: Manual Wincc Total

Aprende WinCC

116

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:

Page 119: Manual Wincc Total

Aprende WinCC

117

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

Page 120: Manual Wincc Total

Aprende WinCC

118

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.

Page 121: Manual Wincc Total

Aprende WinCC

119

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.

Page 122: Manual Wincc Total

Aprende WinCC

120

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:

Obtener fichero histórico: hemos quedado que es mejor fichero circulante para las alarmas, luego no tiene sentido tener un botón del mismo.

Función de informe: el tratamiento de informes lo realizaremos nosotros para tener un mayor control sobre los mismos.

Page 123: Manual Wincc Total

Aprende WinCC

121

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.

Page 124: Manual Wincc Total

Aprende WinCC

122

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:

El tipo de ventana es de aviso. Tambien aplicamos aquí una selección para que únicamente nos muestre las

alarmas de tipo error. En la solapa parámetros no aplicamos selección, ni mostramos título de columna

ni título de fila.

No mostramos ni barra de herramientas, ni barra de estado. Por último seleccionamos los siguientes bloques para la ventana de alarmas.

Aquí no son necesarios ni el número de alarma, ni la duración, ni el usuario, que quedan para la ventana del histórico.

Page 125: Manual Wincc Total

Aprende WinCC

123

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.

Page 126: Manual Wincc Total

Aprende WinCC

124

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:

Page 127: Manual Wincc Total

Aprende WinCC

125

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.

Page 128: Manual Wincc Total

Aprende WinCC

126

Imprimir las alarmas en papel. A la hora de realizar Reports de alarmas nos interesa disponer de dos:

Alarmas actuales 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.

Page 129: Manual Wincc Total

Aprende WinCC

127

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.

Page 130: Manual Wincc Total

Aprende WinCC

128

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.

Page 131: Manual Wincc Total

Aprende WinCC

129

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 <= 4 AND CLASS IN( 1 ) AND TYPE IN( 1 ,2 ,3 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena); En la primera parte del código creo que queda claro como se define el rango de selección. La pregunta surge con la segunda parte, con la asignación a la cadena de texto “cadena”. ¿Cómo podemos saber que cadena de texto es la que realiza el filtrado que nosotros deseamos. Es bastante sencillo. Unicamente tenemos que realizar dicho

Page 132: Manual Wincc Total

Aprende WinCC

130

filtrado con la ventana de selección de WinCC (como al principio del presente capítulo), aceptar dicha ventana y volver a abrirla. En la parte inferior, seleccionamos la consulta que nos indica y la copiamos al portapapeles con ctrl.+c, para después pegarla en nuestra subrutina.

Page 133: Manual Wincc Total

Aprende WinCC

131

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

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

Page 134: Manual Wincc Total

Aprende WinCC

132

&mRT.stMsgTime.wMilliseconds, // Milisegundo &mRT.dwTimeDiff, // Diferencia de tiempo &mRT.dwCounter, // Contador interno de alarmas &mRT.dwFlags, // Marca interna &mRT.wPValueUsed, &mRT.wTextValueUsed ); } printf("Alarma Nr : %d, Estado: %x, Fecha:%d-%d-%d Hora:%d:%d:%d.%d, Dur: %d, Cnt %d, Fl %d\r\n" , mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear, mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wSecond, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff, mRT.dwCounter, mRT.dwFlags ) ; if (mRT.dwMsgState==MSG_STATE_COME) // Si la alarma aparece sonará { #pragma code("Winmm.dll"); VOID WINAPI PlaySoundA(char* pszSound, char* hmode, DWORD dwFlag); #pragma code(); unsigned long nummer=mRT.dwMsgNr; // variable del número de alarma if(nummer==3) { PlaySoundA("C:\\siemens\\WinCC\\WinCCProjects\\dunkerdemo_v51\\Wave\\Sound136.wav",NULL,1); } if(nummer==4 ) { PlaySoundA("C:\\siemens\\WinCC\\WinCCProjects\\dunkerdemo_v51\\Wave\\ringin.wav",NULL,1); } } return( TRUE ); } Como podemos apreciar, utilizamos una función API que declaramos llamada PlaySoundA para hacer sonar el wav cuando aparezca la alarma. En este ejemplo hacemos sonar el wav sound136.wav cuando aparece la alarma 3, y el ringin.wav cuando aparece la alarma 4. Si no queremos complicarnos la vida podemos modificar el ejemplo para que siempre que aparezca cualquiera suene el mismo wav. Aunque parece un poco complicado, si estudias el código verás que no tiene mayor complicación que hacerlo una vez para tu proyecto y te valdrá para siempre.

Page 135: Manual Wincc Total

Aprende WinCC

133

Controlar las alarmas desde Access. Si utilizamos el formato tambor para las alarmas no necesitaríamos este capítulo, ya que cuando llega al valor predeterminado para el tambor nunca lo sobrepasa. Pero en el caso de que deseemos almacenarlas secuencialmente necesitaremos borrarlas con el paso del tiempo. La forma más sencilla es a travñes de un enlace odbc desde Access. Inicializar la base de datos de runtime no es posible, ya que dentro de dicha base se guardan también los históricos de gráficas, que perderíamos si utilizásemos este método (el de cargarnos la rt.db de nuestro proyecto). El primer problema radica en conocer donde se encuentran las alarmas dentro de la base rt.db. Para ello vamos a crear una nueva base de datos desde Access (no importa el nombre que le des), y en el menu seleccionamos archivos->obtener datos externos->vincular. En tipo de archivo seleccionamos odbc y seleccionamos la runtime de nuestro proyecto, como muestra la figura: Hay dos tablas que nos interesan:

Dba.msarchlong para alarmas secuenciales, y Dba.msarchshort para alarmas formato tambor.

Page 136: Manual Wincc Total

Aprende WinCC

134

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

Page 137: Manual Wincc Total

Aprende WinCC

135

Alarmas internas del sistema. El código interno de WinCC tiene la posibilidad de enviarnos unas alarmas predefinidas por el mismo para indicarnos errores internos que se estén produciendo en el código. No está de más que utilicemos dicha funcionalidad en nuestro ejemplo, aunque no llega a ser todo lo útil que deseamos, ya que frente a la llamada por código de una variable que no exsite, o la ejecución de un Report erróneo no nos genera una alarma de sistema, siendo necesario recurrir a la ventana de depuración de c que vimos en anteriores capítulos. Lo pruimero que necesitaremos será generar las alarmas del sistema de WinCC. Acudimos al Alarm Logging y en el menú herramientas->avisos del sistema WinCC podemos crear las alarmas internas de WinCC. Los mensajes son creados a partir del número de alarma 1.000.000 para que no nos machaque alguno que hubiesemos generado nosotros previamente. Ya hemos finalizado en el Alarm Logging. Vamos a editar la pdl de alarmas que realizamos anteriormente para poder observar dichas alarmas cuando se produzcan. Observar que las alarmas del sistema de WinCC son sin acuse y se almacenan en el tambor de alarmas.

Page 138: Manual Wincc Total

Aprende WinCC

136

Para poder visualizar las alarmas del sistema en nuestra ventana de alarmas vamos a colocar los siguientes botones en la misma: El botón amarillo se denominará BOTON_ALARMAS, mientras que el gris BOTON_INTERNAS. ¿Porqué hemos pintado el color de fondo del botón boton_alarmas de amarillo?. Vamos a utilizarlos para seleccionar un tipo de alarmas u otro en la ventana de alarmas, y necesitaremos saber en cada momento cual es la selección de alarmas que se está visalizando. Por lo tanto, tenemos dos trabajos: 1 . Cambiar el color de fondo a amarillo en el botón que seleccionemos en cada momento. 2 . Realizar un filtrado de selección de alarmas, según deseemos ver las de clase error (nuestras alarmas) o sin acuse (la clase que utiliza WinCC para mostrar las alarmas internas). El código que realiza esta operación en el botón BOTON_INTERNAS será el siguiente: char cadena[200]; strcpy(cadena,"CLASS IN( 18 ) AND TYPE IN( 273 ,274 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena); SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_LTGRAY); SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_YELLOW Observemos que primeramente hemos realizado un filtro SQL a la ventana de alarmas (la sentencia SQL contenida en la variable cadena la hemos obtenido previamente en el runtime realizando la selección de la clase sin acuse como muestra la figura inferior.

Page 139: Manual Wincc Total

Aprende WinCC

137

El código para el botón BOTON_ALARMAS será el siguiente: char cadena[200]; strcpy(cadena,"CLASS IN( 1 ) AND TYPE IN( 1 ,2 ,3 )"); SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena); //Tipo de retorno :BOOL SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_LTGRAY); SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_YELLOW); Con esto ya podemos observar nuestras alarmas, o las del sistema interno de errores de windows de una manera sencilla con dos simples botones. La cuestión que se habrá preguntado es: ¿cómo conozco el color que debo de pasar como parámetro a la función SetBackColor?. WinCC posee una serie de colores ya predefinidos con unas constantes (hemos utilizado ya dos de ellos). La tabla completa de dichos colores es la siguiente: Color VALOR COLOR (Hex) CONSTANTE ROJO 0x000000FF CO_RED ROJO OSCURO 0x00000080 CO_DKRED VERDE 0x0000FF00 CO_GREEN VERDE OSCURO 0x00008000 CO_DKGREEN AZUL 0x00FF0000 CO_BLUE AZUL OSCURO 0x00800000 CO_DKBLUE CYAN 0x00FFFF00 CO_CYAN CYAN OSCURO 0x00808000 CO_DKCYAN AMARILLO 0x0000FFFF CO_YELLOW AMARILLO OSCURO 0x00008080 CO_DKYELLOW MAGENTA 0x00FF00FF CO_MAGENTA MAGENTA OSCURA 0x00800080 CO_DKMAGENTA GRIS CLARO 0x00C0C0C0 CO_LTGRAY GRIS 0x00808080 CO_DKGRAY NEGRO 0x00000000 CO_BLACK BLANCO 0x00FFFFFF CO_WHITE Si no desea uno des estos colores sino uno personalizado, asignelo previamente a un botón, y consulte su valor con GetBackColor, asociándolo a una variable y observándola. Nos devolverá un doble entero que identifica a dicho color personalizado.

Page 140: Manual Wincc Total

Aprende WinCC

138

CCCaaapppííítttuuulllooo 555

TTTaaaggg LLLoooggggggiiinnnggg...

El Tag Logging es el editor de WinCC que se encarga del almacenamiento de los

valores de proceso en el disco duro, así como de mostrarlos tanto en formato de gráfica como de tabla de valores. Así mismo, permite editar dichos valores a posteriori desde la base de datos. La presentación del Tag Logging en pantalla es la siguiente:

Page 141: Manual Wincc Total

Aprende WinCC

139

Propiedades del proyecto Si pulsamos sobre el nombre de nuestro proyecto con el botón derecho, podemos seleccionar sus propiedades. Exportar variables en formato Dbase III La opción más interesante es que podemos seleccionar el almacenar las variables de un archivo Short-term que generemos en formato Dbase III. Esta opción es especialmente aconsejable cuando queramos disponer de un archivo de tambor que deba disponer de un gran número de variables, ya que el acceso en formato Dbase III es más rápido. También es una elección aconsejable cuando necesitemos exportar nuestros valores a otra base de datos que no sea la del propio WinCC. Si activamos esta casilla, todas las variables que definamos en los archivos de nuestro proyecto generarán en el subdirectorio Pde\archivo_de_valores un archivo en el que almacenan su valor de proceso, componiéndose dicho archivo del nombre de la variable, con la extensión DBF. El formato Dbase III es exportable por la mayoría de las aplicaciones. El archivo 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 error de lectura del valor del proceso. Si el valor es correcto, este

campo está a cero.

En la imagen se puede apreciar un archivo exportado automáticamente a Dbase III y abierto con Excel.

Page 142: Manual Wincc Total

Aprende WinCC

140

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

Page 143: Manual Wincc Total

Aprende WinCC

141

Tiempos de adquisición de valores Podemos definir timers, es decir, temporizadores de proceso, que posteriormente

podremos utilizar para la adquisición o el almacenamiento de valores de proceso a intervalos propios.

Los predefinidos aparecen en la figura, pero si deseamos uno nuevo, solo necesitamos rellenar la pantalla de nuevo timer, o modificar un o existente. En la imagen se puede ver un nuevo temporizador que actuará cada 3 segundos. Las opciones son:

Page 144: Manual Wincc Total

Aprende WinCC

142

• Que se dispare el temporizador solo entrar a WinCC, pese a que no le corresponda aún.

• Que se dispare el temporizador al salir de WinCC, pese a que aún no le corresponda. • Poder seleccionar la fecha exacta de comienzo del ciclo de disparo. A partir de ese

minuto y ese segundo, comenzará cada 3 segundos a dispararse.

Page 145: Manual Wincc Total

Aprende WinCC

143

Crear archivos de valores en el disco duro La opción archives de la ventana del Tag Logging es la que se encarga de la configuración de los archivos de almacenamiento de valores en el disco duro. Para realizar la configuración de los mismos disponemos de un Wizard que aparece en el menú contextual presionando sobre archives con el botón derecho. Archive Wizard

Lo primero que se nos pide en el Wizard es el nombre de nuestro archivo. Dicho

nombre debe de ser una única palabra, por lo que si queremos hacerla significativa deberemos generalmente de separar varias palabras con subrayados, como muestra la figura. También se nos permite elegir entre los tres tipos de archivos posibles. Los archivos de WinCC pueden ser: • Archivos de proceso: archivo que almacena los valores de una o varias variables en

el disco duro. • Compressed Archives: archivos de valores comprimidos. Se realiza una

compresión de los datos antes de almacenarlos, y una descompresión a la hora de

Page 146: Manual Wincc Total

Aprende WinCC

144

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

• En el paso 2 del Wizard podemos seleccionar aquellas variables que van a ser almacenadas en el archivo. Con el botón select podemos ir añadiéndolas a la lista. Estas variables sólo comparten el lugar de almacenamiento, pero no necesariamente el tiempo de lectura ni el de almacenamiento, como posteriormente veremos. Propiedades de los archivos de valores

Si presionamos con el botón derecho sobre el nuevo archivo de valores que se nos ha generado en el Tag Logging podemos editar sus propiedades.

Las opciones que podemos modificar son: • Archive name: podemos cambiar su nombre a posteriori. • Comment: podemos añadir un comentario sobre dicho archivo. • Archiving at system starts: Indica si el almacenamiento en el disco duro debe de

comenzar solo entrar en la runtime de WinCC, o cuando nosotros se lo indiquemos con una función. La opción enabled comienza a almacenar nada más entrar en la runtime, la opción locked no.

• Archive type: Esta función de solo lectura nos indica de que tipo es nuestro archivo. Esto quiere decir que una vez generado un tipo de archivo no podrá ser modificado posteriormente, por lo que tendremos que generar otro y borrar el actual si deseamos cambiar de tipo de archivo nuestros valores.

Page 147: Manual Wincc Total

Aprende WinCC

145

• • Authorization level: Nivel de autorización requerido para poder leer los valores del

archivo, y para poder editarlos. Hay que tener en cuenta que estos datos son variables dependiendo del archivo en cuestión, luego se puede hacer archivos protegidos (nivel elevado de protección) y otros desprotegidos. También se puede dejar desprotegida la lectura, y proteger la escritura para que solo el responsable pueda modificar los datos en el archivo.

Hay que tener en cuenta que si no se ha creado por lo menos un usuario en el

User Administrator, lógicamente no aparecerá la ventana de niveles de usuario al

presionar el botón select. Para poder seleccionar los niveles de lectura, o

escritura en archivos de proceso, primeramente deberá ir al capítulo dedicado a

User Administrator y generar por lo menos un usuario nuevo, asignándole unos

niveles que sean de leer archivos y otro de escribir en archivos. Al volver a esta

pantalla, ya podrá seleccionar el nivel deseado en la misma.

Page 148: Manual Wincc Total

Aprende WinCC

146

• Action during start/enabled: podemos definir una acción en C que se ejecutará

cada vez que se habilite la lectura y almacenamiento en el archivo. En la solapa archive parameters, podemos definir: • si el archivo seleccionado es short-term el tambor de valores deseado. • Memory location: donde guardar los valores leídos. Se pueden guardar en la

memoria RAM del ordenador o en el disco duro. Si se selecciona en la memoria del ordenador, el cálculo para saber cuanta RAM estamos consumiendo es:

Memoria RAM consumida=Numero de valores de proceso * 28 bytes

Si no se dispone de un SAI en la instalación no es recomendable almacenar en la memoria del ordenador, ya que si se desconecta la alimentación los datos almacenados se pierden. Solo sería interesante esta opción cuando necesitamos leer muchos valores rápidamente y o no los vamos a almacenar de manera permanente, o solo deseamos obtener en pantalla una representación p. Ej,. de una curva de temperaturas en los últimos 20 segundos con una lectura cada medio segundo. En estos casos, el almacenamiento en el disco duro produciría un acceso constante al mismo, por lo que el WinCC sería ingobernable si no se accede a memoria. • Action for exporting the short-term archive: Acción en C que se tiene que ejecutar

para exportar el archivo short-term. Cuando se llega al final del tambor, se ejecutará automáticamente esta acción en C, en la cual debemos de incluir nuestra

Page 149: Manual Wincc Total

Aprende WinCC

147

programación para el almacenamiento de dichos valores en otro archivo. Si no incluimos en este punto dicha acción, el tambor da la vuelta y comienza a machacar el primer valor que almacenó con el nuevo adquirido, y así sucesivamente.

• Archive type: Los archivos pueden ser una vez definido su tipo (de proceso, comprimido o de usuario) de dos tipos: • Short-term: archivos de tambor. • Sequence: archivos lineales.

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

Page 150: Manual Wincc Total

Aprende WinCC

148

Las propiedades de una variable almacenada dentro de un archivo son: • Name of the archive tag: podemos dar un nombre distinto a la variable almacenada

que el respectivo de la variable de proceso. • Name of the process tag: Valor de proceso que se está almacenando en dicha

variable de archivo. Desde esta ventana también podemos cambiar de variable de proceso a almacenar a posteriori.

• Comments: Un comentario individualizado para cada variable de archivo. • Supplying tags: Se puede seleccionar la adquisición de datos desde el administrador

de variables hasta el archivo de manera: • Automatic: los valores se transfieren de uno a otro de manera automática. • Manual: Los valores requieren de una orden para ser transferidos desde el

administrador hasta el archivo. • Archiving at system starts: Comenzar a guardar valores en esta variable de archivo

automáticamente al arrancar la runtime de WinCC o no. • Archiving type: Existen tres tipo de almacenamiento para una variable de proceso:

• Acyclic: Se almacenan valores de proceso cuando arranca la habilitación del mismo y cuando se deshabilita.

• Cyclic-Continous: Se almacenan valores de proceso desde que se habilita el mismo, con una frecuencia marcada por el ciclo de almacenamiento, hasta que se deshabilita.

• Cyclic Selective: Igual que el ciclo continuo, con la diferencia de que además se puede gobernar cuando debe durante el tiempo de habilitación de almacenamiento mediante una función que determina el comienzo de lectura y la finalización de la misma.

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

Page 151: Manual Wincc Total

Aprende WinCC

149

Para solventar este problema se puede utilizar una función de telerruptor en el PLC, de tal manera que cada vez que se da un pulso positivo, se obtiene una variación en la salida, pasando de 0 a 1 y viceversa, pero en cualquier caso, la solución viene a través de programación en el PLC.

Page 152: Manual Wincc Total

Aprende WinCC

150

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

Page 153: Manual Wincc Total

Aprende WinCC

151

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

Page 154: Manual Wincc Total

Aprende WinCC

152

• Also put archived value in tag: determina que variables deben también

almacenarse en esta variable de archivo además de la que se indicó al principio. • Cycle acquisition: Este tiempo indica cada cuanto debe ser leído el valor de proceso

del administrador de variables para pasar a la variable de archivo. • Cycle Archiving: Este tiempo indica cada cuanto debe ser almacenada la variable

de archivo en el disco duro (o en la memoria de WinCC, si así se decidió). El valor que se almacena depende del método que se utilice para su procesamiento (véase Processing).

En la solapa parameters podemos definir: • Processing: Método de cálculo para el almacenamiento de la variable de archivo.

Las opciones posibles son: • Actual Value: Almacena el último valor adquirido, despreciando si los hubiera

otros valores que se hubieran adquirido pero aún no se hubieran almacenado. • Sum: Suma todos los valores adquiridos y los almacena. • Maximum value: Almacena el valor mayor de todos los adquiridos durante el

período de tiempo entre el último almacenamiento y éste.ç • Mean Value: Calcula la media de todos los valores adquiridos y almacena dicho

valor. Es el ideal para la mayoría de los procesos. • Action: Realiza una acción en C cada vez que deba almacenar el valor de

archivo en el disco duro. Esta opción es ideal para cálculos complejos de estadística que no sean la suma, el máximo o la media, que ya son contemplados

Page 155: Manual Wincc Total

Aprende WinCC

153

por el propio WinCC. El botón select permite seleccionar que acción es la que se realizará.

• Minimum value: Almacena el valor menor de todos los adquiridos durante el período de tiempo entre el último almacenamiento y éste.

• Unit: The unit for the entered time value is either entered here directly or the associated unit of the tag is selected via a structure element. This entry is used primarily for tag display.

• Save on error: permite determinar que valor almacenar ante la aparición de un error en la lectura de la variable desde el proceso. Las opciones posibles son: • Last value: Almacena el último valor leído desde el administrador de variables. • Substitute value: toda variable dispone de un valor de substitución. Podemos

determinar el almacenar dicho valor frente a un error de comunicaciones. • Archive upon change: Esta opción permite almacenar el valor exclusivamente si

cambia dicho valor en el proceso. Es muy interesante, ya que permite substituir las carencias del Tag Logging en la adquisición de datos realizando programación en el PLC. Por ejemplo, ante el fallo del acyclic, que nos archiva valores en el flanco de subida y el de bajada, podemos programar en el PLC una subrutina que cada vez que un bit esté activo, nos transfiera un valor del plc a otra variable de comunicaciones. Si el valor es el mismo que poseía se le aumenta o disminuye en una cantidad insignificante para su posterior análisis desde WinCC. Así, solo adquiere el valor el WinCC cuando se modifica, que en realidad es cuando existe un bit en el PLC.

• Hysteresis: % que debe de variar la variable de proceso con respecto al último valor almacenado para que se vuelva a considerar su almacenamiento como necesario. Esta opción es interesante en valores que está variando ligeramente en el PLC, pero sólo nos interesa almacenarlos cuando su variación sea significativa, ya que en caso contrario se convertiría en un almacenamiento continuo de la variable.

Page 156: Manual Wincc Total

Aprende WinCC

154

En display podemos definir: • No display limitation: almacena en la variable de archivo cualquier valor que

provenga de la variable de proceso asignada. • Configured directly:. Si la variable de proceso ha alcanzado un límite máximo o

mínimo, permite configurar el valor a almacenar en la variable de archivo de manera independiente al valor que proviene del proceso. Esta opción es interesante cuando deseamos ante un valor que se ha salido de escala presentar en la gráfica un valor 0.

Page 157: Manual Wincc Total

Aprende WinCC

155

La ventana events nos permite configurar: • Start Events: La función en C que permite habilitar el almacenamiento de variables

de archivo en el disco duro. • Stop Events: La función en C que deshabilita el almacenamiento de variables de

archivo en el disco duro. • Dynamic: La función que se ejecuta cada vez que un valor de archivo es

almacenado en el disco duro.

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

Page 158: Manual Wincc Total

Aprende WinCC

156

int Arrancar_Grafica() { if (GetTagBit("NewTag")==TRUE) { return(1); } else { return(0); } } La función para parar el almacenamiento en el archivo es el siguiente: Int Parar_Grafica() { if (GetTagBit("NewTag")==FALSE) { return(1); } else { return(0); } } Presettings de variables de archivo

Todas estas propiedades que hemos definido para cada variable de archivo

podemos preconfigurarlas, para que cada vez que definamos una nueva variable no tengamos que asignárselas de nuevo.

Las posibles preconfiguraciones son: • Process Archive. • Compressed archive • Analog tag: Preconfiguración de una variable analógica (mayor que un bit).: • Binary tag: Preconfiguración de una variable digital (0 o 1).:

Con respecto a las variables digitales, destacar que se puede seleccionar que se almacenen siempre, frente a un flanco positivo o uno negativo. Lógicamente aquí sólo existe el ciclo de almacenamiento, ya que no se pueden hacer medias

Page 159: Manual Wincc Total

Aprende WinCC

157

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

Page 160: Manual Wincc Total

Aprende WinCC

158

• Compressed tag: Preconfiguración para los valores comprimidos dentro de

archivos comprimidos. Las características de los mismos difieren ligeramente de los archivos normales (ver imagen inferior).

Page 161: Manual Wincc Total

Aprende WinCC

159

Archivos comprimidos.

Los archivos comprimidos son como los archivos normales, salvo que se realiza una compresión de la información antes de ser almacenada. La única diferencia es que en ellos vamos a poder determinar:

• El tipo de compresión de los datos. • El tiempo de que se dispone para comprimir los datos (compresión cada día, cada

hora, etc..). • Se permite indicar un mensaje cuando el disco duro esté lleno de datos.

Los archivos comprimidos son siempre long-term, por lo que no se permite realizar tambor en los datos.

Page 162: Manual Wincc Total

Aprende WinCC

160

Curvas de valores Las tendencias de valores son utilizadas para mostrar la evolución de una variable de proceso en el tiempo de manera gráfica. La limitación más importante es que el eje X siempre obligatoriamente debe ser de tiempo. Cómo crear una curva de valores.

En esta versión de WinCC las curvas de valores, a diferencia de versiones anteriores, no se realiza desde el Tag Logging, sino desde el Graphic Designer, insertando un objeto WinCC online trend. Propiedades de la ventana de tendencias

Dentro de una ventana de tendencias podemos tener una o más curvas, cada una

con un color identificativo, y que asociaremos a variables de archivo que formarán parte de un archivo generado anteriormente, como ya vimos.

Page 163: Manual Wincc Total

Aprende WinCC

161

Las propiedades de general information son: • Window title: nombre descriptivo de la curva (p. Ej: presión zona 1). • Display: Muestra o no la curva o tendencia definida. • Open screen:

• Display ruler: mostrar la regla de posición al entrar a la picture donde esté la ventana de curvas.

• Display trends staggered: Muestra las tendencias en gráficas separadas. Esta opción es interesante en ciertas situaciones en las que los valores de dos o más tendencias van parejos en el tiempo, por lo que se están solapando, y deseamos observarlos o plasmarlos de manera individual.

• Common X axis: Si en la primera de las tendencias se selecciona esta casilla, todos los ejes X de las tendencias serán comunes. Es decir todos los valores representados en un punto del eje X fueron o están siendo generados en el mismo instante de tiempo. Si no se selecciona, cada tendencia muestra su propio eje de tiempos, por lo que no se tiene que producir necesariamente una correspondencia temporal entre dos curvas mostradas en la pantalla a una misma altura del eje X.

• Common Y Axis: Ejecuta la misma acción que antes, pero para el eje Y. Esto es interesante cuando los valores del proceso a mostrar no presentan una correspondencia en unidades (una es presión y otra es temperatura), pero sí en temporalidad (las dos variables es interesante mostrarlas a la vez en la misma pantalla para compararlas en el tiempo).

• Sizeable: la ventana puede ser dimensionada durante el runtime. • Can be closed: la ventana puede ser cerrada durante el runtime.

• Data source: Los datos a mostrar en la gráfica pueden proceder de un archivo en el disco duro, o no, con lo que tal como se lean del proceso se mostrarán en pantalla.

Page 164: Manual Wincc Total

Aprende WinCC

162

Page 165: Manual Wincc Total

Aprende WinCC

163

• Color: podemos definir el color de la tendencia para poder identificarla con respecto

a las demás curvas. Con respecto a la solapa tag, aquí se puede definir la variable de proceso con la cual estamos conectados o almacenando dicho valor. Observar que en tiempo de ejecución podemos desde esta ventana modificar dicha variable, con lo cual es posible realizar la operación de cambiar de señal de proceso a representar sin modificar el desarrollo de visualización, siempre y cuando se haya tenido la precaución de almacenar el valor reserva de proceso en un archivo de valores.

Page 166: Manual Wincc Total

Aprende WinCC

164

En este pestaña podremos crear las curvas que van a componer nuestra ventana de curvas. Podemos configurar: • Name: nombre de cada una de las curvas. • Display: mostrar o no la curva en cuestión. • Color: color asignado a la curva actual. • Selection of archives: seleccionar el archivo o la variable de la que tomaremos el

valor a representar. • Display type: tipo de unión entre los valores representados (barras, lineas,

puntos,…). Botones de la barra de herramientas: podemos definir que botonos deberán aparecer en la barra de herramientas, así como la tecla de acceso directo que se les asigna a cada uno de ellos.

Page 167: Manual Wincc Total

Aprende WinCC

165

En esta solapa definiremos las propiedades del eje X de tiempos. Recordar que no es posible otro tipo de gráfica que no sea temporal. • Display:

o Coarse Grid: muestra una línea de división en el eje y cada x valores del eje. El valor de x se puede introducir por el campo que aparece a la derecha de dicha opción.

o Fine grid: muestra una línea de subdivisión al igual que la línea coarse, pero con la diferencia de que esta es más estrecha, y no presenta número de escala.

o Time: o Selection: Selección del rango del eje X a mostrar en pantalla. Existen dos

posibilidades: Seleccionar un time range, con lo cual veremos elúltimo x tiempo,

siendo x el valor de factor x área. O seleccionar una cantidad de puntos de medida a visualizar.

Page 168: Manual Wincc Total

Aprende WinCC

166

En esta solapa configuraremos el eje Y de cada curva. Podemos definir: • Si disponemos de división “gruesa” en el eje Y. • Si disponemos de división “fina” entre cada división coarse grid. • Si deben presentarse lineas de ejes y como fondo de gráfica. • Decimal places: cantidad de decimales a mostrar en el eje Y • Label: como denominar a cada una de las curvas. • Range selection: selección de la escala en el eje Y. Existen dos posibilidades:

o Automatic, con lo cual estará en función del valor máximo a representar en cada momento.

o Definido por el programador, con lo cual no variará sea cual sea el valor a mostrar. En este caso, si el valor a mostrar sobrepasa los límites indicados para el eje será limitado al máximo del eje Y configurado.

Page 169: Manual Wincc Total

Aprende WinCC

167

En esta solapa definiremos los cambios de colores de las curvas frente a:

• Nivel inferior al indicado. • Nivel superior al indicado. • Solapamiento de valor en el tiempo (overlap). • Saltos en el tiempo sin valores (timejump).

• Overlamp: cambio de color de la curva cuando se produce un solapamiento de

tiempos (se vuelve a repetir el mismo tiempo en el sistema que ya hubo. • Jump: Salto del tiempo del sistema. Se ha realizado un salto temporal, adelantando

el tiempo del sistema.

Page 170: Manual Wincc Total

Aprende WinCC

168

Con respecto a la unión de los valores en la curva, existen las siguientes

posibilidades: • Stepped trend: mediante escalones cuadrados que unen nuestros puntos. • Show only dots: une los puntos con líneas discontinuas. • Connect dots linearly: Conecta los puntos mediante líneas.

Page 171: Manual Wincc Total

Aprende WinCC

169

• Fill area interpolated trend: muestra los puntos como un área que rellena del color

de la tendencia. Este tipo impide que otras tendencias se puedan apreciar. En la figura se observa como la tendencia 2 queda oculta tras la tendencia 1 debido a que ésta última se presenta bajo el tipo área rellena. Sólo es aconsejable este tipo para una sola curva, o cuando la curva a la que se le aplica este estilo ocupa la última posición.

• Fill area stepped trend: Igual que el anterior pero la unión se realiza mediante

cuadrados y no de manera lineal.

Page 172: Manual Wincc Total

Aprende WinCC

170

Adición y borrado de curvas

En la ventana choose object podemos añadir y restar las curvas que van a componer nuestra ventana de tendencias. A su vez podemos seleccionándolas editar mediante el botón Template las características de la ventana. Estas son: • Name of the template: Nombre identificativo de la ventana de curvas. • Title bar: Muestra sobre la ventana un título con el nombre de la ventana. • Status bar: Barra de estado en la que se indica el proceso que está teniendo lugar

actualmente. • Toolbar: Barra de herramientas con opciones accesibles desde botones ya

preconfigurados. • Read data from archive inmediately: Leer los datos del archivo al entrar en la

ventana. Cuando existe en el archivo una gran cantidad de datos, puede ser

Page 173: Manual Wincc Total

Aprende WinCC

171

interesante desactivar esta opción y que no pierda tiempo leyéndolos. Unicamente cuando rebobinemos marcha atrás en el histórico, leerá los datos del disco duro.

• Font: Fuente de los textos de la escala. • Color: Color del fondo de la gráfica. Barra de herramientas

Mediante la opción configure podemos configurar la barra de herramientas que

nos aparece en la ventana de curvas. Las opciones posibles son:

Online help system: ayuda en pantalla sobre las opciones más importantes para poder configurar la ventana de curvas. Set parameters: Esta ventana posibilita que un usuario de WinCC parametrice sus ventana de curvas a su gusto, después de haber configurado el programador la instalación. Las modificaciones que se realicen, pueden ser de tres tipos: • Volátiles, que se pierden en cuanto se sale de la ventana actual. Esta

situación se produce si en la ventana Persistence no se selecciona nada.

• Persistentes en el runtime: seleccionando esta opción las modificaciones que realice el usuario se mantendrán siempre que no desactive el WinCC. Cuando desactive la runtime de WinCC, o apague el ordenador y lo encienda de nuevo, restablecerá la configuración original.

Page 174: Manual Wincc Total

Aprende WinCC

172

• Persistentes en el Runtime y el CS: seleccionando esta opción las modificaciones que realice el usuario serán permanentes.

Primer dato: si la gráfica está detenida, se desplaza al primer elemento del archivo.

Dato anterior: muestra el dato anterior del archivo, hasta llegar al primero.

Dato siguiente: muestra el dato siguiente del archivo hasta llegar al último.

Ultimo dato: se posiciona en el último dato del archivo.

Regla: muestra la regla de referencia y la ventana de valores.

Lupa: realiza una ampliación de una zona que determinemos de la gráfica.

Restablecer tamaño: restablece el tamaño de la gráfica después de haber hecho un zoom.

Modificación de la variable de archivo seleccionada: mediante esta opción podemos modificar en el runtime la variable de archivo que asignamos a una determinada curva. La ventana de diálogo es la siguiente:

Mostrar curvas: mediante esta opción podemos seleccionar que curvas deseamos observar en la ventana La ventana de diálogo aparece abajo indicada..

Page 175: Manual Wincc Total

Aprende WinCC

173

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

Curva previa al frente: esta opción trae la curva que tengamos en segundo plano al primero y viceversa.

Deshacer Curva previa al frente: Esta opción deshace la acción anterior.

Start/Stop: arranque/parada de la actualización de los datos en la ventana. Destacar que la parada no significa que se deje de guardar los valores en la base de datos. Estos continúan siendo almacenados de igual manera.

Page 176: Manual Wincc Total

Aprende WinCC

174

Tablas de valores Las tablas de valores permiten representar los datos de los archivos en forma de tablas, para poder comparar los valores numéricos, además de poder editar dichos valores directamente desde las mismas, lo que posibilita la modificación de los datos de proceso con posterioridad al desarrollo de los mismos. Crear una tabla de valores

Como pasaba con las gráficas, para generar tablas en la versión 5.1 de WinCC es necesario acceder al Graphic Designer donde podremos insertar un objeto de tipo Online table control.

Page 177: Manual Wincc Total

Aprende WinCC

175

En esta ventana podremos generar las columnas que deseemos para nuestra tabla de valores. A su vez, podemos determinar cual va a ser la fuente de datos (de un fichero o de una variable) de la que adquiriremos los datos paramostrarlos en cada una de las columnas. En esta solapa podemos definir las propiedades de nuestra ventana, como son el título, si debe cargar los datos automáticamente al entrar a la picture donde se encuentre, si es dimensionable durante el runtime, etc.. El parámetro common time determina si se utiliza un timepo común para los valores mostrados en las columnas.

Page 178: Manual Wincc Total

Aprende WinCC

176

Page 179: Manual Wincc Total

Aprende WinCC

177

Con respecto a la barra de herramientas, sus posibilidades y parametrización son similares a las de las curvas, salvo por las siguientes nuevas opciones:

Editar una columna: Presionando este botón y seleccionando una celda de una columna, si dicha columna tiene activada la opción Can be edited, será posible modificarla. Enviar la columna previa a la primera posición.

Invierte la acción del anterior icono.

Nivel de password: permite introducir un nivel de password.

Insertar fila: en los archivos de usuario, es posible insertar una fila.

Borrar fila: en los archivos de usuario, es posible borrar una fila.

Page 180: Manual Wincc Total

Aprende WinCC

178

Gráficas.

Gráficas continuas.

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

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

Page 181: Manual Wincc Total

Aprende WinCC

179

En este primer apartado vamos a trabajar con gráficas continuas, realizando diferentes ejemplos de programación con gráficas desde c, para al final del capítulo ver los otros tres tipos de gráficas de que dispone WinCC, cuya clasificación se realiza en función del evento que genera el almacenamiento de los valores de proceso.

Para ello lo primero que necesitaremos será un botón en bottom.pdl que nos acceda a las gráficas de nuestro proyecto. Tomaremos el siguiente de la biblioteca: Dicho botón nos servirá para entrar a un menú que el desarrollo del presenta capítulo nos permitirá navegar por las pantallas que tienen que ver con los diferentes tipos de gráficas. De momento vamos a comenzar renombrando la pdl salir.pdl, como graficas.pdl, y dejándola con el siguiente aspecto:

Page 182: Manual Wincc Total

Aprende WinCC

180

El código que asignaremos al botón de bottom.pdl será el siguiente: SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName"

,"GRAFICAS.PDL");

SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","GRAFICAS"); SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE); Mientras que el código que asociaremos al primero botón de graficas.pdl será el siguiente: OpenPicture("GRAFICA_CONTINUA.PDL"); Ahora vamos a copiar start.pdl y renombrarla como grafica_continua.pdl. Ya tenemos la estructura de ventanas como para empezar a trabajar con las gráficas. De momento hemos finalizado con el Graphic Designer. Podríamos trasbajar con variables de comunicaciones para este ejemplo o con variable internas. Elegimos esta segunda opción por ser más faciles de simular desde WinCC. Para ello, vamos a generar 3 nuevas variables internas, llamadas respectivamente curva_1, curva_2 y curva_:3, de 32 bits de coma flotante. Estas variables son cuyos valores alamacenaremos en nuestras curvas dentro de nuestro archivo. Vamos ahora al Tag Logging, a desarrollar nuestro fichero de curvas. Vamos a crear un fichero de valores de proceso, en que incluiremos 3 curvas, cada una asignada a las variables internas definidas previamente. Si pulsamos con el botón derecho sobre el nombre de nuestro proyecto, podremos seleccionar sus propiedades. En dichas propiedades podemos activar la exportación de los valores que vamos a lmacenar en nuestra runtime automáticamente a ficheros externos en formato csv. Esto nos permitirá más adelante poder trabajar desde Access con dichos valores de una manera sencilla. Si esta operación la efectuaramos a posteriori perderíamos el histórico de valores que se hubiese realizado hasta ese momento.

Page 183: Manual Wincc Total

Aprende WinCC

181

En las propiedades de nuestro fichero de curvas podremos definir el tamaño del tambor de nuestro archivo circulante. ¿Cuál debería de ser dicho valor?. Bien, para ello vamos a poner un ejemplo, y cada uno podrá sustituir sus propios parámetros por los que aquí se muestran. Supongamos que deseo alamacenar la temperatura de una sala, y deseo tener un histórico de 1 año. La temperatura la alamacenaré cada hora. Como en 1 día hay 24 horas, y en 1 año hay 365 días, el resultado será: 24 valores por día * 365 días =8760 datos de archivo circulante. Las curvas para esta instalación de ejemplo, deberían de guardarse cada hora, pero podemos realizar una lectura del valor cada minuto, y alamacenar al disco duro la media de los 60 valores obtenidos durante la hora para obtener un valor mas estable de evolución.

Page 184: Manual Wincc Total

Aprende WinCC

182

En nuestro ejemplo de este libro, vamos a seleccionar 1 segundo de adquisición y 1 segundo de archivado, ya que de otra manera sería inviable mostrar una evolución rápida (deberíamos de esperar 1 hora para ver 1 valor en la pantalla). En la solapa parámetros podemos definir que calcule la media de los valores obtenidos antes de realizar el almacenamiento al disco duro. Ya disponemos de nuestra base de datos. Deberemos ahora de volver al Graphic Designer para trabajar con dicha base a través de nuestra ventana de curvas. Para ello, abrimos de nuevo la pdl grafica_continua.pdl, e insertamos el objeto online trend. Clickeando dos veces sobre dicho objeto en el Graphic Designer podemos editar sus propiedades, y definir tres curvas (procedentes de nuestro archivo anterior). Para ello, iremos seleccionándolas con el botón de selección que nos muestra la base de datos creada y las tendencias de que dispone.

Page 185: Manual Wincc Total

Aprende WinCC

183

A continuación desactivamos el título de la ventana. Esto es así debido a que en caso contrario la ventana será desplazable por el operario, y deseamos que sea fija en la pantalla. Puedes comprobar esto que estamos explicando activándola y desactivándola posteriormente y observando el efecto del título sobre la movilidad de la pantalla. Asignaremos un eje x común y un eje y común. El fondo de la ventana de gráficas es mejor dejarlo de color blanco si el cliente lo permite (luego lo comprenderemos cuando veamos la impresión de gráficas).

Page 186: Manual Wincc Total

Aprende WinCC

184

En la solapa del eje de tiempos vamos a realizar una asignación orientada a poder mostrar una gráfica lo más rápidamente ahora que se encuentra parendiendo las nociones de WinCC. La idea es mostrar en 1 minuto valores que van evolucionando. Evidentemente, en una instalación real, generalmente definiremos como intervalo de tiempo 1 día o más, para poder percibir una evolución de datos significativos. Es importante observar como en formato deberemos de seleccionar el formato de tiempos adecuados (milisegundos carecen de sentido en instalaciones reales). Pasamos ahora al eje y de la gráfica. Como hemos indicado que deseamos un eje y común, el WinCC nos va a mostrar un único eje, pero en realidad el continua con un eje y diferente para cada curva. Es por esto que cuando copie los valores que va a ver en la siguiente imagen, deberá de repetirlos volviendo a seleccionar cada una de las curvas en esta pantalla, y volviendo a introducir dichos valores.

Page 187: Manual Wincc Total

Aprende WinCC

185

Si no introduce los mismos valores para los tres ejes y de las tres curvas, no le funcionarán correctamente las parametrizaciones de código c que posteriormente vamos a realizar. Con esto ya hemos finalizado nuestra ventana de gráficas. Si arrancáramos ahora el runtime, veríamos que ya disponemos de la misma, pero no poseemos valores, y por lo tanto las curvas se encuentran en el punto 0. Para tener datos que visualizar, a la hora de aprender a manejar el WinCC, es muy útil utilizar el simulador de variables que lo acompaña. Dicho simulador de variables es una opción de la instalación, por lo que si no dispone del mismo en Inicio->Simatic->WinCC->Tools->WinCC variable simulator deberá de recurrir al cd-rom de WinCC para instalarlo. Suponemos que ya se encuentra instalado en nuestro disco duro, por lo que podríamos ejecutarlo a través del menú inicio de windows. Pero en nuestro ejemplo vamos a incluir un botón en nuestra pdl de graficas que permita ejecutar el simulador desde nuestro proyecto directamente. Incluimos a la drecha de nuestra pdl el siguiente objeto de la biblioteca: En el evento hacer clic de dicho objeto introducimos el siguiente código: ProgramExecute("C:\\SIEMENS\\WinCC\\SmartTools\\Simulator\\Simulation.exe"); Esto nos permitirá arrancar el simulador desde la runtime de WinCC. Al arrancarlo definimos las siguientes funciones matemáticas para cada una de las variables internas que utilizamos para simular nuestras curvas: Curva 1: seno de amplitud 50, paso por cero 50, y periodo de oscilación de 25. Curva 2: valor random (aleatorio) de 0 a 100. Curva 3: valor incremental de 0 a 100. Evidentemente tendremos que ir añadiendo dichas variables en le simulador desde el menu de edición. Con esto ya podemos comenzar la simulación con el botón de start de la primera solapa del simulador.

Page 188: Manual Wincc Total

Aprende WinCC

186

El resultado debería de parecerse al de la figura:

Page 189: Manual Wincc Total

Aprende WinCC

187

Juntar y separar curvas. WinCC permite de una manera sencilla juntar y separar diferentes curvas dentro de una misma ventana. En el siguiente ejemplo podremos apreciarlo claramente. Para su realización vamos a utilizar un botón que colocaremos a la izquierda de nuestra pdl como muestra la figura: Dicho botón se denominará BOTON_SEPARAR y poseerá el siguiente código: BOOL valor; valor=GetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",TRUE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",FALSE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","JUNTAR"); //Tipo de retorno :BOOL } else { SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",FALSE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",TRUE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","SEPARAR"); //Tipo de retorno :BOOL } Veamos que hace el código anterior: 1 . Primeramente conocemos el estado de la propiedad realycurves, que nos indica si ya están separadas las curvas o se encuentran juntas. 2. Si se encuentran juntas, las separa, y además deshabilita eje x y eje y comunes, ya que en caso contrario no surte efecto la separación. Además cambiamos el texto del botón, para saber que la siguiente vez que pulsemos lo que vamos ha relizar es lo contrario, es decir, juntarlas.

Page 190: Manual Wincc Total

Aprende WinCC

188

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

Page 191: Manual Wincc Total

Aprende WinCC

189

Mostrar la guía por programación. A continuación vamos a mostrar la guía de la gráfica a través de programación en C. Para ello colocaremos otro botón como muestra la figura: Dicho botón lo denominaremos BOTON_GUIAS, y poseerá el siguiente código: BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",0); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","GridLines"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","GridLines",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_GUIAS","Text","OCULTAR GUIAS"); //Tipo de retorno :BOOL } else { SetPropBOOL(lpszPictureName,"GRAFICA","GridLines",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_GUIAS","Text","MOSTRAR GUIAS"); //Tipo de retorno :BOOL } Igual que anteriormente, cambiamos el texto del botón para saber que acción es la que realizará el botón en cada una de las pulsaciones. Las guías del fondo de la pantalla nos permitirán referencias nuestros datos de una manera más sencilla.

Page 192: Manual Wincc Total

Aprende WinCC

190

Page 193: Manual Wincc Total

Aprende WinCC

191

Mostrar u ocultar curvas por programación C.

Continuando con nuestro ejemplo de gráficas, vamos a crear tres botones, cada uno de ellos con la finalidad de poder mostrar u ocultar las respectivas curvas de nuestra ventana de gráficas. Cada uno de los botones se denominará BOTON_MOSTRAR1 a BOTON_MOSTRAR3. El código para el primer botón será el siguiente: BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",0); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR1","Text","OCULTAR CURVA 1"); } else { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR1","Text","MOSTRAR CURVA 1"); } Es importante observar como colocamos el indice de la grafica a 0 para ocultar la curva 1. También cambiamos el texto del botón comovenimos haciendo en los anteriores ejemplos. Para el botón segundo el código sería: BOOL valor; SetPropWord(lpszPictureName,"GRAFICA","Index",1); //Tipo de retorno :BOOL valor=GetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible"); //Tipo de retorno :BOOL if (valor==FALSE) { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",TRUE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR2","Text","OCULTAR CURVA

2"); //Tipo de retorno :BOOL

} else { SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",FALSE); //Tipo de retorno :BOOL SetPropChar(lpszPictureName,"BOTON_MOSTRAR2","Text","MOSTRAR CURVA 2"); //Tipo de retorno :BOOL } Con esta funcionalidad podemos abrir por ejemplo una ventana al operario en la que decida que curvas deben de visualizarse en cada momento.

Page 194: Manual Wincc Total

Aprende WinCC

192

Imprimir gráficas mediante Reports. Existen dos formas de imprimir gráficas, mediante el uso de un Report o por impresión directa de la pantalla actual. Vamos a estudiar en este apartado el metodo primero, que aun siendo más elegante, presenta el inconveniente de no poder parametrizar el eje de tiempos de una manera sencilla. Es por ello, que en función de la exigencia del cliente a la hora de mostrar en papel la gráfica será preferible un método u otro. Comenzaremos creando lógicamente creando con el Report Designer un formato de página que denominaremos curva_continua.rpl. Lo primero que haremos será darle tamaño apaisado, para que nuestra gráfica ocupe toda la hoja. Esto podemos conseguirlo seleccionando con el botón derecho las propiedades de la hoja en la parte gris externa al propio Report, como muestra la figura: En formato->geometría->orientación seleccionaremos landscape (apaisado). En la parte dinámica de nuestro Report introduciremos un objeto de tipo metaarchivo dinámico, con las siguientes propiedades: A continuación editaremos el intervalo de tiempo, seleccionando el que nos convenga. El problema de este método es que no s permite mostrar todos los datos del tambor, o un tiempo determinado (1 día, 1 hora, etc..) pero siempre a partir de la fecha actual del reloj del pc. Es por esto que si el cliente desea mostrar otro rango de fechas (por

Page 195: Manual Wincc Total

Aprende WinCC

193

ejemplo, la gráfica de la evolución de la semana pasada) no podrá utilizar este método teniendo que recurrir al expuesto en el siguiente capítulo. En nuestro ejemplo vamos a mostrar los últimos 10 minutos de evolución, pero siempre a partir de la fecha actual del pc hacia atrás. En selección de variables seleccionaremos nuestras curvas. Y por último en formato seleccionaremos ejes y comunes. El Report finaliza introduciendo una parte estática con nuestro logotipo de empresa y el nombre de nuestro proyecto y formulario. Ya podemos salir y crear una orden de impresión como la que muestra la figura:

Page 196: Manual Wincc Total

Aprende WinCC

194

Ya estamos finalizando. Nos queda volver al Graphic Designer y en nuestra pdl de gráficas crear un botón, denominado IMPRIMIR, que posea el siguiente código: RPTJobPreview("ORDEN_CURVA_CONTINUA"); //Tipo de retorno :BOOL El resultado a la hora de imprimir la gráfica debería de ser similar al siguiente:

Page 197: Manual Wincc Total

Aprende WinCC

195

Imprimir gráficas con hardcopy. El truco está en imprimir la pantalla, pero modificándola antes de imprimirla para que parezca un Report, y dejándola como estaba posteriormente. Comenzaremos por enviar la ventana de aplicación TOP que tenemos insertada en la parte superior de la pdl grafica_continua.pdl a la capa 1, desactivando dicha capa con la barra de herramientas del Graphic Designer. En la posición donde se encontraba la ventana podemos escribir textos estáticos, como el nombre de la gráfica, etc... Luego volvemos a activar la capa 1, con lo que los textos por defecto quedarán ocultos por dicha ventana. Ahora colocamos un botón de imprimir gráfica, al que le asociamos el siguiente código: SetPropBOOL(lpszPictureName,"TOP","Visible",FALSE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"BOTTOM","Visible",FALSE); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Top",100); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Height",660); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","Toolbar",FALSE); //Tipo de retorno :BOOL WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); SetPropBOOL(lpszPictureName,"TOP","Visible",TRUE); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"BOTTOM","Visible",TRUE); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Top",170); //Tipo de retorno :BOOL SetPropWord(lpszPictureName,"GRAFICA","Height",490); //Tipo de retorno :BOOL SetPropBOOL(lpszPictureName,"GRAFICA","Toolbar",TRUE); //Tipo de retorno

Estudiemos el código. Primeramente ocultamos la ventana top y bottom. Después estiramos la gráfica hasta el antiguo borde de la ventana top por la parte inferior, con lo que “tapamos” los botones superiores de la ventana de gráficas, y nos ahorramos ocultarlos uno a uno. A continuación estiramos la gráfica hasta la parte inferior de la pantalla del ordenador, ocupando la antigua posición de la ventana bottom, que ya no es visible. Y por último ocultamos la barra de herramientas de la ventana de gráficas. En esta situación, la pantalla debe de tener el aspecto de la imagen posterior.

Una vez tenemos la pantalla en la situación adecuada, la imprmimos con la función externa PRTSCR.

Posteriormente, volvemos a dejar todo como estaba. Si el fondo de la ventana de gráficas no es de color gris gastaremos mucha tinta, por lo que recomendamos se parametrice desde un principio de color blanco, para no tener que cambiarle el color cuando se imprime la pantalla, además del efecto visual de pantallazo al cambiar de color. Lógicamente antes de imprimir la pantalla podemos seleccionar el rango de fechas deseado desde la barra de herramientas de la ventana de gráficas.

Page 198: Manual Wincc Total

Aprende WinCC

196

Page 199: Manual Wincc Total

Aprende WinCC

197

Control sobre la barra de herramientas de las gráficas. Disponemos de la propiedad ToolbarButtons que nos indica mediante un valor numérico qué botones se están mostrando actualmente. Cada uno de los bits de dicha propiedad es un botón, siguiendo el siguiente esquema: Por lo tanto, asignando una variable interna de tipo unsigned int a dicha propiedad, podremos realizar adiciones y extracciones de bits en función de qué botón deseamos o no mostrar en la barra de toolbar de la ventana de gráficas.

Page 200: Manual Wincc Total

Aprende WinCC

198

Cambiar de forma de representación de gráfica. Como sabemos podemos tener diferentes tipos de curvas en una gráfica. Los diferentes tipos son: Curva escalonada: Mostrar solo puntos: Unir linealmente los puntos: Rellenar superficie curva interpolada: igual que la anterior pero rellenando el área. Rellenar superficie curva escalonada: igual que la primera pero rellenado el área. Teniendo claros los tipos, vamos a hacer que podamos cambiar de tipo desde unos botones externos a la ventana de gráficas. Para ello vamos a utilizar una variable interna de tipo unsigned 8 bits value, que denominaremos tipo_de_curva. Teniendo esta variable, accedemos a la ventana de gráficas, y en las propiedades de la misma asignamos la variable tipo_de_curva a la propiedad curveform. Dicha propiedad de una ventana de gráficas permite cambiar de tipo e curva según el siguiente baremo (atención, los valores se muestran en hexadecimal):

Page 201: Manual Wincc Total

Aprende WinCC

199

Por lo tanto, a únicamente tendremos que colocarnos varios botones, que posean una función de C que asigne:

• Para gráfica de líneas: valor a 20, que es un 14 en hexadecimal. • Para gráficas de puntos: valor a 18 que es un 12 en hexadecimal. • Para gráfica de barras: valor a 17 que es un 11 en hexadecimal. • Para gráfica de líneas rellenas: 33, que es un 21 de hexadecimal. • Para gráfica de barras rellenas: valor de 34, que es un 22 en hexadecimal.

Page 202: Manual Wincc Total

Aprende WinCC

200

Control de gráfica con botones externos. Otra acción que podemos desear es arrancar y parar la gráfica igual que hacemos con el botón de la barra de toolbar. El tema está en que debemos de dar un título a nuestra ventana de gráficas. Pinchamos dos veces en la ventana, y parametrizamos el titulo que debe de poseer: No es necesario que se vea, y en realidad nosotros no vamos a mostrarlo, ya que si no tendremos que hacer movible la ventana Otro tema de los que ponen a uno contento de verdad es que distingue entre mayúsculas y minúsculas, o sea que como pongas en minúsculas la llamada que va debajo no te va ni para atrás. Las funciones a asociar la botón externo son: Parar/Arrancar la gráfica. Set_Focus(lpszPictureName,"ventana_grafica"); TlgTableWindowPressStartStopButton(“TITULO_GRAFICA"); Con una pulsación para la gráfica y con otra arranca la misma. Mostrar la regla. Aunque ya sabemos que hay un botón en la barra de herramientas de la ventana de gráficas que nos permite mostrar una regla con la que podemos desplazarnos por la misma y observar de qué valores disponemos en cada momento en cada una de las curvas, puede ser que deseemos mostrarla a través de un botón externo (uno de los motivos puede ser para poder protegerlo con un nivel de usuario, cosa que de otra manera no es posible). Esto es bastante sencillo incluyendo en el botón las siguientes instrucciones C: Set_Focus(lpszPictureName,"ventana_grafica"); TlgTrendWindowPressLinealButton("TITULO_GRAFICA"); Hacer un zoom a una parte de la gráfica. Set_Focus(lpszPictureName,"ventana_grafica"); TlgTrendWindowPressZoomInButton ("TITULO_GRAFICA");

Page 203: Manual Wincc Total

Aprende WinCC

201

Ir al último valor de la gráfica. Set_Focus(lpszPictureName,"ventana_grafica"); SetPropWord(lpszPictureName,"ventana_grafica","Index",0); TlgTrendWindowPressLastButton("TITULO_GRAFICA"); Avanzar hacia adelante en la gráfica. #pragma code ("Kernel32.dll"); void WINAPI Sleep(DWORD dwMilliseconds); #pragma code(); Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressNextButton("TITULO_GRAFICA "); Sleep(5000); TlgTrendWindowPressNextButton("TITULO_GRAFICA "); Avanzar un poco hacia adelante en la gráfica. Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressNextButton("TITULO_GRAFICA "); Retroceder un poco hacia atrás en la gráfica. Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressPrevButton("TITULO_GRAFICA "); Retroceder en la gráfica. #pragma code ("Kernel32.dll"); void WINAPI Sleep(DWORD dwMilliseconds); #pragma code(); Set_Focus(lpszPictureName,"Ventana_grafica"); SetPropWord(lpszPictureName,"Ventana_grafica","Index",0); TlgTrendWindowPressPrevButton("TITULO_GRAFICA "); Sleep(5000); TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");

Page 204: Manual Wincc Total

Aprende WinCC

202

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

Es por este motivo que será necesario realizar una función de telerruptor en el plc en el caso de que se desee almacenar únicamente por flanco positivo. Un ejemplo típico de este tipo de almacenamiento acíclico sería el caso de un transfer de piezas. Únicamente cuando una pieza se encuentra frente a la sonda de medida tiene sentido el almacenar una de sus propiedades (el tamaño de la pieza, p. Ej). Una barrera fotoeléctrica o un detector inductivo podrían ser esta variable de control que nos dispara el almacenamiento de dicho valor. La función del telerruptor necesaria en el plc podría tener el siguiente aspecto en Step 7 (atención, esto es un ejemplo de programación para sep 7, no para programar en el WinCC):

Page 205: Manual Wincc Total

Aprende WinCC

203

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

La función lo único que nos hace es devolvernos un valor booleano en función del valor de la variable interna. Es necesario realizar esta función porque realmente el archivado acíclico se realiza en función del valor devuelto por una función de tipo booleano.

A continuación cerramos el Global Script y abrimos el Tag Logging, editando las propiedades de la curva 1. Vamos a cambiar su forma de almacenamiento de continuo a acíclico. Observar como ya carece de importancia el ciclo de adquisición y de almacenamiento al realizar dicha selección (ver imagen adjunta).

Page 206: Manual Wincc Total

Aprende WinCC

204

En la solapa eventos deberemos de asociar la función de proyecto que acabamos

de realizar. Ya podemos cerrar el Tag Logging y abrimos la pdl grafica_continua.pdl. La

renombramos como grafica_aciclica.pdl, borrando de la ventana de alarmas todas las curvas salvo la primera. Vamos a incluir un botón como muestra la figura:

Page 207: Manual Wincc Total

Aprende WinCC

205

Lo que deseamos es que cuando pulsemos una vez dicho botón se active la variable “ACICLICA”, y cuando pulsemos de nuevo se desactive, para poder realizar la simulación acíclica.

El código para realizar esto es el siguiente: BOOL valor; valor=GetTagBit("ACICLICA"); if (valor==TRUE) { SetTagBit("ACICLICA", FALSE); } else { SetTagBit("ACICLICA",TRUE); } Nos queda crear un botón en el menú GRAFICAS.PDL que nos acceda a

GRAFICA_ACICLICA.PDL como muestra la figura:

Page 208: Manual Wincc Total

Aprende WinCC

206

Archivado ciclo selectivo.

El archivado de ciclico selectivo es igual que el archivado de ciclo contínuo, diferenciándose únicamente en que se comienza a archivar a través de una función de proyecto que devuelve un true, y se para por otro de igual manera. Un ejemplo de este tipo de almacenamiento sería el caso de una prensa, que se encuentra en reposo normalmente, pero que frente a un evento de inicio de ciclo debe de registrarse durante el tiempo que dura la prensada una magnitud (temperatura de material, p. Ej). Dispondremos en el plc de una marca que nos indica el ciclo de prensado, y deberemos de detectar cuando aparece dicha variable para almacenar los valores de proceso cada x tiempo, hasta que caiga dicha señal en el plc. Creamos una nueva variable interna de tipo bool denominada SELECTIVA. Nuestro primer cometido será realizar dos funciones de proyecto, una con el siguiente código: BOOL ARRANCA_CICLO_SELECTIVO() { BOOL valor; valor=GetTagBit("SELECTIVA");

Page 209: Manual Wincc Total

Aprende WinCC

207

return(valor); } Y la función de parada la siguiente: BOOL PARA_CICLO_SELECTIVO() { BOOL valor; valor=GetTagBit("SELECTIVA"); return(!valor); } Cerramos el Global Script y acudimos al Tag Logging. Igual que hicimos antes, vamos a trabajar sobre la curva 1, que editamos y cambiamos su forma de archivado a ciclo selectiva. En la solapa eventos deberemos de asociar los dos eventos realizados: Como anteriormente, con el Graphic Designer abrimos la pdl grafica_ciclica.pdl y la renombramos como grafica_selectiva.pdl. Vamos a colocar un botón que nos active la variable SELECTIVA definida anterirmente.

Page 210: Manual Wincc Total

Aprende WinCC

208

El código asociado a dicho botón será el siguiente: BOOL valor; valor=GetTagBit("SELECTIVA"); if (valor==TRUE) { SetTagBit("SELECTIVA", FALSE); SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","ARRANCAR SELECTIVO"); } else { SetTagBit("SELECTIVA",TRUE); SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","PARAR SELECTIVO"); } } Lógicamente tendremos que poner un botón en graficas.pdl para que podamos acceder a esta nueva pdl generada. Ya podemos probar el ejemplo y controlar el almacenamiento desde el botón generado.

Page 211: Manual Wincc Total

Aprende WinCC

209

Archivado al cambiar.

Existe un último método de almacenamiento denominado al cambiar. Es igual al ciclo continuo (el primero que vimos), salvo por dos diferencias:

1. El tiempo de adquisición de la variable de proceso está asignado a 1 segundo. 2. No se almacenan valores si no cambia el valor de proceso.

Es por este motivo que este tipo de almacenamiento es muy interesante para la

mayoría de las adquisiciones de una instalación, ya que libera al sistema de tener que almacenar valores repetidos con el ahorro de tiempo al acceder al disco duro, y de espacio en el mismo.

Page 212: Manual Wincc Total

Aprende WinCC

210

Almacenando históricos de evolución.

Si deseamos almacenar cada minuto muchos valores, y queremos tener un histórico de los mismos durante años, podemos tener la seguridad de que el sistema no va a poder con el archivo resultante, no solo por el espacio en disco duro, sino por el acceso a los datos, que cuanto mas grande es el archivo mas tiempo tarda en almacenar los datos en el mismo.

Como hemos visto la solución pasa por utilizar un tambor de datos y decidir cual es el histórico mínimo que deseamos. Sin embargo, si lo que nos interesa es un histórico para observar la evolución a lo largo de un gran espacio de tiempo, viendo los datos desde una visión global, aun perdiendo el valor en concreto en una fecha determinada se pueden utilizar ficheros comprimidos, denominación que se utiliza en WinCC a calcular la media de los valores durante un tiempo, y almacenando dicho valor en representación de todos los de ese espacio de tiempo. Casos posibles sería la evolución de las pérdidas energéticas en un sistema de intercambio de energía. Tendremos nuestro histórico en formato tambor de los últimos 6 meses, pero además podemos tener un archivo comprimido en el que observemos la evolución de nuestro intercambio energético a lo largo de años, siendo cada unos de los valores de dicho archivo comprimido un día.

Por lo tanto, para poder disponer de un fichero comprimido es necesario previamente disponer de un fichero de valores de proceso en el Tag Logging. Como nosotros ya disponemos del fichero curvas, vamos a crear un nuevo fichero, pero esta vez será de tipo comprimido.

A continuación realizaremos la asignación de nuestros valores del fichero a

nuestro histórico. Esto lo conseguiremos seleccionando con el botón derecho del ratón sobre nuestro fichero comprimido->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).

Page 213: Manual Wincc Total

Aprende WinCC

211

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.

Page 214: Manual Wincc Total

Aprende WinCC

212

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.

Page 215: Manual Wincc Total

Aprende WinCC

213

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\DUNKERDEMO_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.

Page 216: Manual Wincc Total

Aprende WinCC

214

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:

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.

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:

Page 217: Manual Wincc Total

Aprende WinCC

215

Creamos una DB10 que posee la siguiente estructura: Veamos que significado tienen cada uno de los parámetros: Tipo_de_cabecera:

Tipo de cabecera

Tiempo de referencia AR_ID Subnumero

0 Cabecera sin tiempo de referencia Cabecera sin AR_ID subnumero 1 Cabecera con tiempo de referencia Cabecera con AR_ID subnumero 8 Cabecera sin tiempo de referencia Cabecera sin AR_ID subnumero 9 Cabecera con tiempo de referencia Cabecera con AR_ID subnumero

Page 218: Manual Wincc Total

Aprende WinCC

216

CCCaaapppííítttuuulllooo 666

RRReeepppooorrrttt DDDeeesssiiigggnnneeerrr...

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.

Page 219: Manual Wincc Total

Aprende WinCC

217

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

Page 220: Manual Wincc Total

Aprende WinCC

218

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.

Page 221: Manual Wincc Total

Aprende WinCC

219

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

Page 222: Manual Wincc Total

Aprende WinCC

220

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

Page 223: Manual Wincc Total

Aprende WinCC

221

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…).

Page 224: Manual Wincc Total

Aprende WinCC

222

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.

Page 225: Manual Wincc Total

Aprende WinCC

223

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

Page 226: Manual Wincc Total

Aprende WinCC

224

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

Page 227: Manual Wincc Total

Aprende WinCC

225

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.

Page 228: Manual Wincc Total

Aprende WinCC

226

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.

Page 229: Manual Wincc Total

Aprende WinCC

227

Page 230: Manual Wincc Total

Aprende WinCC

228

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:

Page 231: Manual Wincc Total

Aprende WinCC

229

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

Page 232: Manual Wincc Total

Aprende WinCC

230

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.

Page 233: Manual Wincc Total

Aprende WinCC

231

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.

Page 234: Manual Wincc Total

Aprende WinCC

232

Page 235: Manual Wincc Total

Aprende WinCC

233

CCCaaapppííítttuuulllooo 777

GGGlllooobbbaaalll SSScccrrriiipppttt...

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.

Page 236: Manual Wincc Total

Aprende WinCC

234

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

Page 237: Manual Wincc Total

Aprende WinCC

235

#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); //Return-Type :long int SetTagSWord("VAR_1",Temporal); //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.

Page 238: Manual Wincc Total

Aprende WinCC

236

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

Page 239: Manual Wincc Total

Aprende WinCC

237

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.

Page 240: Manual Wincc Total

Aprende WinCC

238

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:

Page 241: Manual Wincc Total

Aprende WinCC

239

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.

Page 242: Manual Wincc Total

Aprende WinCC

240

Definición de variables en C.

Los tipos de variables que podemos definir en C son los siguientes: Data Type Value Range Int -2 147 483 648 to 2 147 483 647 unsigned int 0 to 4 294 967 295 short -32 768 to 32 767 unsigned short 0 to 65 535 long -2 147 483 648 to 2 147 483 647 unsigned long 0 to 4 294 967 295 char -128 to 127 (all ASCII characters) unsigned char 0 to 255 (all ASCII characters) float -10 ^38 to 0 ^38 double -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 valor=uno+dos - Resta valor=uno-dos * Multiplicacion valor=uno*dos / División valor=uno/dos % Modulo (resto de una división) valor=uno%dos ++ Incrementar ++valor -- Decrementar --valor Operaciones con bits & Bit-a-Bit AND valor=uno&dos | Bit-a-Bit OR valor=uno|dos ^ Bit-a-Bit XOR valor=uno^dos ~ Bit-a-Bit inversion valor=uno~dos << Mueve los bits a la izquierda valor=uno<<8 >> Mueve los bits a la derecha valor=uno>>8 Operaciones lógicas: > Mayor que if(uno>dos) >= Mayor o igual que if(uno>=dos) == Igual que if(uno==dos) != Distinto de if(uno!=dos) <= Menor o igual que if(uno<=dos)

Page 243: Manual Wincc Total

Aprende WinCC

241

< Menor que if(uno<dos) && AND lógica if(uno&&dos) || OR lógica if(uno!!dos) ! inversion lógica if(!uno)

Page 244: Manual Wincc Total

Aprende WinCC

242

Disparo de acciones

El disparo de acciones se realiza seleccionando la acción y en el menú Edit->Info.

En la solapa info podemos indicar: • Quién y cuando realizó la acción (la programó o la modificó). • Podemos proteger nuestra acción para que solo nosotros podamos visualizar su

contenido. Esto permite proteger el know-how del desarrollador y poder ser utilizada por el usuario.

• Podemos indicar un número de versión y un comentario. Curiosamente, si no se aprieta el botón de aplicar antes de salir, aunque se acepte, las modificaciones realizadas se pierden. Atención con este error de programación que puede hacer perder el trabajo introducido. En la solapa trigger definimos el disparo de la acción, disponiendo de tres tipos posibles de disparo (que no son excluyentes los unos de los otros): • Acíclico: El disparo de la acción se realiza sólo una vez un día y a una hora

determinada. Pulsando sobre Add podemos definir la fecha y hora, así como el nombre del disparo.

Page 245: Manual Wincc Total

Aprende WinCC

243

Page 246: Manual Wincc Total

Aprende WinCC

244

• Cíclico: La acción se realizará cada x tiempo de manera automática en el PC a partir

de que arranque la runtime y hasta que pare. En event podemos seleccionar por ciclo standard, con lo cual podemos asignar la llamada a un ciclo de usuario personalizado, o por hora, día, semana, mes o año. En este segundo caso, nos permite indicar a partir e que fecha u hora debe empezar a realizar dicha acción.

Page 247: Manual Wincc Total

Aprende WinCC

245

• Tag: Podemos disparar una acción cuando alguna o varias variables cambien de

valor. Compilación de funciones externas a través de DLL’s.

Si deseamos utilizar funciones ya realizadas por nosotros en alguna de nuestras

subrutinas desde WinCC, deberemos primeramente compilarlas en formato DLL desde nuestro compilador original (Visual C, Visual Basic, Delphi). Una vez dispongamos de dichas funciones a utilizar dentro de una DLL de 32 bits compilada, deberemos de declarar las funciones en nuestro código C de WinCC para poderlas utilizar. Al principio de la subrutina donde vayamos a realizar la llamada a la función externa, deberemos de escribir la siguiente declaración: #pragma code(“NOMBRE_DE_LA_DLL.DLL”) #include “NOMBRE_DE_LA_CABECERA.h” #pragma code() Esta declaración indica al precompilador de C que añada a su biblioteca de funciones las incluidas en NOMBRE_DE_CABECERA.h, que se encuentran en NOMBRE_DE_LA_DLL.DLL. Definición de variables globales y variables locales

Una variable local es toda aquella cuyo ámbito de acción se circunscribe a la subrutina en que es definida, mientras que una variable global es accesible desde cualquier subrutina generada en WinCC.

En numerosas ocasiones se utilizan en WinCC variables internas para realizar tareas que con variables globales quedan fácilmente solventadas.

Page 248: Manual Wincc Total

Aprende WinCC

246

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

• si estamos declarándola en una acción de C, se debe declarar antes de la declaración de la función: int variable=0; void subrutina() {

• si estamos declarándola en una propiedad o evento, deberemos de antecederla de la instrucción extern: void OnProertyChange(…) { extern int variable; a=0; Nota: Si declaramos una variable externa sobre una función standard, esta función existirá en todos los proyectos que generemos.

Exportar acciones.

A veces puede ser interesante exportar una acción de un proyecto a otro, p. Ej., en el caso de haber realizado una función que nos calcule cuando debemos de salvar datos a una gráfica, y queremos implementarla en un nuevo proyecto que hayamos realizado (si copiáramos el código C a través del portapapeles los datos de disparo, autor, password, etc… se deberían de volver a crear).

Para ello, pulsamos en el botón de esportación en la barra de herramientas del Global Script, grabando la acción con la extensión act.

Para importar la acción, cerramos el proyecto fuente y abrimos el proyecto destino. Dentro del Global Script tenemos el botón de importar y capturamos el fichero anteriormente generado.

Page 249: Manual Wincc Total

Aprende WinCC

247

Diagnóstico de funciones C.

Una de las tareas más importantes a la hora de trabajar con funciones C es poder realizar diagnóstico de las mismas durante su ejecución, ya que a menudo las acciones que realizan no poseen un control “visual” de su ejecución, y no podemos saber si se están ejecutando bien, y porqué en el caso de que lo realicen mal.

Vamos a estudiar las posibilidades de diagnóstico que soporta WinCC V5.1.

Global Script runtime.

Durante el runtime, podemos colocar un objeto Global Script runtime en cualquier picture, que nos indicará que funciones se están ejecutando, el tiempo de proceso que se está dedicando a cada una de ellas, cuando arrancaron y los valores de retorno y de error que están devolviendo las mismas en el momento actual.

seleccionar Window contents->Global Script->GSC Runtime. Es importante

recordar que si no se activa la parte de runtime de Global Script no se ejecutará 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.

Page 250: Manual Wincc Total

Aprende WinCC

248

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.

Page 251: Manual Wincc Total

Aprende WinCC

249

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.

Page 252: Manual Wincc Total

Aprende WinCC

250

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, *PCMN_ERROR;

Siendo: • dwError1 a dwError5: valores de error devueltos por la API de

Windows. • SzErrorText: cadena de texto que contiene el mensaje de error

devuelto por el sistema.

Page 253: Manual Wincc Total

Aprende WinCC

251

CCCaaapppííítttuuulllooo 888

TTTeeexxxttt LLLiiibbbrrraaarrryyy... 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.

Page 254: Manual Wincc Total

Aprende WinCC

252

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.

Page 255: Manual Wincc Total

Aprende WinCC

253

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

Page 256: Manual Wincc Total

Aprende WinCC

254

CCCaaapppííítttuuulllooo 999

UUUssseeerrr AAAdddmmmiiinnniiissstttrrraaatttooorrr...

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.

Page 257: Manual Wincc Total

Aprende WinCC

255

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.

Page 258: Manual Wincc Total

Aprende WinCC

256

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.

Page 259: Manual Wincc Total

Aprende WinCC

257

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

Page 260: Manual Wincc Total

Aprende WinCC

258

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.

Page 261: Manual Wincc Total

Aprende WinCC

259

• 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();

Page 262: Manual Wincc Total

Aprende WinCC

260

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.

Page 263: Manual Wincc Total

Aprende WinCC

261

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.

Page 264: Manual Wincc Total

Aprende WinCC

262

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.