Step 7 PROFINET ET-Stationen: Adressen ins Prozessabbild oder nicht?

Medium9

Level-2
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ahoi.

Ich versuche zum ersten Mal eine S7-300 per PROFINET mit ein paar IM 155-5 PNs zu koppeln (via CP 343-1). (STEP7 V5.5 SP4 HF11)

Was mich dabei anfangs irritiert hatte ist, dass der PROFINET-Strang offenbar einen komplett eigenen Addressbereich hat - ich kann also Adressen vergeben, die bereits durch an direkt an meine CPU angeschlossenen Baugruppen belegt sind. Aber ist ja okay, ist ja im Grunde ein "externes System", mit dem ich lediglich via PNIO_SEND/RECV spreche. (War ich von PROFIBUS bisher anders gewohnt, daher kurze Verwunderung.)

Was mich nun aber umtreibt: Ich kann in der Addresseinstellung der einzelnen Baugruppen ja auswählen, in welchem Prozessabbild diese landen sollen.
Muss ich da nun dasselbe wie "sonst immer" (OB1-PA) wählen? Oder TPA 1, oder keines?

Besten Dank schon mal, und schönes WE!
 
Hallo

du hast nur 1 Prozessabbild in der CPU. Wenn Du die Adressen doppelt, also von Baugruppe und von PN-Baugruppe, belegst werden die Daten überschrieben.

Das ist zumindest bei der 315 PN/DP so.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

du hast nur 1 Prozessabbild in der CPU. Wenn Du die Adressen doppelt, also von Baugruppe und von PN-Baugruppe, belegst werden die Daten überschrieben.

Das ist zumindest bei der 315 PN/DP so.
Bei einer CPU ohne Onboard PROFINET-Schnittstelle ist das etwas anders.
Die PN-Teilnehmer liegen NICHT im Prozessabbild sondern werden über die PNIO_SEND/RECV angesprochen.
An die Bausteine kann man dann z.B. ein Byte-Array in einem DB parametrieren und die E/A-Daten werden dann direkt dort gelesen/geschrieben.
 
der CP343-1 hat als PN-Controller oder PN-Device eigene E/A-Adressen (siehe HW Konfig Adressübersicht) (genau wie CP342-5 für Profibus)
das Adressabbild des CP343-1 muss mit den FC PNIO_SEND/PNIO_RECV zwischen CPU und CP kopiert werden
 
Danke schonn mal!

Die CPU (319F-3 PN/DP) hat zwar eine onboard PN-Schnittstelle, diese wird aber bereits anderweitig verwendet. Daher der zusätzliche CP, über den ich die ETs anbinden werde.

Nur um sicher zu gehen: Das geteilte Prozessabbild trifft NUR auf die onboard Schnittstelle, aber NICHT für zusätzliche separate CPs zu. Korrekt?

Bleibt noch die eigentliche Frage bestehen: Was muss ich bei den Baugruppen in den ET-Stationen unter "Prozessabbild" letztlich einstellen? Bzw. Ist das in dieser Betriebsart überhaupt relevant?

Leider kann ich das nicht ohne weiteres ausprobieren, da die Anlage 24/7 in Betrieb ist, und ich keine Hardware für einen vergleichbaren Testaufbau habe. Würde gern vorab "trocken" so viel richtig machen, wie es geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei einer CPU ohne Onboard PROFINET-Schnittstelle ist das etwas anders.
Die PN-Teilnehmer liegen NICHT im Prozessabbild sondern werden über die PNIO_SEND/RECV angesprochen.
An die Bausteine kann man dann z.B. ein Byte-Array in einem DB parametrieren und die E/A-Daten werden dann direkt dort gelesen/geschrieben.
Ganz blöde Frage: Kann ich statt eines DBs dafür eigentlich auch den E/A-Bereich des Prozessabbildes nehmen? Einen freien natürlich, der sonst durch keine HW belegt wird. Also zumindest kann ich einen Pointer in diese bei PNIO_SEND/RECV eingeben, und es wird nicht angemeckert.
 
Die CPU (319F-3 PN/DP) hat zwar eine onboard PN-Schnittstelle, diese wird aber bereits anderweitig verwendet. Daher der zusätzliche CP, über den ich die ETs anbinden werde.
die kann aber trotzdem zusätzlich PN-Controller sein, es sei denn, der IP-Bereich des PNIO-Systems passt nicht zur IP der PN-Schnittstelle, oder man will die Netze trennen.

Nur um sicher zu gehen: Das geteilte Prozessabbild trifft NUR auf die onboard Schnittstelle, aber NICHT für zusätzliche separate CPs zu. Korrekt?
korrekt

