Umsetzung von Impulsalarmen für Multiinstanzalarme

Im Falle von Multiinstanzalarmen werden die Alarminformationen an das System geschickt und vom Event-Manager abgebildet. Die Verwaltung der Statusinformation und die entsprechende Abbildung in WinCC OA durch passende Messages muss von der Alarmquelle (Treiber) ausgeführt werden.

Impulsalarme können für Multiinstanzalarme wie folgt umgesetzt werden:

Variante 1:

  • Setzen Sie die Quittierart "Quittieren löscht" für eine Meldeklasse im internen Datenpunkt _AlertClass durch Selektion der gewünschten Meldeklasse. In der Abbildung unterhalb wurde "Quittieren löscht" für die Meldeklasse "alert" aktiviert.
Abbildung 1. Quittierart "Quittieren löscht" in der internen Meldeklasse "alert"

  • Lösen Sie einen Impulsalarm über ein Skript wie folgt aus:

main(mapping event)
{
  time t = getCurrentTime();
  int rc = alertSetWait(t, 0,"System1:ExampleDP_Arg2.:_alert_hdl.._event", DPATTR_ALERTEVENT_CAME_IMPULSE);
  DebugN("Alert came:", rc);
}
  • Quittieren Sie den Alarm über Skript:

main(mapping event)
{
  time t = makeTime(2017,5,29,14,16,36,622);
  /* The time must be correspond to the CAME time including the milliseconds)*/
  /* The second int parameter "count", in this case, 11, must correspond to the CAME alert */
  int rc = alertSetWait(t, 11,"System1:ExampleDP_Arg2.:_alert_hdl.._ack", 1); /* Acknowledges the alert: 29.5.2017 14:16:36:622 */
  DebugN("Alert acknowledged:", rc);
}
  • Lösen Sie einen neuen Alarm aus:

main(mapping event)
{
  time t = getCurrentTime();
  int rc = alertSetWait(t, 0,"System1:ExampleDP_Arg2.:_alert_hdl.._event", DPATTR_ALERTEVENT_CAME_IMPULSE);
  int ret;
  DebugN("Alert came:", rc);
}

Variante 2:

  • Lösen Sie einen Impulsalarm über ein Skript wie folgt aus:

main(mapping event)
{
  time t = getCurrentTime();
  int rc = alertSetWait(t, 0,"System1:ExampleDP_Arg2.:_alert_hdl.._event", DPATTR_ALERTEVENT_CAME_IMPULSE);
  DebugN("Alert came:", rc);
}
  • Setzen Sie den Alarm zurück über alertSet und Verwendung des Event-Typs DPATTR_ALERTEVENT_WENT_OBSOLETE:
main(mapping event)
{
  time t = makeTime(2017,5,26,11,05,04,401); /* The time must correspond to the CAME time including the milliseconds)*/
  /* The second int parameter "count", in this case, 4, must correspond to the CAME alert */
  int rc = alertSetWait(t,4,"System1:ExampleDP_Arg2.:_alert_hdl.._event", DPATTR_ALERTEVENT_WENT_OBSOLETE);
  int ret;
  DebugN("Alert went obsolete:", rc);
}
  • Lösen Sie einen neuen Alarm über ein Skript aus (siehe oberhalb).