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

Ergebnis 1 bis 9 von 9

Thema: Habe da ein kniffliges Problem bei der Programmierung einer Fehlerauswertung

  1. #1
    Registriert seit
    28.03.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Komme hier einfach nicht mehr weiter!!
    Hardware: Siemens CPU 414-2DP; CP 443-1 IT
    Software: Simatic Step 7 V5.2 +SP1 (AWL, FUP)


    Folgendes:
    Im DB104 werden die Fehlerbits (Bereich zwischen DB104.DBX 128.0
    bis DB104.DBX 255.7 ) dynamisch von der Anlage gesetzt. Diese könne manuell vom
    Bediener wieder zurückgesetzt werden.
    Als Fehlermaskierung habe ich den DB200 einen Bereich zwischen DB200.DBX 0.0 und DB200.DBX 127.7 zugeordnet. Hier wird statisch festgelegt, welcher Fehler eine Relevanz für die darauf folgende Auswertung hat.

    Beispiel:
    DB200.DBX 1.0 hat den bool’schen Wert ’1’ und
    im DB104.DBX 129.0 ist durch einen Fehler ebenfalls auf ’true’ gesetzt,
    so ist dieser Fehler relevant.

    Mein jetziges Konzept:
    Wird ein Fehlerbit im DB104 gesetzt, soll nach dem Vergleich des DB104 mit dem DB200 die Bitadresse ermittelt werden. Im Anschluss daran soll automatisch eine Email generiert werden (hier verwende ich die Funktion FC50 (AG Long Send), die im DB10 als Anlage die Fehlernummer (= Fehlerbit) und eine Beschreibung des Fehlers im Klartext dynamisch eingefügt werden soll.

    OB1
    Code:
    Netzwerk 1:
    Call FB 10, DB11
     
    Netzwek 2:
    Call FB 30 , DB30
    FB10
    Code:
    Netzwerk 1: Flankensteuerung, da beim Aufteten eines Fehlerfalls der Anlage nur eine Email versendet werden soll (Vermeidung von Dauerfeuer)
     
    U M11.0  // Aktivierung
    FP M11.1  // Flanke
    = M10.0  // Sendeimpuls
     
    Netzwerk 2: Kommunikationsbaustein
    CALL FC50
    ACT:= M10.0
    ID:= 1
    LADDR:= W#16#1FF8
    SEND:= P#DB10.DBX0.0 BYTE 558
    LEN:= 558
    DONE:= M10.1  // Ausführung der Versandbestätigung
    ERROR:= M10.2
    STATUS:= MW100
     
    Netzwerk 3: Speichern der Versandbestätigung
    U M10.1
    S M10.5  // Versandbestätigung
    U M10.4 // Rücksetzen der Versandbestätigung
    R M10.5 
     
    Netzwerk 3:
    BE
    FB 30
    Code:
    Netzwerk 1:
    TAR1 #Adr_1
    TAR2 #Adr_2
     
    Netzwerk 2:
    L 104
    T #Quell_DB
     
    L 200
    T #Maske_DB
     
    Netzwerk 3:
    LAR1 P#128.0
    LAR2 P#0.0
     
    Netzwerk 4:
    // Bit-Schleife
    L 127
    M002: T #zaehler_1
     
    L 7
    M001: T #zaehler
     
    AUF DB [#Quell_DB]
    U DBX [AR1,P#0.0]
    AUF DB [#Maske_DB]
    U DBX [AR2,P#0.0]   
    = M30.0    // setzen der pos. Flanke
     
    +AR! P#0.1
    +AR2 P#0.1
     
    L #zaehler
    LOOP M001
     
    // Byte-Schleife
    LAR1 P#128.0
    LAR2 P#0.0
     
    +AR1 P#1.0
    +AR2 P#1.0
     
    L #zaehler_1
    LOOP M002
     
    Netzwerk 5:
    LAR1 #Adr_1
    LAR2 #ADR_2
     
    Netzwerk 6:
    BE
    Hat jemand mit der mathematische Operation LN Erkenntnisse im
    Bezug auf die Berechnung der Bit-Position?
    Formel: bitposition = LN bitwert / LN 2

    Mein Problem ist der Vergleich der Datenbausteine als auch die Fehlerbit-Berechnung und zu guter Letzt die Implementierung der Fehlernummer/Klartext im Anhang der Email.

    Im Voraus sag ich schon mal DANKE!

    Mfg
    Kayser

    P.S. Rückfragen und Anregungen erwünscht!
    Zitieren Zitieren Habe da ein kniffliges Problem bei der Programmierung einer Fehlerauswertung  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Die Formel gilt nur, wenn nur ein Bit gesetzt ist. Ansonsten wird wahrscheinlich nur das höchstwertige Bit erkannt.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ich würde auf jeden Fall Wort- oder Doppelwortweise vorgehen, das Fehlerwort und das Freigabewort miteinander "verunden" und bei einem Vegleichs-Ergebnis > 0 das entsprechende Bit ermitteln, sonst mit dem nächsten Wort weitermachen, das verkürzt die Schleife enorm.
    Geändert von Ralle (20.04.2006 um 08:24 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Haben Sie auch einen Baustein für den letzten Wert? Wann soll die Mail geschickt werden? Nur bei kommenden Fehlern oder auch bei gehenden?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    Avatar von Kayser
    Kayser ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.03.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Hallo Herr Hönle,

    Haben Sie auch einen Baustein für den letzten Wert?
    Da kann ich Ihnen leider nicht ganz folgen.
    Was meinen Sie mit dem letzten Wert?

    Wann soll die Mail geschickt werden?
    Also beim Auftreten eines Fehlers, wird ein Bit im DB104 gesetzt.
    Durch einen Vergleich mit der Fehlermaskierung DB200 soll die Relevanz,
    ob eine Email generiert wird oder nicht, entscheiden.

    Ist der Fehler relevant, so soll die Bitnummer (Fehlernummer) im Anhang
    der Email eingesetzt werden und anschließend automatisch verschickt.
    Dieses muß natürlich flankengesteuert abgewickelt werden, da sonst
    eine Überflut von Email versand wird.
    Taucht der Fehler nach der Fehlerquittierung wieder auf, so soll
    erneut eine Email mit der Fehlernummer versand werden.

  6. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Kayser
    Haben Sie auch einen Baustein für den letzten Wert?
    Da kann ich Ihnen leider nicht ganz folgen.
    Was meinen Sie mit dem letzten Wert?
    Sie haben einen Baustein mit der Freigabe (DB 200) und einen Baustein mit den Aktualwerten (DB 104). Um einen Flankenwechsel zu erkennen benötigt man noch den alten Zustand. Oder sind im DB 104 nicht die Aktualwerte sondern die Flanken?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #7
    Avatar von Kayser
    Kayser ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.03.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Idee

    Hallo,
    jetzt verstehe ich die Problematik! Also wenn kein Fehler registriert wurde,
    sind alle Aktualwerte "false" gesetzt. Beim Fehler wird ein Bit des
    entsprechenden Fehlerortes gesetzt, z.B. DB104.DBX 129.1. Dieser steht
    solange an bis eine Quittierung vom Bediener erfolgt.
    Ist der Fehler als relevant eingestuft (Vergleich mit den statischen
    Werten im DB200), so soll die Bitadresse ermittelt werden und in den
    Anhang der Email implementiert und ein Versand angestoßen werden.

    Klar, wird jetzt wieder der DB104 verglichen, so würde wiederum eine
    Email versand. Somit muss alle Aktualwerte sammeln und bearbeiten.
    D.h. wird im DB104 ein Bit von 0 -> 1 gesetzt, so muss ich diesen Wert
    andernorts speichern.

    Wo ich jetzt gerade noch hänge ist, wie kann ich das umsetzen?

    Schöne Grüß von der Küste

    Kayser

  8. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Einfach noch einen Speicherbereich (z.B. in einem DB) einführen, in dem die Zustände aus dem letzten Zyklus stehen. Nur wenn ein Flankenwechsel nach 1 erfolgt (aktueller Zustand 1, letzter Zustand 0, Freigabebit 1) wird dann die Mail verschickt.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  9. #9
    Avatar von Kayser
    Kayser ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.03.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ein wichtiger Gedankenanstoß:

    DANKE!!!!

Ähnliche Themen

  1. Ich habe ein Problem mit der Hardwarekonfig
    Von sonic_229 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 14.01.2011, 13:53
  2. Habe Probleme mit der Programmierung
    Von detoto im Forum HMI
    Antworten: 0
    Letzter Beitrag: 10.11.2009, 13:45
  3. Antworten: 16
    Letzter Beitrag: 17.08.2009, 14:57
  4. habe ein kleines problem
    Von sago im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.01.2009, 17:21
  5. OP73 - ich habe da ein Problem
    Von ksb im Forum HMI
    Antworten: 6
    Letzter Beitrag: 30.09.2007, 14:57

Lesezeichen

Berechtigungen

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