Step 7 Laden von PED / ED bzw. PEW /EW

M8ner

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

ist mir gerade aufgefallen, darum meine Frage:

Ich habe einen DP/DP-Koppler mit Adressbereich E_Adr: 1100...1139 und A_Adr:1100-1139

Jetzt will ich die Daten rauslesen. Mein Code lautet:

L PEW 1100
T DB90.DBW 0
L PED 1102
T "DB-Kom_Füller3".REALs.Real1
L PED 1106
T "DB-Kom_Füller3".REALs.Real2
usw... usw...

Nach dem Laden, geht die SPS in Fehler. Nach ein wenig probieren, habe ich gemerkt, dass der Fehler durch das Laden des PEW kommt.
Habe den Code wie folgt umgeschrieben:


L EW 1100
T DB90.DBW 0
L ED 1102
T "DB-Kom_Füller3".REALs.Real1
L ED 1106
T "DB-Kom_Füller3".REALs.Real2

So, geht es jetzt ohne Fehler. Ist das normal, dass ich auf PEW nicht ohne Fehler zugreifen kann sondern nur auf EW... Wo ist der Unterschied?!?

Danke im Vorauf! Grüße,
Mario
 
Hast Du dazu vielleicht den Fehlertext, der im Diagnosespeicher drin steht?

Grundsätzlich dauert das Laden eines PEW länger als das Laden eines EW und treibt dadurch die Zykluszeit etwas nach oben. Halte ich bei 40 Byte nicht für die Ursache des Problems. Es sei denn Du hast die Überwachung der Zykluszeit extrem eng eingestellt.
Wie gesagt. Unwahrscheinlich.

Der Text aus dem Diagnosepuffer würde hier helfen eine Erklärung zu finden.
 
Die Fehlermeldung zeigt, dass der Zugriff auf die Peripherie mit der Adresse 1100 fehlschlägt. Das Betriebssystem möchte deshalb den OB122 aufrufen, den hast Du aber wohl nicht in die Steueung geladen, deshalb geht die CPU in stop. Wenn Du OB122 in die CPU lädst, sollte sie nicht mehr in Stop gehen, der Zugriff funktioniert aber trotzdem nicht.

Bitte informiere Dich mal über die Unterschiede PEW/PAW und EW/AW.
L PEW1100 greift (vereinfacht beschrieben) direkt auf die Peripherie zu,
L EW1100 greift auf das Prozess-Abbild zu, das ist einfach nur RAM, deshalb klappt der Zugriff trotz Fehler in der Peripherie

Ein Zugriff auf PN/PN-Koppler funktioniert nur dann, wenn beide Seiten des Kopplers spiegelbildlich korrekt parametriert sind und auch von einer CPU angesprochen werden.

Gruß
Erich
 
Wie ist die Datenkonsistenz bei dem DP/DP-Koppler eingestellt? Wie groß hast du die Blöcke gewählt? So mußt du die Daten auch abholen.

Dein Prozessabbild scheint bis in diesen Bereich zu reichen. In diesem Fall mußt die EW statt PEW nutzen.
 
Dein Prozessabbild scheint bis in diesen Bereich zu reichen.
Das kann man so nicht folgern. Die Adressen im Speicherbereich der Eingänge (E...) (und Ausgänge A...) existieren immer bis zur höchstmöglichen Größe des Prozessabbildes (schöne Falle!), sie werden aber nur bis zur eingestellten Größe des Prozessabbildes aktualisiert (mit der Peripherie synchronisiert).

Harald
 
Moin zusammen und schon mal vielen Dank für die vielen Einträge.
Also so wirklich habe ich das noch nicht verstanden. PEW greift auf die komplette Peripherie zu(?!?). Diese ist bei mir so aus:
1.JPG

Schreib ich jetzt folgenden Code
2.JPG
geht die CPU in Fehler (nicht in Stopp, da ein OB121 drin ist :cool:) mit folgendem Fehler im Speicher
fehler.JPG

Schreib ich den Code wie folgt um
3.JPG
ist alles i.O.

Und genau das verstehe ich nicht... Auch wenn der PEW Aufruf auf die komplette Peripherie des DPDP Kopplers zugreift, sollte das doch keinen Fehler geben, oder?

