Störmeldungen, wie geht das?

carsten

Level-1
Beiträge
53
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine CPU314, an dem ich ein MP270 über MPI angeschlossen habe. Jetzt möchte ich, das Störmeldungen am MP270 angezeigt werden. In ProTool habe ich unter dem Menü "Bereichszeiger" einen Typ "Störmeldungen" angelegt und dem DB70 zugewiesen. So weit, so gut.

Jetzt kommt es:
Wie gehe ich in der SPS vor? Habe in der Hilfe gelesen, das man dafür z.B. den SFC17 benutzen kann. Allerdings wird in der Hilfe darauf hingewiesen, das man den SFC107 bei neueren Steuerungen anwenden soll. Aber wie gehe ich dann weiter vor? Wo rufe ich den SFC107 auf? Was weise ich den entsprechenden PArametern am SFC107 zu?

Ich habe dem DB70 übrigens schon die entsprechenden Kontakte zugewiesen. Meint: Einem DB70.dbx0.0 einen Öffnerkontakt einer Sicherung.

Ich habe keine Ahnung wie ich das mit dem SFC107 machen soll! :confused:

Gruß

Carsten
 
Den SFC107 brauchst du fürs Meldenummernverfahren. Wenn du einen Bereichszeiger angibst arbeitest du nach dem Bitmeldeverfahren und du brauchst den SFC nicht.
Jedem Bit ist in deinem DB ist dann eine Meldung in Protool zugeordnet.
Achtung High Byte und Low Byte sind vertauscht
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Siehe dazu auch Beitrags-ID 5155755 im Siemens Support
Falls du unbedingt das Meldnummernverfahren benutzen willst, dann gucke mal unter
der Beitrags-ID: 841294 dort gibt es auch weiterführende Links zu Beispielprojekten.
Sowohl fürs Meldenummernverfahren als auch fürs Bitmeldeverfahren
 
Zuletzt bearbeitet:
Hallo marlob,

besten Dank für Deine Antworten. Gerade die letzte Antwort mit den Links hat mir viel geholfen.

Jetzt funzt das auch.

Danke.


Gruß

Carsten
 
....
Achtung High Byte und Low Byte sind vertauscht
Immer wieder dieser Quatsch mit den "vertauschten" Bytes!:twisted:

Tatsächlich ist da nichts vertauscht, sondern es ist einfach grundsätzlich so, dass bei der S7 das High-Byte immer das "Adressierungsbyte" ist und die nachfolgenden niederwertigeren Bytes "höher" adressiert sind.
Code:
DB10.DBW0 //DB10.DBB0 ist das High-Byte und DB10.DBB1 das Low-Byte in diesem Word

DB10.DBW3 //DB10.DBB3 ist das High-Byte und DB10.DBB4 ist das Low-Byte in diesem Word
Was zu dem immer wieder kehrenden Märchen mit den "vertauschten Bytes" führt, ist wohl die Vermutung, dass die Zahlenwertig höchste Byte-Adresse als das High-Byte innerhalb eines [Doppel]Wortes interpretiert wird.

Deshalb sollte man sich im Umgang mit der S7 und [Doppel]Wortverarbeitung unbedingt merken:

Niedrigste Byteadresse: -> Most significantest Byte (MSB) -> Highest-Byte

Höchste Byteadresse: -> Lowest significantest Byte (LSB) -> Lowest-Byte

Und jetzt noch an all die Erfahrenen hier im Forum: Bitte nicht böse sein über die allgemeinen "Weisheiten" die ich eben losgelassen habe und die für jeden erfahrenen SPS-Programmierer (zumindest bei Step7) selbstverständlich sind.
Allerdings liegt mir die Vermutung nahe, dass bei dem "Märchen der vertauschten Bytes" der Eine oder Andere Anfänger leicht verwirrt sein könnte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Immer wieder dieser Quatsch mit den "vertauschten" Bytes!:twisted:

Warum Quatsch? S7-CPUs sind Big Endian Systeme im Gegensatz zu z.B. Intel CPUs die Little Endian Systeme sind. Und bei diesen beiden Systemen ist die Byteanordnung nun mal vertauscht.
Bei WinCC kann ich diese Reihenfolge sogar einstellen, damit die Werte von einer beliebigen CPU richtig zum PC mit WinCC geschickt werden.
Viele Anfänger haben erst auf PCs programmiert, was den einen oder anderen schon mal durcheinanderbringen kann.
Aber eigentlich wollte ich nur darauf hinweisen, das z.B. Bit 0.0 Meldung 9 ist und Bit 1.0 Meldung 1.
Vielleicht hätte ich das deutlicher schreiben sollen, aber carsten ist mit meinen Hinweisen doch ans Ziel gekommen :)

Code:
DB10.DBW0 //DB10.DBB0 ist das High-Byte und DB10.DBB1 das Low-Byte in diesem Word

DB10.DBW3 //DB10.DBB3 ist das High-Byte und DB10.DBB4 ist das Low-Byte in diesem Word
Deshalb sollte man sich im Umgang mit der S7 und [Doppel]Wortverarbeitung unbedingt merken:

