WinCC_C-Script

cod3sys

Level-1
Beiträge
79
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
werde demnächst mit WinCC anfangen zu arbeiten.
Habe da mal eine Frage zur Visualisierung z.B. eines Motors.
Also ich habe einen Leitrechner wo ich über einen OPC Server Daten von verschiedenen SPS´en hole.Auf diesem Rechner ist auch WinCC installiert.
Auf diesem Rechner ist kein Step 7 installiert.
Nun wenn ich das "Betriebsmeldebit" des Motors und das "Störmeldebit" habe, wie kann ich den Motor visualisieren das es im Betrieb "Grün", Störung "Rot" und keine Betrieb " Grau" wird.
Das es nur "Grün" oder "Rot" wird ist kein Problem, das bekomme ich über den Dynamikdialog oder der Variablenzuweisung hin. Aber halt das der Motor 3 verschiedene Zustände annehmen kann bekommt man nur über einen VB Script oder C-Script hin.
Hat da jemand erfahrungen ????
 
Zunächst mal folgendes:

Ein gestörter Antrieb kann mehrere Zustände haben. So kann ein Antrieb nicht laufen (z.B. Schütz zieht nicht an), obwohl der zugehörige Ausgang aktiv geschaltet wurde. Oder: Ein Antrieb wird als "EIN" gemeldet, obwohl der zugehörige Ausgang nicht angesteuert wird (Schütz klemmt, Elektriker drückt Schütz mit Schraubendreher runter :) ).

Wir codieren bei uns den Zustand der Antriebe in ein Byte. Dabei verwenden wir Bit 0 gründsätzlich als Störmeldebit. Bit 1 ist bei einem Standardantrieb die "aktiv"- Meldung (bei einem normalen Motor also "EIN").

Daraus ergeben sich folgende Kombinationen:

Code:
Bit 1  Bit 0  Wert   Bemerkung               Anzeige WinCC

0       0      0        Motor AUS, ok          Grau oder Weiss
0       1      1        Motor AUS, gestört   Grau oder Weiss / rot blinkend
1       0      2        Motor EIN, ok           Grün
1       1      3        Motor EIN, gestört    Grün / rot blinkend
Diese Darstellungen lassen sich mit der Zustandsanzeige realisieren, und sie hat den Vorteil, dass man neben der Störung auch den Zustand des Antriebes noch erkennen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal für deine Antwort :) Aber das Problem liegt darin das ich schon zum Variablenhaushalt von WinCC z.B. 1 Bit Betriebsmeldung und 1 Bit Störmeldung.Also aus diesen beiden Bits muss ein Zustand erstellt werden. Ich habe mich schonmal schlau gemacht mit C Skript. Da kann man eine If... Else If....Else Anwendung dafür verwenden.Muss nur nochmal testen ob es funktioniert. Ich berichte euch wenn es geklappt hat.
 
Moin,
mit diesem Skript funktioniert es wie ich es mir vorgestellt habe.
Vielleicht hat jemand irgendwann verwendung dafür.

#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 2
#define TAG_1 "Lüfter_1"
#define TAG_2 "Störung_Lüfter_1"
// WINCC:TAGNAME_SECTION_END
// WINCC:pICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:pICNAME_SECTION_END
if ((unsigned long)GetTagDouble (TAG_1))
return 65280;
else if
((unsigned long)GetTagDouble (TAG_2))
return 500;
else
return 8421504;

}
 
Da kann man nur hoffen, dass nie beide Bits gleichzeitig da sind (was ja möglich ist, es sein denn, man sorgt auf der Steuerung dafür, dass das Betriebs-Bit bei Fehler auf "0" gesetzt wird) - in dem Fall wird der Antrieb nicht als gestört angezeigt (wegen der Anordnung if..else..)!

Meines Wissens nach ist das mit dem "else" auch nicht erforderlich, da bei einem "return" die Unterrutine verlassen wird.

Also ich würde demnach erst nach Zustand TAG_2 und dann nach TAG_1 abfragen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
es geht auch mit dem dynamikdialog

Farben_Motor.JPG


Farben_Motor.jpg
 
Nun ja, vom Ansatz her ok und für einzelne Antriebe, die darzustellen sind, machbar.

Dennoch stimmt hier die Zuordnung der Farben noch nicht ganz:

Wert 0: AUS, keine Störung -> grau, ok
Wert 1: EIN, keine Störung -> grün, ok
Wert 2: AUS, Störung -> grün ?????
Wert 3: EIN, Störung -> rot, ok
übrige Werte -> grau ??? (damit fällt ein Fehler gar nicht mehr auf!), z.b. neg. Werte, oder Werte > 3 !
 
Nun ja, vom Ansatz her ok und für einzelne Antriebe, die darzustellen sind, machbar.

Dennoch stimmt hier die Zuordnung der Farben noch nicht ganz:

Wert 0: AUS, keine Störung -> grau, ok
Wert 1: EIN, keine Störung -> grün, ok
Wert 2: AUS, Störung -> grün ?????
Wert 3: EIN, Störung -> rot, ok
übrige Werte -> grau ??? (damit fällt ein Fehler gar nicht mehr auf!), z.b. neg. Werte, oder Werte > 3 !



der geltungsbereich geht immer bis, das bedeutet 0 = grau, grösser 0 bis 1 = grün, grösser 1 bis 3 = rot.
negative werte bei binären variablen ?
grösser 3 sollte auch nicht gehen
 
Zurück
Oben