Step 7 Synchronisierung Profibus und Siemens S7 CPU

seehma

Level-1
Beiträge
112
Reaktionspunkte
31
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
Ich programmiere recht viel mit Codesys Umgebungen und hier ist die Synchronität (zumindest bei Ethercat) zwischen Ablaufsteuerung und Ein/Ausgangsdaten ziemlich klar. Zu Beginn des Programms werden alle Eingänge gelesen, dann läuft das Programm ab und das Ausgangsabbild wird geschrieben. Alternativ kann man auch das Schreiben des Ausgangsabbilds an den Anfang setzen, falls das Ablaufprogramm länger dauert und speziell im Motion Bereich Antriebsregler zicken anfangen.

So, ich hab mich jetzt ein wenig mit Siemens S7 und Profibus beschäftigt und mir ist da eines nicht ganz klar. Prinzipiell ist das mit dem Ablauf 1.) Eingangsabbild lesen 2.) Ablaufprogramm abarbeiten 3.) Ausgangsabbild schreiben bei DP-V0 (zyklischer Betrieb) recht klar und ähnlich ab wie bei der Codesys Variante. Aber der Profibus Master läuft ja nicht synchron mit der Steuerung mit oder? Denn dieser hat ja separat die Poll Listenbearbeitung und legt hier in einer Art shared Memory die aktuell gelesenen Daten für den Zyklus des Ablaufprogramms ab.

Dh. aber auch wenn mein Programm im OB1 recht kurz ist und mein Feldbus recht lang, kann es passieren, dass mein Programm öfters durchläuft als ich frische I/O Daten bekomme. Liege ich da richtig? Nochmals anders beschrieben: die zyklische Ablaufsteuerungsabarbeitung und die zyklische Kommunikation der Profibus Masters sind nicht synchronisiert und somit kann ich nie sichergehen, dass zu Beginn meines Steuerungsprogramms ich frische I/O Daten hab, oder?

Gibt es irgendeine Möglichkeit die beiden zu synchronisieren, sagen wir so wie bei Ethercat und der Codesys Runtime, sodass ich zu beginn meiner Ablaufsteuerung immer frische Eingangsdaten hab und am Ende die aktualisierten Ausgangsdaten schreibe? Vielleicht gibt es eine Möglichkeit dies im Quellcode zu machen über ToggleBit oder ähnlich?

Irgendwo hab ich auch noch von den Anwender-Schnittstellen DP-Send und DP-Recv (Bausteinen) gelesen. Könnt ihr mir sagen wozu die gut sind? Muss ich die jeweils ausführen um mit frischen Daten zu arbeiten?

Vielleicht hat auch einer einen Link zu einem Video oder einer guten Doku, ich konnte leider (auch mit Dr. Google) nix so richtig fundiertes finden.
Das Thema ist prinzipiell als Frage für die S7 gedacht, da aber das TIA Portal recht ähnlich läuft, wird das denk ich wohl ähnlich sein oder? Prinzipiell würde mich auch, falls die beiden Varianten nicht ähnlich sind, die Unterschiede auch interessieren...

Vielen Dank schon mal
Sg
M.

Edit: Ich hoffe jeder versteht meine Frage, da ich aus der synchronen-Echtzeitwelt komme kann ich mir einfach nicht vorstellen wie das Zusammenspiel SPS-Programm und I/O-Daten bei den Siemens SPSen funktioniert. Falls es zu kompliziert geschrieben ist oder so, bitte um Feedback...
 
Zuletzt bearbeitet:
Hallo Seehma,

von Welcher Art Anlage Sprechen wir den Hier ? Ich verstehe schon was du willst und kann dir nur sagen für 99 % der Standaradanwendungen reicht das aus wie es ist. Es gibt die Fausregel der Buszyklus soll doppelt so schnell wie der Ob1 Zyklus sein.
Du musst auch immer bedrachten das deine E/a Baugruppen eine Verzögerung haben besonders Analogbaugruppen. Die Teilweise um das vielfache länger als der ob1 Zyklus ist.

Was es noch gäbe ist Taksynchroner Bus der wird beforzugt für Motionanwendung eingesetzt hier wird der Ob dann mit den Taksynchronzyklus bearbeitet.

Gruß Tia
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Danke schon mal für deine Antwort. Es geht eigentlich nicht wirklich um eine bestimmte Anlage sondern nur ums Funktionsprinzip. Das heißt das stimmt wirklich so. Die Abfrage der Feldbusteilnehmer durch den Profibus/Profinet Master ist asynchron zum Aufruf des OB1!?

Dann bleiben noch zwei Fragen übrig:
  1. wenn der Ablauf bei der SPS eh so ist => aktuell abgelegtes Eingangs-Abbild holen, SPS-abarbeiten, Ausgänge in das Abbild schreiben.
    dann sollten ja eigentlich die Daten eh automatisch hin und her kopiert werden. Es ist halt immer ein wenig Zufall dabei ob man frische I/O Werte hat oder nicht. Aber wozu brauch ich dann die beiden Bausteine DP-Send und DP-Recv?
  2. Kann ich jede IO-Baugruppe und jede SPS mit einem taktsynchronen Feldbus ansprechen? Ist das eine andere Betriebsart des Profibus/Profinet? Ist das ganz einfach umschaltbar?

