Mostrar lista de artículos
WinCC -- Configuración de alarmas y avisos -- Manejo de alarmas y avisos
¿Qué posibilidades existen para leer o escribir archivos de TagLogging / AlarmLogging en el WinCC?
¿Cómo se pueden acusar los avisos de alarma?
¿Porqué no se liberan en el SIMATIC WinCC los avisos bloqueados, a pesar de que el usuario dado de alta dispone de los derechos para liberar avisos?
¿Cómo se puede crear un aviso de servicio adicional al acusar un aviso, el cual contenga el texto del aviso aviso acusado?
¿Cómo se pueden crear avisos de servicio definidos por el usuario en el WinCC?
¿Qué posibilidades existen para resetear de nuevo el bit de acuse?
¿Cómo se pueden crear avisos de servicio con ayuda de acciones específicas de usuario, hasta el WinCC V6.0 + SP4 incluido?
OS - WinCC -- Configuración de alarmas y avisos -- Configuración de alarmas y avisos
¿Cómo se pueden crear avisos de servicio con ayuda de acciones específicas de usuario, hasta el WinCC V6.0 + SP4 incluido?
¿Cómo se pueden mostrar y manejar los avisos en modo Runtime?
¿Cómo hay que proceder cuando las alarmas no se muestran en el modo Runtime?
¿Cómo se puede cambiar el ancho de columna de los bloques de aviso del WinCC Alarm Control, en el momento de la configuración en el Graphics Designer o en el Runtime, con ayuda del ratón"?
Configurar el bloque de sistema "Número de PLC/CPU" en un aviso
¿Porqué no se representan en el Faceplate los avisos relevantes para los puntos de medida (PCS 7 V4.x / V5.x)?
¿Qué se puede hacer cuando no se muestra ningún aviso en la zona de resumen del WinCC?
Generación de una nueva marca de tiempo a pesar de que los avisos de servicio son idénticos
Se bloquea la activación de la bocina para avisos con determinados usuarios
¿Porqué en el PCS 7 las marcas de tiempo de los avisos se muestran tachadas o con asteriscos?
SIMATIC PCS 7 V5/V6 - Avisos no acusables en la nueva página de alarmas
¿Cómo se asignan las prioridades en la representación de alarmas, avisos, etc., cuando se tiene señalización conjunta?
¿Cómo se puede mostrar un comentario de un módulo en un aviso de servicio?
¿Por qué los avisos de servicio sólo se muestran en el servidor OS y no en los clientes OS?
¿Por qué no se inserta en el aviso de servicio el usuario que acusa un aviso, después de actualizar el PCS 7 V6.0 + SP2 al SP3?
¿Por qué la petición de servicio no se muestra parpadeando en la señalización general?
Modificación del color de impresión en el protocolo de avisos
¿Cómo se puede conseguir que se muestren en el WinCC Runtime los avisos para un determinado usuario, pero no se puedan acusar?
¿Cómo se puede reconfigurar el procedimiento de acuse de alarmas?
¿Porqué no se muestran los avisos de servicio en el proyecto de PCS 7?
¿Cómo se pueden mostrar los avisos generales de control de procesos en el proyecto de PCS 7?
¿Qué significan los avisos de control de procesos creados durante la compilación OS?
¿Qué avisos generales de control de procesos se crean en la compilación OS?
¿Cómo se pueden crear avisos de servicio con ayuda de acciones específicas de usuario, hasta el WinCC V6.0 + SP4 incluido?
Referencia:

Instrucciones:
Los avisos de servicio se crean automáticamente en el WinCC al manejar los campos de E/S, si en la configuración de dicho campo se ha ajustado la propiedad "Aviso de servicio - Sí".
Pero a veces también se desea activar avisos de servicio al pulsar un botón u otros objetos - Esto es posible mediante la utilización de algunas funciones del WinCC Open Development Kit (WinCC ODK).

Este artículo muestra la utilización de las funciones ODK "MSRTCreateMsg()" y "MSRTSetComment()" para crear avisos de servicio en modo Runtime. Estas funciones sólo se pueden utilizar hasta el WinCC V6.0 + SP4 incluida. A partir del WinCC V6.2, hay que utilizar la función "MSRTCreateMsgInstanceWithComment()" (consulta la página del Customer Support con número ID 24325381). 

Atención:
Al realizar la migración de un proyecto antiguo, hay que sustituir las llamadas a las funciones "MSRTCreateMsg()" y "MSRTSetComment()" por la llamada a la función  "MSRTCreateMsgInstanceWithComment()" en caso necesario.

La estructura del aviso de servicio la define el sistema de forma fija para este ejemplo. El Script en C de este artículo crea un aviso de servicio en modo Runtime con el número 12508141, el cual muestra el valor antiguo y el valor nuevo en el Valor de proceso 2 y 3 respectivamente, y un comentario del aviso.

