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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Fehlernummer aus mehreren Bytes erstellen

  1. #1
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Morgen,
    hocke nun schon seit letzter Woche vor einem recht simpel klingendem Problem das ich trotzdem nicht richtig gelöst bekomme.

    Also: Bei uns gibt es einen Baustein der 8 externe Störungen überwacht und verwaltet. Diese werden als Byte in einem DB abgespeichert. Nun haben wir ein System das kein Panel hat, sondern nur 2 7-Segment Anzeigen. Somit muss aus mehreren Bytes die Fehlernummer erzeugt werden. Klingt ja soweit recht einfach.......

    Ansätze bisher: ein FC mit 8 Byte an Eingängen, der jedes Bit mit einer Schleife überwacht und wenn True und am Schluss alle Zählerstände mit einem Offset zusammenzählt und aufaddiert. Also bei Byte 2 Zähler +8+alter Zählstand, usw.

    Bin beim indirekten Programmieren leider kein Käpsele, da ich seit nem Lehrgang von über einem Jahr nichts mehr gemacht habe. Zu kompliziert sollte das alles natürlich auch nicht werden, da die Kollegen das auch noch verstehen können sollten.

    Code für Schleife 1:

    L #Error_Byte_1
    T #Error_Byte
    L P#0.0
    T #Zeiger

    L 0
    T #Adresse

    L 8
    FLT1: T #Loop

    L 1
    L #Zaehler
    +I
    L #Zeiger
    SRD 1

    U >0
    SPBN Bit1
    L #Zeiger
    L 1
    +I

    L #Loop
    LOOP FLT1

    Bit1: L #Zaehler
    T #Error_Nr_BCD

    Wenn ich das jedoch in PLC-Sim zum laufen bringen will geht das nicht.....

    Hoffe mal dass mir da jemand weiterhelfen kann.

    MfG
    Zitieren Zitieren Fehlernummer aus mehreren Bytes erstellen  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Also keine Ahnung was Du da machen willst, die Beschreibung ist nicht durchschaubar.
    Welche Zählerstände? Welche "8"?

    Na egal:
    es gibt ein paar Dinge an Deinem Programm:
    #Zaehler in einem FC wird irgendeinen Wert haben wenn Du den FC aufrufst.
    #Zaehler wird nie beschrieben.
    Was bringt das?
    L 1
    L #Zaehler
    +I L
    L #Zeiger
    SRD 1

    Fehlt da vielleicht ein
    T #Zaehler nach "+I"?

    Was ist #Zeiger für eine Variable?
    L #Zeiger
    L 1
    +I
    macht auch nicht viel.....

    Also alles in allem glaube ich, dass das so nicht funktionieren kann. Bedenke, dass ein "+I" nur im Akku was addiert, aber nirgends speichert....

    Gruß
    Karl

  3. #3
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Dass das nicht funktioniert habe ich auch bemerkt. Wenn dem nicht so wäre hätte ich keinen Grund meinen Code der Welt zu präsentieren wie toll der ist.

    Nochmal zur Erklärung was das machen soll: Ein FB/ FC soll 8 Bytes als Eingänge haben, dass ich einfach die Fehler-Bytes die in einem anderen FB erzeugt werden da drauf legen kann. und aus denen 64Bits soll er entsprechende Fehlernummer erzeugen. Bit 1 = Fehlernummer 1, Bit 2 = Fehlernummer 2, usw.
    Ist das klarer soweit?

    Das mit dem fehlenden transfer habe ich auch bemerkt. Habe schon lange kein AWL gemacht, da bisher nur Sicherheits-SPS anstanden, und man da auch grundlegendes und FUP angewiesen ist.

    Hab enun aber auch einen anderen lösungsansatz, der jedoch auch nicht zufriedenstellend funktionier.


    L 0
    T #Zaehler

    L 10
    T #adresse

    L 4
    FLT2: T #Loop2

    L 16
    FLT1: T #Loop
    L DIW [#adresse]
    UW W#16#1
    T #Fehler
    L #Fehler
    U ==0
    SPBN Bit0
    L 1
    L #Zaehler
    +I
    T #Zaehler

    L DIW [#adresse]
    SRW 1
    T DIW [#adresse]

    L #Loop
    LOOP FLT1

    L 2
    L #adresse
    +I
    T #adresse

    L #Loop2
    LOOP FLT2


    L 0
    T #Zaehler

    Bit0: L #Zaehler
    T #Fehlernummer
    Geändert von Freki (28.01.2013 um 12:53 Uhr)

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Nein, ist nicht klar.
    Die 64 Bits entsprechen also 64 Alarmen.
    Gut.
    Bit1= Nummer1
    Bit2= Nummer2
    .
    .
    .
    Bit 64= Nummer64

    Was soll ausgegeben werden wenn mehrere Bits "1" sind?

  5. #5
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, dann sind ja jetzt die Grundlagen geklärt.

    Was ausgegeben werden woll ist eine gute Frage. Da ja in der Fehlerbildung eigentlich schon Folgefehler abgefangen sein sollten DÜRFTE (So die Theorie) eigentlich nur immer ein Fehler gleichzeitig auftreten, bzw wenn mehrere Fehler dann unabhängig voneinander. Dann muss man eben Problem 1 beheben und sich dann an Problem 2 machen.

  6. #6
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also, nun bin ich soweit: die erste Schleife funktioniert, bei der zweiten meldet PLCSim jedoch einen Systemfehler. Vielleicht weiß ja jemand warum.
    L 0
    T #Zaehler

    L 10
    T #adresse

    L 4
    FLT2: T #Loop2

    L 15
    FLT1: T #Loop
    L DIW [#adresse]
    UW W#16#1
    T #Fehler
    L #Fehler
    U ==0
    SPBN Bit0
    L 1
    L #Zaehler
    +I
    T #Zaehler

    L DIW [#adresse]
    SRW 1
    T DIW [#adresse]

    L #Loop
    LOOP FLT1

    L 2
    L #adresse
    +I
    T #adresse

    L #Loop2
    LOOP FLT2

    L 0
    T #Zaehler

    Bit0: L #Zaehler
    T #Fehlernummer

  7. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Wenn nur 1 Bit eins sein kann, bietet sich da nicht Doppelwortweise ein logarithmus an?
    LN (Doppelwort) / LN (2)

    zB
    L LDx //1024= Bit 11 (bei 1 beginnend)
    DTR
    LN
    L 0,693147 //das ist der LN(2)
    /R
    RND
    L 1 //wegen Bitbeginn bei 1
    +I
    T #Fehler

    Vorher muss aber auf ungleich 0 abgefragt werden weil es einen LN (0) nicht gibt.
    Wenn Du das 2x machst, also für jedes Doppelwort einmal und beim zweiten einfach 32 dazuzählst sollte das im großen und ganzen schon fertig sein.

  8. Folgender Benutzer sagt Danke zu borromeus für den nützlichen Beitrag:

    ducati (28.01.2013)

  9. #8
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Es gibt auch HiTech Lösungen:
    Wortweise die Bitposition finden:
    http://www.sps-forum.de/showthread.p...sition-in-Wort

  10. #9
    Registriert seit
    09.08.2006
    Beiträge
    3.627
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Wenn nur 1 Bit eins sein kann, bietet sich da nicht Doppelwortweise ein logarithmus an?
    LN (Doppelwort) / LN (2)
    Deswegen lese ich hier so gerne mit. Abundzu kommt ausser dem mitlerweile nervigen "Für/Wider TIA" ein wirklich interessanter Beitrag zustande...

    Gruß.

  11. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    borromeus (28.01.2013)

  12. #10
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok, das funktioniert soweit, aber bei 2 Fehlern hat er dann ndoch seine Probleme.
    Werde es nach der anderen vorgeschlagenen Lösungen probieren. Trotzdem schon mal danke für die Hilfe, auf sowas wäre (und werde) ich nie (ge)kommen.
    Geändert von Freki (28.01.2013 um 15:49 Uhr)

Ähnliche Themen

  1. Bytes aus DB Laden und vergleichen
    Von bluebird277 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.09.2010, 15:10
  2. Doppelwort aus 4 Bytes erzeugen
    Von selly im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.07.2010, 16:49
  3. Struct aus Bytes auf Ausgänge abbilden
    Von Kaffeesüchtig im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 13.01.2010, 16:25
  4. nacheinander bytes aus db in ein merker kopieren
    Von Robert_k im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 09.05.2008, 21:18
  5. Not-Aus über mehreren Schaltschränke verteilt
    Von HDD im Forum Schaltschrankbau
    Antworten: 3
    Letzter Beitrag: 13.06.2007, 13:34

Lesezeichen

Berechtigungen

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