Step 7 S7-313C Frage zu Interrupt im OB40

Zuenni58

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin über ein bestimmtes Bit im OB40 gestoßen, wo ich nicht weiß, wo dieses gesetzt wird. Im OB40 unter Schnittstelle habe ich eine temporäre Variable mit dem Namen OB40_POINT_ADDR. Es handelt sich dabei um ein DWord mit der Anfangsadresse 8.0. Ich kann leider keine Einstellungen finden, die das für mich relevante Bit mit dem Namen L8.7 setzt bzw. rücksetzt. Wenn mir da einer auf die Sprünge helfen kann wäre das super!

Danke :-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alle TEMP-Variablen OB40_... werden beim Aufruf des OB40 vom Betriebssystem mit Werten gefüllt.
Schau in OB40_MDL_ADDR da findest Du die E/A-Adresse der Baugruppe, welche den OB40 Prozessalarm ausgelöst hat.
Dann schau in das Handbuch der Baugruppe, welche Bedeutung die Bits in OB40_POINT_ADDR haben.

Harald
 
Danke schonmal für eure Antworten. Der Bereich im OB40_POINT_ADDR ist ein DWord 8.0...
9.0 - 11.0 sind die drei Eingangsbytes der Kompakt-CPU. Das 8.0 ist laut Handbuch reserviert. Aber für was? In meinem Programm werden aus dem ersten Byte zwei Bits verarbeitet, die aber anscheinend nicht aus den Eingangskarten kommen.
 
Das 8.0 ist laut Handbuch reserviert. Aber für was?
L8.0 - L8.7 (Bits 24..31 des LD8 OB40_POINT_ADDR) "reserviert" heißt bei Prozessalarm von den integrierten Digitaleingängen der CPU 31xC, daß von den 32 Bits nur 24 Bits benötigt werden (CPU 31xC haben nur max 24 integrierte Digitaleingänge) und die obersten 8 Bits nicht verwendet sind.

In meinem Programm werden aus dem ersten Byte zwei Bits verarbeitet, die aber anscheinend nicht aus den Eingangskarten kommen.
Hast Du denn mal OB40_MDL_ADDR ausgewertet, ob der Prozessalarm überhaupt von den Digitaleingängen der CPU kommt? Es können auch andere Baugruppen den OB40 Prozessalarm auslösen.

Versuchst Du selber was zu programmieren oder willst Du ein Fremdprogramm analysieren/verstehen?

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versuche ein Programm zu verstehen, da das Bit L8.7 wenn es kommt, einen Fehler im Ablauf verursacht. Der Code ist ziemlich unspektakulär.
Wenn das Bit L8.7 kommt, wird in das MW6 eine 60 geschrieben. Das wars. Also nichts wildes. Aber irgendwo muss es ja herkommen.
Den OB_40_MDL_ADDR kann ich spätestens morgen auswerten, da ich dann wieder bei dem Kunden vor Ort bin.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja das ist es. Das Bit L8.7 bedeutet, dass der Vergleicher angesprochen hat. Das hilft mir doch schonmal weiter... Danke schonmal. Jetzt muss ich mit den Kanal 1 mal anschauen was es mit dem "Vergleicher angesprochen" auf sich hat.
 
Es kommt darauf an, was parametriert ist.
Frequenzmessen, Pulsweitenmodulation oder Zählen. Wobei Pulsweitenmod es der Adresse nach nicht sein kann.
Also Frequenzmessen oder Zählen müsste bei dir projektiert sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In der Hardwarekonfiguration unter Zähler ist unter Kanal 1 ein Vergleichswert und ein Prozessalarm konfiguriert. Wenn der Vergleichswert = Istwert wird das Bit auf 1 geschrieben.
 
Zuletzt bearbeitet:
Wenn das Bit L8.7 kommt, wird in das MW6 eine 60 geschrieben.
Wo wird das MW6 dann verwendet? Womöglich gar mehrmals?
Der OB40 unterbricht den OB1, und wenn im OB1 an mehreren Stellen auf MW6 zugegriffen wird, dann kann bei jedem Zugriff ein anderer Wert drin stehen. Wenn im OB1 an mehreren Stellen der Wert vom MW6 gebraucht wird, da müsste im OB1 das MW6 auf ein für den ganzen OB1-Durchlauf konsistentes "Prozessabbild" des MW6 umkopiert werden.

Harald
 
Zurück
Oben