Alarm_S in SCL-Quelle

Züttu

Level-1
Beiträge
195
Reaktionspunkte
19
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte in einem FB den ich in SCL geschreiben habe Alarm_S Meldungen einfügen, habe aber keinen Plan wie ich das vorgehe....

Ich muss einen IN-Parameter EVENT_ID anfügen, aber bei den speziellen Einstellungen komme ich schon nicht mehr weiter....

Bin für jede Hilfe Dankbar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

in SCL könnte es so aussehen:

Code:
FUNCTION_BLOCK FB1

VAR_INPUT
  IN : BOOL;
  EVID { S7_server := 'alarm_archiv';
         S7_a_type := 'alarm_s' } : DWORD := 0;
END_VAR  
VAR_OUTPUT
  RetVal_SFC18 : WORD;
END_VAR  
VAR_TEMP
  RetVal : INT;
END_VAR
VAR
  SD : ARRAY[0..3] OF CHAR := 'T', 'e', 's', 't';
END_VAR
  
BEGIN
  
  RetVal := ALARM_S(SIG := IN // Das meldungsauslösende Signal
                    ,ID := W#16#EEEE // Datenkanal für Meldungen
                    ,EV_ID := EVID // Meldungsnummer
                    ,SD := SD // Begleitwert
                    ); // Fehlerinformation

  RetVal_SFC18 := INT_TO_WORD(RetVal);
  
END_FUNCTION_BLOCK

Gruss Daniel
 
Danke für eure Antworten, ich werde im Verlauf des Tages mal ausprobieren ob ich das in meiner Quelle implementieren kann.
 
Ich habe das ganze mal eingefügt wie im Beispiel von Dalbi beschrieben, wenn am IN Signal anliegt kommt auch eine Meldung, nur leider keinen Meldetext. Den Begleitwert SD kann ich leider auch nirgends finden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, habe den Meldetext mal unter speziellen Objekteigenschaften eingetragen, den Begleitwert SD finde ich aber nach wie vor nirgends.

Kann der Meldetext auch in der SCL-Quelle vergeben werden?
 
Hi,

im Meldetext kann mit z.b.

Beispiel: Meldetext @1c%4s@ ... Meldetext

ein Begleitwert angehängt werden.

@Pwn Typ %width[.precision]format@

@ = Anfang Formatstring
Pwn = Prozesswertnummer 1-4
Typ = Typ des Prozesswertes:

  • b = BOOL
  • y = BYTE
  • c = CHARACTER
  • w = WORD
  • i = INTEGER
  • x = DWORD
  • d = DINT
  • r = REAL
%width = Breite des Anzeigefeldes
.precision = Anzahl der Nachkommastellen (bei format = f )
format = Darstellungsart des Prozesswertes:

  • d = dezimal mit Vorzeichen
  • u = dezimal ohne Vorzeichen
  • x = hexadezimal
  • f = Festpunktzahl mit Vorzeichen
  • b = binär
  • s = Zeichenkette
@ = Ende Formatstring
Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal für eure Hilfe!!

Ich habs jetzt so weit geschafft einen Meldetext mit einem Begleitwert zu versehen. Jetzt versuche ich als SD einen Array of CHAR zu übergeben mit der Meldetext formatierung "@1c%s@" wird nur das erste Zeichen im Array geladen, und mit "@1%s@" kriege ich in WinCC einen Fehler (Meldungs Formatierung ungültig)
 
Ein weiteres Problem ist aufgetaucht, ich beginne so langsam daran zu zweifeln ob Alarm_S die Lösung für meine Probleme ist.....

Wenn ich meinen Baustein als Multiinstanz aufrufe werden die Event_ID nicht mehr vergeben. Ist das gar nicht möglich oder muss ich eine Einstellung vornehmen?

Ich möchte hier noch kurz schildern was ich überhaupt bezwecke, vielleicht hat einer von euch Profis schon Erfahrungen in diese Richtung:
Ich möchte FB's schreiben um Objekte zu behandeln (Ventile, Motoren, usw). Bis jetzt habe ich alle dazugehörigen Meldungen im Bitmeldeverfahren aufs Panel gebracht. Das hat gut funktionert, aber immer wenn ich Änderungen vorgenommen habe bestand das Risiko das ich irgendwo etwas vergessen habe. Darum war meine Idee diese Meldungen gleich in die FB's einzubauen, und denn Objektnamen als String zu übergeben.
 
Danke erstmal für eure Hilfe!!

Ich habs jetzt so weit geschafft einen Meldetext mit einem Begleitwert zu versehen. Jetzt versuche ich als SD einen Array of CHAR zu übergeben mit der Meldetext formatierung "@1c%s@" wird nur das erste Zeichen im Array geladen, und mit "@1%s@" kriege ich in WinCC einen Fehler (Meldungs Formatierung ungültig)

Nach dem % Zeichen kommt die Länge bzw. Anzahl der Zeichen. ;)

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...Ich möchte hier noch kurz schildern was ich überhaupt bezwecke, vielleicht hat einer von euch Profis schon Erfahrungen in diese Richtung:
Ich möchte FB's schreiben um Objekte zu behandeln (Ventile, Motoren, usw). Bis jetzt habe ich alle dazugehörigen Meldungen im Bitmeldeverfahren aufs Panel gebracht. Das hat gut funktionert, aber immer wenn ich Änderungen vorgenommen habe bestand das Risiko das ich irgendwo etwas vergessen habe. Darum war meine Idee diese Meldungen gleich in die FB's einzubauen, und denn Objektnamen als String zu übergeben.

Da ist vielleicht der ALARM_8 (SFB34) oder ALARM_8P (SFB35) besser dafür geeignet.

Gruss Daniel
 
Nach dem % Zeichen kommt die Länge bzw. Anzahl der Zeichen. ;)

Gruss Daniel

das hab ich versucht, hab auch mit einer länge von 10 nur das erste zeichen des char-array erhalten... weiss leider nicht was ich falsch mache.

verstehe ich das richtig das ich mit alarm_8p acht alarme in einem aufruf behandeln kann, oder gibt es andere gründe wieso du mir diese bausteine empfiehlst?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die meisten module die ich mache werden aber nur ein alarm haben, werde deshalb bei alarm_d bleiben. hast du eine ahnung wieso beim multiinstanz-aufruf keine EVENT-ID vergeben werden?
 
danke für deine hilfe, ich glaub bei diesem wetter kann ich mich erst am montag wieder vor den computer zwingen......

wünsch dir ein schönes wochenende!
 
Hi,

zum Thema Multiinstanz das geht auch über einen Umweg.
Dazu einfach die EV_ID für jede Meldung nach aussen durch rangieren bis zum OB1.

Gruss Daniel
 
Zurück
Oben