S7-300 nicht in Stop bei Profibussttörung

Zuviel Werbung?
-> Hier kostenlos registrieren
nee...

nee, das waren 2 verschalchtelte arrays.

maximal 5 master, und in jedem master gibt es wieder 128 bool variablen!

Ok,
das ist perfekt.

Aber so richtig will es noch nicht klappen. Die CPU geht immer noch in Stop. Liegt es an meiner Anweisung im OB1?

In meine OB1 schreib ich:
L B#16#1
T PAB 256

damit sag ich quasi dem Gerät DP1 welches Datenprofil er mir zurück senden soll.
Und das kann ich natürlich nicht mehr machen wenn der Teilnehmer nicht mehr da ist. Wie kann ich das unterbinden?



Simulieren kann ich das ganze mit PLCSIM, oder?
ausführen->fehler-ob auslösen->ob86

Irgenwie will es aber sich damit nicht simulieren lassen. :-(


Unbenannt.JPG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Poste doch mal den Diagnosepuffer.

Nur so eine Vermutung. Du hast eine CPU als Mastersystem und eine Station als DP-Slave in deiner Simulation. Wenn diese ausfällt, was soll die CPU dann denn noch bearbeiten? Ich weiss nicht, ob man den Stop durch Baugruppenausfall bis zum Ende ausreizen kann. Vielleicht hat die CPU beim jetzigen Programm gar keine Chance, um den Stop zu verhindern.
 
Poste doch mal den Diagnosepuffer.

Nur so eine Vermutung. Du hast eine CPU als Mastersystem und eine Station als DP-Slave in deiner Simulation. Wenn diese ausfällt, was soll die CPU dann denn noch bearbeiten? Ich weiss nicht, ob man den Stop durch Baugruppenausfall bis zum Ende ausreizen kann. Vielleicht hat die CPU beim jetzigen Programm gar keine Chance, um den Stop zu verhindern.

Hier:

Diganose.JPG
 
Und mein OB1 sieht wie folgt aus:

NW 1
Call FC1

NW 2
Call FC2

NW 3
Call FC3

NW 4
Call FC4

NW 5
Call FC5

NW6
L B#16#1
T PAB 256
 
Im NW6 sag ich dem Teilnehmer der Ausfallen kann, was ich für ein Profil haben möchte.

Die Teilnehmer DP 2 (CPU) und DP3 (Panel) können nicht ausfallen, jedenfalls nicht im Normalfall. DP1 ist ein Messgerät das bei Spannungsausfall halt aussteigen kann.


Siehe hier:

Teilnehmer.JPG
 
Den hab ich aber schon rausgenommen und es ergab keine Änderung. :-(

Im FC4 skalier ich die Werte vom UMG96S, quasi von DP-Teilnehmer 1, mit dem richtigen Faktor.

z.B. im NW1
L "Strom L1"
L 2
*I
T "Analogwerte skaliert".Strom_L1
NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Puffer hat mir genau das angezeigt als ich den FC4 rausgenommen habe.

Aber es funktioniert ja auch mit der simulation nicht.
Geh jetzt immer wieder in die Werkstatt an die echte CPU


Jetzt hab ich NW4 und NW6 mal rausgenommen:

Diganose2.JPG
 
Zuletzt bearbeitet:
Dann ist das NW4 jetzt leer? Das ist aber seltsam.
Öffne doch mal den OB1 und navigiere mit "Gehe zu -> Bausteinadresse -> 58" zur Stopursache.
 
Peripheriezugriffsfehler-OB122

Hallo Steve38,

in Deinem Beitrag #27 warst Du schon sehr knapp dran, warum Deine CPU in Stop geht.
Du must nur den Diagnosepuffer-Eintrag ganz durchlesen (hochscrollen)!

Da steht ja eindeutig:
STOP durch Peripheriezugriffsfehler (OB nicht geladen ...
Wenn Du da noch etwas weiterscrollst, dann müßte da etwa sowas stehen:
Angeforderter OB: Peripheriezugriffsfehler-OB (OB 122)
Weil Du keinen OB122 in der CPU hast geht Deine CPU in Stop.
Wenn Du nun einen (leeren) OB122 in die CPU lädtst, dann geht die CPU nicht mehr in Stop,
aber der Diagnosepuffer läuft dann über mit Peripheriezugriffsfehler-Diagnoseeinträgen.
Nicht sehr elegant, hilft aber fürs erste weiter.

Mit den SFC36 und SFC37 kann man die Aufrufe des OB122 beeinflussen.
Das ist aber wahrscheinlich (noch) viel zu kompliziert für Dich.

Besser ist es, die Diagnoseangaben aus dem OB86 auszuwerten und wenn ein DP-Slave ausgefallen ist,
dann nicht mehr auf die Adressen des DP-Slave zugreifen.

Z.B. etwa so:
Nicht direkt die PEW... und PAW... im Programm benutzen, sondern Zwischenmerker MW... oder DBW...
Am OB1-Anfang die PEW... auf Eingangs-MW/DBW kopieren, aber nur, wenn der zugehörige Slave OK ist.
Am OB1-Ende die Ausgabe-MW/DBW in die PAW... kopieren, aber nur, wenn der zugehörige Slave OK ist.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
h.

Besser ist es, die Diagnoseangaben aus dem OB86 auszuwerten und wenn ein DP-Slave ausgefallen ist,
dann nicht mehr auf die Adressen des DP-Slave zugreifen.

Z.B. etwa so:
Nicht direkt die PEW... und PAW... im Programm benutzen, sondern Zwischenmerker MW... oder DBW...
Am OB1-Anfang die PEW... auf Eingangs-MW/DBW kopieren, aber nur, wenn der zugehörige Slave OK ist.
Am OB1-Ende die Ausgabe-MW/DBW in die PAW... kopieren, aber nur, wenn der zugehörige Slave OK ist.

Gruß
Harald

Hi Harald,

aber wie stell ich fest ob der zugehörige Slave ok ist.

Würde gerne die Auswertung machen, auch in Bezug auf die Zukunft, hab bald ein Projekt anstehen mit 40 DP-Teilnehmer
 
Zurück
Oben