Está en la página 1de 264

APRENDE

Version 5.1

CON EL GUAPERAS

INDICE
Cap1. Introduccin a WinCC

Cap2. Comunicacin con autmatas S7

28

Cap3. Editor de grficos: Graphics Designer

47

Cap4. Editor de alarmas: Alarm Logging .....

112

Cap5. Editor de curvas e histricos: Tagg


Logging .....................................................

138

Cap6. Editor de informes: Report Designer.....

216

Cap7. Programacin en C: Global Script .....

233

Cap8. Editor de textos: Text Library .....

251

Cap9. Gestin de usuarios: User Administrator.. 254

Aprende WinCC

C
Caappttuulloo 1
IInnttrroodduucccciinn aa W
WiinnC
CC
C..
Notaciones.

En el presente manual se recogen una serie de notaciones simblicas que poseen


el siguiente significado:
Icono

Significado
Indica un click con el botn izquierdo del ratn.
Indica un click con el botn derecho del ratn.
Indica doble-click con el botn izquierdo del ratn.
Indica una entrada desde teclado.

Aprende WinCC

Requisitos.
Los requisitos mnimos y recomendables para trabajar con el WinCC a nivel
hardware y software del PC son:

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

Mnimo
Intel Pentium II
400 MHz
256 MBytes (para servidores)

Recomendado
Intel Pentium III
> 400 MHz
> 256 MBytes

128 MBytes (para clientes)


32 MBytes adicionales

> 32 MBytes adicionales

650 MBytes de espacio libre


de memoria

100 MBytes

> 650 MBytes de


espacio libre de
memoria
> Memoria de trabajo
doble
> 100 MBytes

SVGA (4 MBytes)
800 * 600

XGA (8 MBytes)
1024 * 768

Memoria de trabajo doble

Sistemas operativos para WinCC monopuesto o cliente:


Sistema
operativo
Windows NT

Windows
2000

Configuracin

Observaciones

Windows NT 4.0
Service Pack 6a o
superior

Instale el Service Pack antes de la


instalacin de Internet Explorer. El
Service Pack actual se encuentra en el CD
de Internet Explorer V6.0 suministrado.
El usuario ha de poseer para el manejo de
WinCC como mnimo los derechos de un
usuario principal ("Power User").

Windows 2000 Service


Pack 2

Sistemas operativos para WinCC como server:

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

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

Aprende WinCC

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

Aprende WinCC

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

Aprende WinCC

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

Aprende WinCC

Crear un nuevo proyecto en WinCC.


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

Vamos a realizar un proyecto para estacin monopuesto. Se nos pide el nombre


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

Aprende WinCC

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


proyecto:

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

El nombre indicador se puede cambiar en Equipo->Propiedades, pero lgicamente


necesitaremos conocer el nombre del nuevo ordenador donde estamos copiando el
proyecto. Para ello, en Inicio->Configuracin->Panel de control->Sistema>Identificacin de Red se encuentra nuestro nombre de equipo.

Aprende WinCC

Lo primero: Definir la pantalla.


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

Zona superior: para acceder a las diferentes pantallas del proyecto


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

Aprende WinCC

Realizamos la misma accin para la ventana de abajo, colocando otra ventana de


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

Aprende WinCC

Como salir de WinCC.


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

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

Deberemos de llamar a dicha picture cuando pulsemos el boton de salir. Para


ello, dentro de la picture start.pdl, nos colocamos una ventana de imagen de cualquier
tamao, ms o menos por el centro de start, como muestra la figura:

10

Aprende WinCC

Las propiedades de dicha ventana de imagen son:

Y como nombre de objeto, la llamamos VENTANA_SALIR


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

Vamos a explicar que hace esta lnea de cdigo:


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

Aprende WinCC

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

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

Para el segundo salir de WinCC.


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

12

Aprende WinCC

Bien, ya salimos de WinCC, pero claro, cualquiera puede apagarnos el


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

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

Aprende WinCC

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


seleccionamos salir.

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

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

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


14

Aprende WinCC

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

Ahora viene lo bueno, el cdigo C, asociado en el evento mouse activo:


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

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

15

Aprende WinCC

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

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

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

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

16

Aprende WinCC

Asociando este cdigo al botn de administracin de usuarios, ya puede un


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

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

Llamar a ventanas variables.


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

Aprende WinCC

Primeramente vamos a hacer parametrizable la llamada a la ventana que hacamos


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

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

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

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


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

Si pruebas lo hecho hasta ahora deberas de poder abrir la ventana de manera


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

Aprende WinCC

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

En bloques de texto de usuario los siguientes:

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

No aparece el bloque usuario?. En realidad es el bloque de valor de proceso 1 que


lo hemos renombrado como usuario, para luego podernos aclarar mejor.
En clases de aviso aadimos una nueva clase, que nombraremos como usuarios.

19

Aprende WinCC

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

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

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


circulante.

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


usuarios.

20

Aprende WinCC

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

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

21

Aprende WinCC

La variable usuario es una variable interna de tipo texto de 8 bits.


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

Aprende WinCC

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

El disparo vendr dado por el ciclo al cambiar de @Current_User. Compilamos la


accin y hemos finalizado en el Global Script. Ahora vamos al Graphic Designer y
renombra la pdl start.pdl como registro_usuarios.pdl. En la zona central de la pantalla
colocamos un control de tipo WinCC alarm control como muestra la figura:

23

Aprende WinCC

En las propiedades de la ventana de alarmas (que aparecen clickeando en la misma),


definimos como tipode ventana=ventana de archivo temporal. Y por ltimo en la solapa
lnea de avisos mostramos los siguientes bloques de avisos:

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

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

24

Aprende WinCC

Ya podemos guardar y comprobar como nos ha quedado el invento, que debera de


mostrar a medida que vamos logando usuarios algo como esto:

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

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

25

Aprende WinCC

Guardamos el Report y cerramos el editor. Ahora creamos una nueva orden de


impresin, que posee las siguientes caractersticas:

Ya tenemos la orden de impresin. Nos queda activarla para que se imprima el


Report. Para ello volvemos al Graphic Designer, y en la pdl registro_usuarios, en la
parte superior, colocamos un objeto de la librera como muestra la figura:

En dicho botn vamos a asociar el siguiente cdigo C:


RPTJobPreview("orden_registro_usuarios");

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

26

Aprende WinCC

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

27

Aprende WinCC

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