Niedrigste Byteadresse: -> Most significantest Byte (MSB) -> Highest-Byte

Höchste Byteadresse: -> Lowest significantest Byte (LSB) -> Lowest-Byte
Hieran gibt es nichts auszusetzen:)

Allerdings liegt mir die Vermutung nahe, dass bei dem "Märchen der vertauschten Bytes" der Eine oder Andere Anfänger leicht verwirrt sein könnte.
Ich frag mich, wer hier wen nun mehr verwirrt hat:confused:
 
Zuletzt bearbeitet:
Aber eigentlich wollte ich nur darauf hinweisen, das z.B. Bit 0.0 Meldung 9 ist und Bit 1.0 Meldung 1.

In der Praxis ist das sehr richtig. Als Abhilfe - und um eine durchsichtigere Programmierung zu erreichen - verwende ich z.B. folgenden Bausteinschnipsel, der einem Binärsignal #INPUT eine Meldungsnummer #NR (hier in einem festen Datenbaustein) wie folgt zuordnet (#NR (Int)und #INPUT (Bool) sind Eingangswerte, #INDEX ist ein Temp-DWORD)

Code:
      L     #NR
      L     1
      -I    
      L     8
      XOW   
      T     #INDEX
      OPN   DB    70
      A     #INPUT
      =     DBX [#INDEX]

Gruss Michael aka Dumbledore
 
Aber eigentlich wollte ich nur darauf hinweisen, das z.B. Bit 0.0 Meldung 9 ist und Bit 1.0 Meldung 1.
Genau das aber hat mit "vertauschten Bytes" und mit "Little und Big Endian" nichts zu tun.
Es ist völlig logisch dass Bit 1.0 der Meldung 1 entspricht und Bit 0.0 der Meldung 9.
Bezogen auf das Wort 0 ist Bit 1.0 nun mal das "erste" (Bit-Nr.0) und Bit 0.0 das "neunte" (Bit-Nr. 8 ).
Von vertauscht würde ich wohl eher reden wenn dem nicht so wäre.
Ein wirkliches vertauschen der Bytes liegt dann vor, wenn in der Steuerung im Wort 0 z.B. der Dezimalwert 128 steht, in der HMI aber statt dessen -32786 erscheint.
Das aber ist hier definitiv nicht der Fall.
Vielleicht hätte ich das deutlicher schreiben sollen, aber carsten ist mit meinen Hinweisen doch ans Ziel gekommen:)
Es war auch nicht meine Absicht Deinen Beitrag zu kritisieren.;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eigentlich wollte ich hierauf ja nicht mehr antworten. Aber aufgrund des Kommentars von
OHGN in diesem Beitrag, dachte ich das ich doch noch mal dazu etwas schreibe.

Code:
                             Siemens    Systeme mit  
                             Siemens    anderer Byteanordnung
kleinste Speicheradresse    High Byte     Low Byte
höchste Speicheradresse     Low Byte      High Byte
Das heisst bei Siemens ist bei z.B. DB10.DBW0
DB10.DBX0.7 das MSB -> DB10.DBX0.0 Meldung 9 und DB10.DBX1.0 Meldung 1
wenn Siemens aber die andere Byteanordnung verwenden würde, dann wäre
DB10.DBX1.7 das MSB -> DB10.DBX0.0 Meldung 1 und DB10.DBX1.0 Meldung 9
daraus folgt, das die Byteanordnung vertauscht! ist. Also kein Märchen ist.
Und unterschiedliche Bytereihenfolgen nennt man Big/Little Endian.

@OHGN
falls an dieser Ausführung etwas falsch ist, bitte ich darum mich zu berichtigen. Ich lerne gerne noch dazu,
vielleicht hast du ja noch ein paar schöne Märchenbücher;)
 
wenn Siemens aber die andere Byteanordnung verwenden würde, dann wäre
DB10.DBX1.7 das MSB -> DB10.DBX0.0 Meldung 1 und DB10.DBX1.0 Meldung 9
daraus folgt, das die Byteanordnung vertauscht! ist. Also kein Märchen ist.
Und unterschiedliche Bytereihenfolgen nennt man Big/Little Endian.
100% ACK

Es ging mir ja auch darum, dass bezogen auf das HMI (hier das MP270) von vertauschten Bytes gesprochen wird und das ist definitiv falsch.
Wenn das MP270 eine andere Bytereihenfolge als die S7 hätte, würdest Du die Bytes ja generell tauschen müssen, also auch wenn Du eine Dezimalzahl auf dem MP darstellen willst.

Und selbst bei WinCC, welches ja definitiv auf einer Maschine läuft bei der die Bytes gegenüber der S7 vertauscht sind muss man sich in der Regel nicht darum kümmern, weil das bereits der WinCC-interne Kommunikationstreiber erledigt, zumindest dann, wenn man die Siemens Protocol-Suite verwendet.

So, jetzt ist aber wirklich Schluss!:s3:
 
Zurück
Oben