# Azyklische Kommunikation mit SFB53



## Piit278 (22 Januar 2017)

Guten Tag,

Ich möchte einen Servoregler (OCB03A) der Firma Yaskawa mit einer CPU 314C-2PN/DP über Profinet ansteuern.
Ich verwende das ST1 (Standard Speed Telegramm) und programmiert wird mit TIA V13 SP1 Upd9.
Nun habe Ich das Problem, dass Ich die Werte der Parameter für die Hochlaufzeit und Bremszeit über das Azyklische Parameter schreiben ändern muss und Ich habe so etwas noch nie gemacht und weiß auch nicht ob Ich auf dem richtigen Weg bin. Kommunikation steht bereits und STW wurde auch richtig angesteuert.


Im Anhang befindet sich: 
-Die Gebrauchsanleitung des Servos. Im Kapitel 10 wird auf das Azyklische schreiben der Parameter eingegangen.
-Ein Foto der HW Konfig des Reglers (Azyklische Parameteradresse 2038 ?), ein Bild des DB´s welcher die zu schreibenden Parameter beinhaltet.
-Ein Bild des (hoffentlich richtig) beschalteten SFB 53.

Wäre sehr dankbar wenn mir jemand sagen könnte ob Ich soweit richtig dran bin oder nicht.

Mit freundlichen Grüßen Piit


----------



## Draco Malfoy (23 Januar 2017)

1. Azyklische Kommunikation ist kein statischer Zustand von der Sorte "ich rufe SFB53 und kommuniziere azyklisch" => deswegen ist die ja auch azyklisch, und nicht etwa taktsynchron;

2. Der Aufruf eines SFB53 / 54 muss immer über Rising_Edge über Request angestoßen werden, der Aufruf des Bausteins geht dann über mehrere Zyklen, und danach wird die Rückmeldung ausgewertet;
3. Um eine azyklische Kommunikation zu realisieren, muss eine durchdachte, zeitlich- und ereignisbezogen korrekte Abfolge von Lese- und Schreibaufträgen  implementiert werden, wobei jeweils die Überwachung auf "Done" und "No Error" mit einbezogen werden muss;
4. Um sicherzustellen, daß ein azyklischer Schreibauftrag auch wirklich erfolgreich war, sollte man mit einem Leseauftrag auf das gleiche Zieldatum die Werteübernahme im Zielgerät (in deinem Antrieb) anschließend überprüfen.

Selbst in SCL sind das zum Teil mehrere Seiten Code, je nach Komplexität der Aufgabe. Ich würde da mit aller Ernsthaftigkeit daran gehen, und die Funktionalität im Labor vorher ausführlich testen, bevor man damit auf die Baustelle geht.

P.S., oder 5.: Der Zugriff auf die Parameter in den meisten Antrieben erfolgt über Index / Subindex, die Indizies sind jeweils dem Handbuch zu entnehmen, bei Siemens wäre es das Listenhandbuch. Dort steht dann auch, welches Format die Daten haben, und wann die änderbar sind (z.B. lässt sich mechanische Übersetzung in den allermeisten Fällen nicht bei anstehenden Freigaben ändern).


----------



## Piit278 (23 Januar 2017)

Die Funktionalität wird nich an einer Maschine getestet. 

So wie Ich es verstehe muss Ich den Req eingang nicht dauerhaft mit 1 beschaltet lassen sondern muss Ihn zurücksetzen wenn Busy =1

Bei mir sollten nur 2 Parameter übertragen werden, bin Ich denn schon auf dem richtigen Weg mit der beschaltung des SFB 53 ? 

MFG Piit


Gesendet von iPhone mit Tapatalk


----------



## Draco Malfoy (24 Januar 2017)

Piit278 schrieb:


> Die Funktionalität wird nich an einer Maschine getestet.


Das macht Deine Aufgabe an der Stelle nicht einfacher. Maschine brauchst Du nicht, aber zumindest einen FU und SPS.


> So wie Ich es verstehe muss Ich den Req eingang nicht dauerhaft mit 1 beschaltet lassen sondern muss Ihn zurücksetzen wenn Busy =1


Es ist nur ein Punkt von vielen. "Request" wird aufgeschaltet, und mit dem "Done" oder "Error" zurückgenommen. Ob "Req" die ganze Zeit über anstehen muss, müsste man in der Baustein-Beschreibung nachgucken.