La nueva conexin la denominamos como nuestro PLC, en este caso 314_C_2DP, y en


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

28

Aprende WinCC

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

29

Aprende WinCC

Comunicacin por TCP/IP.


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

Comprobamos que podemos comunicar por TCP/IP, p. Ej observando el programa


desde Step 7 a travs de TCP/IP. Para ello deberemos de cambiar el tipo de acceso en
ajustar interface PG/PC.

30

Aprende WinCC

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

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

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

31

Aprende WinCC

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

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

Aprende WinCC

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

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

33

Aprende WinCC

34

Aprende WinCC

Diagnstico de las comunicaciones en el runtime.


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

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


dinmico.

Asociamos la variable MB0 y activamos valor de estado de variables, seleccionando el


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

35

Aprende WinCC

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

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

36

Aprende WinCC

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

37

Aprende WinCC

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

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

Aprende WinCC

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

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

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

39

Aprende WinCC

Generando alarmas de fallo de comunicaciones.


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

Ya habias definido una variable de comunicaciones llamada MB0, por lo que


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

Aprende WinCC

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

//Tipo de retorno :BOOL

//Tipo de retorno :BOOL

return 0;
}

Como puedes observar lo que hacemos es activar a 1 la variable interna en


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

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

Aprende WinCC

Las alarmas de comunicaciones tendrn su propia clase de alarmas, para que


posteriormente las podamos filtrar en un ventana de alarmas que nicamente muestre las
alarmas concernientes a las comunicaciones.

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


comunicaciones.

Activamos el acuse de aparicin para que cuando se produzca un error de


comunicaciones tengamos que acusarlo, y as detectar cuando nos falla la comunicacin
aunque se produjese cuando no estbamos observando el scada.

42

Aprende WinCC

Por ultimo definimos los textos de estado de nuestras comunicaciones (aparece,


desaparece...). El smbolo +/- indica una alarma que desaparece sin haber sido acusada
por el operario (fallo de comunicaciones mientras no observbamos el scada que se ha
solventado).

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

Tambin definiremos el texto que debe de aparecer en la alarma cuando fallen


las comunicaciones, as como el lugar que comunican con el centro de control (donde se
encuentra el scada).

43

Aprende WinCC

Ya hemos finalizado con el alarm loggin. Salimos del mismo y arrancamos la


parte de runtime que le compete en equipo. Vamos a reutilizar la picture
diagnosis_comunicaciones.pdl.
En el centro de la misma colocaremos un control de tipo WinCC alarm control
como muestra la figura:

Los parmetros ms importantes de esta ventana de alarmas sern:


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

44

Aprende WinCC

No te preocupes que el objeto de ventana de alarmas se superponga al anterior


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

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

45

Aprende WinCC

Siendo ALARMAS_COMUNICACIONES la ventana de alarmas y


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

46

Aprende WinCC

C
Caappttuulloo 3

G
Grraapphhiiccss D
Deessiiggnneerr..

El editor Graphics Designer se encarga de la confeccin de las pantallas de WinCC.


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

47

Aprende WinCC

Si se desactiva la opcin Show tips at startput, para volver a mostrar la ventana


de tips & tricks cada vez que se entre al Graphics Designer, es necesario seleccionar en
Option->Extras->Settings->Display tips & tricks.
Propiedades de las pictures

Desde el Explorador de WinCC, presionando el botn derecho teniendo


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

48

Aprende WinCC

Convertir pictures de versiones anteriores.


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

49

Aprende WinCC

Propiedades de los objetos


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

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

Configuration Dialog: se accede a un resumen de las propiedades del objeto ms


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

Aprende WinCC

Propiedades del objeto Picture

La propia pantalla en la que trabajamos posee propiedades y eventos.


Presione el botn derecho sobre ella y elija properties.
Las propiedades son:

Geometry:
Picture Width: Ancho de la pantalla (en pixels).
Picture Height: Alto de la pantalla (en pixels).
Grid On: Activar la rejilla de puntos
Grid Width: Ancho de la rejilla de puntos
Grid Height: Alto de la rejilla de puntos

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

51

Aprende WinCC

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

52

Aprende WinCC

Display: Mostrar la picture.


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

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

53

Aprende WinCC

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

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

54

Aprende WinCC

55

Aprende WinCC

Iconos de la ventana propiedades


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

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

Aprende WinCC

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

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

biblioteca

se

compone

de

dos

Global library: biblioteca general accesible desde cualquier proyecto.


Project library: librera exclusiva del proyecto.

57

partes:

Aprende WinCC

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

58

Aprende WinCC

Opciones del men


Settings
En el men Tools ->Settings disponemos de las siguientes opciones para
configurar el Graphic Designer:
En
la
opcin
grid
podemos
seleccionar:

Display grid: El visualizar o no la rejilla al crear o abrir un picture.


Width in pixels: El tamao que debe tener la rejilla.
Snap to grid: El ajustar o no los objetos a la rejilla.

59

Aprende WinCC

En la pestaa options podemos seleccionar:

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

Aprende WinCC

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


WinCC.

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

61

Aprende WinCC

Save configuration on exit: Memorizar la configuracin de toolbars y posiciones de


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

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

62

Aprende WinCC

63

Aprende WinCC

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

64

Aprende WinCC

Agrupar y desagrupar objetos.

Cuando se selecciona ms de un objeto se permite la opcin de agrupar los


mismos en un elemento que posee las propiedades de ambos. La idea es crear
agrupaciones de objetos que posean una determinada funcionalidad, p. Ej., cuadrados y
rectngulos que combinados y agrupados forman una tubera. A estas agrupaciones de
objetos se les puede asignar cdigo para su dinamizacin de una manera sencilla, a la
vez que exportarlos a la librera de proyecto para su posterior reutilizacin.
Tab Secuence.
Todos los objetos poseen un orden de tabulacin. Este parmetro nos indica que
objeto ser activo en un determinado momento segn el objeto que actualmente posea el
foco (est activo) al presionar la tecla tab.
Existen
dos
rdenes
de
tabulacin:

Alpha cursor sequence: nicamente para cajas I/O.


Tab order: todos aquellos objetos que se puedan seleccionar con el tabulador.
Esto se define dentro del menu Edit->tab sequence->tab order->settings.

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

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

Aprende WinCC

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

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

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

66

Aprende WinCC

Barra de objetos
Los objetos de la barra de objetos se dividen en tres categoras:

Standard Objects: Objetos estndar de dibujo, tales como lneas, polgonos, etc..

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

Windows Objects: Objetos comunes de Windows, tales como botones, cajas de


seleccin, barras de desplazamiento, etc..

67

Aprende WinCC

Barra de layers:

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

Es conveniente, cuando necesitemos poner objetos que se superponen (p. Ej. Un


efecto de sobra bajo un texto, o un mensaje de ayuda que aparece sobre un botn) que
asignemos diferentes capas, para que podamos desactivarlas pinchando sobre ellas y
trabajar de una manera ms cmoda en el editor de dibujo.

Barra de alineacin.
Esta barra se utiliza para poder alinear varios objetos y tambin para igualarlos
en tamao tanto en altura como en anchura.

Para que aparezca activa lgicamente deberemos de tener seleccionados por lo


menos dos objetos.
El significado de cada uno de los botones de alineacin comenzando por la
izquierda de la ventana es el siguiente:

alinear todos los objetos seleccionados a la izquierda.


Alinear todos los objetos seleccionados a la derecha.
68

Aprende WinCC

Alinear todos los objetos seleccionados por arriba.


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

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

Barra de fuentes

La mayora de los objetos poseen algn texto asociado. Mediante la barra de


fuentes podemos configurar el tamao y fuente de los mismos sin tener que entrar en
sus propiedades.

Barra de estilos

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

69

Aprende WinCC

70

Aprende WinCC

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

I/O Field:

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


modificar.

71

Aprende WinCC

Destacar en estas propiedades:


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

72

Aprende WinCC

El flashing es una agrupacin de propiedades no vista hasta ahora. Bsicamente


se utiliza para sealizar un cierto estado de algn elemento de la instalacin que est
representado por dicho objeto. Si la presente caja de I/O est representando un valor de
presin de agua, podemos representar aqu dicho valor con el fondo parpadeando
cuando se exceda un determinado lmite de seguridad.
Las opciones disponibles son:

Flashing border active: Que parpadee el borde de la caja.


Flashing border color off: Color del parpadeo del borde en estado off
Flashing border color on: Color del parpadeo del borde en estado on.
Border Flashing frequency: Frecuencia del parpadeo. Disonemos de tres
velocidades: lenta, media y rpida.
Flashing Background active: Que parpadee el fondo de la caja.
Flashing background color off: Color del parpadeo del fondo en estado off.
Flashing background color on: Color del parpadeo del fondo en estado on.
Background Flashing frequency: Frecuencia del parpadeo del fondo. Disonemos de
tres velocidades: lenta, media y rpida.
Flashing Text active: Que parpadee el texto de la caja.
Flashing Text color off: Color del parpadeo del texto en estado off.
Flashing Text color on: Color del parpadeo del texto en estado on.
Text Flashing frequency: Frecuencia del parpadeo del texto. Disonemos de tres
velocidades: lenta, media y rpida.

73

Aprende WinCC

Opciones Miscelaneous:

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

Aprende WinCC

Limits:

Low Limit Value: Valor menor que se puede aceptar como vlido a la hora de
introducir un valor en proceso.
High Limit Value: Valor mayor que se puede aceptar como vlido a la hora de
introducir un valor en proceso.
Si se sobrepasa cualquiera de estos valores, automticamente aparece una caja
indicndonos dicho suceso.
Output/Input:

Field Type: Tipo de valor del campo a representar o introducir. Las diferentes
posibilidades son:
Output: Solo leer el valor en el PLC, sin poder escribir.
Input: Solo escribir el valor en el PLC sin poder leer.
I/O field: leer el valor en el PLC y poder modificarlo tambin.

75

Aprende WinCC

Output value: Variable de proceso que contiene la caja.


Data format: Formato de los datos a representar.

Output Format: formato de salida del valor a introducir. Cada carcter 9


corresponde a un dgito. Los dgitos que se coloquen despus del punto
correspondern a los decimales a los que se ajuste el valor a representar.

76

Aprende WinCC

Las diferentes posibilidades en formatos de entrada son


:
Formato binario: debe estar compuesto por unos y ceros.
Formato
decimal:
debe
estar

compuesto

por:

s -> proporcionar signo (+ o -)


e ->representacin exponencial.
9 -> numero entre 0 y 9.
0 -> ceros de relleno a la izquierda que deben aparecer.
. -> punto decimal.
Ejemplo:
9.9
s9.9
s9.9e
09.99

Formato

->
->
->
->

1.0
+1.0
+1.0E+00
01.00
string:

compuesto

por:

* -> cualquier cadena


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

Formato

hexadecimal:

f -> carcter hexadecimal.


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

77

Aprende WinCC

Apply on full: Determina si el valor introducido se da por validado cuando se


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

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

78

Aprende WinCC

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

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

79

Aprende WinCC

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

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

80

Aprende WinCC

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

81

Aprende WinCC

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

82

Aprende WinCC

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

83

Aprende WinCC

LINEAL

LOGARIT.

NEG. LOGARIT.

AUTOMATIC TANGENT

CUADRATIC

CUBIC

Zero point: Lugar donde se encuentra el punto cero en la escala.


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

Aprende WinCC

Limits:

Limit Marker: Marca de lmite que aparece a la izquierda de la barra indicndonos


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

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

Aprende WinCC

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

86

Aprende WinCC

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

Picture:

Picture: Imagen actual a representar.


Picture referenced: Indica si se debe almacenar en el objeto la imagen o solo la
referencia a la misma, para que al cambiar esta en el disco duro, cambie tambin en
el objeto.
Picture transparent color: Color que se considera transparente en la imagen.
Picture transparent color on: Activar el color transparente, con lo que todos los
pixels de dicho color sern reemplazados por la imagen que se encuentre por debajo
del objeto.
Los formatos que soporta el objeto son:
Bmp
Emf
Wmf
Dib.

Cuando se selecciona una imagen, esta se copia automticamente en el subdirectorio


GraCS de nuestro proyecto, por lo que una vez la seleccionemos en algn objeto estar
disponible para todos los dems que realicemos.

87

Aprende WinCC

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


siguiente.

88

Aprende WinCC

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

Existen dos posibilidades a la hora de realizar la animacin:


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

89

Aprende WinCC

Algunas propiedades interesantes de este objeto son tambin:

90

Aprende WinCC

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

Output/Input:

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

Asignement: Asignacin de los textos a los diferentes valores numricos.


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