Bleibt noch die eigentliche Frage bestehen: Was muss ich bei den Baugruppen in den ET-Stationen unter "Prozessabbild" letztlich einstellen? Bzw. Ist das in dieser Betriebsart überhaupt relevant?
kann man das beim PROFINET-System am CP343-1 überhaupt einstellen?? Wenn ja, dann sollte das nicht relevant sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich statt eines DBs dafür eigentlich auch den E/A-Bereich des Prozessabbildes nehmen? Einen freien natürlich
Ja, du kannst auch Adressen aus den Speicherbereichen der Eingänge und Ausgänge nehmen. Die können auch außerhalb der Prozessabbilder PAE/PAA liegen (da gibt es dann m.W. aber irgendein Problem mit PLCSIM).
 
Ja, du kannst auch Adressen aus den Speicherbereichen der Eingänge und Ausgänge nehmen. Die können auch außerhalb der Prozessabbilder PAE/PAA liegen (da gibt es dann m.W. aber irgendein Problem mit PLCSIM).
Das ist ja cool. Da in der Hilfe nur etwas von DB und Merkerbereich für diesen Parameter stand, war ich da etwas unsicher. PLCSIM spielt, teils leider, teils zum Glück, keine Rolle. Danke!
 
Ja, du kannst auch Adressen aus den Speicherbereichen der Eingänge und Ausgänge nehmen.
Hmm, das habe ich allerdings noch nicht ausprobiert, es lässt sich aber programmieren. In der Hilfe zu PNIO_SEND steht nur DB oder Merker ... Aber warum sollte das nicht möglich sein? Einen ANY auf einen größeren Speicherbereich in E oder A kann man allerdings nicht als Symbol angeben, weil man in der Symboltabelle keine Arrays und Strukturen anlegen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm, das habe ich allerdings noch nicht ausprobiert, es lässt sich aber programmieren. In der Hilfe zu PNIO_SEND steht nur DB oder Merker ... Aber warum sollte das nicht möglich sein? Einen ANY auf einen größeren Speicherbereich in E oder A kann man allerdings nicht als Symbol angeben, weil man in der Symboltabelle keine Arrays und Strukturen anlegen kann.
Ich habe da aktuell folgenden Aufruf, der zumindest gepeichert werden kann. (Laden und Ausführen aus o.g. Gründen leider nicht drin aktuell.)
Code:
      CALL  "PNIO_RECV"
       CPLADDR   :=W#16#1002
       MODE      :=B#16#0
       LEN       :=612
       IOPS      :="PNIO_IOPS".IOPS
       NDR       :=#pnio_ndr
       ERROR     :=#pnio_err
       STATUS    :=#pnio_stat
       CHECK_IOPS:=#pnio_chki
       ADD_INFO  :=#pnio_ainf
       RECV      :=P#E 2200.0 BYTE 612
("PNIO_IOPS".IOPS ist ein ARRAY[0..615] OF BOOL)

Nicht am CP, aber im Reiter "Adressen" der einzelnen Baugruppen in den per PN angeschlossenen ET-Stationen schon.
Weißt du dazu evtl. mehr? Aktuell habe ich für die Baugruppen "---" als Prozessabbild eingetragen. Ich habe allerdings Sorge, dass die Zustände dann wirklich "nirgendwo" geschrieben werden, und dadurch auch nicht mehr fürs Lesen per PNIO_RECV zur Verfügung stehen. Andererseits, wenn ich da "OB1-PA" wähle, würde das ja das Abbild der CPU implizieren, welches aber eigentlich garnicht zugreifbar ist aus Sicht der Baugruppen.

Am Ende eigentlich die Frage: Hat ein separates PN-System ein "eigenes" OB1-PA Abbild, das innerhalb dieses "Nexus" gesondert verwaltet wird (bzw. verwaltet werden MUSS), oder hat diese Einstellung in diesem Kontext einfach keine Bedeutung, und eigentlich sollte diese Auswahl in derart angeschlossenen Geräten nicht aktiv sein? (Man kann ja mal was übersehen, auch wenn man Siemens heisst.)

Nochmals rieeeesen Dank für deinen Einsatz!!
 
Der CP343-1 händelt die Kommunikation mit den PN-Teilnehmern komplett selbständig und asynchron zur CPU. Ein PA für das SPS-Programm der CPU entsteht erst durch Aufruf der PNIO_RECV und PNIO_SEND, wenn diese die E-Daten aus dem CP in die CPU und die A-Daten aus der CPU in den CP kopieren. Dass man da trotzdem ein PA im PN-Teilnehmer einstellen kann, höre ich heute zum ersten mal. Ich weiß nicht, wozu das gut sein soll. Schreibt die Hilfe zu HW Konfig oder die Bausteinhilfe zu PNIO_RECV/PNIO_SEND was dazu?
 
Ich habe das vor längerer Zeit mal so gelöst:
Von CP über PNIO_RECV in DBs rein, von da direkt nach Lesen in PA in normale Eingänge reingeladen,
Ende OB 1 Ausgänge in den DB reingeschrieben >> PNIO_SEND nach CP
 
Zurück
Oben