Für mich macht es irgendwie keinen Sinn Feldbusdaten und SPS asynchron zueinander laufen zu lassen, die SPS existiert ja eigentlich nur wegen der Feldbusdaten, damit sie damit was machen kann oder? Ich versteh das mit der Faustregel schon aber das schöne an automatisierung ist ja, dass einer Maschine ein gewisses Regelwerk aufgezwungen wird und dazu muss die Verhaltensweise annähernd vorhersehbar sein, wenn ich aber nicht immer mit frischen I/O-Werten arbeiten kann, dann ist das ja doch eher ein wenig Zufall oder? Es kann auch sein, dass ich das ganze etwas überdramatisch sehe...

Sg und Danke schon mal
M.
 
Ob der DP-Master und der SPS-Programmzyklus synchron laufen ist für die meisten SPS-Anwendungen egal. Es muß ja auch egal sein, wie schnell ein DP-Slave auf Änderungen von Ausgabedaten reagiert. Einem SPS-Programm mit Prozessabbild ist es prinzipiell egal, wann im Programmzyklus externe Signale sich ändern, weil es zyklisch abgearbeitet wird - wenn eine Signaländerung verpasst wird, dann wird sie eben im nächsten Programmzyklus verarbeitet.

DP_SEND und DP_RECV braucht das Anwenderprogramm in der SPS um DP-Ausgabedaten und aktuelle DP-Eingangsdaten mit einem CP342-5 im Rack auszutauschen - der CP342-5 kommuniziert völlig unabhängig und asynchron von der CPU mit den anderen DP-Teilnehmern. Wenn mit einer in der CPU integrierten DP-Schnittstelle kommuniziert wird braucht man DP_SEND und DP_RECV nicht.

Zu Beginn des Programms werden alle Eingänge gelesen, dann läuft das Programm ab und das Ausgangsabbild wird geschrieben. Alternativ kann man auch das Schreiben des Ausgangsabbilds an den Anfang setzen, falls das Ablaufprogramm länger dauert und speziell im Motion Bereich Antriebsregler zicken anfangen.
Ob das Ausgangsabbild am Anfang oder Ende des Programmzyklus geschrieben wird (an den DP-Master übergeben wird) hat keinen Einfluß auf die Datenaustausch/Kommunikationsgeschwindigkeit (stell' Dir den Programmzyklus als Kreis vor) - welche unterschiedlichen Einflüsse soll das eine oder andere Verfahren auf "Zicken" von Antriebsreglern haben?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, vielen Dank

Dh. nochmal für mich zum Verständnis: DP-Send und DP-Recv ist nur für einen speziellen Typ wo Feldbus-Master und CPU getrennt sind.
Bei Profinet gibt es den Isochronen Modus wo man synchron zum PLC Programm die Daten austauschen kann!? Den gibt es beim Profibus nicht!?

Für viele Anwendungen ist es leider sehr wohl notwendig wann die Daten an der Klemme ankommen bzw. wann sie wieder gelesen werden. Wenn man zum Beispiel hochdynamische Anwendungen hat oder mit Messdaten gewisse Berechnungen fahren möchte (FFT), da braucht man Datenkonsistenz.
Bei Beckhoff gibt es zb. die XFC Klemmen, die ja nochmals unterteilt zum Buszyklus Messdaten liefern bzw. wo ich im (maximal) 10us Takt Ausgänge schalten kann. Wenn ich da nicht synchron zwischen Feldbus und CPU die Daten austausche dann bekomme ich Probleme. Außerdem bei zyklischer Lageregelung wo mehrere Achsen synchron zueinander fahren sollen und evtl. ein Ausgang genau zu einer gewissen Zeit schalten muss.
Für mich sieht es so aus wie wenn der Profibus einfach nicht für solche Dinge designed wurde und bei Profinet wurde der Isochrone Modus eingeführt (den aber nicht alle CPUs können wenn ich das richtig aus der Doku raus hab!?)

Aber ihr habt mir sehr geholfen, ich wollte nur mal wissen wie sowas in der Siemens-Welt funktioniert und ob ich hier am Holzweg bin oder das aus meinen Dokumentationen richtig rausgelesen hab...

Vielen Dank

Sg
M.

Edit: Gibt es hier auch einen Button wo man das Thema schließen, oder als beantwortet markieren kann?
 
... Taktsynchronität geht auch bei Profibus.
Fuer Nocken gibt es auch TM Module bzw. FM Baugruppen in Classic damit man im MicroSekundenBereich schalten kann oder auch (bei Bedarf durch Oversampling) analoge Signale schnell messen und auswerten kann.
Fuer Motion hast Du völlig recht. Daher gibt es diese Verfahren.
 
Zuletzt bearbeitet:
Hallo Zako,

OK, dh. der Profibus ist dann Taktsynchron aber gibt es dann im OB1 eine Möglichkeit auszuwerten, ob ich frische Eingänge bekommen hab oder nicht?
Eigentlich ist der Profibus ja immer Taktsynchron solange keine Slaves hinzukommen oder entfernt werden oder?
Aber er ist halt nicht Taktsynchron mit der PLC...

Sg
Matthias
 
und in den kann ich dann in der selben Art und Weise wie beim OB1 ganz normal meine Programme aufrufen, ich muss nur selbst aufpassen, dass ich nie länger brauche als der Profibus Zyklus dauert!?
 
Ja dann ist der OB61 und Profibus und das zugeordnete Teilprozessabbild synchronisiert. Da musst Du dann drauf achten dass der OB zylus nicht überschritten wird. Weniger zeitkritischer Code rufst Du z.B. im OB1 auf.
 
Zurück
Oben