Aprende WinCC

92

Aprende WinCC

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

El campo text es el texto que aparece sobre el botn.


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

93

Aprende WinCC

Password es el campo en el que indicamos el nivel de autorizacin requerido para


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

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

94

Aprende WinCC

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

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

95

Aprende WinCC

Index: Indice actual dentro del array de cajas de control.


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

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

96

Aprende WinCC

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

97

Aprende WinCC

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

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

Aprende WinCC

estando activado este parmetro. En caso contrario, se incrementa el valor en una


unidad cada vez que se pinche en la barra de desplazamiento.
Operation steps: incrementos en que aumenta o disminuye la variable de proceso
cada vez que nos desplazamos por la barra.

Podemos asignar tambin colores a la barra y a los botones de mximo y mnimo


de manera individualizada, as como al fondo con respecto a lo que lleva y lo que queda
hasta el mximo.

99

Aprende WinCC

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

Las opciones ms interesantes son:


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

100

Aprende WinCC

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

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

101

Aprende WinCC

Exit WinCC runtime: Sale de la runtime de WinCC, pero no del desarrollo de


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

102

Aprende WinCC

Start another aplication: Arranca otra aplicacin que deseemos ejecutar.


Cdigo: ProgramExecute("C:\\Archivos de programa\\Microsoft
Office\\Office\\EXCEL.EXE");

Standard Dinamics:

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

Es importante tener en cuenta que nicamente se copian variables de tipo word,


no apareciendo la posibilidad de copiar las de otro tipo. Cuando sea necesario copiar
una variable en otra, es mejor realizarlo a mano en C.

103

Aprende WinCC

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

104

Aprende WinCC

Make a property dinamic: dinamizar una propiedad.


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

105

Aprende WinCC

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

106

Aprende WinCC

El resultado es el siguiente:

Display WinCC dialog: mostrar una ventana de dilogo ya configurada


anteriormente. Nos crea el cdigo necesario para que al presionar sobre el objeto,
aparezca la ventana indicada.

107

Aprende WinCC

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

108

Aprende WinCC

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

La representacin de una asignacin directa a una variable se realiza con una


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

Dinamizacin mediante cdigo C


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

La representacin de su asignacin se realiza por un rayo verde.


Dinamizacin indirecta de una propiedad
109

Aprende WinCC

Adems de poder dinamizar una propiedad asignndole un valor, ya sea a travs


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

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

110

Aprende WinCC

Cuando se realiza un direct connection a un evento queda indicado mediante un


rayo azul:

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

Sin embargo, no siempre la programacin en C que realicemos ser correcta.


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

111

Aprende WinCC

C
Caappttuulloo 4..

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

112

Aprende WinCC

Como bloques de usuario:

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

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

Ya estamos en disposicin de definir nuestras primeras alarmas. Las alarmas deben


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

Aprende WinCC

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

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

Aprende WinCC

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

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

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

Ya hemos finalizado con el Alarm Logging. Activamos la parte de runtime de alarmas


de nuestro equipo y ya estamos en disposicin de ir al Graphic Designer.

115

Aprende WinCC

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

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


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

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

Estos botones de la biblioteca ya poseen las siguientes funciones asociadas (que


podramos asignar a cualquier otro botn para conseguirlas):
OpenPrevPicture();
OpenHomePicture();
OpenNextPicture();
Estas funciones se encuentran en el siguiente subdirectorio de funciones c:

116

Aprende WinCC

Ya podemos por lo menos ir a larmas.pdl y volver a start.pdl. Vamos adefinir la ventana


de alarmas. Abrimos alarmas.pdl e introducimos un objeto de tipo

La ventana tendr el siguiente aspecto:

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

Aprende WinCC

variable alarmas, con lo que en realidad estaremos generando y haciendo desaparecer


nuestras tres alarmas anteriormente creadas a voluntad desde esta pantalla.

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

Repetimos la operacin para los otros 5 botones y ya estamos en disposicin de hacer


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

118

Aprende WinCC

Si le pones titulo a la ventana de alarmas el WinCC la hace automticamente


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

119

Aprende WinCC

En la siguiente solapa definiremos la seleccin de la alarma por fila, y un


desplazamiento automtico para que acuda a la ltima alarma cuando no nos quepan
en pantalla.

La barra de herramientas no poseer todos los botones. Veamos los no deseados y el


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

120

Aprende WinCC

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

Ya podemos comprobar nuestra ventana de alarmas en el runtime.

121

Aprende WinCC

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

Esta ventana de alarmas posee las siguientes propiedades:


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

9 No mostramos ni barra de herramientas, ni barra de estado.


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

122

Aprende WinCC

Si lo ejecutamos y activamos alguna alarma comprobamos que falta algo: como


acusarlas desde la propia bottom.pdl. Tenemos que ir a acusarlas a alarmas.pdl.
Debemos pues de poner un botn como muestra la figura en bottom que nos permita
acusar las alarmas actuales desde cualquier pantalla.

A la ventana de alarmas de bottom.pdl la nombraremos como


VENTANA_ALARMAS_ACTUALES. Hecho esto deberemos de asociar el
siguiente cdigo al botn de acuse de alarmas:
AXC_OnBtnSinglAckn(lpszPictureName,"VENTANA_ALARMAS_ACTUALES");

Ya podemos comprobar como queda en nuestro proyecto la nueva ventana de


alarmas en la parte inferior de nuestras ventanas.

123

Aprende WinCC

Un indicador de nueva alarma.


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

En la propiedad del objeto visualizacin asociamnos la variable booleana.

Tambin activamos la opcin de parpadeo con velocidad media para que


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

124

Aprende WinCC

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

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

125

Aprende WinCC

Imprimir las alarmas en papel.


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

Si editamos la seleccin podremos seleccionar tanto los bloques que compondrn


nuestra lnea de alarmas como la seleccin de la clase de alarmas a mostrar.

126

Aprende WinCC

Ya tenemos nuestro Report. Necesitamos ahora realizar una nueva orden de


impresin, como la siguiente:

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

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

Ya estamos en disposicin de llamar a estos Report desde dos botones que


colocaremos sobre la ventana de alarmas de alarmas.pdl.

127

Aprende WinCC

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


RPTJobPreview("ORDEN_ALARMAS_ACTUALES");

Mientras que el del botn de histrico ser el siguiente:


RPTJobPreview("ORDEN_HISTORICO_ALARMAS");

El resultado final lo podemos apreciar en la imagen, en la que estamos


visualizando el Report del histrico de alarmas.

128

Aprende WinCC

Filtrados de seleccin de alarmas.


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

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

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

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

Aprende WinCC

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

130

Aprende WinCC

Hacer sonar la alarma por los altavoces.


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

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

Aprende WinCC

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

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

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

// variable del nmero de alarma

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

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

132

Aprende WinCC

Controlar las alarmas desde Access.


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

Hay dos tablas que nos interesan:


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

133

Aprende WinCC

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

134

Aprende WinCC

Alarmas internas del sistema.


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

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

Ya hemos finalizado en el Alarm Logging. Vamos a editar la pdl de alarmas que


realizamos anteriormente para poder observar dichas alarmas cuando se produzcan.
Observar que las alarmas del sistema de WinCC son sin acuse y se almacenan en el
tambor de alarmas.
135

Aprende WinCC

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

El botn amarillo se denominar BOTON_ALARMAS, mientras que el gris


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

Observemos que primeramente hemos realizado un filtro SQL a la ventana de alarmas


(la sentencia SQL contenida en la variable cadena la hemos obtenido previamente en el
runtime realizando la seleccin de la clase sin acuse como muestra la figura inferior.

136

Aprende WinCC

El cdigo para el botn BOTON_ALARMAS ser el siguiente:


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

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

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

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

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

137

Aprende WinCC

C
Caappttuulloo 5

TTaagg LLooggggiinngg..

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


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

138

Aprende WinCC

Propiedades del proyecto


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

Exportar variables en formato Dbase III


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

Aprende WinCC

Observar que el campo fecha, en realidad es 1999-01-02 y 19:40:34:990, es


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

140

Aprende WinCC

Tiempos de adquisicin de valores


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

Los predefinidos aparecen en la figura, pero si deseamos uno nuevo, solo


necesitamos rellenar la pantalla de nuevo timer, o modificar un o existente.

En la imagen se puede ver un nuevo temporizador que actuar cada 3 segundos.


Las opciones son:
141

Aprende WinCC

Que se dispare el temporizador solo entrar a WinCC, pese a que no le corresponda


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

142

Aprende WinCC

Crear archivos de valores en el disco duro

La opcin archives de la ventana del Tag Logging es la que se encarga de la


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

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

Aprende WinCC

sacarlos de nuevo de la base de datos. Este tipo de archivos es ideal para el


almacenamiento de grandes cantidades de datos que no requieran un
almacenamiento inferior al minuto.

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

144

Aprende WinCC

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

145

Aprende WinCC

Action during start/enabled: podemos definir una accin en C que se ejecutar


cada vez que se habilite la lectura y almacenamiento en el archivo.

En la solapa archive parameters, podemos definir:


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

Aprende WinCC

programacin para el almacenamiento de dichos valores en otro archivo. Si no


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

Adquirir variables de archivo


Propiedades de variables de archivo

Las variables que hemos definido en nuestro archivo, aparecen en la ventana


inferior en forma de tabla. Si presionamos el botn derecho sobre cada una de ellas
podemos editar sus propiedades particulares.

147

Aprende WinCC

Las propiedades de una variable almacenada dentro de un archivo son:


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

Este apartado es el ms importante de una variable de archivo, ya que determina


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

148

Aprende WinCC

Para solventar este problema se puede utilizar una funcin de telerruptor en el


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

149

Aprende WinCC

Variables Cyclic-Continous: Valores que deseamos guardar siempre en el


WinCC cada x tiempo.

150

Aprende WinCC

Variables Cyclic Selective: Valores que deseamos guardar en el WinCC solo


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

151

Aprende WinCC

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

En la solapa parameters podemos definir:


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

Aprende WinCC

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

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

153

Aprende WinCC

En display podemos definir:


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

154

Aprende WinCC

La ventana events nos permite configurar:


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

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

155

Aprende WinCC

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

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


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

Presettings de variables de archivo


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

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

Aprende WinCC

de valores, ni sumas. Podemos as su vez asignar un texto a el estado 0 y otro al 1


(p. Ej 0=parado y 1=arrancado) para una mayor claridad en la grfica.

157

Aprende WinCC

Compressed tag: Preconfiguracin para los valores comprimidos dentro de


archivos comprimidos. Las caractersticas de los mismos difieren ligeramente de los
archivos normales (ver imagen inferior).

158

Aprende WinCC

Archivos comprimidos.

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

159

Aprende WinCC

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

Propiedades de la ventana de tendencias


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

160

Aprende WinCC

Las

propiedades

de

general

information

son:

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

Aprende WinCC

162

Aprende WinCC

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

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

163

Aprende WinCC

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

Botones de la barra de herramientas: podemos definir que botonos debern


aparecer en la barra de herramientas, as como la tecla de acceso directo que se les
asigna a cada uno de ellos.

164

Aprende WinCC

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

165

Aprende WinCC

En esta solapa configuraremos el eje Y de cada curva. Podemos definir:


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

166

Aprende WinCC

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


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

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


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

167

Aprende WinCC

Con respecto a la unin de los valores en la curva, existen las siguientes


posibilidades:

Stepped trend: mediante escalones cuadrados que unen nuestros puntos.

Show only dots: une los puntos con lneas discontinuas.

Connect dots linearly: Conecta los puntos mediante lneas.

168

Aprende WinCC

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

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

169

Aprende WinCC

Adicin y borrado de curvas

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

Name of the template: Nombre identificativo de la ventana de curvas.


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

Aprende WinCC

interesante desactivar esta opcin y que no pierda tiempo leyndolos. Unicamente


cuando rebobinemos marcha atrs en el histrico, leer los datos del disco duro.
Font: Fuente de los textos de la escala.
Color: Color del fondo de la grfica.

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

Las opciones posibles son:


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

Persistentes en el runtime: seleccionando esta opcin las modificaciones


que realice el usuario se mantendrn siempre que no desactive el WinCC.
Cuando desactive la runtime de WinCC, o apague el ordenador y lo encienda
de nuevo, restablecer la configuracin original.
171

Aprende WinCC

Persistentes en el Runtime y el CS: seleccionando esta opcin las


modificaciones que realice el usuario sern permanentes.

Primer dato: si la grfica est detenida, se desplaza al primer elemento del


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

Mostrar curvas: mediante esta opcin podemos seleccionar que curvas


deseamos observar en la ventana La ventana de dilogo aparece abajo indicada..

172

Aprende WinCC

Seleccionar el rango de tiempos: con esta opcin se puede seleccionar el rango


de tiempos para cada una de las curvas de la ventana.

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

173

Aprende WinCC

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

174

Aprende WinCC

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

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

175

Aprende WinCC

176

Aprende WinCC

Con respecto a la barra de herramientas, sus posibilidades y parametrizacin son


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

177

Aprende WinCC

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

En el cronograma se puede observar como frente a una adquisicin de un valor de


proceso, se est almacenando la media de los valores adquiridos durante el periodo de
muestreo, o el valor instantneo en el mismo instante que se cumple el periodo de
archivado.

178

Aprende WinCC

En este primer apartado vamos a trabajar con grficas continuas, realizando


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

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

179

Aprende WinCC

El cdigo que asignaremos al botn de bottom.pdl ser el siguiente:


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

Mientras que el cdigo que asociaremos al primero botn de graficas.pdl ser el


siguiente:
OpenPicture("GRAFICA_CONTINUA.PDL");

Ahora vamos a copiar start.pdl y renombrarla como grafica_continua.pdl.


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

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

180

Aprende WinCC

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

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

181

Aprende WinCC

En nuestro ejemplo de este libro, vamos a seleccionar 1 segundo de adquisicin y 1


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

Ya disponemos de nuestra base de datos. Deberemos ahora de volver al Graphic


Designer para trabajar con dicha base a travs de nuestra ventana de curvas. Para ello,
abrimos de nuevo la pdl grafica_continua.pdl, e insertamos el objeto online trend.

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

182

Aprende WinCC

A continuacin desactivamos el ttulo de la ventana. Esto es as debido a que en caso


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

183

Aprende WinCC

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

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

184

Aprende WinCC

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

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


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

Esto nos permitir arrancar el simulador desde la runtime de WinCC. Al arrancarlo


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

Aprende WinCC

El resultado debera de parecerse al de la figura:

186

Aprende WinCC

Juntar y separar curvas.


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

Dicho botn se denominar BOTON_SEPARAR y poseer el siguiente cdigo:


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

//Tipo de retorno :BOOL


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

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

Veamos que hace el cdigo anterior:


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

187

Aprende WinCC

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

188

Aprende WinCC

Mostrar la gua por programacin.


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

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


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

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

189

Aprende WinCC

190

Aprende WinCC

Mostrar u ocultar curvas por programacin C.


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

Es importante observar como colocamos el indice de la grafica a 0 para ocultar la curva


1. Tambin cambiamos el texto del botn comovenimos haciendo en los anteriores
ejemplos.
Para el botn segundo el cdigo sera:
BOOL valor;
SetPropWord(lpszPictureName,"GRAFICA","Index",1);
//Tipo de retorno :BOOL
valor=GetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible"); //Tipo de retorno :BOOL
if (valor==FALSE)
{
SetPropBOOL(lpszPictureName,"GRAFICA","ItemVisible",TRUE);
//Tipo de retorno :BOOL

SetPropChar(lpszPictureName,"BOTON_MOSTRAR2","Text","OCULTAR CURVA
2");

//Tipo de retorno :BOOL

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

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

191

Aprende WinCC

Imprimir grficas mediante Reports.


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

En formato->geometra->orientacin seleccionaremos landscape (apaisado).


En la parte dinmica de nuestro Report introduciremos un objeto de tipo metaarchivo
dinmico, con las siguientes propiedades:

A continuacin editaremos el intervalo de tiempo, seleccionando el que nos convenga.


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

Aprende WinCC

ejemplo, la grfica de la evolucin de la semana pasada) no podr utilizar este mtodo


teniendo que recurrir al expuesto en el siguiente captulo.
En nuestro ejemplo vamos a mostrar los ltimos 10 minutos de evolucin, pero siempre
a partir de la fecha actual del pc hacia atrs.

En seleccin de variables seleccionaremos nuestras curvas.

Y por ltimo en formato seleccionaremos ejes y comunes.

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

193

Aprende WinCC

Ya estamos finalizando. Nos queda volver al Graphic Designer y en nuestra pdl de


grficas crear un botn, denominado IMPRIMIR, que posea el siguiente cdigo:
RPTJobPreview("ORDEN_CURVA_CONTINUA");

//Tipo de retorno :BOOL

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

194

Aprende WinCC

Imprimir grficas con hardcopy.

El truco est en imprimir la pantalla, pero modificndola antes de imprimirla


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

Estudiemos el cdigo. Primeramente ocultamos la ventana top y bottom.


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

195

Aprende WinCC

196

Aprende WinCC

Control sobre la barra de herramientas de las grficas.


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

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

197

Aprende WinCC

Cambiar de forma de representacin de grfica.


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

Mostrar solo puntos:

Unir linealmente los puntos:

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

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

198

Aprende WinCC

Por lo tanto,  a nicamente tendremos que colocarnos varios botones, que


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

199

Aprende WinCC

Control de grfica con botones externos.


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

No es necesario que se vea, y en realidad nosotros no vamos a mostrarlo, ya que


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

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

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

Hacer un zoom a una parte de la grfica.


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

200

Aprende WinCC

Ir al ltimo valor de la grfica.


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

Avanzar hacia adelante en la grfica.


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

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

Avanzar un poco hacia adelante en la grfica.


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

Retroceder un poco hacia atrs en la grfica.


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

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

201

Aprende WinCC

Archivo acclico de valores.


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

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

202

Aprende WinCC

En nuestro ejemplo, para poder gobernar fcilmente la variable, vamos a crear


una variable interna de tipo bool, que denominaremos ACICLICA en WinCC. Abrimos
el Global Script, y creamos una nueva funcin de proyecto, que denominaremos
ACICLICA, y que tiene el siguiente aspecto:
BOOL ACICLICA()
{
BOOL valor;
valor=GetTagBit("ACICLICA"); //Return - Type :BOOL
return(valor);
}

La funcin lo nico que nos hace es devolvernos un valor booleano en funcin


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

203

Aprende WinCC

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


de realizar.

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


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

204

Aprende WinCC

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

Nos queda crear un botn en el men GRAFICAS.PDL que nos acceda a


GRAFICA_ACICLICA.PDL como muestra la figura:

205

Aprende WinCC

Archivado ciclo selectivo.


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

Un ejemplo de este tipo de almacenamiento sera el caso de una prensa, que se


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

Aprende WinCC

return(valor);
}

Y la funcin de parada la siguiente:


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

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

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

Como anteriormente, con el Graphic Designer abrimos la pdl grafica_ciclica.pdl y la


renombramos como grafica_selectiva.pdl. Vamos a colocar un botn que nos active la
variable SELECTIVA definida anterirmente.
207

Aprende WinCC

El cdigo asociado a dicho botn ser el siguiente:


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

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

208

Aprende WinCC

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

209

Aprende WinCC

Almacenando histricos de evolucin.


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

A continuacin realizaremos la asignacin de nuestros valores del fichero a


nuestro histrico. Esto lo conseguiremos seleccionando con el botn derecho del ratn
sobre nuestro fichero comprimido->variable de seleccin.

En las propiedades de nuestro fichero comprimido podemos especificar como debe de


agrupar los valores a la hora de comprimirlos (cada minuto, cada hora, cada da).
210

Aprende WinCC

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

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

211

Aprende WinCC

Exportacin de archivos a Access o Excel.


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

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

212

Aprende WinCC

Exportacin de datos via consulta Sql.


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

Lgicamente vamos a estudiar paso por paso la composicin de la cadena de


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

213

Aprende WinCC

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

214

Aprende WinCC

Creamos una DB10 que posee la siguiente estructura:

Veamos que significado tienen cada uno de los parmetros:


Tipo_de_cabecera:
Tipo de
cabecera
0
1
8
9

Tiempo de referencia

AR_ID Subnumero

Cabecera sin tiempo de referencia


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

215

Cabecera sin AR_ID subnumero


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

Aprende WinCC

C
Caappttuulloo 6

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

Layout: Un layout es el propio documento que queremos imprimir. En layout


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

Aprende WinCC

Layout
Caractersticas generales

El WinCC, en el momento de generar el proyecto por primera vez, copia en el


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

217

Aprende WinCC

Todos los layouts poseen la extensin rpl y se encuentran en el subdirectorio prt


de nuestro proyecto, por lo que pasar layouts de un proyecto a otro es copiar dicho
fichero.
El editor de layouts tiene el aspecto que muestra la figura. Si generamos un
nuevo layout, podemos observar que nuestro documento se divide en dos partes, una de
color gris y otra central de blanco. La parte gris corresponde a la cabecera y pie de
pgina del documento, que puede contener campos de la base de datos, pero que ser
comn a todas las hojas que compongan el layout. La parte central ser donde se
almacenen los datos del Report.
Partes de un layout.
Un layout se divide en:

pgina de cubierta (cover-sheet)


contenido del layout o Report.
Pgina de contraportada (final page).
Las partes del rea de un layout son:

rea no impimible.
rea imprimible (donde se encuentra la parte esttica del documento).
Cuerpo del documento (donde se encuentra la parte dinmica del Report).

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

218

Aprende WinCC

Pginas de portada y contraportada.

La pgina de portada de un layout debe atender a las siguientes reglas:


nicamente puede ocupar una pgina.
Pese a que est permitidos campos dinmicos en la misma, no son aconsejables, ya
que en determinadas ocasiones pueden presentarse cercenados.

Propiedades del layout


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

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

Aprende WinCC

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

220

Aprende WinCC

Barra de herramientas del layout


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

Objetos del layout


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

Objetos estticos: su valor es el mismo independientemente del momento en


que se imprima el layout (p. Ej. El nombre de nuestra empresa, la persona que lo disea,
la instalacin, etc).

221

Aprende WinCC

Objetos dinmicos: su valor est en funcin del momento en que se imprima el


documento, ya que es entonces cuando toman el valor de la base de datos.

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

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

222

Aprende WinCC

Una grfica: deberemos seleccionar Trend.

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

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

223

Aprende WinCC

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

Format: fuente de los textos que componen la grfica.

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

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

224

Aprende WinCC

En las propiedades de la conexin podemos determinar la seleccin de los datos


a mostrar en la tabla, seleccionando el archivo origen de dichos datos.
De esta manera se pueden realizar tablas de datos por impresora, listados de
alarmas, y en general cualquier representacin de datos durante el tiempo o listas
almacenadas en la base de datos, ya sea del desarrollo CS o de runtime RT.
Continuando

con

los

objetos

que

podemos

utilizar

tenemos:

Dynamic text: Si disponemos un texto que puede cambiar de manera dinmica en


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

System Objects: Son campos que rellenar el WinCC de su propio sistema, no de la


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

Aprende WinCC

Line printer layout


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

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

226

Aprende WinCC

227

Aprende WinCC

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

En la ventana podemos observar el nombre del trabajo o job, y el layout al que


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

228

Aprende WinCC

Name: nombre del trabajo.


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

Page range: rango de pginas a imprimir del trabajo.


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

229

Aprende WinCC

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

Los iconos de un job indican si est configurado para disparase a travs de un


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

230

Aprende WinCC

Diagnosis de la impresin de Reports.


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

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

Job detail view.


Muestra el estado actual del Report que seleccionemos en el desplegable.

231

Aprende WinCC

232

Aprende WinCC

C
Caappttuulloo 7

G
Glloobbaall S
Sccrriipptt..

El Global Script es un compilador de C incorporado con el WinCC, que nos


permite realizar compilaciones de cdigo objeto (con un formato un tanto especial, ya
que no lo deja en obj) sin necesidad de salir del propio entorno.
Este cdigo generado puede ser aadido directamente al propio runtime y
generarse cada cierto tiempo, o posteriormente asociarse a un evento de un objeto. Si
desde el editor del Graphic Designer seleccionamos realizar una accin en C,
automticamente se nos activa el Global Script para permitirnos editar dicha accin en
el compilador de C.
Tipos de funciones en Global Script
Dentro del compilador de Global Script podemos observar que existen cuatro
tipos de clases o categoras de funciones:

Project functions: funciones de proyecto. Son aquellas funciones que deben ser
llamadas desde otras partes del programa para devolver valores despus de realizar
alguna operacin en C. Anteriormente vimos como arrancbamos una grfica y la
parbamos con dos funciones de proyecto. Las funciones de proyecto quedan
almacenadas automticamente en el subdirectorio Library de nuestro proyecto, con
la extensin fct. Para traerse una funcin de proyecto de un proyecto a otro
deberemos de copiar dicho archivo en dicho subdirectorio del proyecto fuente al
destino.
233

Aprende WinCC

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

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

A continuacin asociaremos en el evento action mouse de un botn el cdigo


siguiente, el cual realiza la llamada a la Project Function generada por nosotros,
tomando dos parmetros de entrada y devolviendo un resultado.

234

Aprende WinCC

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

//Return-Type :long int

//Return-Type :BOOL

Cualquier Project function que definamos en nuestro proyecto se almacenar en


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

235

Aprende WinCC

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

Aprende WinCC

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

237

Aprende WinCC

Funciones en C.
Partes de las acciones.

Una accin o funcin de C se divide en 4 partes:


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

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

Declaracin de constantes para pictures:


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

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

Cdigo C de nuestra funcin:


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

Retorno de la funcin:
Return pepe;

Printf.
La instruccin printf posee la siguiente estructura:
238

Aprende WinCC

printf(El valor vale %d pesetas,valor)

Los parmetros de variables a utilizar son:


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

239

Aprende WinCC

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

Value

Range

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

-2 147 483 648 to 2 147 483 647


0 to 4 294 967 295
-32 768 to 32 767
0 to 65 535
-2 147 483 648 to 2 147 483 647
0 to 4 294 967 295
-128 to 127 (all ASCII characters)
0 to 255 (all ASCII characters)
-10 ^38 to 0 ^38
-10 ^308 to 0 ^308

Operadores matemticos en C.
Los operadores que podemos utilizar para nuestras operaciones matemticas y
lgicas son los siguiente:
Operaciones
+
*
/
%
++
--

matemticas:
Suma
Resta
Multiplicacion
Divisin
Modulo (resto de una divisin)
Incrementar
Decrementar

valor=uno+dos
valor=uno-dos
valor=uno*dos
valor=uno/dos
valor=uno%dos
++valor
--valor

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

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

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

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

Operaciones con bits


&
|
^
~
<<
>>
Operaciones lgicas:
>
>=
==
!=
<=

240

Aprende WinCC

<
&&
||
!

Menor que
AND lgica
OR lgica
inversion lgica

241

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

Aprende WinCC

Disparo de acciones

El disparo de acciones se realiza seleccionando la accin y en el men Edit>Info.


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

Curiosamente, si no se aprieta el botn de aplicar antes de salir, aunque se


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

242

Aprende WinCC

243

Aprende WinCC

Cclico: La accin se realizar cada x tiempo de manera automtica en el PC a partir


de que arranque la runtime y hasta que pare.

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

244

Aprende WinCC

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

Compilacin de funciones externas a travs de DLLs.


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

Esta declaracin indica al precompilador de C que aada a su biblioteca de


funciones las incluidas en NOMBRE_DE_CABECERA.h, que se encuentran en
NOMBRE_DE_LA_DLL.DLL.

Definicin de variables globales y variables locales


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

Aprende WinCC

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

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


declaracin de la funcin:
int variable=0;
void subrutina()
{

si estamos declarndola en una propiedad o evento, deberemos de


antecederla de la instruccin extern:
void OnProertyChange()
{
extern int variable;
a=0;

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

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

246

Aprende WinCC

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

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


recordar que si no se activa la parte de runtime de Global Script no se ejecutar
lgicamente este objeto.

Global Script diagnostic.


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

247

Aprende WinCC

Funciones standard.
A continuacin repasaremos las funciones standard que acompaan a WinCC.
Standard Alarm.
Las funciones disponibles para el manejo de la ventana de alarmas son las
siguientes:

AXC_OnBtnArcLong: Activar la ventana de archivo continuo de alarmas.


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

248

Aprende WinCC

Standard Graphics.

void AcknowledgeMessage(DWORD MsgNr): Reconoce un mensaje de sistema


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

249

Aprende WinCC

Standard Reports.

void ReportJob(LPSTR lpJobName, LPSTR lpMethodName): Ejecuta un


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

Siendo:

*PCMN_ERROR;

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


Windows.
SzErrorText: cadena de texto que contiene el mensaje de error
devuelto por el sistema.

250

Aprende WinCC

C
Caappttuulloo 8

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

251

Aprende WinCC

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

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

252

Aprende WinCC

Cmo cambiar de idioma desde el Graphic Designer?


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

253

Aprende WinCC

C
Caappttuulloo 9

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

En los sistemas de privilegios por nivel, si un usuario dispone de nivel 3, podr


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

Aprende WinCC

Usuarios.
Cmo crear un nuevo grupo de usuarios?

Vamos a crear un grupo de usuarios que se llame operadores. Para ello,


presionando sobre el grupo de administracin el botn derecho, seleccionaremos add
group. Introducimos el nombre del grupo y presionando de nuevo sobre el grupo
creado, le aadimos dos usuarios.

La caja de dilogo que configura un nuevo usuario nos pide:


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

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


mximo de usuarios es de 128.

255

Aprende WinCC

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

Cmo borrar una nueva capacidad?


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

256

Aprende WinCC

Cmo cambiar el password de un usuario?


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

Si no conocemos su password, deberemos necesariamente darlo de baja.


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

Si la casilla es distinta de cero, pasados dichos minutos automticamente el


sistema desconecta al usuario, por lo que si quiere utilizar de nuevo el sistema WinCC
con sus privilegios deber de volver a darse de alta en el mismo. Este tiempo es
independiente de si el usuario est utilizando el sistema o no.
257

Aprende WinCC

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

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

Aprende WinCC

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

Como activar odesactivar a un usuario mediante C.


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

Siendo 1 la tecla que activa la visualizacin del cuadro de dilogo de activacin e


usuarios.
Para dar de baja a un usuario el cdigo es el siguiente:
#pragma code(USEADMIN.DLL)
#include PWRT_API.H
#pragma code()
PWRTLogout();

259

Aprende WinCC

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

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

260

Aprende WinCC

Asignar un valor de usuario.


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

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

261

Aprende WinCC

A partir de su activacin en el User Administrator disponemos de la opcin


chipcard para trabajar con el lector/escritor.
Escribir en una tarjeta desde la chipcard.
La primera posibilidad de que disponemos es la escritura en una tarjeta que
dispongamos dentro de la lectora/escritora.

Lo nico que tenddremos que seleccionar es el usuario a grabar en la tarjeta. La


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

Activacin mediante una chipcard durante el runtime.


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

262

También podría gustarte