Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: OPs und Störmeldungen

  1. #1
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Liebe Mitleser,

    ich habe hier schon etliche Threads gelesen über das Thema OPs und Störmeldungen.
    Ich möchte einen FB entwerfen, der mir das erleichtert.
    Der Baustein soll 8 Fehlermeldungen bearbeiten können, wenn ich doch mal mehr habe nehme ich einen Zweiten Baustein davon.
    Ich benutze WinCC Flex 2007
    Er soll über folgende Ein und Ausgänge verfügen:

    • 8 x IN Bool : Fehler
    • 8 x Out Bool : Meldelampe (Firmenspezifisch: schnell blinkend für Fehler Unquittiert, langsam blinkend für Fehler quittiert aber noch anstehend)
    • 1 x IN Bool : Quittieren (vom Knebelschalter)
    • 1 x IN Bool : Anwesend
    • 1 x IN Bool : Lampentest
    • 1 x IN_OUT Word : Hier wird die Variable angegeben, die nacher in WinCC Flex übernommen wird. Gerade Bits: Fehler, Ungerade Quittierung. Es soll Hibyte und Lobyte im Baustein getauscht werden)
    • 1 x IN Word : Quittiervariable Lesen in WinCC Flex. Hier kommen die Quittierungen vom OP zurück. Es werden nur 8 Bits verwendet, aber ich bekommen WinCC Flex nicht dazu ein Byte zu akzeptieren.
    • 1 x Out INT : Anzahl Anliegender Störungen
    • 1 x IN INT : Anzahl Anliegender Störungen von einem anderen Störbaustein Startwert 0. Hiermit sind so Dinge wie Sammelstörungsauswertung oder wenn mehr als 3 Fehler dann NotfallSMS raussenden möglich.
    • 1 x IN Bool : Takt Langsamblinken
    • 1 x In Bool : Takt Schnellblinken


    Hier der Code, den ich bisher geschrieben habe. Ich weiß, daß man das viel kürzer machen kann, aber ich arbeite gern mit FUP, solange es geht, und ich möchte meine Baustein auch mal einem Lehrling geben können, ohne Ihm AWL beibringen zu müssen, damit er den Inhalt versteht.


    Code:
    FUNCTION_BLOCK "FB_Fehler"
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      I_F0 : BOOL ;    
      I_F1 : BOOL ;    
      I_F2 : BOOL ;    
      I_F3 : BOOL ;    
      I_F4 : BOOL ;    
      I_F5 : BOOL ;    
      I_F6 : BOOL ;    
      I_F7 : BOOL ;    
      I_Quitt : BOOL ;    
      I_Anwesend : BOOL ;    
      I_Lampentest : BOOL ;    
      I_BL_La : BOOL ;    
      I_BL_Schn : BOOL ;    
    END_VAR
    VAR_OUTPUT
      O_ML0 : BOOL ;    
      O_ML1 : BOOL ;    
      O_ML2 : BOOL ;    
      O_ML3 : BOOL ;    
      O_ML4 : BOOL ;    
      O_ML5 : BOOL ;    
      O_ML6 : BOOL ;    
      O_ML7 : BOOL ;    
    END_VAR
    VAR_IN_OUT
      IO_Err_Quitt_8x : WORD ;    
    END_VAR
    VAR
      S_F_UQ_0 : BOOL ;    
      S_F_UQ_1 : BOOL ;    
      S_F_UQ_2 : BOOL ;    
      S_F_UQ_3 : BOOL ;    
      S_F_UQ_4 : BOOL ;    
      S_F_UQ_5 : BOOL ;    
      S_F_UQ_6 : BOOL ;    
      S_F_UQ_7 : BOOL ;    
      S_Fl_0 : BOOL ;    
      S_Fl_1 : BOOL ;    
      S_Fl_2 : BOOL ;    
      S_Fl_3 : BOOL ;    
      S_Fl_4 : BOOL ;    
      S_Fl_7 : BOOL ;    
      S_Fl_6 : BOOL ;    
      S_Fl_5 : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          U     #I_F0; 
          FP    #S_Fl_0; 
          S     #S_F_UQ_0; 
    NETWORK
    TITLE =
    
          U     #I_F1; 
          FP    #S_Fl_1; 
          S     #S_F_UQ_1; 
    NETWORK
    TITLE =
    
          U     #I_F2; 
          FP    #S_Fl_2; 
          S     #S_F_UQ_2; 
    NETWORK
    TITLE =
    
          U     #I_F3; 
          FP    #S_Fl_3; 
          S     #S_F_UQ_3; 
    NETWORK
    TITLE =
    
          U     #I_F4; 
          FP    #S_Fl_4; 
          S     #S_F_UQ_4; 
    NETWORK
    TITLE =
    
          U     #I_F5; 
          FP    #S_Fl_5; 
          S     #S_F_UQ_5; 
    NETWORK
    TITLE =
    
          U     #I_F6; 
          FP    #S_Fl_6; 
          S     #S_F_UQ_6; 
    NETWORK
    TITLE =
    
          U     #I_F7; 
          FP    #S_Fl_7; 
          S     #S_F_UQ_7; 
    NETWORK
    TITLE =
    
          U     #I_Quitt; 
          =     L      0.0; 
          O     L      0.0; 
          O     DIX    5.1; 
          R     #S_F_UQ_0; 
          O     L      0.0; 
          O     DIX    5.3; 
          R     #S_F_UQ_1; 
          O     L      0.0; 
          O     DIX    5.5; 
          R     #S_F_UQ_2; 
          O     L      0.0; 
          O     DIX    5.7; 
          R     #S_F_UQ_3; 
          O     L      0.0; 
          O     DIX    4.1; 
          R     #S_F_UQ_4; 
          O     L      0.0; 
          O     DIX    4.3; 
          R     #S_F_UQ_5; 
          O     L      0.0; 
          O     DIX    4.5; 
          R     #S_F_UQ_6; 
          O     L      0.0; 
          O     DIX    4.7; 
          R     #S_F_UQ_7; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_0; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F0; 
          UN    #S_F_UQ_0; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML0; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_1; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F1; 
          UN    #S_F_UQ_1; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML1; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_2; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F2; 
          UN    #S_F_UQ_2; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML2; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_3; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F3; 
          UN    #S_F_UQ_3; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML3; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_4; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F4; 
          UN    #S_F_UQ_4; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML4; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_5; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F5; 
          UN    #S_F_UQ_5; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML5; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_6; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F6; 
          UN    #S_F_UQ_6; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML6; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_7; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F7; 
          UN    #S_F_UQ_7; 
          O     #I_Lampentest; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML7; 
    END_FUNCTION_BLOCK
    Das ganze ist offensichtlich noch nicht fertig. Doch ich bin über das Problem mit der direkten Adressierung DIX gestolpert.
    Ich bekomme die FehlerQuittierVariable ja als Word. Das soll auch so bleiben, denn der User soll von der OP-Problematik ja entlastet werden. Im Baustein will ich diese Variable aber Bitweise bearbeiten, deswegen die DIX Befehle.
    Muss ich, wenn ich das Ding später mehrfach aufrufen will wirklich durch die Harte Schule mit:
    Code:
    LAR1  AR2; 
          L     P##Feh; 
          +AR1  ; 
    L1:   U     DIX [AR1,P#0.0];
    Oder kann man das irgendwie unkomplizierter lösen?


    Gruß,
    Aksels
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren OPs und Störmeldungen  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich hab´s grob überflogen. Die "Harte Schule", die du meinst brauchst du erst wenn du den Baustein als Mulit-Instanz aufrufen möchtest.

    Solange du jedem Aufruf einen eigenen Instanz-DB sponserst kannst du dir das sparen.

    Allerdings würde ich dir dringend dazu raten, alles symbolisch zu programmieren und entsprechend Variablen zu deklarieren.
    mfG Aventinus

  3. #3
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Hallo Aventinus,

    was ist der Unterschied zwischen einem Multiinstanzaufruf und mehreren Aufrufen, bei denen ich jedem Aufruf einen Datenbaustein mitgebe? Ich nahm seither immer an, das wäre dann ein Multiinstanzaufruf?
    Oder ist mit Multiinstanz der mehrfache Aufruf innerhalb des Static-Bereichs eines anderen Bausteins gemeint?
    Die Word Variable habe ich doch symbolisch programmiert, oder verstehe ich da auch etwas noch nicht. Doch wie kann ich nun auf die einzelnen Bits der Word-Variable symbolisch zugreifen (ohne DIX)?

    Gruß,
    Aksels
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Weitere Fragen..  

  4. #4
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Wenn du in einem FB einen oder mehrere andere FB´s aufrufst,spricht man von einer Multiinstanz.Du hast dann nur einen IDB für alle FB´s.
    Dabei muß beachtet werden, dass man den Offset vom AR2 bei den aufgerufenen FB´s hinzuzählt,sonst funktioniert das ganze nicht.
    Geändert von Gerhard K (27.07.2010 um 09:52 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  5. #5
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Hallo Leute.
    Endlich komme ich wieder zum SPS-Programmieren. Habe meinen Fehlerbaustein endlich testen können.
    Ihr habt mir immer wieder sehr viel geholfen.
    Hier ein kleiner Beitrag zurück:

    Es handelt sich um einen Störmeldebaustein mit Unterstützung für OPs.
    Er ist Multiinstanzfähig. Ich baue mir also einen FehlerFb, der mehrere solcher in STAT deklarierten Bausteine beinhaltet. Nur ein Instanz-DB ist nacher nötig.
    Der Baustein ist komplett in FUP.
    Wie wäre mir warm das Herz aufgegangen, hätte ich solch einen Baustein zu WinccFlex Anfangszeiten gehabt. Ich habe Tage gebraucht um dieses OP-Fehlergedöns zu verstehen und nur Stunden um es wieder zu vergessen.
    Der Baustein bekommt Fehler und Betriebsmeldungen als Bits. Er merkt sich den Fehler als Unquittiert. Die zugehörige Meldelampe leuchtet bei Betrieb und Blinkt bei einem Fehler. Sie blinkt schnell bei unquittiertem Fehler und langsam bei quittiertem aber anstehenden Fehler.

    Man kann die Anzahl unquittierter Fehler am Baustein als Ausgang O_Anz_Feh_UQ lesen und in den nächsten Baustein als Eingang I_AnzFUQ_Vorh geben. Somit kann am letzen Baustein eine Sammelstörung für alle ausgewertet werden.
    Blink_Langsam und Blink_Schnell nehme ich für mich aus dem Taktmerkerbyte der CPU.

    Bei den Eingängen gibt es ein QuittWort. Hier werden nur die ersten 8 Bits verwendet. Dieses Wort kann vom OP benutzt werden um am OP zu quittieren. Jede Meldung wird individuell quittiert. Im WinccFlex nennt sich das "Quittiervariable lesen" (wohl weil diese Variable von der SPS gelesen und ausgewertet wird. Das Bit wird vom OP gesetzt und in meinem Baustein nach Auswertung resettet (auch der Weg zu dieser Erkenntnis war mit viel Frust gepflastert).

    Bei den Ausgängen gibt es ein Err_Quitt_8x. Dieses Wort enthält die Fehler und Quittierungen für ein OP. Und zwar schon HighByte und LowByte vertauscht. Das bedeutet: Der Fehler, der an Fehlereingang 0 anliegt kann im OP als Bausteinwort.Bit0 projektiert werden (das mit dem Fehler 0 an Bit 8 habe ich sonst immer vergessen). Das zugehörige Quittierbit steht demnach an Pos 1 (für WinCCFlex "Quittiervariable schreiben" (wohl weil die SPS dieses Bit schreibt). Beim Quittieren mittels Knebeltaster werden alle Störungen auch im OP quittiert.

    Der Ausgang "Sammersltörung Meldelampe" O_SaSt_ML leuchtet nur, blinkt nicht. Kann also auch zm Auswerten herangezogen werden, ob Fehler noch anstehen. Allerdings nur für diesen Baustein. Nächste Version wird auch die anstehenden Fehler als Int ausgeben.....

    O_SaSt_UQ_Kein beachtet die Unquittierten der Vorherigen Bausteine über I_AnzFUQ_Vorh. Kann somit z.B. für ein Wählgerät verwendet werden.

    Die nächste Version wird dann noch ein Wort für die Betriebsmeldungen haben.

    Bestimmt kann man den Baustein kürzer schreiben. Aber ich war so froh daß er funktioniert.....

    Seltsamerweise geht das Ganze trotz Mutliinstanz auch ohne AR2 zu beachten.......ich habs wohl immer noch nicht ganz gefressen.
    Vielleicht wär jemand so nett das zu verifizieren.

    Benutzt ihn so viel Ihr wollt. Jegliche Gewährleistung ausgeschlossen.

    Gruß,
    Aksels

    Antwort zu lang. Code im nächsten Beitrag
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Fertiger Baustein  

  6. #6
    Aksels ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.02.2005
    Beiträge
    199
    Danke
    12
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Bausteincode

    Code:
    FUNCTION_BLOCK "FB_Fehler"
    TITLE = Fehlerbaustein_OP
    VERSION : 1.0
    
    
    VAR_INPUT
      I_F0 : BOOL ;    
      I_F1 : BOOL ;    
      I_F2 : BOOL ;    
      I_F3 : BOOL ;    
      I_F4 : BOOL ;    
      I_F5 : BOOL ;    
      I_F6 : BOOL ;    
      I_F7 : BOOL ;    
      I_B_0 : BOOL ;    
      I_B_1 : BOOL ;    
      I_B_2 : BOOL ;    
      I_B_3 : BOOL ;    
      I_B_4 : BOOL ;    
      I_B_5 : BOOL ;    
      I_B_6 : BOOL ;    
      I_B_7 : BOOL ;    
      I_Quitt : BOOL ;    
      I_Anwesend : BOOL ;    
      I_Lampentest : BOOL ;    
      I_BL_La : BOOL ;    
      I_BL_Schn : BOOL ;    
      I_AnzFUQ_Vorh : INT ;    
    END_VAR
    VAR_OUTPUT
      O_ML0 : BOOL ;    
      O_ML1 : BOOL ;    
      O_ML2 : BOOL ;    
      O_ML3 : BOOL ;    
      O_ML4 : BOOL ;    
      O_ML5 : BOOL ;    
      O_ML6 : BOOL ;    
      O_ML7 : BOOL ;    
      O_Err_Quitt_8x : WORD ;    
      O_Anz_Feh_UQ : INT ;    
      O_SaSt_ML : BOOL ;    
      O_SaStUQ_Kein : BOOL ;    
    END_VAR
    VAR_IN_OUT
      IO_Quitt_Word : WORD ;    
    END_VAR
    VAR
      S_F_UQ_0 : BOOL ;    
      S_F_UQ_1 : BOOL ;    
      S_F_UQ_2 : BOOL ;    
      S_F_UQ_3 : BOOL ;    
      S_F_UQ_4 : BOOL ;    
      S_F_UQ_5 : BOOL ;    
      S_F_UQ_6 : BOOL ;    
      S_F_UQ_7 : BOOL ;    
      S_Fl_0 : BOOL ;    
      S_Fl_1 : BOOL ;    
      S_Fl_2 : BOOL ;    
      S_Fl_3 : BOOL ;    
      S_Fl_4 : BOOL ;    
      S_Fl_7 : BOOL ;    
      S_Fl_6 : BOOL ;    
      S_Fl_5 : BOOL ;    
      ST_TOF_01 : "TOF";    
    END_VAR
    VAR_TEMP
      Zwsp1 : WORD ;    
      Zwsp2 : WORD ;    
      T_01 : BOOL ;    
      T_ISum : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Arbeitsbereich leeren
    
          L     0; 
          T     #Zwsp1; 
          NOP   0; 
    NETWORK
    TITLE =Quittieren-Arbeitsbereich befüttern
    
          L     #IO_Quitt_Word; 
          T     #Zwsp2; 
          NOP   0; 
    NETWORK
    TITLE =Fehler auswerten und als Unquittiert merken.
    
          U     #I_F0; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_0; 
          S     #S_F_UQ_0; 
          U     L      8.0; 
          BLD   102; 
          =     L      1.0; 
    NETWORK
    TITLE =
    
          U     #I_F1; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_1; 
          S     #S_F_UQ_1; 
          U     L      8.0; 
          BLD   102; 
          =     L      1.2; 
    NETWORK
    TITLE =
    
          U     #I_F2; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_2; 
          S     #S_F_UQ_2; 
          U     L      8.0; 
          BLD   102; 
          =     L      1.4; 
    NETWORK
    TITLE =
    
          U     #I_F3; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_3; 
          S     #S_F_UQ_3; 
          U     L      8.0; 
          BLD   102; 
          =     L      1.6; 
    NETWORK
    TITLE =
    
          U     #I_F4; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_4; 
          S     #S_F_UQ_4; 
          U     L      8.0; 
          BLD   102; 
          =     L      0.0; 
    NETWORK
    TITLE =
    
          U     #I_F5; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_5; 
          S     #S_F_UQ_5; 
          U     L      8.0; 
          BLD   102; 
          =     L      0.2; 
    NETWORK
    TITLE =
    
          U     #I_F6; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_6; 
          S     #S_F_UQ_6; 
          U     L      8.0; 
          BLD   102; 
          =     L      0.4; 
    NETWORK
    TITLE =
    
          U     #I_F7; 
          =     L      8.0; 
          U     L      8.0; 
          FP    #S_Fl_7; 
          S     #S_F_UQ_7; 
          U     L      8.0; 
          BLD   102; 
          =     L      0.6; 
    NETWORK
    TITLE =Quittierung
    
          U     #I_Quitt; 
          =     L      8.0; 
          O     L      8.0; 
          O     L      2.0; 
          R     #S_F_UQ_0; 
          R     L      2.0; 
          O     L      8.0; 
          O     L      2.1; 
          R     #S_F_UQ_1; 
          R     L      2.1; 
          O     L      8.0; 
          O     L      2.2; 
          R     #S_F_UQ_2; 
          R     L      2.2; 
          O     L      8.0; 
          O     L      2.3; 
          R     #S_F_UQ_3; 
          R     L      2.3; 
          O     L      8.0; 
          O     L      2.4; 
          R     #S_F_UQ_4; 
          R     L      2.4; 
          O     L      8.0; 
          O     L      2.5; 
          R     #S_F_UQ_5; 
          R     L      2.5; 
          O     L      8.0; 
          O     L      2.6; 
          R     #S_F_UQ_6; 
          R     L      2.6; 
          O     L      8.0; 
          O     L      2.7; 
          R     #S_F_UQ_7; 
          R     L      2.7; 
          U     L      8.0; 
          =     L      8.1; 
          BLD   103; 
          CALL #ST_TOF_01 (
               IN                       := L      8.1,
               PT                       := T#500MS,
               Q                        := #T_01);
    
          NOP   0; 
    NETWORK
    TITLE =Quittierung an Display weitergeben
    
          U     #T_01; 
          SPBNB _001; 
          L     #Zwsp1; 
          L     W#16#AAAA; 
          OW    ; 
          T     #Zwsp1; 
    _001: NOP   0; 
    NETWORK
    TITLE =Quittierung an Display weitergeben
    
          UN    #T_01; 
          SPBNB _002; 
          L     #Zwsp1; 
          L     W#16#5555; 
          UW    ; 
          T     #Zwsp1; 
    _002: NOP   0; 
    NETWORK
    TITLE =Meldelampe leuchtet bei Betrieb, blinkt bei Fehler
    //Schnellblinkend bei unquittiertem Fehler
    //Langsamblinkend bei anstehendem quittiertem Fehler
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_0; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F0; 
          UN    #S_F_UQ_0; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_0; 
          UN    #S_F_UQ_0; 
          UN    #I_F0; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML0; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_1; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F1; 
          UN    #S_F_UQ_1; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_1; 
          UN    #S_F_UQ_1; 
          UN    #I_F1; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML1; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_2; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F2; 
          UN    #S_F_UQ_2; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_2; 
          UN    #S_F_UQ_2; 
          UN    #I_F2; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML2; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_3; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F3; 
          UN    #S_F_UQ_3; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_3; 
          UN    #S_F_UQ_3; 
          UN    #I_F3; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML3; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_4; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F4; 
          UN    #S_F_UQ_4; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_4; 
          UN    #S_F_UQ_4; 
          UN    #I_F4; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML4; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_5; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F5; 
          UN    #S_F_UQ_5; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_5; 
          UN    #S_F_UQ_5; 
          UN    #I_F5; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML5; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_6; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F6; 
          UN    #S_F_UQ_6; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_6; 
          UN    #S_F_UQ_6; 
          UN    #I_F6; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML6; 
    NETWORK
    TITLE =
    
          U(    ; 
          U     #I_BL_Schn; 
          U     #S_F_UQ_7; 
          O     ; 
          U     #I_BL_La; 
          U     #I_F7; 
          UN    #S_F_UQ_7; 
          O     #I_Lampentest; 
          O     ; 
          U     #I_B_7; 
          UN    #S_F_UQ_7; 
          UN    #I_F7; 
          )     ; 
          U     #I_Anwesend; 
          =     #O_ML7; 
    NETWORK
    TITLE =Geändertes OP-Quittierungswort ausgeben.
    
          L     #Zwsp2; 
          T     #IO_Quitt_Word; 
          NOP   0; 
    NETWORK
    TITLE =Status- und Quittierungswort ausgeben.
    
          L     #Zwsp1; 
          T     #O_Err_Quitt_8x; 
          NOP   0; 
    NETWORK
    TITLE =Fehlersumme resetten.
    
          L     0; 
          T     #T_ISum; 
          NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_0; 
          SPBNB _003; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _003: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_1; 
          SPBNB _004; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _004: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_2; 
          SPBNB _005; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _005: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_3; 
          SPBNB _006; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _006: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_4; 
          SPBNB _007; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _007: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_5; 
          SPBNB _008; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _008: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_6; 
          SPBNB _009; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _009: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          U     #S_F_UQ_7; 
          SPBNB _00a; 
          L     #T_ISum; 
          L     1; 
          +I    ; 
          T     #T_ISum; 
    _00a: NOP   0; 
    NETWORK
    TITLE =Fehler aufaddieren.
    
          L     #T_ISum; 
          L     #I_AnzFUQ_Vorh; 
          +I    ; 
          T     #T_ISum; 
          NOP   0; 
    NETWORK
    TITLE =Ausgang Unquittierte Störung vorhanden ausgeben.
    
          L     #T_ISum; 
          L     0; 
          ==I   ; 
          =     #O_SaStUQ_Kein; 
    NETWORK
    TITLE =Anzahl unwuittierte Störungen ausgeben.
    
          L     #T_ISum; 
          T     #O_Anz_Feh_UQ; 
          NOP   0; 
    NETWORK
    TITLE =Störung anstehend vorhanden ausgeben.
    
          O     #I_F0; 
          O     #I_F1; 
          O     #I_F2; 
          O     #I_F3; 
          O     #I_F4; 
          O     #I_F5; 
          O     #I_F6; 
          O     #I_F7; 
          =     #O_SaSt_ML; 
    END_FUNCTION_BLOCK
    Linux is like a Wigwam: no Windows, no Gates and Apache inside.
    Zitieren Zitieren Code  

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Aksels Beitrag anzeigen
    Seltsamerweise geht das Ganze trotz Mutliinstanz auch ohne AR2 zu beachten.......ich habs wohl immer noch nicht ganz gefressen.
    Vielleicht wär jemand so nett das zu verifizieren.
    Hallo,
    das liegt daran, weil du nicht mit indirekter Adressierung (also pointern) arbeitest. Du benutzt ja alle deine baustein-internen Operanden direkt.

    Gruß
    Larry

Ähnliche Themen

  1. Störmeldungen und S7-200
    Von pinolino im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.03.2009, 13:02
  2. Störmeldungen
    Von Taddy im Forum HMI
    Antworten: 4
    Letzter Beitrag: 14.11.2007, 13:32
  3. Störmeldungen
    Von Praktikus im Forum HMI
    Antworten: 4
    Letzter Beitrag: 12.01.2006, 18:43
  4. Störmeldungen auswerten
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.11.2005, 16:09
  5. Anzeigen von Störmeldungen
    Von Anonymous im Forum HMI
    Antworten: 4
    Letzter Beitrag: 11.12.2003, 15:02

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •