Fehlernummern ausgeben

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

für ein aktuelles Projekt ist es vorgesehen das der Kunde im Fehlerfall unserer Maschine eine Fehlernummer über Profibus mitgeteilt bekommt.

Also wenn zum Beispiel "Störung 1" ansteht soll die Fehlernummer 1 ausgegeben werden, bei "Störung 2" soll die Fehlernummer 2 ausgegeben werden ...

Der Kunde will dann anhand unserer Fehlernummer eine Meldung in Klartext an seinem Panel ausgeben.

Ich suche im Moment nach einer geeigneten Möglichkeit diese Fehlerummern zu generieren.

Eine Möglichkeit wäre zwar jedes Störungsbit abzufragen und entsprechend die Fehlernummer zu schreiben:

Code:
      U     M   2000.0
      SPBNB _001
      L     1
      T     MW  2200
_001: NOP   0

      U     M   2000.1
      SPBNB _002
      L     2
      T     MW  2200
_002: NOP   0
Ist aber bei insgesamt 5 Wörtern mit je 16 Störmeldungen etwas arg umständlich.

Hat jemand von euch eine Idee wie ich das etwas komfortabler und vielleicht auch universeller umsetzen kann?

Gruß smartie
 
Zuletzt bearbeitet:
Hallo smartie,
Nur so nebenbei gesagt:
Dein Code würde per sé schon mal gar nicht funktionieren,
weil Lade- und Transferfunktionen VKE-unabhängig sind!
Ein Fehler, der hier im Forum immer wieder mal gepostet wird!
So würde es gehen...
Code:
U     M    2000.0
SPBN = next    //springe nach next, wenn VKE= FALSE
L 1
T     MW 2200
Next: was auch immer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat jemand von euch eine Idee wie ich das etwas komfortabler und vielleicht auch universeller umsetzen kann?

Hallo Smartie,
wenn es sich um einen zusammenhängenden Bereich handelt (z.B. Bit-Meldungen für Flex) dann könntest du das mit einer Schleife durchscannen und entsprechend der Bit-Nummer einen Wert in Meldewort schreiben.
Was machst du aber, wenn mehr als eine Meldung ansteht (soll ja auch vorkommen) ?

Gruß
LL
 
@ Approx:
...Nur so nebenbei gesagt:
Dein Code würde per sé schon mal gar nicht funktionieren, ...
[/CODE]

Schon klar, das war ja auch nur ein Beispiel, und beim programmieren in FUP oder KOP muss man sich zum Glück über so was keine Gedanken machen. ;)
(Aber ich habs jetzt einfach mal ausgebessert .....)


@ Larry:

Wie meinst du das mit dem "durchscannen"?

Wenn mehrere Fehler anstehen soll der letzte aufgetretene Fehler gemeldet werden.

smartie
 
Zuletzt bearbeitet:
Welches ist den der "letzte Fehler" in einem Speicherbereich ?
Dann müßtest du nun außerdem noch vergleichen, was sich zwischen 2 Zyklen deines SPS-Programms geändert hat.

Durchscannen heißt: eine Schleife geht den Bereich durch und sucht nach dem gesetzten Bit. Ist ein gesetztes Bit gefunden dann wird dessen Index-Nummer ausgegeben.
Ich würde das allerdings nicht mehr in AWL sondern vielmehr in SCL programmieren (geht aber auch in AWL ... :rolleyes:) .

Gruß
LL
 
Ich denke für die Anlage muss ich es so wohl machen, weil die Anlage schon beim Kunden steht und ich nicht viel Zeit habe da irgendwas auszuprobieren.

Aber ich würde mir dann schon mal einen Baustein bauen wollen der das ganze automatisch organisiert. (Wenn das überhaupt so universal geht).

Aber letztendlich happert es halt an meinen mangelnden AWL Kenntnissen.
Gerade bei AWL habe ich halt so meine Probleme.

Ich wüsste jetzt auch erst mal gar nicht wie ich so eine Schleife angehen soll.
Dann denke ich benötige ich auch noch einen Pointer der die Daten für den Vergleich bereit stellt.

Was meinst du mit "Welches ist den der "letzte Fehler" in einem Speicherbereich ?" ?

smartie
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Was meinst du mit "Welches ist den der "letzte Fehler" in einem Speicherbereich ?" ?

... an den Bits steht nicht dran, wann sie gesetzt worden sind ...
Das heißt dann, dass du außerdem etwas erstellen mußt, dass den Änderungs-Zustand zwischen der letzten und der aktuellen Meldung vergleicht.

Gruß
LL
 
Ok jetzt versteh ich das, du meinst ich muss (zeitlich) erfassen welches das zuletzt gesetzte Bit ist um die enstsprechende Fehlernummer auszugeben.

Ich hatt es so verstanden das du wissen wolltest welches Bit das letzte in meinem Adressbereich ist.

Sorry :grin:
 
Zurück
Oben