Für weitere Antworten, die meinen Horizont erweitern bin ich dankbar :-?
 
Also so wirklich habe ich das noch nicht verstanden. PEW greift auf die komplette Peripherie zu(?!?).
"L PEW" greift direkt auf die Peripherie zu, und das klappt nur, wenn die Peripherie auch vorhanden und ansprechbar ist.
"L EW" greift auf den Speicherbereich der Eingänge zu, wo das Prozessabbild der Eingänge (PAE) abgelegt ist und aktualisiert wird. Der Zugriff löst keinen Fehler aus, liefert aber den Wert 0, falls die für diese Adresse projektierte Peripherie nicht vorhanden ist oder für diese Adresse keine Peripherie projektiert ist (und auch kein Schreibzugriff auf die E-Adresse stattfand).

Schreib ich den Code wie folgt um
Anhang anzeigen 39003
ist alles i.O.
Bist Du sicher, daß dann alles i.O. ist? Da sollte trotzdem noch eine rote LED an der CPU leuchten oder blinken.
Schau Dir mal die HW Konfig online an (Station > Online öffnen, das 3. Icon "Offline <-> Online"). Da solltest Du sehen, daß der DP/DP-Koppler nicht vorhanden bzw. gestört ist.

Speziell beim DP/DP-Koppler ist es so, daß der solange "gestört" meldet, wie nicht beide Seiten ordnungsgemäß mit ihrem DP-Master kommunizieren. (Die CPU der anderen Seite muß Vorkehrungen treffen, daß sie nicht in Stop geht, wenn die CPU auf dieser Seite nicht richtig kommuniziert!).

- Ist die HW Konfig in die CPU geladen?
- Leuchten rote LED am DP/DP-Koppler?
- Läuft die DP-Kommunikation auf der anderen Seite des Kopplers mit dessen Profibus-Master schon?
- Wie groß ist das Prozessabbild der Eingänge (PAE) eingestellt?
- Welche Reaktion ist für den OB85 bei Peripheriezugriffsfehler eingestellt?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, ich bin mir zu 99,9% sicher, dass alles i.O. ist. Keine rote LED. HW online zeigt, dass die Baugruppe da ist, bzw. bekomme ich auch Werte usw... Sobald ich aus einem EW oder ED ein PEW bzw. PED mache, ist ein Fehler auf der CPU zu sehen bzw. sind die LEDs rot...

Die Kopplung auf der anderen Seite (B) ist ebenso i.O. Egal, wie ich es auf der anderen Seite programmiere...EW oder PEW

Prozessabbild der Eingänge ist 16000 (Bit) von E0.0 bis E1999.7

Wo kann man eine Reaktionszeit für den OB85 einstellen. Ich kenne nur die Priorität der Asynchronfehlalarme u.a. OB85... diese steht auf 25

Grüße, Mario
 
Passiert der Peripheriezugriffsfehler auch bei "L PEW 1280"?
Was für eine Konsistenz hast Du für den Bereich E 1100...1139 eingestellt? Wenn das über "gesamte Länge" ist, dann müsstest Du mit SFC14/SFC15 konsistent auf die E/A zugreifen, wenn die Adressen außerhalb des Prozessabbildes liegen. Wenn die Adressen innerhalb des Prozessabbildes liegen, dann kümmert sich das Betriebssystem der CPU um das konsistente Kopieren zwischen Peripherie und Prozessabbild und das Anwenderprogramm im OB1 soll/darf nicht auch nochmal auf die Peripherie zugreifen. Generell ist das Zugreifen auf Peripherie in der OB1-Task meistens ziemlich sinnfrei, wenn die E/A-Adressen innerhalb des OB1-Prozessabbildes liegen.

Du hast eine CPU 416-3 ...? Welche Bestellnummer und welche Firmwareversion?
Möglicherweise reagiert diese CPU mit Peripheriezugriffsfehler bei nicht-konsistentem Zugriff auf Peripherie.

Mit "Reaktion des OB85 bei Peripheriezugriffsfehler" meinte ich die Einstellung in den CPU-Eigenschaften im Reiter "Zyklus/Taktmerker" für das Verhalten bei Peripheriezugriffsfehlern während der systemseitigen Aktualisierung des Prozessabbildes.

Harald
 
Zurück
Oben