En la función "BedienMeldB", estas llamadas API se han agrupado y asignado de tal manera que se obtienen la misma funcionalidad que con los avisos de servicio de un campo de E/S.

1. Asignación de la función "BedienMeldB"

Si se llama a la función mediante el evento "Clic de ratón" de un botón o de cualquier otro objeto, se puede asignar de la siguiente manera:

double wert_old=0;
double wert_new=1;
char comment[128]="Pulsación del botón33";
BedienMeldB(comment,wert_old,wert_new);

o bien
BedienMeldB("Pulsación del botón10",0,0);

La función se tiene que asignar con la cadena del comentario y los valores antiguo y nuevo, a los cuales simplemente se les puede asignar el valor "0" en caso que no se escriba ninguna variable.

No se ha previsto la posibilidad de asignar un ID de variable, tal como se utiliza en los campos de E/S, ya que no se puede averiguar.
No se ha previsto la entrada de un valor en el Logbuch por parte de esta función.

2. Die Funktion "BedienMeldB"

#pragma code ("Kernel32.DLL");
BOOL GetComputerNameA(LPSTR Computername, LPDWORD size);
BOOL GetLocalTime(SYSTEMTIME* stTime);
#pragma code();
#include "M_GLOBAL.H"
#include "msrtapi.h"
// =======================================================
// Function: BedienMeldB()
// =======================================================
// Descripción: Función para crear mensajes de operador específicos de usuario
// Se llama asociada, por ejemplo, a un botón: BedienMeldB(CommentText,W_old,W_new);
// =======================================================
void BedienMeldB( char* CommentText,double doValueOld, double doValueNew)
{
CMN_ERROR g_sErr;
LPCMN_ERROR pError = &g_sErr; /* Global Error Block */
BOOL fRet = TRUE;
DWORD dwBufSize;
static DWORD l_svID = 0;
//Connection ID to Alarmlogging

DWORD dwVarID=0;
// Tag-ID set to 0
MSG_RTCREATE_STRUCT MsgCreate;
MSG_COMMENT_STRUCT MsgComment;
SYSTEMTIME stTime;
GetLocalTime( &stTime );
// Get time/date

MsgCreate.dwMsgNr = MSG_SINGLE_OPERATION;
// Operator Message Number
MsgComment.dwMsgNr = MSG_SINGLE_OPERATION;
// Operator Message Number
MsgCreate.stMsgTime = stTime;
MsgComment.stTime = stTime;
MsgCreate.wPValueUsed = 7;
// 3 Process Tags( 0..2 )
MsgCreate.dPValue[0] = dwVarID;
// Tag-ID
MsgCreate.dPValue[1] = doValueOld;
// previous value
MsgCreate.dPValue[2] = doValueNew;
// current value
MsgCreate.dwMsgState = MSG_STATE_COME;
// state "COME"

strcpy( MsgComment.szText, CommentText );
strcpy( MsgComment.szUser, GetTagChar("@CurrentUser"));
// assign logged user
// get computer name
dwBufSize = sizeof( MsgComment.szComputerName );
GetComputerNameA( MsgComment.szComputerName, &dwBufSize );
printf("ComputerName: %s \r\n",MsgComment.szComputerName);
do {
if( l_svID==0) {
fRet= MSRTStartMsgService( &l_svID, NULL, NULL, 0, NULL, pError );
// activate service
if(!fRet) break;
printf( "Alarm Connected %d \r\n", l_svID );
}
fRet = MSRTCreateMsg( l_svID, &MsgCreate, pError ) ;
// create message
// Create comment
if(fRet == FALSE ){
printf("MSRTCreateMsg_Error %s \r\n",pError->szErrorText);
}
else {
MSRTSetComment( l_svID, &MsgComment, pError );
}

break;
} while(TRUE);

fRet=MSRTStopMsgService(l_svID,pError);
// cancel service
printf("StopMsgService %d %s \r\n",fRet,pError->szErrorText);
if (fRet==TRUE)
l_svID=0;
}

Advertencia:
En el WinCC ODK, también se dispone de una función con la que se puede asignar el servidor como parámetro de llamada. En el ejemplo superior se utiliza un servidor estándar.
Información sobre el ODK está disponible en la página del Customer Support con número ID 9652128.
Tenga también en cuenta la página del Customer Support con número ID 24325381.

 Nr. de identificación (ID):218555   Fecha:2008-08-12 
Este artículo...me ayudóno me ayudó                                 
mySupport
My Documentation Manager 
Boletín 
CAx-Download-Manager 
Support Request
Sobre este artículo
Imprimir
Crear PDF 
Enviar artículo
QuickLinks
Herramienta de compatibilidad 
Ayuda
Ayuda en línea
Guided Tour