> Bei mir sollten nur 2 Parameter übertragen werden, bin Ich denn schon auf dem richtigen Weg mit der beschaltung des SFB 53 ?


Nach wie vor: solche Aufgaben werden nicht in KOP / FUP mit Merkern gelöst, sondern in SCL als bibliotheksfähige Bausteine projektiert, wobei diese zwecks Sicherstellung einer robusten, wenig fehleranfälligen Kommunikation in der Regel nicht gerade kurz ausfallen.

Insofern bist Du nicht auf dem richtigen Weg. Vielleicht mal irgendwo eine vorhandene Bibliothek hernehmen und etwas anpassen.


----------



## Piit278 (24 Januar 2017)

Also um nochmal zurück zu kommen, Ich verwende eine S7300 und den Servo in der Arbeit zu Testzwecken (d.h. Ich besitze SPS und Servoregler). Nun wollte Ich wissen wie Ich am besten an diese Sacha rangehe.

MFG Piit


Gesendet von iPhone mit Tapatalk


----------



## Draco Malfoy (24 Januar 2017)

Piit278 schrieb:


> Nun wollte Ich wissen wie Ich am besten an diese Sacha rangehe.


An die Sacha rangeha, fachmänisch sachgerecht, am Besta.

Indem man sich zum Beispiel mit der Beschreibung der Bausteine und deren Funktionsweise ausführlich auseinandersetzt und die Ansteuerung der Bausteine entsprechend umsetzt, und sich Beispiele aus anderen Applikationen anguckt, von denen man sicher weiß, dass sie funktionieren. 

Grundsätzliche Vorgehensweise habe ich oben skizziert. Wenn Du damit nicht weiter kommst, muss Du dich fragen, ob es die richtige Aufgabe für Dich ist.


----------



## Draco Malfoy (25 Januar 2017)

Noch folgender Hinweis, sofern das aus dem bisherigen noch nicht deutlich geworden sein sollte: - Über eine azyklische Kommunikation kann ich nur 1 Datum zur gleichen Zeit an das gleiche Zielgerät übertragen bzw. von diesem auslesen. Es kann also immer maximal 1 azyklischer Auftrag parallel laufen.


----------



## Piit278 (25 Januar 2017)

Dessen bin Ich mir mittlerweile bewusst und es ist noch kein Meister vom Himmel gefallen.

Dies ist meine erste Antriebstechnische Aufgabe also bitte nachsichtig sein 

MFG Piit


Gesendet von iPhone mit Tapatalk


----------



## PN/DP (25 Januar 2017)

Piit278 schrieb:


> Ich verwende das ST1 (Standard Speed Telegramm) und programmiert wird mit TIA V13 SP1 Upd9.
> Nun habe Ich das Problem, dass Ich die Werte der Parameter für die Hochlaufzeit und Bremszeit über das Azyklische Parameter schreiben ändern muss


Hallo Piit,
ich kenne Deinen Servo nicht, doch kann man da vielleicht ein anderes Telegramm mit mehr zyklischen Steuerworten wählen und die beiden Parameter da mit reinpacken? Dann bräuchtest Du keine azyklische Kommunikation.
Oder gibt es für Deinen Servo fertige S7-Bausteine von dem Servohersteller?

Harald


----------



## Draco Malfoy (26 Januar 2017)

Ich sag mal, so prinzipiell sieht das folgendermaßen aus:

Es wird eine lokale Variable #iState definiert, die den Schrittzähler in der Kette darstellt. Dann gibt es eine CASE-Abfrage. Für jeden Schritt wird Zunächst einmal  WRREC mit steigender Flanke aufgerufen und Parameter übergeben. Dann wird geschaut, wie der Status von Busy, Done und Error ist. Wenn Done = true und busy = false, kann man den Auftrag als erledigt abhacken, und zum nächsten Schritt jumpen. Wenn Error = true ist, Fehlermeldung generieren und Schrittkette verlassen.

Um 2 Daten zu schreiben, müsste man 4 Schritte bilden, wobei jeweils 1x schreibend und 1x lesend für jedes Datum azyklisch kommuniziert wird. Die Rückgabewerte und Rückmeldung (ausgelesenes Datum) sind zu prüfen.


----------



## Piit278 (9 Februar 2017)

Danke, habs hinbekommen meinen gewünschten Erfolg.

MFG Piit


Gesendet von iPhone mit Tapatalk


----------

