Hallo Forum,
Für derjenige die die es gebrauchen kann. Meine Erfahrungen.
Zeitrichtiges Meldeverfahren WinCC7 .5 zusammen mit S7-1500 V16 und Verwendung Sammelanzeige.
Es funktioniert einwandfrei, aber, Leider steck da noch einige Hand zu Fuss Arbeit drin.
Bei dem ProgramAlarm kommst du nich daran vorbei die Meldeklassen im WinCC händisch zu überarbeiten.
Es gibt kein übernahme der Meldeklassen, priorität, und quittierung aus TIA. Auch nicht die selbst angelegte im Gemeinsame Daten.
Es stehen nur die meldeklassen von WinCC selbst zur Verfügung.
Die Meldetext im Grundeinstelllung erschein im WinCC Meldeleiste im Zeile Herkunft.
Diese ist natürlich viel zu schmall und reicht nur aus für KKS (TAG)-Nummer oder CPU Name.
Der echte WinCC Meldetext muss in Zusatztextfeld 2 gemacht werden!!
Sammelanzeige muss selbst im TIA programmiert werden.
Sprich, den EventState
Wenn einmal programmamiert funktioniert die Einwandfrei.
Anbei den Code die ich mit hilfe diese Forum gemacht habe.
Code:
FUNCTION_BLOCK "Group_Display"
TITLE = Group Display WinCC 7.5
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : 'v.Berkel'
FAMILY : Störmeldungen
VERSION : 16.0
//Group Display WinCC 7.5
VAR_INPUT
"Messstelle gesperrt X" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Status-Meldung Status OS" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Status-Meldung Status AS" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Bedienmeldung OM" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Bedienanforderung OR" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Nicht belegt Status" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Prozessmeldung PM" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Wartungsanforerung MR" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"AS-Leittechnikmeldung Fehler" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"AS-Leittechnikmeldung Störung" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Toleranz TL" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Toleranz TH" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Warnung WL" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Warnung WH" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Alarm AL" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
"Alarm AH" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
ACK { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
END_VAR
VAR_OUTPUT
EventState : "EventState";
Visible : Bool;
END_VAR
VAR
"R_TRIG_Messstelle gesperrt X" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Status-Meldung Status OS" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Status-Meldung Status AS" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Bedienmeldung OM" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Bedienanforderung OR" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Nicht belegt Status" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Prozessmeldung PM" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Wartungsanforerung MR" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_AS-Leittechnikmeldung Fehler" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_AS-Leittechnikmeldung Störung" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Toleranz TL" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Toleranz TH" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Warnung WL" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Warnung WH" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Alarm AL" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
"R_TRIG_Alarm AH" {InstructionName := 'R_TRIG'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : R_TRIG;
EventState_Cache { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "EventState";
Visible_Collect { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
END_VAR
BEGIN
REGION Messstelle gesperrt X
#EventState_Cache."Messstelle gesperrt X" := #"Messstelle gesperrt X" AND #EventState_Cache."Messstelle gesperrt Quittiert";
#"R_TRIG_Messstelle gesperrt X"(CLK := #EventState_Cache."Messstelle gesperrt X");
IF #ACK THEN
#EventState_Cache."Messstelle gesperrt Quittiert" := true;
ELSIF #"R_TRIG_Messstelle gesperrt X".Q THEN
#EventState_Cache."Messstelle gesperrt Quittiert" := false;
END_IF;
END_REGION
REGION Status-Meldung Status OS
#EventState_Cache."Status-Meldung Status OS" := #"Status-Meldung Status OS" AND #EventState_Cache."Status-Meldung OS Quittiert";
#"R_TRIG_Status-Meldung Status OS"(CLK := #EventState_Cache."Status-Meldung Status OS");
IF #ACK THEN
#EventState_Cache."Status-Meldung OS Quittiert" := true;
ELSIF #"R_TRIG_Status-Meldung Status OS".Q THEN
#EventState_Cache."Status-Meldung OS Quittiert" := false;
END_IF;
END_REGION
REGION Status-Meldung Status AS
#EventState_Cache."Status-Meldung Status AS" := #"Status-Meldung Status AS" AND #EventState_Cache."Status-Meldung AS Quittiert";
#"R_TRIG_Status-Meldung Status AS"(CLK := #EventState_Cache."Status-Meldung Status AS");
IF #ACK THEN
#EventState_Cache."Status-Meldung AS Quittiert" := true;
ELSIF #"R_TRIG_Status-Meldung Status AS".Q THEN
#EventState_Cache."Status-Meldung AS Quittiert" := false;
END_IF;
END_REGION
REGION Bedienmeldung OM
#EventState_Cache."Bedienmeldung OM" := #"Bedienmeldung OM" AND #EventState_Cache."Bedienmeldung OM Quittiert";
#"R_TRIG_Bedienmeldung OM"(CLK := #EventState_Cache."Bedienmeldung OM");
IF #ACK THEN
#EventState_Cache."Bedienmeldung OM Quittiert" := true;
ELSIF #"R_TRIG_Bedienmeldung OM".Q THEN
#EventState_Cache."Bedienmeldung OM Quittiert" := false;
END_IF;
END_REGION
REGION Bedienanforderung OR
#EventState_Cache."Bedienanforderung OR" := #"Bedienanforderung OR" AND #EventState_Cache."Bedienanforderung OR Quittiert";
#"R_TRIG_Bedienanforderung OR"(CLK := #EventState_Cache."Bedienanforderung OR");
IF #ACK THEN
#EventState_Cache."Bedienanforderung OR Quittiert" := true;
ELSIF #"R_TRIG_Bedienanforderung OR".Q THEN
#EventState_Cache."Bedienanforderung OR Quittiert" := false;
END_IF;
END_REGION
REGION Nicht belegt Status
#EventState_Cache."Nicht belegt Status" := false;
#EventState_Cache."Nicht belegt Quittiert" := true;
END_REGION
REGION Prozessmeldung PM
#EventState_Cache."Prozessmeldung PM" := #"Prozessmeldung PM" AND #EventState_Cache."Prozessmeldung PM Quittiert";
#"R_TRIG_Prozessmeldung PM"(CLK := #EventState_Cache."Prozessmeldung PM");
IF #ACK THEN
#EventState_Cache."Prozessmeldung PM Quittiert" := true;
ELSIF #"R_TRIG_Prozessmeldung PM".Q THEN
#EventState_Cache."Prozessmeldung PM Quittiert" := false;
END_IF;
END_REGION
REGION Wartungsanforerung MR
#EventState_Cache."Wartungsanforerung MR" := #"Wartungsanforerung MR" AND #EventState_Cache."Wartungsanforerung MR Quittiert";
#"R_TRIG_Wartungsanforerung MR"(CLK := #EventState_Cache."Wartungsanforerung MR");
IF #ACK THEN
#EventState_Cache."Wartungsanforerung MR Quittiert" := true;
ELSIF #"R_TRIG_Wartungsanforerung MR".Q THEN
#EventState_Cache."Wartungsanforerung MR Quittiert" := false;
END_IF;
END_REGION
REGION AS-Leittechnikmeldung Fehler
#EventState_Cache."AS-Leittechnikmeldung Fehler" := #"AS-Leittechnikmeldung Fehler" AND #EventState_Cache."AS-Leittechnikmeldung Fehler Quittiert";
#"R_TRIG_AS-Leittechnikmeldung Fehler"(CLK := #EventState_Cache."AS-Leittechnikmeldung Fehler");
IF #ACK THEN
#EventState_Cache."AS-Leittechnikmeldung Fehler Quittiert" := true;
ELSIF #"R_TRIG_AS-Leittechnikmeldung Fehler".Q THEN
#EventState_Cache."AS-Leittechnikmeldung Fehler Quittiert" := false;
END_IF;
END_REGION
REGION AS-Leittechnikmeldung Störung
#EventState_Cache."AS-Leittechnikmeldung Störung" := #"AS-Leittechnikmeldung Störung" AND #EventState_Cache."AS-Leittechnikmeldung Störung Quittiert";
#"R_TRIG_AS-Leittechnikmeldung Störung"(CLK := #EventState_Cache."AS-Leittechnikmeldung Störung");
IF #ACK THEN
#EventState_Cache."AS-Leittechnikmeldung Störung Quittiert" := true;
ELSIF #"R_TRIG_AS-Leittechnikmeldung Störung".Q THEN
#EventState_Cache."AS-Leittechnikmeldung Störung Quittiert" := false;
END_IF;
END_REGION
REGION Toleranz TL
#EventState_Cache."Toleranz TL" := #"Toleranz TL" AND #EventState_Cache."Toleranz TL Quittiert";
#"R_TRIG_Toleranz TL"(CLK := #EventState_Cache."Toleranz TL");
IF #ACK THEN
#EventState_Cache."Toleranz TL Quittiert" := true;
ELSIF #"R_TRIG_Toleranz TL".Q THEN
#EventState_Cache."Toleranz TL Quittiert" := false;
END_IF;
END_REGION
REGION Toleranz TH
#EventState_Cache."Toleranz TH" := #"Toleranz TH" AND #EventState_Cache."Toleranz TH Quittiert";
#"R_TRIG_Toleranz TH"(CLK := #EventState_Cache."Toleranz TH");
IF #ACK THEN
#EventState_Cache."Toleranz TH Quittiert" := true;
ELSIF #"R_TRIG_Toleranz TH".Q THEN
#EventState_Cache."Toleranz TH Quittiert" := false;
END_IF;
END_REGION
REGION Warnung WL
#EventState_Cache."Warnung WL" := #"Warnung WL" AND #EventState_Cache."Warnung WL Quittiert";
#"R_TRIG_Warnung WL"(CLK := #EventState_Cache."Warnung WL");
IF #ACK THEN
#EventState_Cache."Warnung WL Quittiert" := true;
ELSIF #"R_TRIG_Warnung WL".Q THEN
#EventState_Cache."Warnung WL Quittiert" := false;
END_IF;
END_REGION
REGION Warnung WH
#EventState_Cache."Warnung WH" := #"Warnung WH" AND #EventState_Cache."Warnung WH Quittiert";
#"R_TRIG_Warnung WH"(CLK := #EventState_Cache."Warnung WH");
IF #ACK THEN
#EventState_Cache."Warnung WH Quittiert" := true;
ELSIF #"R_TRIG_Warnung WH".Q THEN
#EventState_Cache."Warnung WH Quittiert" := false;
END_IF;
END_REGION
REGION Alarm AL
#EventState_Cache."Alarm AL" := #"Alarm AL" AND #EventState_Cache."Alarm AL Quittiert";
#"R_TRIG_Alarm AL"(CLK := #EventState_Cache."Alarm AL");
IF #ACK THEN
#EventState_Cache."Alarm AL Quittiert" := true;
ELSIF #"R_TRIG_Alarm AL".Q THEN
#EventState_Cache."Alarm AL Quittiert" := false;
END_IF;
END_REGION
REGION Alarm AH
#EventState_Cache."Alarm AH" := #"Alarm AH" AND #EventState_Cache."Alarm AH Quittiert";
#"R_TRIG_Alarm AH"(CLK:=#EventState_Cache."Alarm AH");
IF #ACK THEN
#EventState_Cache."Alarm AH Quittiert" := true;
ELSIF #"R_TRIG_Alarm AH".Q THEN
#EventState_Cache."Alarm AH Quittiert" := false;
END_IF;
END_REGION
#EventState := #EventState_Cache;
REGION Group Display Visible
#Visible_Collect.%X0 := #EventState."AS-Leittechnikmeldung Fehler";
#Visible_Collect.%X1 := #EventState."AS-Leittechnikmeldung Störung";
#Visible_Collect.%X2 := #EventState."Toleranz TL";
#Visible_Collect.%X3 := #EventState."Toleranz TH";
#Visible_Collect.%X4 := #EventState."Warnung WL";
#Visible_Collect.%X5 := #EventState."Warnung WH";
#Visible_Collect.%X6 := #EventState."Alarm AL";
#Visible_Collect.%X7 := #EventState."Alarm AH";
#Visible_Collect.%X8 := #EventState."Messstelle gesperrt X";
#Visible_Collect.%X9 := #EventState."Status-Meldung Status OS";
#Visible_Collect.%X10 := #EventState."Status-Meldung Status AS";
#Visible_Collect.%X11 := #EventState."Bedienmeldung OM";
#Visible_Collect.%X12 := #EventState."Bedienanforderung OR";
#Visible_Collect.%X13 := #EventState."Nicht belegt Status";
#Visible_Collect.%X14 := #EventState."Prozessmeldung PM";
#Visible_Collect.%X15 := #EventState."Wartungsanforerung MR";
#Visible_Collect.%X16 := #EventState."AS-Leittechnikmeldung Fehler Quittiert";
#Visible_Collect.%X17 := #EventState."AS-Leittechnikmeldung Störung Quittiert";
#Visible_Collect.%X18 := #EventState."Toleranz TL Quittiert";
#Visible_Collect.%X19 := #EventState."Toleranz TH Quittiert";
#Visible_Collect.%X20 := #EventState."Warnung WL Quittiert";
#Visible_Collect.%X21 := #EventState."Warnung WH Quittiert";
#Visible_Collect.%X22 := #EventState."Alarm AL Quittiert";
#Visible_Collect.%X23 := #EventState."Alarm AH Quittiert";
#Visible_Collect.%X24 := #EventState."Messstelle gesperrt Quittiert";
#Visible_Collect.%X25 := #EventState."Status-Meldung OS Quittiert";
#Visible_Collect.%X26 := #EventState."Status-Meldung AS Quittiert";
#Visible_Collect.%X27 := #EventState."Bedienmeldung OM Quittiert";
#Visible_Collect.%X28 := #EventState."Bedienanforderung OR Quittiert";
#Visible_Collect.%X29 := #EventState."Nicht belegt Quittiert";
#Visible_Collect.%X30 := #EventState."Prozessmeldung PM Quittiert";
#Visible_Collect.%X31 := #EventState."Wartungsanforerung MR Quittiert";
#Visible := NOT ( #Visible_Collect = 16#FFFF0000); // 16#65535;
END_REGION
END_FUNCTION_BLOCK
Grüß Bram