Version 5.1
CON EL GUAPERAS
INDICE
.
Caappííttuulloo 1
C
IInnttrroodduucccciióónn aa W
WiinnC
CCC..
Notaciones.
Icono Significado
Indica un click con el botón izquierdo del ratón.
Indica un click con el botón derecho del ratón.
Indica doble-click con el botón izquierdo del ratón.
Indica una entrada desde teclado.
1
Aprende WinCC
Requisitos.
Mínimo Recomendado
CPU Intel Pentium II Intel Pentium III
400 MHz > 400 MHz
Memoria principal/ 256 MBytes (para servidores) > 256 MBytes
RAM
128 MBytes (para clientes)
RAM en caso de 32 MBytes adicionales > 32 MBytes adicionales
configuración online
Disco duro 650 MBytes de espacio libre > 650 MBytes de
(sin datos del proyecto) de memoria espacio libre de
memoria
Memoria de Memoria de trabajo doble > Memoria de trabajo
trabajo virtual doble
Memoria de trabajo 100 MBytes > 100 MBytes
para spooler de
impresoras Windows
Gráficos SVGA (4 MBytes) XGA (8 MBytes)
Resolución 800 * 600 1024 * 768
2
Aprende WinCC
Licencias en WinCC.
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:08 InitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | NameForMessageBox = | Name of License =
A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags |
10/06/2001 11:31:51 ExitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | Name of License = A9WRC330 | Text of
License = SIK/SIMATIC WINCC RC 1024 PowerTags |
10/06/2001 11:32:30 InitLicense CS | AppName = DMAso:Mcp | CycleCheck = yes | NameForMessageBox = | Name of License =
A9WRC330 | Text of License = SIK/SIMATIC WINCC RC 1024 PowerTags |
3
Aprende WinCC
Entrar a WinCC.
4
Aprende WinCC
Salir de WinCC.
5
Aprende WinCC
Cuando se abre WinCC sin que anteriormente hubiera abierto otro proyecto,
aparece el siguiente cuadro de diálogo, indicándonos las siguientes opciones:
6
Aprende WinCC
A partir de ahora, para poder trasladar o copiar el proyecto a otro ordenador, bastará
con copiar este subdirectorio completo, normalmente comprimiéndolo con Winzip o
Winrar en discos previamente (herramientas no suministradas con el software). Pero
hay un dato importante: el proyecto está configurado para un ordenador en concreto,
cuyo nombre indicativo aparece en el apartado Equipo->Propiedades. Si el nuevo
ordenador no posee el mismo nombre, al intentar arrancar el runtime, aparecerá el
siguiente mensaje:
7
Aprende WinCC
Como hemos dicho, se supone que sabes de WinCC, por lo que te lo diré en una
sola frase: “créate un proyecto, la pdl inicial que se llame start.pdl , que tenga un
tamaño de 1024x768, la guardas, te haces otra que llamas top.pdl, de tamaño 1024x100,
y otra que se llame bottom.pdl, del mismo tamaño”.
Bien, teniendo esto claro, abrimos start.pdl, y en la parte superior colocamos una
ventana de imagen de tamaño 1024x100, y seleccionamos en ventana de imagen-
>otros->nombre de imagen: top.pdl. También activamos aquí bordes: si.
8
Aprende WinCC
9
Aprende WinCC
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:
10
Aprende WinCC
SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);
11
Aprende WinCC
parámetro de la función SetPropBOOL un valor fijo, debe ser variable. Dicha variable
es el valor que devuelve la función GetParentPicture. Esta función devuelve el nombre
de la ventana en la que está contenida la ventana desde la que es llamada.
Ya sé que es lioso (me lo vas a contar a mí). Por eso, vamos por partes. Nosotros
estamos en un botón (el de salir), que está contenido en una pdl que se llama
bottom.pdl, que a su vez está contenida dentro de otra, que en este momento es
start.pdl, pero que más adelante vete tu a saber como se llama. La variable
lpszPictureName nos devuelve la ventana de bottom.pdl. Y como queremos la ventana
“padre” que contiene a la misma ponemos GetParentPicture(lpszPictureName), que nos
devolverá ahora mismo start, que es nuestra ventana en la que tenemos nuestro objeto
“ventana_salir”.
En este punto deberias de poder abrir en la runtime la ventana con el botón de
salir, y cerrarla con la x de la derecha de la ventana emergente.
Ahora nos queda darle funcionalidad a los botones de salir.pdl. Para ello
utilizamos los asistentes de WinCC.
12
Aprende WinCC
Les ponemos una salida de sesión automática, para que si no se desactivan ellos,
los desactive el sistema pasados 10 minutos.
Bien, hemos añadido un ususario, queda asignar el nivel de protección al botón
de salir de la ventana start.pdl . Observa al salir que el User Administrator realiza las
modificaciones en tiempo real, por lo que al salir no te pide grabar, ya que lo va
ehaciendo “sobre la marcha”. Vamos, que no hay que equivocarse (como el regedit, será
13
Aprende WinCC
Ahora ya no podrá salir de WinCC cualquiera, sino solo los que tengan el
permiso de salir. Pero vamos a definir también quien puede parar el WinCC y quien
solo apagar el ordenador o reiniciarlo.
Para ello en la pdl salir.pdl, a los dos primeros botones les asignamos el permiso
de parar el WinCC, mientras que a los dos siguientes el de apagar el pc.
Pero: ¿cómo se logan 1 los usuarios?. Hay dos maneras, una cutre salchichera y
otra guay y complicada. Vamos con la cutre. En el control center, pinchando con el
botón derecho sobre el nombre del proyecto, aparece la ventana en la que se puede
asignar una combinación de teclas a login (logarse) y otra a logoff (deslogarse)
Pero claro, se debe de recordar cual era esa combinación, y siempre aparece el
listo que quiere un botón para activar a los usuarios. Ya la hemos liado, pensarás (y
estás en lo cierto), ya que la otra va a través de C. Quita las asignaciones que acabamos
de hacer, que no vamos a hacerlo por ese camino, sino por el del botón. Nos
1
Logarse: darse de alta en un sistema protegido, introduciendo tu nombre y tu password.
14
Aprende WinCC
colocaremos un botón en la pdl bottom.pdl (recuerda, bottom será nuestra ventana para
los botones de funciones, mientras que top será nuestra ventana para los botones de
entrar a las diferentes partes en las que se muestra la instalación). El botón lo cogemos
de la biblioteca:
void login()
{
#pragma code("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
long usuario;
usuario=strcmp(GetTagCharWait("@CurrentUser"),"");
if(usuario)
{
PWRTLogout();
}
else
{
PWRTLogin('c');
}
Luego vamos al evento del botón que hemos puesto antes (la llave), y le
asociamos la función login();
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
15
Aprende WinCC
Con esta función te logas y deslogas con el mismo botón (ha sido fácil, eh?).
Es mejor hacerlo en una función de proyecto para poder reutilizar dicho código
en otros proyectos copiándonos simplemente el fichero login.fct que nos ha creado
dentro del subdirectorio library de nuestro proyecto.
Para acabar de rematar la faena, pondremos en bottom.pdl una I/O box de solo
lectura, que va asociada a la variable @current_user. Esta variable la genera le sistema
y es una cadena de texto que posee el texto del usuario que actualmente está logado.
Con ello podremos saber en todo momento si estamos activados en el sistema o no.
La cosa va cogiendo color. Pero nos falta un detalle. Nosotros estamos poniendo
los usuarios en el sistema desde el User Administrator, y quitamos, ponemos y
cambiamos passwords los que queremos y mas. Pero, ¿y cuando nos vayamos de la
instalación?. ¿quién podrá cambiar los passwords, o añadir un usuario?. Tenemos que
poner un segundo botón en la pantalla bottom.pdl. Ese botón nos accederá al User
Administrator. ¿Cómo?, fácil, así:
ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");
El texto que aparece en medio del botón solo lo puedes quitar si cambias e
idioma en el menu del Graphics Designer, en ver->idioma, a cualquiera, y vuelves a
español. Luego vas a la propiedad fuente->texto del botón (un fallo de WinCC, me
parece a mí).
16
Aprende WinCC
Por supuesto, a este botón (el de las dos cabecitas) deberemos de colocarle el
password “administrar usuarios”.
Ahora queremos que cuando pulsemos el botón de administrar usuarios nos abra
una ventana de menú en la que podamos seleccionar:
9 Administrar usuarios (lo de antes)
9 Ver el histórico de usuarios (para saber qué usuarios estaban logados en qué
momentos).
Para hacer esto podríamos abrir otra ventana y hacerla visible con el botón, pero es
mejor utilizar la ventana que hemos gastado anteriormente para salir, y en función de
porqué botón sea llamada nos muestre una pdl u otra (llamada a ventanas
parametrizables). Ya te has asustado, pero no tiene porqué, que vas a ver que es muy
fácil.
17
Aprende WinCC
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName","salir.PDL");
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","Salir de
WinCC");
SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);
Observa que lo que hacemos es decirle de manera dinámica que la picture a mostrar
es salir.pdl, que va a tener como título “salir de WinCC” y luego la hacemos visible.
Ahora en el botón de usuarios (el de las ods cabecitas), en el evento clicl de ratón,
escribimos el siguiente código:
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName","USUARIO
S.PDL");
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","Ventana
Usuarios");
SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);
Es lo mismo de antes, solo que esta vez llamamos a la pdl “usuarios.pdl”, con un
título llamado “usuarios” y posteriormente hacemos visible la ventana.
Pero, ¿quién es usuarios.pdl?. Tranquilo, que aún no la hemos hecho.
Es la pdl siguiente, también de 300x300:
ProgramExecute("c:\\SIEMENS\\WINCC\\BIN\\PASSCS.EXE");
18
Aprende WinCC
Vamos a dar por hecho que conoces como trabajar con alarmas en el WinCC.
Primeramente nos vamos al Alarm Loggin, y en bloques de sistema añadimos los
siguientes:
19
Aprende WinCC
Dentro de esta clase creamos un tipo de clase que llamamos usuario, y con el botón
derecho sobre la clase de aviso usuarios definimos los textos para cuando aparezca y
desaparezca la alarma:
Con el botón derecho sobre el tipo de clase usuario seleccionamos el color con
que queremos mostrar la línea de alarmas de logado y deslogado de usuarios.
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
#include "apdefap.h"
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
char usuario[40];
strcpy(usuario,GetTagChar("@CurrentUser"));
if (strlen(usuario)!=0)
{
SetTagChar("Usuario",usuario);
Sleep(1000);
SetTagBit("Login_Usuarios",TRUE);
}
else
{
SetTagBit("Login_Usuarios",FALSE);
}
return 1;
22
Aprende WinCC
Esta acción lo que hace es copiar el nombre del usuario actual (contenido dentro de
la variable interna @CurrentUser dentro de la variable interna usuario que hemos
definido previamente, y activar el bit interno Login_Usuarios.
Una de las cosas que te habrán extrañado al leer el código es porqué he definido la
función Sleep. Como sabes la función Sleep lo que hace es parar la ejecución del
programa durante los milisegundos que le pasemos como parámetro. Esta función es
necesaria debido a que si activamos inmediantamente el bit de alarma, el WinCC no
tiene tiempo a actualizar el valor de la variable usuario con el nuevo valor del usuario
que se está logando, por lo que aparecería vacío dicho campo al logarse, y relleno al
deslogarse. Es un problema de refresco interno de la base de datos de variables de
WinCC, el cual genera antes el evento de la alarma que el de refresco de la variable
usuario. Si no te ha quedado claro con esta explicación prueba mas tarde a quitar la
línea de Sleep y comprueba cual es su efecto.
Ya estamos acabando. Solo nos queda disparar esta acción con un disparo que
vendrá dado por el cambio de la variable @CurrentUser, o lo que es lo mismo, que se
active o desactive un usuario.
23
Aprende WinCC
Además deberemos de filtrar las alarmas en esta ventana para que únicamente
aparezcan las del tipo “usuarios”, ya que ahora mismo solo exite esta, pero más adelante
crearemos más alarmas, y no deseamos que nos aparezcan como si fuesen usuarios
logandose.
Ya podemos guardar la pdl. Nos queda hacer que se muestre dicha pdl al pulsar el
botón Registro de usuarios, que habíamos puesto en la pdl usuarios.pdl. La función en c
que asociaremos a dicho botón será la siguiente:
OpenPicture("REGISTRO_USUARIOS.PDL");
24
Aprende WinCC
Nos queda únicamente sacar por impresora un informe con los el histórico de
usuarios, igual que lo estamos sacando por pantalla. Para ello, nos vamos a ir al Report
Designer. En formato de página tenemos un Report que se llama @alrtuma.rpl, y que lo
editamos y grabamos como registro_usuarios.rpl.
Vamos a modificar la cabecera del mismo para que tenga el siguiente aspecto:
La parte dinámica del mismo la editamos, y modifcamos los bloques que deseamos
mostrar en el Report.
25
Aprende WinCC
RPTJobPreview("orden_registro_usuarios");
Solo nos queda activar la parte de runtime referida a la impresión y las alarmas
dentro de equipo en el explorador de WinCC:
26
Aprende WinCC
El resultado final al presionar el botón debe de ser algo como lo que muestra la
figura:
27
Aprende WinCC
Caappííttuulloo 2..
C
C
Coom
muunniiccaacciióónn ccoonn S
S77..
Modos de comunicación.
Insertamos el canal Simatic S7, y dentro del protocolo MPI, con el botón derecho,
seleccionamos una nueva conexión.
28
Aprende WinCC
Si volvemos a presionar con el botón derecho sobre el canal MPI podemos determinar
los parámetros del sistema del protocolo de comunicaciones.
29
Aprende WinCC
30
Aprende WinCC
También deberemos de ajustar el punto de acceso del perfil de WinCC para que sea a
través de nuestra tarjeta de comunicaciones.
Nuestra tarjeta de comunicaciones TCP del PC por supuesto deberá de poseer una
dirección y submáscara de red apropiada para que pueda encontrarse en el mismo nodo
de TCP que nuestro PLC (no podemos utilizar DHCP, sino que deberemos de
configurar una dirección fija de red). Para ello vamos en Windows 2000 a Inicio-
>Configuración->Conexiones de red y acceso telefónico y en las propiedades de nuestra
red de área local, seleccionamos el protocolo TCP/IP.
Editamos las propiedades del protocolo, y le asignamos una dirección compatible con
nuestra tarjeta del PLC.
31
Aprende WinCC
Una vez tengamos definidas nuestras dos tarjetas de TCP (la del PC y la del PLC),
podemos comprobar si efectivamente las tenemos bien configuradas realizando un ping
a la tarjeta del PLC, desde Inicio->Ejecutar y escribimos:
Ping 192.80.0.2 (para nuestra tarjeta de PLC del ejemplo)
y
Ping 192.80.0.1 (para nuestra tarjeta de PC del ejemplo)
La nueva conexión define tanto la dirección IP del PLC al que nos vamos a conectar,
como el puesto de la CPU dentro del bastidor del PLC para que la tarjeta TCP sepa
donde se encuentra y pueda suministrarle los datos (en nuestro caso el 400 tiene la CPU
en el slot 3).
32
Aprende WinCC
En parámetros del sistema del canal TCP/IP podemos seleccionar la tarjeta por la que
vamos a comunicar, en nuestro caso ya definida anteriormente en el perfil de WinCC
desde ajustar interface PG/PC. En esta ventana también podemos definir si las
peticiones de escritura poseen prioridad sobre las lecturas a la hora de comunicar con el
PLC.
Llegados a este punto ya tenemos definida la comunicación con la 443-1 del 400. Ya
podemos arrancar el runtime de nuestro proyecto y observar el estado de las
comunicaciones en el menu del WinCCExplorer Herramientas->Estado de las
conexiones.
33
Aprende WinCC
34
Aprende WinCC
Lo primero que nos interesa dentro del runtime es saber de una manera gráfica y visual
si tenemos comunicación con el PLC.
Para ello vamos a definir una variable, la MB0, que accede a dicha zona de memoria
dentro del PLC.
Vamos al Graphic Designer y abrimos la pdl bottom.pdl, y en la esquina inferior
izquierda colocamos un objeto de tipo rectángulo como muestra la figura:
35
Aprende WinCC
También Podemos hacer lo mismo, pero a través de textos, que nos indiquen si la
comunicación es correcta o no.
Para ello vamos a colocar un campo de E/S al lado del piloto anterior en bottom.pdl
como muestra la figura:
Las propiedades las definimos como muestra la figura inferior, teniendo en cuenta que
vamos a asignar un cuadro dinámico en el que vamos a definir los textos que deseamos
que aparezcan en función de que tengamos conexión (RUN) o no (STOP).
36
Aprende WinCC
De esta manera estamos obteniendo una indicación del estado de las comunicaciones,
pero a un nivel muy simple (sin indicarnos el tipo de error, y sin poder determinar
siquiera si el problema es de que tenemos la CPU en stop o que nos falla el cable de
comunicaciones). Podemos obtener una información mucho mas precisa utilizando un
objeto denominado WinCC Chanel Diagnosis Control, que se encuentra en controles del
Graphic Designer.
37
Aprende WinCC
Lo vamos a insertar en una pdl que haremos nueva. Para ello abrimos start.pdl y la
renombramos como “diagnosis_comunicaciones_pdl”. En esta nueva pdl, en la zona
central de la pantalla insertamos el objeto como muestra la figura:
Ahora tendremos que entrar a dicha pdl. Lo haremos con el evento clic del
rectángulo que colocamos anteriormente, de tal manera que cuando el operario pinche
sobre el indicador saltará automáticamente a una ventana de diagnosis más detallada,
38
Aprende WinCC
como es esta que acabamos de realizar. Para ello, colocaremos la siguiente sentencia en
el evento clic del raton del rectángulo indicador:
OpenPicture("DIAGNOSIS_COMUNICACIONES.PDL");
Ya podemos comprobar el resultado, que será algo como lo que muestra la figura:
En esta pantalla, pinchando con el botón derecho del ratón podemos obtener ayuda
online sobre la causa del error de comunicaciones. Mediante esta utilidad sí que es
posible distinguir entre cpu en stop y fallo de comunicaciones.
39
Aprende WinCC
Nos queda saber qué nos va a devolver en el puntero de doble palabra del estado
de las comunicaciones. En función del tipo de error de comunicaciones nos devolverá:
40
Aprende WinCC
#include "apdefap.h"
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
DWORD *estado;
estado=SysMalloc(sizeof(DWORD));
if(estado>0)
{
SetTagDWord("FALLO_COMUNICACIONES_EQUIPO_1",1); //Tipo de retorno :BOOL
}
else
{
SetTagDWord("FALLO_COMUNICACIONES_EQUIPO_1",0); //Tipo de retorno :BOOL
}
return 0;
}
Una veza tenemos compilada la acción, salimos del Global Script y activamos la
parte de golbal script runtime si no lo estuviese. Nos queda ir al alarm loggin para
definir las alarmas de comunicaciones.
41
Aprende WinCC
42
Aprende WinCC
También definimos los colores con los que debe de aparecer la alarma de
comunicaciones.
Definimos acto seguido una alarma con los siguientes parámetros:
43
Aprende WinCC
44
Aprende WinCC
En estos botones vamos a introducir un código que nos permita mostrar las dos
ventanas solapadas. En el botón de la izquierda, teclearemos:
SetPropBOOL(lpszPictureName,"ALARMAS_COMUNICACIONES","Visible",FALSE);
SetPropBOOL(lpszPictureName,"COMUNICACIONES","Visible",TRUE);
45
Aprende WinCC
46
Aprende WinCC
Caappííttuulloo 3
C
G
Grraapphhiiccss D
Deessiiggnneerr..
Características
Tips&Tricks
El editor Graphics Designer posee una opción de Tips&Tricks o ideas que nos
proporciona algunas sugerencias cada vez que entramos al mismo al respecto de alguna
funcionalidad del mismo.
47
Aprende WinCC
48
Aprende WinCC
49
Aprende WinCC
Todos los objetos poseen dentro del Graphics Designer varias características
comunes, incluyendo a la propia superficie en la que vamos a colocar los objetos
(picture).
• Customize object: podemos asociar una nueva propiedad a un grupo de objetos para
generar nuevas funcionalidades a las agrupaciones de los mismos. Ejemplos de ello
son los smart objects de la biblioteca de objetos.
• Group objects: cuando se selecciona más de un objeto se pueden agrupar, de manera
que conforman uno nuevo que posee las características de los dos pero tiene un
nuevo nombre. La mayoría de los objetos de la biblioteca son agrupaciones de
objetos más simples. Las agrupaciones se pueden desagrupar en cualquier momento.
• Linking: Cuando copiamos varios objetos, se copian también sus enlaces a
variables. Imaginemos que hacemos un I/O asignado a una variable y lo copiamos
10 veces. Entrando en la ventana linking podemos observar el resumen de las
propiedades que se encuentran dinamizadas y modificarlas rápidamente.
• Geometry:
• Picture Width: Ancho de la pantalla (en pixels).
• Picture Height: Alto de la pantalla (en pixels).
• Grid On: Activar la rejilla de puntos
• Grid Width: Ancho de la rejilla de puntos
• Grid Height: Alto de la rejilla de puntos
• Colors:
• Background Color: Color del fondo de la picture
• Fill Pattern Color: Color de la máscara de dibujado sobre el fondo de la picture.
• Grid color: Color de los puntos de la rejilla
51
Aprende WinCC
• Miscelaneous:
• Operator-Control Enabled: la picture se encuentra habilitada.
• User Level: Nivel de usuario al que le está permitido entrar en esta ventana.
Para conocer como realizar la asignación de niveles de usuario, vea capítulo
User Administrator.
52
Aprende WinCC
• Eventos Mouse:
o Mouse Action: Se ejecuta al presionar cualquier botón del ratón.
o Press Left: Se ejecuta al bajar el botón izquierdo del ratón.
o Release Left: Se ejecuta al levantar el botón izquierdo del ratón.
o Press Rigth: Se ejecuta al bajar el botón derecho del ratón.
o Release Rigth: Se ejecuta al levantar el botón derecho del ratón.
53
Aprende WinCC
• Eventos Keyboard:
• Press: Se ejecuta al presionar una tecla, siempre y cuando el foco activo sea
dicho objeto.
• Release: Se ejecuta al levantar la tecla presionada anteriormente.
• Eventos Focus: Se ejecuta cuando el objeto recibe o pierde el foco (la posibilidad
de actuarsobre el mismo desde el teclado).
• Eventos Miscelaneous:
• Objetc Change: Se ejecuta cada vez que cambia alguna propiedad del objeto.
• Open Picture: Se ejecuta al entrar al picture.
• Property topics:
• Se ejecutan cuando la propiedad seleccionada cambia en el objeto.
54
Aprende WinCC
55
Aprende WinCC
Nueva picture
Abrir picture
Guardar imagen
Visualizar rejilla
Biblioteca de objetos.
Biblioteca de objetos
La biblioteca de objetos es el lugar donde disponemos de imágenes pre-
configuradas que podemos utilizar en nuestras picture. Algunos de estos objetos en
realidad son agrupaciones de varios de ellos y llevan ya asociado código C de tal
manera que están preparados para realizar una tarea determinada (smart objects).
57
Aprende WinCC
Para pasar un objeto a nuestra picture basta con arrastrarlo y soltarlo sobre la misma.
58
Aprende WinCC
Settings
59
Aprende WinCC
• Save settings on exit: Grabar los cambios cuando se sale del Graphic Designer o
no.
• Display performance warnings: avisar cuando se detecte por el sistema un error
de diseño, p. Ej., cuando se asigne una actualización crítica a un parámetro que
pudiese sobrecargar la cpu del ordenador.
• El tipo de selección de los objetos:
o Surrounding: Los objetos se seleccionan si se encuentran
completamente dentro de la selección realizada.
o Touching: Los objetos se seleccionan aunque solo una parte de los
mismos se encuentre incluida en la selección.
Nota: para seleccionar varios objetos basta con mantener presionada la
tecla mayúsculas mientras se realiza un click sobre ellos.
• Object Tree: mostrar siempre igual el árbol de objetos, independientemente de
cómo se quedó la última vez al salir.
• Edit properties: Edita las propiedades al realizar clic sobre el dibujo.
• Configuration Dialog: usar el dialog box para configurar los objetos al
insertarlos en la picture o no.
• Display tops and tricks: Mostrar la ventana de tips and tricks al arrancar de
manera automática o no.
60
Aprende WinCC
En esta opción podemos seleccionar las capas que deben estar activas por
defecto en una picture y las que no.
61
Aprende WinCC
• Flat style for: El estilo de la barra de herramientas del Graphics Designer (botones
planos o con relieve, mostrar la linea lateral de la toolbar para desplazamiento o no,
mostrar color en los botones o no).
• Standard toolbar: podemos definir si se pueden configurar los botones de la toolbar
o no. Para configurar los botones, basta con presionar la tecla ALT y seleccionando
un icono de la misma, arrastrarlo fuera de la barra de herramientas.
• Display Buttons in Menu: podemos seleccionar si deben aparecer iconos al lado de
los textos del menu o no.
62
Aprende WinCC
63
Aprende WinCC
Idioma de la pantalla:
Podemos seleccionar diferentes idiomas para los textos asociados a todos los
objetos que coloquemos en las pantallas de WinCC, de tal manera que simplemente
cambiando de página de idioma podamos modificar completamente el lenguaje del
runtime en la aplicación.
Para conseguir esto, primeramente deberemos definir el lenguaje de la pantalla
en la que estamos.
64
Aprende WinCC
Tab Secuence.
Todos los objetos poseen un orden de tabulación. Este parámetro nos indica que
objeto será activo en un determinado momento según el objeto que actualmente posea el
foco (esté activo) al presionar la tecla tab.
Existen dos órdenes de tabulación:
Para modificar el tab order deberemos seleccionar en el menu edit la opción Tab
sequence->tab order->sequence->edit
65
Aprende WinCC
que se desea eliminar del orden de tabulación. Su número será sustituido por un
asterisco.
Para volver a insertar un objeto en el orden de tabulación manteniendo
presionadas las teclas shift+ ctrl seleccionar el objeto que se desea insertar en el orden
de tabulación. Su asterisco será sustituido por un número.
Barras de herramientas.
Barra de colores
Barra de zoom
Gracias al zoom podemos hacer escalados a la picture hasta de 8 aumentos y
reducciones hasta 1/4 parte. Podemos acceder al zoom sin necesidad de ratón
presionando Alt+z y las teclas de subir y bajar.
66
Aprende WinCC
Barra de objetos
Los objetos de la barra de objetos se dividen en tres categorías:
• Standard Objects: Objetos estándar de dibujo, tales como líneas, polígonos, etc..
• Smart Objects: Objetos inteligentes, cada uno con unas propiedades especiales.
67
Aprende WinCC
• Barra de layers:
La barra de layers nos indica las capas que actualmente están activas en nuestra
ventana. Todos los objetos poseen una propiedad layer que indica a qué capa
pertenecen. Disponemos de un total de 16 capas, apareciendo por defecto todas activas.
• Barra de alineación.
Esta barra se utiliza para poder alinear varios objetos y también para igualarlos
en tamaño tanto en altura como en anchura.
Es muy importante saber cual va a ser el objeto que se tome como referencia para
las acciones. Si se han seleccionado los objetos por el método...:
• de abrir una ventana de selección: se toma como referencia el que esté más al
extremo de la ventana.
• utilizando el ratón y teniendo presionada la tecla mayúsculas: el primero que se
seleccionó.
• Barra de fuentes
• Barra de estilos
Al igual que el anterior, poseemos también una barra de herramientas solo para
las líneas de los objetos, en las que podemos modificar el estilo de la línea, su grosor, su
final y el relleno que deben tener (si poseen un grosor mayor de una simple línea).
69
Aprende WinCC
70
Aprende WinCC
Smart Objects
Los smart objects son la base de construcción de los proyectos de WinCC. Los
cuatro primeros los estudiaremos más adelante, ya que su estudio es más amplio y
complicado. Nos centraremos ahora en los siguientes objetos.
• I/O Field:
71
Aprende WinCC
72
Aprende WinCC
73
Aprende WinCC
Opciones Miscelaneous:
• Operator Control Enable: Indica si el usuario puede tener acceso a la caja para
introducir valores. Esta propiedad es independiente de que tenga o no nivel para
poder introducir valores. Equivale al Locked de los controles de programación de
objetos.
• User level: Nivel que debe disponer el usuario para poder introducir datos en esta
caja.
• Display: Si debe ser visible o no la caja.
• Tooltip Text: Texto que debe aparecer en el cursor al posicionarse con el mismo
sobre la caja. Los tooltip dependen también del código de página de idiomas
seleccionado en el runtime.
• Operator activites Report: Cuando se activa esta opción, cada vez que se introduzca
un valor en la caja, aparecerá una caja de texto solicitando que introduzcamos una
explicación al respecto de la modificación realizada en el valor del proceso. Este
mensaje queda almacenado en el sistema como seguridad antes posibles fallos
debidos a los cambios realizados, o como nota aclaratoria de porqué se toma dicha
decisión.
• Operator Input Message: Cuando el nuevo valor ha sido llevado a cabo por el
sistema se alamacena dicho mensaje en el sistema para su posterior estudio.
• Adapt Border: Ajusta automáticamente el tamaño de la caja al texto o número que
contenga en cada momento.
• Cursor Control: Determina si después de realizar una entrada en la caja se debe
saltar al siguiente objeto en el orden de Alpha-cursor seleccionado o se debe de
continuar en el campo en el que se acaba de introducir el valor.
• Inmediate input: Indica si la caja al recibir el foco debe ponerse automáticamente en
modo de edición para introducir un valor, o no.
74
Aprende WinCC
Limits:
• Low Limit Value: Valor menor que se puede aceptar como válido a la hora de
introducir un valor en proceso.
• High Limit Value: Valor mayor que se puede aceptar como válido a la hora de
introducir un valor en proceso.
Si se sobrepasa cualquiera de estos valores, automáticamente aparece una caja
indicándonos dicho suceso.
Output/Input:
• Field Type: Tipo de valor del campo a representar o introducir. Las diferentes
posibilidades son:
• Output: Solo leer el valor en el PLC, sin poder escribir.
• Input: Solo escribir el valor en el PLC sin poder leer.
• I/O field: leer el valor en el PLC y poder modificarlo también.
75
Aprende WinCC
76
Aprende WinCC
Ejemplo:
9.9 -> 1.0
s9.9 -> +1.0
s9.9e -> +1.0E+00
09.99 -> 01.00
• Formato hexadecimal:
77
Aprende WinCC
Además de las propiedades, todo objeto (incluyendo el objeto I/O que estamos
tratando ahora) posee un Configuration Dialog, perteneciente a su menú contextual, en
el cual se representan las propiedades más importantes del objeto en cuestión, es decir,
un resumen de lo visto en las páginas anteriores. El Configuration dialog de la caja I/O
es:
78
Aprende WinCC
Bar.
• Bar direction: dirección en la que debe de crecer la barra (hacia arriba, hacia
abajo...)
79
Aprende WinCC
• Colors:
• Border Color: Color del borde de la barra.
• Border Background Color: Color del fondo del borde de la barra. Solo es
visible si el estilo del borde de la barra no es sólido.
• Background color: Color del fondo de la ventana de la barra.
• Fill Pattern color: Color de rellenado de la ventana de la barra. Solo es
visible si el estilo del fondo de la ventana no es sólido.
• Bar color: Color de la barra.
• Scale color: Color de la escala.
• Bar Background color: Color del fondo de la barra.
• Trend color: Color de la tendencia. La tendencia es un indicador que aparece
en la esquina inferior de la barra indicándonos el sentido del proceso
(creciente o decreciente).
• Styles:
o Border Weight: Anchura del borde de la ventana de la barra.
o Border Style: Estilo del borde de la ventana.
o Fill Pattern: Estilo de rellenado del fondo de la ventana de la barra.
o Bar Pattern: Estilo de rellenado de la barra.
80
Aprende WinCC
• Font:
o Font: Fuente de la escala e la barra.
o Font Size: Escala de la fuente de la escala de la barra.
o Bold: Si dicha fuente debe aparecer en negrita.
81
Aprende WinCC
Miscelaneous:
• Change color: Cambia el color de la barra al superar un límite superior o inferior de
manera total, o solo el trozo que sobrepase dicho límite.
• Maximum value: Valor máximo de la escala de la barra.
• Zero point value: Valor del punto cero de la escala.
• Minimun value: Valor mínimo de la escala de la barra.
• Histeresys: Indica si el valor debe de comportarse según una histéresis al alcanzar el
límite superior o inferior. Si alcanzamos un límite de 100, teniendo activado este
parámetro, y seleccionando un rango de histéresis de 20, hasta que el valor no baja
de 80 no volverá la barra a representar modificaciones en su valor. Esto permite
evitar las oscilaciones propias de los fluidos una vez alcanzados los límites precisos.
• Histeresys Range: Valor a tener en cuenta en la histéresis.
• Trend: Indicador del sentido de la barra. Nos indica si el proceso está aumentando o
disminuyendo, realizando una comparación del valor actual con el anterior.
• Average Value: Seleccionando esta opción se muestra la media de los últimos 15
valores leídos en el proceso, no el instantáneo. Ideal para procesos muy fluctuantes.
• Process Drive Connection: Valor del proceso a mostrar.
82
Aprende WinCC
Axis:
• Scale: Mostrar o no la escala de referencia de la barra.
• Alignment: Lugar en el que colocar la escala (derecha o izquierda).
• Long Axis Section: La escala se compone de barras largas y cortas. Esta opción
dibuja las barras largas de la escala en negrita.
• Label Each: Indica cada cuantas barras largas de la escala hay que colocar un valor
numérico.
• Only long axis sections: Mostrar solo las barras largas de la escala, no las
intermedias cortas.
• Lenght of axis section: Longitud en pixels de las barras divisoras de la escala de la
barra.
• Exponent display: Mostrar la escala en valor exponencial o lineal.
• Bar Scaling: Tipo de escala de la barra.
83
Aprende WinCC
CUBIC
84
Aprende WinCC
Limits:
Las demás opciones son idénticas pero para los cuatro siguientes limites de alarma
mínima (La L de AL indica que es un límite de mínimo). Los límites de máximo
comienzan con AH, siendo su funcionamiento y propiedades idéntico al descrito, salvo
85
Aprende WinCC
que la barra cambia de color cuando el valor del proceso está por encima del valor
estipulado como límite de alarma.
86
Aprende WinCC
Graphic Object.
Picture:
87
Aprende WinCC
88
Aprende WinCC
Status display.
89
Aprende WinCC
90
Aprende WinCC
Text list.
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.
92
Aprende WinCC
Buttons.
93
Aprende WinCC
Dos opciones no vistas del botón es que podemos definir dos imágenes (picture
on y picture off) para representar los dos estados del botón (presionado o no).
94
Aprende WinCC
Check box.
95
Aprende WinCC
• Selected Boxes: Cajas que están activas por defecto según el array generado (en el
ejemplo solo la primera de las tres).
96
Aprende WinCC
Option button.
97
Aprende WinCC
Slider.
De las propiedades de slider solo destacar por no haber sido vista aún:
• Extended operation: Si se pincha copn el ratón en cualquier parte de la barra que no
sean los botones de subir y bajar, el valor se va directamente al mínimo o al máximo
98
Aprende WinCC
99
Aprende WinCC
Round.
100
Aprende WinCC
Asistentes
• Exit WinCC:
Sale del runtime de WinCC y del propio WinCC.
Código añadido: ExitWinCC();
• Exit WinCC or Windows:
Nos permite seleccionar la forma de salir de WinCC. Las opciones posibles son:
• Exit Windows without restart:Apaga el sistema Windows NT, cerrando
todas las aplicaciones.
Código: DMExitWinCCEx(DM_SDMODE_SYSTEM);
• Exit WinCC: Sale de WinCC.
Código:DMExitWinCCEx (DM_SDMODE_WINCC);
• Exit WinCC and logon again: Sale de WinCC y vuelve a solicitar un nuevo
usuario de Windows NT.
Código:DMExitWinCCEx (DM_SDMODE_LOGOFF);
• Exit WinCC and restart Win dows: Sale de WinCC y rearranca Windows
NT.
Código: DMExitWinCCEx (DM_SDMODE_REBOOT);
101
Aprende WinCC
102
Aprende WinCC
Standard Dinamics:
• Add dinamics to the prototype: permite dinamizar una propiedad del objeto
seleccionado a través de un Wizard en lugar de hacerlo directamente en propiedades del
objeto.
• Color Dinamics:
• Color Dinamics with table:
• Copy tag value: incluye el código que copia una variable en otra. El código asociado
es el siguiente:
double VarInh;
{ VarInh=GetTagDouble(TAG_0);
SetTagDouble(TAG_1,VarInh);
}
103
Aprende WinCC
• Fill object: rellena los objetos que permitan dinamic filling, pero con la ventaja de
que a través del wizard podemos establecer un rango de llenado diferente de 0 a 100
que sería mediante una conexión directa de la variable de llenado con la propiedad
de llenado.
104
Aprende WinCC
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:
107
Aprende WinCC
108
Aprende WinCC
Dinamización de propiedades
109
Aprende WinCC
Programación de eventos
110
Aprende WinCC
Programación en C de eventos
Pero casi siempre hay que recurrir al C para realizar las acciones que deseamos.
Cuando asignamos nuestro código de programación a un evento, se nos indica mediante
una bombilla verde:
111
Aprende WinCC
Caappííttuulloo 4..
C
A
Allaarrm
maass:: A
Allaarrm
m LLooggggiinngg
Las alarmas en WinCC las podemos utilizar para enterarnos de más cosas que
exclusivamente si ha saltado un diferencial. Esto ya lo pusimos en práctica al principio,
utilizándolas para almacenar un histórico de usuarios con el que poder determinar que
operarios tenían el control del sistema en cada intervalo de tiempos del día.
En el presente capítulo las vamos a utilizar para lo que están principalmente
diseñadas:
9 Detección de alarmas actuales en la instalación.
9 Histórico de alarmas de la misma, y
9 Detección de fallos internos de programación y mensajes internos del
compilador del sistema WinCC.
Una alarma se compone de bloques como sabemos, por lo que vamos a definirlos en
primer término. Entramos al Alarm Logging y definimos los siguientes bloques de
sistema:
112
Aprende WinCC
Pasamos a las clases de aviso. Esta vez no vamos a crear una nueva clase de aviso, sino
que utilizaremos la que ya viene prediseñada en el WinCC, llamada Error. En las
propiedades de la clase definiremos los textos que deseamos que identifiquen sus
diferentes apariciones y desapariciones.
Vamos a utilizar el tipo de alarma “Alarma”, por lo que entramos a sus propiedades y
realizamos la siguiente asignación de colores:
113
Aprende WinCC
De nuevo en el Alarm Logging definimos una nueva alarma, que posee las siguientes
características:
Observemos que la hemos asignado al tipo alarma de la clase Error, que deseamos que
se archive (para que aparezca posteriormente en el histórico de alarmas), y que active
una acción. ¿Qué es activar una acción y para qué lo vamos a utilizar?. Bien, mas
adelante vamos a desear que suene un sonido por los altavoces del pc cada vez que
aparezca una nueva alarma en la instalación. Luego necesitaremos que se ejecute una
acción en c ante la llegada de una nueva alarma. El activar esta casilla indica a WinCC
que ante cualquier evento de dicha alarma (que aparezca, desaparezca, sea reconocida),
entre a un función ya definida en WinCC que se llama gmsgfunc.fct.
Un tema muy importante sobre esto que estamos comentando es el hecho de que dicha
función no reside dentro de nuestro proyecto, sino en el subdirectorio
c:\Siemens\WinCC\aplib\alarm. ¿Y qué importa?. Nada, si tenemos esto en cuenta a la
hora de llevarnos la aplicación a otra instalación, o de nuestra oficina al ordenador de la
fábrica. Cuando copiamos todo el subdirectorio de nuestro proyecto, deberemos de tener
la precaución de copiar este archivo también, para posteriormente copiarlo en le mismo
subdirectorio de WinCC del pc destino de nuestro proyecto, o no servirá para nada que
tengamos activada la opción “activa un acción”, ya que acudirá al gmscgfunc.fct, pero
no tendrá código, estará vacío.
114
Aprende WinCC
Continuando con la explicación, vemos también que hemos asignado la variable interna
“alarmas”, y que deseamos que el bit 0 de la misma active la presente alarma.
Los textos de la alarma los introducimos de lo más clarificadores para este ejemplo:
Y en el bloque usuario esta vez no vamos a colocar nada, ya que para esta alarma no lo
vamos a gastar.
Definimos dos alarmas más, una con el bit 1 y otra con el 2 de la variable
alarmas, cambiando los textos para poder posteriormente identificarlas de una manera
sencilla. Recuerda que puedes seleccionar la que acabas de realizar copiarla y pegarla
para crear las dos nuevas.
115
Aprende WinCC
Histórico de alarmas.
Observemos que en cuanto ejecutemos este código nos vamos a ir a la pdl alarmas,
abandonando la pdl start. ¿Y luego como volvemos?. Es necesario en este punto poseer
un sistema de navegación por ventanas. Para ello diseñamos al principio top.pdl, para
colocar en ella botones de acceso a las diferentes pantallas de nuestra instalación. Pero
ahora mismo no vamos a utilizar este método de navegación, sino unas funciones en c
que nos permite ir a la pantalla inicial a la de la que veníamos, o regresar a la que
fuimos, fuese en cada momento la que fuese. Para observar esta funcionalidad en
bottom introduciremos los siguientes botones de la biblioteca a la izquierda de la pdl:
OpenPrevPicture();
OpenHomePicture();
OpenNextPicture();
116
Aprende WinCC
Te estarás preguntando que qué son los botones de la derecha que aparecen sobre la
ventana de alarmas. Vamos a colocarlos, para poder activar y desactivar bits de la
117
Aprende WinCC
Para poder activar o desactivar bits utilizaremos un wizard de WinCC como muestra la
figura:
118
Aprende WinCC
119
Aprende WinCC
120
Aprende WinCC
Por último definimos los bloques que compondrán nuestra línea de alarmas y el
orden que poseerán en la misma
121
Aprende WinCC
Alarmas Actuales.
122
Aprende WinCC
AXC_OnBtnSinglAckn(lpszPictureName,"VENTANA_ALARMAS_ACTUALES");
123
Aprende WinCC
Puede que nos interese hacer un indicador al estilo de los paneles de operador,
de tal manera que cuando aparezca una nueva alarma parpadee en la pantalla hasta que
presionemos el botón de acuse, indicándonos que tenemos una alarma pendiente de
acusar que aún no hemos atendido.
Una idea podría ser esta que vamos a desarrollar a continuación. Vamos a crear
una nueva variable interna de tipo bool denominada ACUSE. En la pdl bottom.pdl
introducimos el siguiente icono de la librería:
124
Aprende WinCC
El truco está en asociar en acuse del señalizador central la variable anterior. Además de
realizar este proceso, es necesario que las alarmas de dicha clase (error) tengan activada
la opción activa el señalizador central.
125
Aprende WinCC
126
Aprende WinCC
Ya podemos pasar al Report del histórico de alarmas. Creamos un nuevo Report con
la siguiente tabla dinámica:
Las propiedades de bloques de línea y selección son las mismas que anteriormente
para la de alarmas actuales. También realizamos una orden de impresión como la
siguiente:
127
Aprende WinCC
RPTJobPreview("ORDEN_ALARMAS_ACTUALES");
RPTJobPreview("ORDEN_HISTORICO_ALARMAS");
128
Aprende WinCC
Esto mismo que estamos realizando por la ventana de selección también lo podemos
realizar a través de código C. Veamos este mismo ejemplo, pero a través de un botón
que nos filtra las alarmas de número 4 (igual que el ejemplo anterior, pero esta vez en
C).
BOOL ret;
MSG_FILTER_STRUCT Filter;
CMN_ERROR Error;
Si queremos mediante un botón volver a mostrar todas las alarmas de clase error el
código sería:
char cadena[200];
strcpy(cadena,"MSGNR >= 4 AND MSGNR <= 4 AND CLASS IN( 1 ) AND TYPE IN( 1 ,2 ,3 )");
SetPropChar(lpszPictureName,"Ventana_Alarmas","MsgFilterSQL",cadena);
En la primera parte del código creo que queda claro como se define el rango de
selección. La pregunta surge con la segunda parte, con la asignación a la cadena de
texto “cadena”. ¿Cómo podemos saber que cadena de texto es la que realiza el filtrado
que nosotros deseamos. Es bastante sencillo. Unicamente tenemos que realizar dicho
129
Aprende WinCC
filtrado con la ventana de selección de WinCC (como al principio del presente capítulo),
aceptar dicha ventana y volver a abrirla. En la parte inferior, seleccionamos la consulta
que nos indica y la copiamos al portapapeles con ctrl.+c, para después pegarla en
nuestra subrutina.
130
Aprende WinCC
Ahora nos interesa que suene un sonido wav cada vez que aparece una nueva alarma en
la instalación, para que si no estamos mirando la pantalla la detectemos de manera
acústica.
Para ello primeramente necesitamos un sonido en formato wav (o varios, ya que
podemos hacer que suene uno diferente para cada alarma, o para unas cuantas). En
nuestro proyecto nos vamos a windows, y con el explorador de windows creamos una
nueva carpeta que llamamos wav como muestra la figura:
En esta carpeta copiamos el wav que deseamos que suene. Ya podemos volver a
WinCC. Ahora necesitamos recordar un concepto que vimos anteriormente: cuando
se activa una alarma podemos hacer que entre automáticamente el WinCC a una
función del sistema llamada gmsgfunc.fct.
Vamos al Global Script, y en funciones estándar->alarm disponemos de esta
función.
Deberemos de introducir el siguiente código en la misma:
&mRT.stMsgTime.wMilliseconds, // Milisegundo
&mRT.dwTimeDiff, // Diferencia de tiempo
&mRT.dwCounter, // Contador interno de alarmas
&mRT.dwFlags, // Marca interna
&mRT.wPValueUsed,
&mRT.wTextValueUsed );
}
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 función API que declaramos llamada
PlaySoundA para hacer sonar el wav cuando aparezca la alarma. En este ejemplo
hacemos sonar el wav sound136.wav cuando aparece la alarma 3, y el ringin.wav
cuando aparece la alarma 4.
Si no queremos complicarnos la vida podemos modificar el ejemplo para que
siempre que aparezca cualquiera suene el mismo wav.
Aunque parece un poco complicado, si estudias el código verás que no tiene mayor
complicación que hacerlo una vez para tu proyecto y te valdrá para siempre.
132
Aprende WinCC
Si utilizamos el formato tambor para las alarmas no necesitaríamos este capítulo, ya que
cuando llega al valor predeterminado para el tambor nunca lo sobrepasa. Pero en el caso
de que deseemos almacenarlas secuencialmente necesitaremos borrarlas con el paso del
tiempo. La forma más sencilla es a travñes de un enlace odbc desde Access. Inicializar
la base de datos de runtime no es posible, ya que dentro de dicha base se guardan
también los históricos de gráficas, que perderíamos si utilizásemos este método (el de
cargarnos la rt.db de nuestro proyecto).
El primer problema radica en conocer donde se encuentran las alarmas dentro de la base
rt.db. Para ello vamos a crear una nueva base de datos desde Access (no importa el
nombre que le des), y en el menu seleccionamos archivos->obtener datos externos-
>vincular.
En tipo de archivo seleccionamos odbc y seleccionamos la runtime de nuestro proyecto,
como muestra la figura:
133
Aprende WinCC
Nos aparece una tabla de Access en la que vemos el histórico de alarmas de nuestra
runtime. Ahora ya podemos borrarlas, o hacer lo que deseemos con ellas utilizando las
herramientas de Access. No es conveniente realizar esta operación con el runtime en
marcha, ya que puede que WinCC intente generar una alarma mientras estamos
borrando el histórico y tengamos problemas, por lo que sería conveniente para
previamente la parte de runtime.
134
Aprende WinCC
Los mensajes son creados a partir del número de alarma 1.000.000 para que no nos
machaque alguno que hubiesemos generado nosotros previamente.
135
Aprende WinCC
Para poder visualizar las alarmas del sistema en nuestra ventana de alarmas vamos a
colocar los siguientes botones en la misma:
char cadena[200];
SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_LTGRAY);
SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_YELLOW
136
Aprende WinCC
char cadena[200];
SetBackColor(lpszPictureName,"BOTON_INTERNAS",CO_LTGRAY);
SetBackColor(lpszPictureName,"BOTON_ALARMAS",CO_YELLOW);
Con esto ya podemos observar nuestras alarmas, o las del sistema interno de errores de
windows de una manera sencilla con dos simples botones. La cuestión que se habrá
preguntado es: ¿cómo conozco el color que debo de pasar como parámetro a la función
SetBackColor?. WinCC posee una serie de colores ya predefinidos con unas constantes
(hemos utilizado ya dos de ellos). La tabla completa de dichos colores es la siguiente:
Si no desea uno des estos colores sino uno personalizado, asignelo previamente a un
botón, y consulte su valor con GetBackColor, asociándolo a una variable y
observándola. Nos devolverá un doble entero que identifica a dicho color personalizado.
137
Aprende WinCC
Caappííttuulloo 5
C
TTaagg LLooggggiinngg..
138
Aprende WinCC
140
Aprende WinCC
141
Aprende WinCC
142
Aprende WinCC
Archive Wizard
También se nos permite elegir entre los tres tipos de archivos posibles. Los
archivos de WinCC pueden ser:
• Archivos de proceso: archivo que almacena los valores de una o varias variables en
el disco duro.
• Compressed Archives: archivos de valores comprimidos. Se realiza una
compresión de los datos antes de almacenarlos, y una descompresión a la hora de
143
Aprende WinCC
En el paso 2 del Wizard podemos seleccionar aquellas variables que van a ser
almacenadas en el archivo. Con el botón select podemos ir añadiéndolas a la lista. Estas
variables sólo comparten el lugar de almacenamiento, pero no necesariamente el tiempo
de lectura ni el de almacenamiento, como posteriormente veremos.
144
Aprende WinCC
• Authorization level: Nivel de autorización requerido para poder leer los valores del
archivo, y para poder editarlos. Hay que tener en cuenta que estos datos son
variables dependiendo del archivo en cuestión, luego se puede hacer archivos
protegidos (nivel elevado de protección) y otros desprotegidos. También se puede
dejar desprotegida la lectura, y proteger la escritura para que solo el responsable
pueda modificar los datos en el archivo.
Hay que tener en cuenta que si no se ha creado por lo menos un usuario en el
User Administrator, lógicamente no aparecerá la ventana de niveles de usuario al
presionar el botón select. Para poder seleccionar los niveles de lectura, o
escritura en archivos de proceso, primeramente deberá ir al capítulo dedicado a
User Administrator y generar por lo menos un usuario nuevo, asignándole unos
niveles que sean de leer archivos y otro de escribir en archivos. Al volver a esta
pantalla, ya podrá seleccionar el nivel deseado en la misma.
145
Aprende WinCC
147
Aprende WinCC
Variables Acyclic: Valores que solo deseamos guardar en el disco duro cuando
un bit se active en el PLC (p. Ej. guardar los valores de presión cuando una pieza pase
por el horno).
El problema con este tipo de variables es que almacenan dicho valor cuando
aparece el bit y cuando desaparece (por flanco positivo y por flanco negativo), por lo
que nos duplica el valor deseado, con el agravante de que el valor al aparecer el bit no
necesariamente debe ser igual al que almacena cuando desaparece el bit. La solución
esta en almacenar la media de los valores leídos durante el tiempo que el bit está activo.
En cualquier caso, no solventa este tipo de variable de archivo el problema, ya que el
duplicar las variables hace prácticamente ingobernable el posterior estudio del archivo
en el disco duro.
148
Aprende WinCC
149
Aprende WinCC
150
Aprende WinCC
151
Aprende WinCC
• Also put archived value in tag: determina que variables deben también
almacenarse en esta variable de archivo además de la que se indicó al principio.
• Cycle acquisition: Este tiempo indica cada cuanto debe ser leído el valor de proceso
del administrador de variables para pasar a la variable de archivo.
• Cycle Archiving: Este tiempo indica cada cuanto debe ser almacenada la variable
de archivo en el disco duro (o en la memoria de WinCC, si así se decidió). El valor
que se almacena depende del método que se utilice para su procesamiento (véase
Processing).
152
Aprende WinCC
por el propio WinCC. El botón select permite seleccionar que acción es la que se
realizará.
• Minimum value: Almacena el valor menor de todos los adquiridos durante el
período de tiempo entre el último almacenamiento y éste.
• Unit: The unit for the entered time value is either entered here directly or the
associated unit of the tag is selected via a structure element. This entry is used
primarily for tag display.
• Save on error: permite determinar que valor almacenar ante la aparición de un error
en la lectura de la variable desde el proceso. Las opciones posibles son:
• Last value: Almacena el último valor leído desde el administrador de variables.
• Substitute value: toda variable dispone de un valor de substitución. Podemos
determinar el almacenar dicho valor frente a un error de comunicaciones.
• Archive upon change: Esta opción permite almacenar el valor exclusivamente si
cambia dicho valor en el proceso. Es muy interesante, ya que permite substituir las
carencias del Tag Logging en la adquisición de datos realizando programación en el
PLC. Por ejemplo, ante el fallo del acyclic, que nos archiva valores en el flanco de
subida y el de bajada, podemos programar en el PLC una subrutina que cada vez que
un bit esté activo, nos transfiera un valor del plc a otra variable de comunicaciones.
Si el valor es el mismo que poseía se le aumenta o disminuye en una cantidad
insignificante para su posterior análisis desde WinCC. Así, solo adquiere el valor el
WinCC cuando se modifica, que en realidad es cuando existe un bit en el PLC.
• Hysteresis: % que debe de variar la variable de proceso con respecto al último valor
almacenado para que se vuelva a considerar su almacenamiento como necesario.
Esta opción es interesante en valores que está variando ligeramente en el PLC, pero
sólo nos interesa almacenarlos cuando su variación sea significativa, ya que en caso
contrario se convertiría en un almacenamiento continuo de la variable.
153
Aprende WinCC
154
Aprende WinCC
Para que una de estas funciones realicen la acción deseada, deben devolver un 1.
Así, si deseamos arrancar el almacenamiento de valores en la gráfica con un bit, lo que
haremos será consultarlo dentro de una función. Supongamos que deseamos arrancar la
gráfica cuando un bit de proceso esté a uno y pararlo con ese mismo bit cuando esté a
cero.
Tenemos que generar dos funciones, una para el arranque y otra para la parada.
Seleccionamos como tipo Cycle-selective. El código de las funciones se encuentra abajo
indicado.
155
Aprende WinCC
int Arrancar_Grafica()
{
if (GetTagBit("NewTag")==TRUE)
{
return(1);
}
else
{
return(0);
}
}
Int Parar_Grafica()
{
if (GetTagBit("NewTag")==FALSE)
{
return(1);
}
else
{
return(0);
}
}
Todas estas propiedades que hemos definido para cada variable de archivo
podemos preconfigurarlas, para que cada vez que definamos una nueva variable no
tengamos que asignárselas de nuevo.
Las posibles preconfiguraciones son:
• Process Archive.
• Compressed archive
• Analog tag: Preconfiguración de una variable analógica (mayor que un bit).:
• Binary tag: Preconfiguración de una variable digital (0 o 1).:
Con respecto a las variables digitales, destacar que se puede seleccionar que se
almacenen siempre, frente a un flanco positivo o uno negativo. Lógicamente
aquí sólo existe el ciclo de almacenamiento, ya que no se pueden hacer medias
156
Aprende WinCC
157
Aprende WinCC
158
Aprende WinCC
Archivos comprimidos.
Los archivos comprimidos son como los archivos normales, salvo que se realiza
una compresión de la información antes de ser almacenada.
La única diferencia es que en ellos vamos a poder determinar:
• El tipo de compresión de los datos.
• El tiempo de que se dispone para comprimir los datos (compresión cada día, cada
hora, etc..).
• Se permite indicar un mensaje cuando el disco duro esté lleno de datos.
Los archivos comprimidos son siempre long-term, por lo que no se permite realizar
tambor en los datos.
159
Aprende WinCC
Curvas de valores
Dentro de una ventana de tendencias podemos tener una o más curvas, cada una
con un color identificativo, y que asociaremos a variables de archivo que formarán parte
de un archivo generado anteriormente, como ya vimos.
160
Aprende WinCC
• Window title: nombre descriptivo de la curva (p. Ej: presión zona 1).
• Display: Muestra o no la curva o tendencia definida.
• Open screen:
• Display ruler: mostrar la regla de posición al entrar a la picture donde esté la
ventana de curvas.
• Display trends staggered: Muestra las tendencias en gráficas separadas. Esta
opción es interesante en ciertas situaciones en las que los valores de dos o
más tendencias van parejos en el tiempo, por lo que se están solapando, y
deseamos observarlos o plasmarlos de manera individual.
• Common X axis: Si en la primera de las tendencias se selecciona esta casilla,
todos los ejes X de las tendencias serán comunes. Es decir todos los valores
representados en un punto del eje X fueron o están siendo generados en el
mismo instante de tiempo. Si no se selecciona, cada tendencia muestra su
propio eje de tiempos, por lo que no se tiene que producir necesariamente
una correspondencia temporal entre dos curvas mostradas en la pantalla a
una misma altura del eje X.
• Common Y Axis: Ejecuta la misma acción que antes, pero para el eje Y. Esto
es interesante cuando los valores del proceso a mostrar no presentan una
correspondencia en unidades (una es presión y otra es temperatura), pero sí
en temporalidad (las dos variables es interesante mostrarlas a la vez en la
misma pantalla para compararlas en el tiempo).
• Sizeable: la ventana puede ser dimensionada durante el runtime.
• Can be closed: la ventana puede ser cerrada durante el runtime.
• Data source: Los datos a mostrar en la gráfica pueden proceder de un archivo en el
disco duro, o no, con lo que tal como se lean del proceso se mostrarán en pantalla.
161
Aprende WinCC
162
Aprende WinCC
• Color: podemos definir el color de la tendencia para poder identificarla con respecto
a las demás curvas.
Con respecto a la solapa tag, aquí se puede definir la variable de proceso con la
cual estamos conectados o almacenando dicho valor. Observar que en tiempo de
ejecución podemos desde esta ventana modificar dicha variable, con lo cual es posible
realizar la operación de cambiar de señal de proceso a representar sin modificar el
desarrollo de visualización, siempre y cuando se haya tenido la precaución de almacenar
el valor reserva de proceso en un archivo de valores.
163
Aprende WinCC
En este pestaña podremos crear las curvas que van a componer nuestra ventana
de curvas. Podemos configurar:
• Name: nombre de cada una de las curvas.
• Display: mostrar o no la curva en cuestión.
• Color: color asignado a la curva actual.
• Selection of archives: seleccionar el archivo o la variable de la que tomaremos el
valor a representar.
• Display type: tipo de unión entre los valores representados (barras, lineas,
puntos,…).
164
Aprende WinCC
En esta solapa definiremos las propiedades del eje X de tiempos. Recordar que
no es posible otro tipo de gráfica que no sea temporal.
• Display:
o Coarse Grid: muestra una línea de división en el eje y cada x valores del eje.
El valor de x se puede introducir por el campo que aparece a la derecha de
dicha opción.
o Fine grid: muestra una línea de subdivisión al igual que la línea coarse, pero
con la diferencia de que esta es más estrecha, y no presenta número de
escala.
o Time:
o Selection: Selección del rango del eje X a mostrar en pantalla. Existen dos
posibilidades:
Seleccionar un time range, con lo cual veremos elúltimo x tiempo,
siendo x el valor de factor x área.
O seleccionar una cantidad de puntos de medida a visualizar.
165
Aprende WinCC
166
Aprende WinCC
167
Aprende WinCC
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. Sólo es aconsejable este tipo para
una sola curva, o cuando la curva a la que se le aplica este estilo ocupa la última
posición.
• Fill area stepped trend: Igual que el anterior pero la unión se realiza mediante
cuadrados y no de manera lineal.
169
Aprende WinCC
En la ventana choose object podemos añadir y restar las curvas que van a
componer nuestra ventana de tendencias. A su vez podemos seleccionándolas editar
mediante el botón Template las características de la ventana. Estas son:
Barra de herramientas
Dato anterior: muestra el dato anterior del archivo, hasta llegar al primero.
Dato siguiente: muestra el dato siguiente del archivo hasta llegar al último.
172
Aprende WinCC
Curva previa al frente: esta opción trae la curva que tengamos en segundo plano
al primero y viceversa.
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 numéricos, además de poder editar dichos
valores directamente desde las mismas, lo que posibilita la modificación de los datos de
proceso con posterioridad al desarrollo de los mismos.
Como pasaba con las gráficas, para generar tablas en la versión 5.1 de WinCC es
necesario acceder al Graphic Designer donde podremos insertar un objeto de tipo
Online table control.
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
título, si debe cargar los datos automáticamente al entrar a la picture donde se encuentre,
si es dimensionable durante el runtime, etc..
El parámetro common time determina si se utiliza un timepo común para los valores
mostrados en las columnas.
175
Aprende WinCC
176
Aprende WinCC
Editar una columna: Presionando este botón y seleccionando una celda de una
columna, si dicha columna tiene activada la opción Can be edited, será posible
modificarla.
Enviar la columna previa a la primera posición.
177
Aprende WinCC
Gráficas.
Gráficas continuas.
178
Aprende WinCC
Dicho botón nos servirá para entrar a un menú que el desarrollo del presenta
capítulo nos permitirá navegar por las pantallas que tienen que ver con los diferentes
tipos de gráficas. De momento vamos a comenzar renombrando la pdl salir.pdl, como
graficas.pdl, y dejándola con el siguiente aspecto:
179
Aprende WinCC
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","PictureName"
,"GRAFICAS.PDL");
SetPropChar(GetParentPicture(lpszPictureName),"VENTANA_SALIR","CaptionText","GRAFICAS");
SetPropBOOL(GetParentPicture(lpszPictureName),"VENTANA_SALIR","Visible",TRUE);
Vamos a crear un fichero de valores de proceso, en que incluiremos 3 curvas, cada una
asignada a las variables internas definidas previamente.
Si pulsamos con el botón derecho sobre el nombre de nuestro proyecto, podremos
seleccionar sus propiedades. En dichas propiedades podemos activar la exportación de
los valores que vamos a lmacenar en nuestra runtime automáticamente a ficheros
externos en formato csv. Esto nos permitirá más adelante poder trabajar desde Access
con dichos valores de una manera sencilla. Si esta operación la efectuaramos a
posteriori perderíamos el histórico de valores que se hubiese realizado hasta ese
momento.
180
Aprende WinCC
En las propiedades de nuestro fichero de curvas podremos definir el tamaño del tambor
de nuestro archivo circulante. ¿Cuál debería de ser dicho valor?. Bien, para ello vamos a
poner un ejemplo, y cada uno podrá sustituir sus propios parámetros por los que aquí se
muestran.
Supongamos que deseo alamacenar la temperatura de una sala, y deseo tener un
histórico de 1 año. La temperatura la alamacenaré cada hora. Como en 1 día hay 24
horas, y en 1 año hay 365 días, el resultado será:
Las curvas para esta instalación de ejemplo, deberían de guardarse cada hora, pero
podemos realizar una lectura del valor cada minuto, y alamacenar al disco duro la media
de los 60 valores obtenidos durante la hora para obtener un valor mas estable de
evolución.
181
Aprende WinCC
Clickeando dos veces sobre dicho objeto en el Graphic Designer podemos editar sus
propiedades, y definir tres curvas (procedentes de nuestro archivo anterior). Para ello,
iremos seleccionándolas con el botón de selección que nos muestra la base de datos
creada y las tendencias de que dispone.
182
Aprende WinCC
183
Aprende WinCC
En la solapa del eje de tiempos vamos a realizar una asignación orientada a poder
mostrar una gráfica lo más rápidamente ahora que se encuentra parendiendo las
nociones de WinCC. La idea es mostrar en 1 minuto valores que van evolucionando.
Evidentemente, en una instalación real, generalmente definiremos como intervalo de
tiempo 1 día o más, para poder percibir una evolución de datos significativos. Es
importante observar como en formato deberemos de seleccionar el formato de tiempos
adecuados (milisegundos carecen de sentido en instalaciones reales).
Pasamos ahora al eje y de la gráfica. Como hemos indicado que deseamos un eje y
común, el WinCC nos va a mostrar un único eje, pero en realidad el continua con un eje
y diferente para cada curva. Es por esto que cuando copie los valores que va a ver en la
siguiente imagen, deberá de repetirlos volviendo a seleccionar cada una de las curvas en
esta pantalla, y volviendo a introducir dichos valores.
184
Aprende WinCC
Si no introduce los mismos valores para los tres ejes y de las tres curvas, no le
funcionarán correctamente las parametrizaciones de código c que posteriormente vamos
a realizar.
Con esto ya hemos finalizado nuestra ventana de gráficas. Si arrancáramos ahora el
runtime, veríamos que ya disponemos de la misma, pero no poseemos valores, y por lo
tanto las curvas se encuentran en el punto 0. Para tener datos que visualizar, a la hora de
aprender a manejar el WinCC, es muy útil utilizar el simulador de variables que lo
acompaña. Dicho simulador de variables es una opción de la instalación, por lo que si
no dispone del mismo en Inicio->Simatic->WinCC->Tools->WinCC variable simulator
deberá de recurrir al cd-rom de WinCC para instalarlo.
Suponemos que ya se encuentra instalado en nuestro disco duro, por lo que podríamos
ejecutarlo a través del menú inicio de windows. Pero en nuestro ejemplo vamos a incluir
un botón en nuestra pdl de graficas que permita ejecutar el simulador desde nuestro
proyecto directamente. Incluimos a la drecha de nuestra pdl el siguiente objeto de la
biblioteca:
ProgramExecute("C:\\SIEMENS\\WinCC\\SmartTools\\Simulator\\Simulation.exe");
185
Aprende WinCC
186
Aprende WinCC
WinCC permite de una manera sencilla juntar y separar diferentes curvas dentro de una
misma ventana. En el siguiente ejemplo podremos apreciarlo claramente. Para su
realización vamos a utilizar un botón que colocaremos a la izquierda de nuestra pdl
como muestra la figura:
BOOL valor;
valor=GetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves"); //Tipo de retorno :BOOL
if (valor==FALSE)
{
SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",TRUE); //Tipo de retorno :BOOL
SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",FALSE); //Tipo de retorno :BOOL
SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",FALSE); //Tipo de retorno :BOOL
SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","JUNTAR"); //Tipo de retorno :BOOL
}
else
{
SetPropBOOL(lpszPictureName,"GRAFICA","RelayCurves",FALSE); //Tipo de retorno :BOOL
SetPropBOOL(lpszPictureName,"GRAFICA","CommonX",TRUE); //Tipo de retorno :BOOL
SetPropBOOL(lpszPictureName,"GRAFICA","CommonY",TRUE); //Tipo de retorno :BOOL
SetPropChar(lpszPictureName,"BOTON_SEPARAR","Text","SEPARAR"); //Tipo de retorno :BOOL
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 botón para que sepamos que la siguiente vez que lo
pulsemos se van a juntar las curvas.
188
Aprende WinCC
BOOL valor;
Igual que anteriormente, cambiamos el texto del botón para saber que acción es la que
realizará el botón en cada una de las pulsaciones.
Las guías del fondo de la pantalla nos permitirán referencias nuestros datos de una
manera más sencilla.
189
Aprende WinCC
190
Aprende WinCC
Continuando con nuestro ejemplo de gráficas, vamos a crear tres botones, cada
uno de ellos con la finalidad de poder mostrar u ocultar las respectivas curvas de nuestra
ventana de gráficas. Cada uno de los botones se denominará BOTON_MOSTRAR1 a
BOTON_MOSTRAR3.
El código para el primer botón será el siguiente:
BOOL valor;
BOOL valor;
}
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
Existen dos formas de imprimir gráficas, mediante el uso de un Report o por impresión
directa de la pantalla actual. Vamos a estudiar en este apartado el metodo primero, que
aun siendo más elegante, presenta el inconveniente de no poder parametrizar el eje de
tiempos de una manera sencilla. Es por ello, que en función de la exigencia del cliente a
la hora de mostrar en papel la gráfica será preferible un método u otro.
Comenzaremos creando lógicamente creando con el Report Designer un formato de
página que denominaremos curva_continua.rpl.
Lo primero que haremos será darle tamaño apaisado, para que nuestra gráfica ocupe
toda la hoja. Esto podemos conseguirlo seleccionando con el botón derecho las
propiedades de la hoja en la parte gris externa al propio Report, como muestra la figura:
192
Aprende WinCC
El Report finaliza introduciendo una parte estática con nuestro logotipo de empresa y el
nombre de nuestro proyecto y formulario.
Ya podemos salir y crear una orden de impresión como la que muestra la figura:
193
Aprende WinCC
194
Aprende WinCC
WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL);
195
Aprende WinCC
196
Aprende WinCC
Por lo tanto, asignando una variable interna de tipo unsigned int a dicha
propiedad, podremos realizar adiciones y extracciones de bits en función de qué botón
deseamos o no mostrar en la barra de toolbar de la ventana de gráficas.
197
Aprende WinCC
Como sabemos podemos tener diferentes tipos de curvas en una gráfica. Los
diferentes tipos son:
Curva escalonada:
Rellenar superficie curva interpolada: igual que la anterior pero rellenando el área.
Rellenar superficie curva escalonada: igual que la primera pero rellenado el área.
Teniendo claros los tipos, vamos a hacer que podamos cambiar de tipo desde
unos botones externos a la ventana de gráficas. Para ello vamos a utilizar una variable
interna de tipo unsigned 8 bits value, que denominaremos tipo_de_curva.
Teniendo esta variable, accedemos a la ventana de gráficas, y en las propiedades
de la misma asignamos la variable tipo_de_curva a la propiedad curveform. Dicha
propiedad de una ventana de gráficas permite cambiar de tipo e curva según el siguiente
baremo (atención, los valores se muestran en hexadecimal):
198
Aprende WinCC
199
Aprende WinCC
Otra acción que podemos desear es arrancar y parar la gráfica igual que hacemos
con el botón de la barra de toolbar. El tema está en que debemos de dar un título a
nuestra ventana de gráficas. Pinchamos dos veces en la ventana, y parametrizamos el
titulo que debe de poseer:
Parar/Arrancar la gráfica.
Set_Focus(lpszPictureName,"ventana_grafica");
TlgTableWindowPressStartStopButton(“TITULO_GRAFICA");
Mostrar la regla.
Set_Focus(lpszPictureName,"ventana_grafica");
TlgTrendWindowPressLinealButton("TITULO_GRAFICA");
Set_Focus(lpszPictureName,"ventana_grafica");
TlgTrendWindowPressZoomInButton ("TITULO_GRAFICA");
200
Aprende WinCC
Set_Focus(lpszPictureName,"ventana_grafica");
SetPropWord(lpszPictureName,"ventana_grafica","Index",0);
TlgTrendWindowPressLastButton("TITULO_GRAFICA");
Set_Focus(lpszPictureName,"Ventana_grafica");
SetPropWord(lpszPictureName,"Ventana_grafica","Index",0);
TlgTrendWindowPressNextButton("TITULO_GRAFICA ");
Sleep(5000);
TlgTrendWindowPressNextButton("TITULO_GRAFICA ");
Set_Focus(lpszPictureName,"Ventana_grafica");
SetPropWord(lpszPictureName,"Ventana_grafica","Index",0);
TlgTrendWindowPressNextButton("TITULO_GRAFICA ");
Set_Focus(lpszPictureName,"Ventana_grafica");
SetPropWord(lpszPictureName,"Ventana_grafica","Index",0);
TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");
Retroceder en la gráfica.
Set_Focus(lpszPictureName,"Ventana_grafica");
SetPropWord(lpszPictureName,"Ventana_grafica","Index",0);
TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");
Sleep(5000);
TlgTrendWindowPressPrevButton("TITULO_GRAFICA ");
201
Aprende WinCC
Es por este motivo que será necesario realizar una función de telerruptor en el
plc en el caso de que se desee almacenar únicamente por flanco positivo. Un ejemplo
típico de este tipo de almacenamiento acíclico sería el caso de un transfer de piezas.
Únicamente cuando una pieza se encuentra frente a la sonda de medida tiene sentido el
almacenar una de sus propiedades (el tamaño de la pieza, p. Ej). Una barrera
fotoeléctrica o un detector inductivo podrían ser esta variable de control que nos dispara
el almacenamiento de dicho valor.
La función del telerruptor necesaria en el plc podría tener el siguiente aspecto en
Step 7 (atención, esto es un ejemplo de programación para sep 7, no para programar en
el WinCC):
202
Aprende WinCC
BOOL valor;
203
Aprende WinCC
204
Aprende WinCC
Lo que deseamos es que cuando pulsemos una vez dicho botón se active la
variable “ACICLICA”, y cuando pulsemos de nuevo se desactive, para poder realizar la
simulación acíclica.
El código para realizar esto es el siguiente:
BOOL valor;
valor=GetTagBit("ACICLICA");
if (valor==TRUE)
{
SetTagBit("ACICLICA", FALSE);
}
else
{
SetTagBit("ACICLICA",TRUE);
}
205
Aprende WinCC
BOOL ARRANCA_CICLO_SELECTIVO()
{
BOOL valor;
valor=GetTagBit("SELECTIVA");
206
Aprende WinCC
return(valor);
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.
BOOL valor;
valor=GetTagBit("SELECTIVA");
if (valor==TRUE)
{
SetTagBit("SELECTIVA", FALSE);
SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","ARRANCAR SELECTIVO");
}
else
{
SetTagBit("SELECTIVA",TRUE);
SetPropChar(lpszPictureName,"BOTON _SELECTIVO","Text","PARAR SELECTIVO");
}
}
Lógicamente tendremos que poner un botón en graficas.pdl para que podamos acceder a
esta nueva pdl generada. Ya podemos probar el ejemplo y controlar el almacenamiento
desde el botón generado.
208
Aprende WinCC
Archivado al cambiar.
Es por este motivo que este tipo de almacenamiento es muy interesante para la
mayoría de las adquisiciones de una instalación, ya que libera al sistema de tener que
almacenar valores repetidos con el ahorro de tiempo al acceder al disco duro, y de
espacio en el mismo.
209
Aprende WinCC
210
Aprende WinCC
Vamos a seleccionar 1 minuto para el cálculo, para poder observar en tiempo real una
evolución dentro de dicho archivo sin tener que esperar días para obtener resultados.
Ya podemos hacernos una nueva pdl, renombrando grafica_continua.pdl, que
denominaremos historial.pdl, y cuya única modificación importante es la asignación de
la variable a mostrar en la ventana gráfica:
Solo tenemos que poner un botón de acceso en graficas.pdl, y podremos observar como
hasta que no pasa 1 minuto no obtenemos valores en dicho fichero.
211
Aprende WinCC
Para poder exportar a una herramienta externa los archivos que se encuentran dentro de
la base de runtime de nuestro proyecto, la mejor opción probablemente sea la
exportación en paralelo de dichos datos a ficheros externos en formato dbaseIII. El
WinCC dispone de una opción de exportación de datos a dicho formato, con lo que cada
vez que almacena datos en un archivo dentro de la base de runtime lo ejecuta también
en un fichero externo.
Deberemos abrir el Tag Logging y seleccionando con el botón derecho sobre el nombre
de nuestro proyecto->propiedades podemos activar esta opción.
Es importante tener en cuenta que al activar esta opción se borran todos los datos
del histórico de la base de datos de runtime, por lo que es aconsejable realizar dicha
selección al principio del proyecto, en la puesta en marcha.
Los datos nos los almacena en el subdirectorio de nuestro proyecto PDE,
generando un subdirectorio por cada archivo, y un fichero por cada tendencia.
Cada uno de los archivos que genera posee 3 columnas:
• T: Fecha y hora de la adquisición del valor. Este campo es de texto y no separa
la fecha de la hora, por lo que su tratamiento es relativamente difícil, requiriendo
de una macro que nos descomponga los campos en celdas separadas si deseamos
posteriormente realizar consultas por fechas o intervalos de tiempo.
• V: valor del proceso. Este es el valor del proceso que almacena en el archivo.
• F: código de control interno. Sin relevancia para nosotros.
212
Aprende WinCC
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");
213
Aprende WinCC
AR_SEND.
214
Aprende WinCC
Tipo_de_cabecera:
215
Aprende WinCC
Caappííttuulloo 6
C
R
Reeppoorrtt D
Deessiiggnneerr..
Dentro del apartado Report Designer existen tres subdivisiones, cada una con una
finalidad distinta.
216
Aprende WinCC
Layout
Características generales
217
Aprende WinCC
Partes de un layout.
• Área no impimible.
• Área imprimible (donde se encuentra la parte estática del documento).
• Cuerpo del documento (donde se encuentra la parte dinámica del Report).
La parte estática del documento está compuesta por campos cuyo valor va a ser
común para todo el Report o son aportados por el sistema, como son la fecha, hora, el
nombre del proyecto o el número de página actual. La parte dinámica está compuesta
por los datos a mostrar en dicho Report, e irá en función del tipo de datos dinámicos que
deseemos mostrar.
218
Aprende WinCC
• Geometry:
o Width: ancho de la página.
o Height: alto de la página.
o Paper size: formato de tamaño del papel en que se imprime el layout (carta,
A4,etc..)
o Orientación: Vertical o apaisado.
o Left print margin: margen izquierdo a partir del que se empieza a imprimir.
o Top dinamic margin: margen entre la parte superior de la página y el
comienzo de la parte dinámica del documento. Estas distancias determinan la
anchura de la parte gris del layout (cabecera y pie de página).
219
Aprende WinCC
• Miscelaneous:
o Cover sheet: Todo layout puede tener una página inicial, en la que se puede
introducir los textos informativos al respecto del tipo de layout, la
instalación en la que se genera, etc…Aquí se determina si esta página inicial
debe de aparecer o no en el documento final.
o Final page: lo mismo, pero con una página de finalización de documento.
220
Aprende WinCC
Visualizar parte estática del documento. Solo puede modificar la parte cabecera
y pierde del documento.
Como en el Graphic Designer, lo más importante del layout serán los objetos
que insertemos en el mismo. Disponemos de una ventana en el que se nos muestran los
mismos por categorías.
221
Aprende WinCC
Dynamic metafile: realiza una impresión gráfica o de una determinada pantalla que
hayamos diseñado con el Graphic Designer, o de una gráfica.
Los objetos dinámicos requieren una conexión, que es el vínculo con el sistema
que determina que valores del mismo deben plasmarse en el objeto a la hora de la
impresión. En este caso, si queremos imprimir:
• las pictures de WinCC: deberemos seleccionar General Display de picture. Nos
mostrará todas las imágenes diseñadas, con el tamaño que le demos a dicho objeto.
222
Aprende WinCC
223
Aprende WinCC
• Tag selection: archivo del que hay que sacar los datos y tendencias a mostrar en la
gráfica.
Dynamic Table: tabla de datos cuyas celdas se rellenan de los datos indicados mediante
connect. Se utiliza para mostrar todo tipo de datos numéricos y de texto, en oposición a
la anterior que mostraba dibujos y gráficas. Las posibilidades dentro de connect son
muy amplias, por lo que ejemplificaremos creando una lista de valores de proceso en
impresora.
Dentro de Tag Logging runtime, tag table se encarga de mostrar una tabla con
los valores de variables de proceso durante un periodo de tiempo determinado.
Asignamos esta conexión a la tabla creada.
224
Aprende WinCC
La impresión por líneas se utiliza para mostrar generalmente las alarmas o eventos
de la instalación en tiempo real por impresora.
Podemos definir la cantidad de líneas que queremos que ocupe una hoja, los
márgenes, y los textos de cabecera y pie de página. Todas estas opciones evidentemente
están ideadas para una impresora matricial que solo utilizaremos para caracteres de
texto.
Definidos estos parámetros, no queda determinar el formato del mensaje que
vamos a sacar en la línea de layout. Para ello, si seleccionamos el botón Selection de
esta ventana, podemos acceder a los bloques que hayamos creado en la parte de Alarm
Logging. Mediante estos bloques confeccionamos nuestra línea.
Los archivos de line printer poseen la extensión rp1 y se almacenan en el
subdirectorio Prt de nuestro proyecto.
226
Aprende WinCC
227
Aprende WinCC
Jobs
228
Aprende WinCC
229
Aprende WinCC
Printer setup nos permite seleccionar la impresora de todas las que posea el sistema por
la que deseamos imprimir. Podemos indicar hasta 3 impresoras si existen en el sistema,
para que si una de ellas actualmente está desconectada o no responde (falta de papel,
etc..), poder imprimir por la siguiente que esté en la lista asignada.
También podemos exportar el documento o Report a un fichero emf en el disco
duro. En este caso, se genera en nuestro proyecto un subdirectorio llamado Prt_Out,
dentro del cual se genera otro directorio con el nombre del job más la fecha y la hora en
que se imprime, donde se almacena cada página de nuestro documento en formato EMF
(gráfico).
230
Aprende WinCC
El WinCC dispone de una serie de ventanas de diagnosis para poder saber que
Report se están imprimiendo, y cada cuanto tiempo.
Para poder insertar estos objetos, en cualquier pdl, deberemos de seleccionar
aplication window->jobs.
All jobs.
231
Aprende WinCC
232
Aprende WinCC
Caappííttuulloo 7
C
G
Glloobbaall S
Sccrriipptt..
Dentro del compilador de Global Script podemos observar que existen cuatro
tipos de clases o categorías de funciones:
• Project functions: funciones de proyecto. Son aquellas funciones que deben ser
llamadas desde otras partes del programa para devolver valores después de realizar
alguna operación en C. Anteriormente vimos como arrancábamos una gráfica y la
parábamos con dos funciones de proyecto. Las funciones de proyecto quedan
almacenadas automáticamente en el subdirectorio Library de nuestro proyecto, con
la extensión fct. Para traerse una función de proyecto de un proyecto a otro
deberemos de copiar dicho archivo en dicho subdirectorio del proyecto fuente al
destino.
233
Aprende WinCC
• Standard Functions: Son las funciones standard del propio WinCC, que no residen
en nuestro proyecto, sino en el subdirectorio aplib de WinCC. Estas funciones
estándar se pueden modificar, pero dicha modificación es permanente hasta que no
se reinstale el WinCC, ya que como se dijo los archivos fct de standard functions
son comunes para todos nuestros proyectos. Si deseamos generar subrutinas que
sean utilizadas por todos los proyectos en que trabajemos, solo tenemos que
copiarlas en el subdirectorio aplib. Cuando volvamos al Global Script no nos
aparece en el árbol la función hasta que no seleccionamos en el menú Options->
Regenerate Header.
• Internal Functions: Funciones que realizan acciones predeterminadas, como son
proporcionar un valor de una variable, o asignar un valor a una variable. Estas
funciones son por supuesto comunes, y no pueden ser modificadas.
• Actions: Una acción es una subrutina que no se ejecuta cuando sea llamada por un
evento, sino cuando un trigger o disparo, ya sea por tiempo o por cambio de variable
ocurra. Las actions no se pueden cambiar de nombre (siempre se llaman gscaction),
y generan un fichero de extensión pas que se guarda en el subdirectorio pas, ya sea
del ordenador en cuestión (monopuesto) o de manera global para todos los
ordenadores (multipuesto). El fichero pas por defecto se llama gsccs1.pas, pero se
puede renombrar a posteriori.
Project Functions
Vamos a realizar una función de proyecto, que mediante código C nos suma dos
valores enteros y nos devuelve el resultado. El código es el siguiente:
Temporal=Valor_1+Valor_2;
return(Temporal);
}
234
Aprende WinCC
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int Temporal;
int temp1,temp2;
235
Aprende WinCC
Standard Functions
Internal functions
Las funciones internas son las básicas con las que se puede trabajar a la hora de
realizar funciones o acciones en C. Son propiamente las instrucciones de programación
de que dispone el WinCC para poder realizar las subrutinas por código.
Dichas funciones también son comunes y se encuentran en el subdirectorio
aplib, pero se diferencian de las anteriores en la extensión, que en este caso es icf.
Además, no pueden ser editadas las funciones internas, y por lo tanto no se
pueden modificar por parte del usuario.
Actions
almacena en el subdirectorio pas de nuestro proyecto. Esto significa que las acciones
locales solo se ejecutarán cuando el proyecto sea multiusuario en el equipo donde se
crearon, y no será posible realizar dicha acción en otro equipo del proyecto.
Cada dez que se genera una nueva acción, el fichero apdefap.h es integrado
automáticamente en el subdirectorio library de nuestro proyecto
Una acción no es una función, por lo que no podemos:
• Ni definir el valor de retorno (siempre será un int). Por lo tanto, deberemos terminar
con un return que indique si ha finalizado adecuadamente la acción.
• Ni cambiarle el nombre, que por defecto es gscAction.
• Ni pasarle parámetros de entrada, ya que siempre es de tipo void.
Por lo tanto, el nombre por el que luego la identificaremos no será el de la acción
(que es gcsAction), sino el del archivo en el que la almacenamos, que finaliza en
extensión pas.
237
Aprende WinCC
Funciones en C.
#include “apdefap.h”
long _main(char *lpszPicturename, char *lpzObjectName, char *PropertyName)
• Declaración de constantes para tags: En estas líneas se definen constantes para las
variables que vayamos a utilizar. En la versión 5.1 de WinCC estas constantes y el
lugar donde se declaran son necesarias para posteriormente poder realizar una
sustitución completa de una variable por otra mediante cross reference.
// WINCC: TAGNAME_SECTION_START
// syntax #define Tagnameinaction “Tagname”
#define Variable_1 “MW10_TiempoPresion”
// next TagID: 1
// WINCC: TAGNAME_SECTION_END
// WINCC: PICNAME_SECTION_START
// syntax #define PicNameInAction “Picturename”
#define Picture_1 “Picture_Consignas_Tiempo”
// next PicID: 1
// WINCC: PICNAME_SECTION_END
• Declaración de variables:
Int pepe=0;
BOOL juan=FALSE;
• Retorno de la función:
Return pepe;
Printf.
238
Aprende WinCC
%d: entero.
%ld: doble entero
%c: carácter.
%x: hexadecimal
%o: octal
%u: entero sin signo.
%f: real en formato de coma flotante
%e: real en formato de exponencial.
%s: cadena de texto
%le: real en formato exponencial de 64 bits.
%%: carácter %
\n: cambio de linea de texto (como el return)
\r: ir a primera posición. Generalmente cuando se utiliza \n se sigue de un \r para
ponerse en el primer carácter de la nueva linea.
\t: tabulación.
\\: carácter \.
La función prinf es muy interesante para mostrar mensajes por el objeto Global
Script diagnose que nos informen de acciones en las funciones que se están ejecutando
en C.
239
Aprende WinCC
Definición de variables en C.
Operadores matemáticos en C.
Operaciones matemáticas:
+ Suma valor=uno+dos
- Resta valor=uno-dos
* Multiplicacion valor=uno*dos
/ División valor=uno/dos
% Modulo (resto de una división) valor=uno%dos
++ Incrementar ++valor
-- Decrementar --valor
Operaciones lógicas:
241
Aprende WinCC
Disparo de acciones
242
Aprende WinCC
243
Aprende WinCC
En event podemos seleccionar por ciclo standard, con lo cual podemos asignar la
llamada a un ciclo de usuario personalizado, o por hora, día, semana, mes o año. En este
segundo caso, nos permite indicar a partir e que fecha u hora debe empezar a realizar
dicha acción.
244
Aprende WinCC
• Tag: Podemos disparar una acción cuando alguna o varias variables cambien de
valor.
#pragma code(“NOMBRE_DE_LA_DLL.DLL”)
#include “NOMBRE_DE_LA_CABECERA.h”
#pragma code()
Para definir una variable local, simplemente hay que declararla dentro de una
función o evento. Sin embargo para definir una variable global:
int variable=0;
void subrutina()
{
void OnProertyChange(…)
{
extern int variable;
a=0;
Nota: Si declaramos una variable externa sobre una función standard, esta
función existirá en todos los proyectos que generemos.
Exportar acciones.
A veces puede ser interesante exportar una acción de un proyecto a otro, p. Ej.,
en el caso de haber realizado una función que nos calcule cuando debemos de salvar
datos a una gráfica, y queremos implementarla en un nuevo proyecto que hayamos
realizado (si copiáramos el código C a través del portapapeles los datos de disparo,
autor, password, etc… se deberían de volver a crear).
246
Aprende WinCC
Diagnóstico de funciones C.
Una de las tareas más importantes a la hora de trabajar con funciones C es poder
realizar diagnóstico de las mismas durante su ejecución, ya que a menudo las acciones
que realizan no poseen un control “visual” de su ejecución, y no podemos saber si se
están ejecutando bien, y porqué en el caso de que lo realicen mal.
Vamos a estudiar las posibilidades de diagnóstico que soporta WinCC V5.1.
247
Aprende WinCC
Funciones standard.
Standard Alarm.
248
Aprende WinCC
Standard Graphics.
249
Aprende WinCC
Standard Reports.
DWORD dwError1,
DWORD dwError2,
DWORD dwError3,
DWORD dwError4,
DWORD dwError5;
TCHAR szErrorText[MAX_ERROR_LEN];
}
CMN_ERROR, *PCMN_ERROR;
Siendo:
• dwError1 a dwError5: valores de error devueltos por la API de
Windows.
• SzErrorText: cadena de texto que contiene el mensaje de error
devuelto por el sistema.
250
Aprende WinCC
Caappííttuulloo 8
C
TTeexxtt LLiibbrraarryy..
Text Library es la parte de WinCC que se encarga de gestionar los mensajes de
textos. Cuando necesitamos realizar una aplicación que deba cambiar sus textos según
el idioma seleccionado, necesariamente deberemos realizar una asignación de dichos
textos en un idioma u otro.
Mediante Text Library se consigue enlazar a través de un número identificativo
cadenas de texto de diferentes idiomas. Dicho número se asigna automáticamente a los
controles que utilizamos en el Graphic Designer. De esta manera, cuando dentro de
WinCC en modo runtime cambiamos de código de idioma, automáticamente sustituye
los textos asignados a un número en un idioma por el correspondiente.
251
Aprende WinCC
Idiomas
¿Cómo crear un nuevo idioma?
Nos parecen dos nuevas columnas, cada una con el idioma correspondiente.
Ahora, debemos de rellenar todos los mensajes que aparecen en la columna inglés,
traduciéndolos nosotros mismos al idioma correspondiente.
252
Aprende WinCC
253
Aprende WinCC
Caappííttuulloo 9
C
U
Usseerr A
Addm
miinniissttrraattoorr..
El apartado de WinCC denominado User Administrator se encarga de la
administración de los usuarios que van a trabajar en el runtime del sistema WinCC.
La principal diferencia que hay que observar en la filosofía de usuarios de
WinCC con respecto al típico control de privilegios por niveles es que en el WinCC el
disponer de privilegio o nivel para realizar algo que los demás no estén autorizados no
implica que se permita acceder a todo lo que los demás usuarios son capaces de realizar.
254
Aprende WinCC
Usuarios.
255
Aprende WinCC
Passwords.
Las capacidades que dispone un usuario aparecen con un piloto rojo indicativo
seleccionadas.
Para añadir una capacidad a un usuario, simplemente hay que hacer doble click
en el lugar donde debe aparecer el piloto rojo de la capacidad.
Para deshacer dicha operación es necesario realizar de nuevo doble click en el
mismo lugar.
256
Aprende WinCC
Nota: si se habilita la opción Chipcard, aparece una casilla que nos permite
realizar los logins de los operarios a través de la tarjeta chipcard.
Passwords estándar.
El WinCC al crear un nuevo proyecto ya genera por defecto una serie de niveles
de password estándar. El significado de los mismos es el siguiente:
• User administration: si este nivel está activo, se permite la entrada al módulo user
administration y realizar cambios en el mismo.
• Tag entering: cuando está activo este nivel, se permite introducir valores de manera
manual en los campos de I/O.
• Process controlling: permite al operario realizar cambios del tipo
manual/automático.
• Picture editing: Permite ejecutar el grapich Designer para realizar cambios en las
pantallas.
• Change Picture: Permite al operario realizar cambios en las pantallas durante el
runtime.
• Windows Selection: Permite al operario cambiar a las aplicaciones Windows que se
estuvieran ejecutando en background junto con el WinCC.
• Hardcopy: Habilita que se puedan realizar hardcopys de la pantalla.
• Confirm alarm: Habilita que el operario pueda confirmar alarmas.
258
Aprende WinCC
• Lock alarms: Habilita que el operario pueda bloquear alarmas para que no vuelvan
a aparecer.
• Free alarms: Habilita que el operario pueda liberar alarmas que estuviesen
bloqueadas previamente.
• Project alarms: Permite al operario acceder al Alarm Logging para cambiar
alarmas.
• Start archive: Permite al operario arrancar un archivo de proceso.
• Stop archive: Permite al operario parar un archivo de proceso.
• Edit archive value: Permite al operario editar un valor de un archivo desde una
tabla.
• Project archive value: Si stá activa, permite al operario configurar los archivos en el
Tag Logging.
• Project manager: Habilita al operario para poder salir al Explorador de WinCC.
Para poder dar de alta o baja a un usuario es necesario asignar una hotkey a la
ventana de usuarios. Existe un método mediante una acción de C que nos permite
asignar a un botón la apertura de la ventana de activación.
El código a añadir al botón es el siguiente:
#pragma code(“USEADMIN.DLL”)
#include “PWRT_API.H”
#pragma code()
PWRTLogin(‘1’);
#pragma code(“USEADMIN.DLL”)
#include “PWRT_API.H”
#pragma code()
PWRTLogout();
259
Aprende WinCC
Addons.
Variable login.
El tipo de variable debe de ser entero, para comprender un valor que irá desde 0
a 10.
Configuration
260
Aprende WinCC
Chipcard.
Es posible dar de alta a operarios mediante tarjetas magnéticas que se pasan por
un aparato denominado chipcard que se conecta al puerto serie del PC. Este software
más hardware es una opción de WinCC, cuyo funcionamiento se explica a continuación.
Suponemos que se ha instalado el software opcional Chipcard y conectado el
lector/escritor al puerto serie del PC.
Parametrizar el Chipcard.
261
Aprende WinCC
Mediante esta opción podemos leer el usuario grabado en la tarjeta, con el objeto
de comprobar que se ha grabado correctamente.
262