Need4Speed
Level-1
- Beiträge
- 31
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Sinumerik 840d Synchronaktionen - PLC: FC21 "Transfer", FB4 "PI_Serv", FC9 "ASUP"
Liebes Forum,
wir haben eine Lösung konzipiert (und halbwegs umgesetzt), mit der wir Achswerte der NC (Drehmoment, Drehzahl, Position, Lage, usw) auslesen. Der Ansatz ist so, dass es ein NC Programm gibt, mit dem werden Synchronaktionen [1] in der NC gestartet, die die Werte lesen und via R/$R Parameter und $AC_Merker[n] speichern und dann mit $A_DBR[] in das Dual Port RAM schreiben. In der PLC lese ich dann mit dem FC21 "Transfer" das Dual Port RAM im OB35 (um hier unabhängig von den Zykluszeiten des OB1 zu sein) aus.
Wo es jetzt noch etwas hakt ist, dass ich gerne das NC Programm mit den Synchronaktionen von der PLC aus verwalten (starten, stoppen, Status abfragen) möchte. Dazu kann man mit dem FB4 "PI_Serv" die Aktion "ASUP" (asynchrones Unterprogramm, DB16.ASUP) verwenden, um das ASUP für den eigentlichen Start des Programm mit dem FC9 vorzubereiten (man muss den Pfad und Dateinamen des Programms im FB4 "PI_Serv" angeben). Weitere Parameter sind "Req" (Flanke um den Aufruf zu aktivieren), "Unit" (Nummer des Kanals) und "Interrupt" (wird später beim Aufruf/Start durch den FC9 benötigt).
Nun zu meinen konkreten Fragen:
FB4 "PI_Serv":
- Was ist die Rolle des Parameters "Unit" (Kanal) - da ich leider Sinumerik Neuling bin, verstehe ich nicht, was es mit den Kanälen auf sich hat. Jede NC hat ja mindestens einen Kanal (Kanal 1) - was sind die Aufgaben eines "Kanals" und warum gibt es mehr als einen? Wird ein Kanal ausschliesslich für die Kommunikation zwischen PLC und NC verwendet, oder gibt es abhängig von der Ausbaustufe der Sinumerik mehrere parallele NCK (NCU?), so dass diese auch untereinander kommunizieren können? Und letztlich, geht die Übertragung mit dem Dual Port RAM zwischen NC und PLC auch über einen Kanal, oder ist das (hoffentlich) unabhängig?
- Rolle des Parameters "Done" - in der Step7 Doku steht, dass man den Req wieder auf 0 setzten muss, sobald "Done==1", d.h. ich merke mir, ob der Aufruf im FB4 erfolgreich war und kann dann anschliessend mit dem FC9 das Unterprogramm auch tatsächlich aufrufen. Was aber nun, wenn z.B. durch einen Reset an der NC die Ergebnisse des FB4 "PI_Serv" nicht mehr gültig sind sozusagen? Wäre es also angebracht, immer beim Reset des NCK (über die Nahtstelle überwachen), auch den Aufruf des FB4 "PI_Serv" neu zu machen? Oder gibt es die Möglichkeit, den Status des konkreten FB4 "PI_Serv" (hat ja einen dedizierten Instanz DB) jeweils im OB1 aktiv abzufragen und dann bei Bedarf wieder zu starten?
- Rolle des Parameters "WVar1" (Nummer des Interrupts) - der wird später auch vom FC9 verwendet, damit das zusammen passt und der FC9 Aufruf weiss, um welches ASUP es konkret geht; aber wie wähle ich jetzt den geeigneten Interrupt - muss ich mir da anschauen, welche anderen FC9 (bzw. FB4 "PI_Serv") Aufrufe es schon gibt und welche Interrupts hier verwendet werden und suche mit dann einen freien, nicht verwendeten aus? Oder können Interrupts auch schon ausschliesslich innerhalb der NC belegt sein, die dann hier nicht verwendet werden dürfen? Ist es richtig, dass es nur 8 Interrupts gibt, oder ist das abhängig von der Ausbaustufe der Sinumerik? Gibt es vielleicht sogar einen Abfrage FC der erkennen kann, ob ein Interrupt noch frei ist? Dann könnte ich da alle durch probieren und schauen, welcher noch frei ist (ggf. im Ob100).
FC 9 "ASUP - Start von aysnchronen Unterprogrammen"
In der Hilfe steht " Der Parameter "Ref" wird im ersten OB1-Zyklus mit dem Wert 0 initialisiert, aus diesem Grund muss jeder FC9 absolut aufgerufen werden. Alternativ kann der Parameter "Ref" durch den Anwender im Anlauf mit dem Wert 0 initialisiert werden . Damit sind auch bedingte Aufrufe möglich."
- Was ist denn in dem Zusammenhang mit "absolut aufrufen" und "bedingt aufrufen" gemeint?
- Mein NC Programm besteht im Prinzip nur aus Synchronaktionen (ID/IDS [1]) - da würde es doch reichen, das ASUP nur einmal aufzurufen und dann die positive Flanke so lange lassen, bis der FC9 am Parameter "Done" und "Activ" eine "1" meldet? Oder muss ich - trotzdem im ASUP nur Synchronaktionen deklariert sind - den FC9 zyklisch aufrufen und das "Activ" Bit abfragen (und entsprechend darauf reagieren).
Sodele, die Frage wurde jetzt leider doch länger ... Danke, dass ihr so weit gelesen habt!!
Viele Grüße, Jürgen
[1] https://support.industry.siemens.com/cs/document/109760806/sinumerik-840d-sl-828d-synchronaktionen
Liebes Forum,
wir haben eine Lösung konzipiert (und halbwegs umgesetzt), mit der wir Achswerte der NC (Drehmoment, Drehzahl, Position, Lage, usw) auslesen. Der Ansatz ist so, dass es ein NC Programm gibt, mit dem werden Synchronaktionen [1] in der NC gestartet, die die Werte lesen und via R/$R Parameter und $AC_Merker[n] speichern und dann mit $A_DBR[] in das Dual Port RAM schreiben. In der PLC lese ich dann mit dem FC21 "Transfer" das Dual Port RAM im OB35 (um hier unabhängig von den Zykluszeiten des OB1 zu sein) aus.
Wo es jetzt noch etwas hakt ist, dass ich gerne das NC Programm mit den Synchronaktionen von der PLC aus verwalten (starten, stoppen, Status abfragen) möchte. Dazu kann man mit dem FB4 "PI_Serv" die Aktion "ASUP" (asynchrones Unterprogramm, DB16.ASUP) verwenden, um das ASUP für den eigentlichen Start des Programm mit dem FC9 vorzubereiten (man muss den Pfad und Dateinamen des Programms im FB4 "PI_Serv" angeben). Weitere Parameter sind "Req" (Flanke um den Aufruf zu aktivieren), "Unit" (Nummer des Kanals) und "Interrupt" (wird später beim Aufruf/Start durch den FC9 benötigt).
Nun zu meinen konkreten Fragen:
FB4 "PI_Serv":
- Was ist die Rolle des Parameters "Unit" (Kanal) - da ich leider Sinumerik Neuling bin, verstehe ich nicht, was es mit den Kanälen auf sich hat. Jede NC hat ja mindestens einen Kanal (Kanal 1) - was sind die Aufgaben eines "Kanals" und warum gibt es mehr als einen? Wird ein Kanal ausschliesslich für die Kommunikation zwischen PLC und NC verwendet, oder gibt es abhängig von der Ausbaustufe der Sinumerik mehrere parallele NCK (NCU?), so dass diese auch untereinander kommunizieren können? Und letztlich, geht die Übertragung mit dem Dual Port RAM zwischen NC und PLC auch über einen Kanal, oder ist das (hoffentlich) unabhängig?
- Rolle des Parameters "Done" - in der Step7 Doku steht, dass man den Req wieder auf 0 setzten muss, sobald "Done==1", d.h. ich merke mir, ob der Aufruf im FB4 erfolgreich war und kann dann anschliessend mit dem FC9 das Unterprogramm auch tatsächlich aufrufen. Was aber nun, wenn z.B. durch einen Reset an der NC die Ergebnisse des FB4 "PI_Serv" nicht mehr gültig sind sozusagen? Wäre es also angebracht, immer beim Reset des NCK (über die Nahtstelle überwachen), auch den Aufruf des FB4 "PI_Serv" neu zu machen? Oder gibt es die Möglichkeit, den Status des konkreten FB4 "PI_Serv" (hat ja einen dedizierten Instanz DB) jeweils im OB1 aktiv abzufragen und dann bei Bedarf wieder zu starten?
- Rolle des Parameters "WVar1" (Nummer des Interrupts) - der wird später auch vom FC9 verwendet, damit das zusammen passt und der FC9 Aufruf weiss, um welches ASUP es konkret geht; aber wie wähle ich jetzt den geeigneten Interrupt - muss ich mir da anschauen, welche anderen FC9 (bzw. FB4 "PI_Serv") Aufrufe es schon gibt und welche Interrupts hier verwendet werden und suche mit dann einen freien, nicht verwendeten aus? Oder können Interrupts auch schon ausschliesslich innerhalb der NC belegt sein, die dann hier nicht verwendet werden dürfen? Ist es richtig, dass es nur 8 Interrupts gibt, oder ist das abhängig von der Ausbaustufe der Sinumerik? Gibt es vielleicht sogar einen Abfrage FC der erkennen kann, ob ein Interrupt noch frei ist? Dann könnte ich da alle durch probieren und schauen, welcher noch frei ist (ggf. im Ob100).
FC 9 "ASUP - Start von aysnchronen Unterprogrammen"
In der Hilfe steht " Der Parameter "Ref" wird im ersten OB1-Zyklus mit dem Wert 0 initialisiert, aus diesem Grund muss jeder FC9 absolut aufgerufen werden. Alternativ kann der Parameter "Ref" durch den Anwender im Anlauf mit dem Wert 0 initialisiert werden . Damit sind auch bedingte Aufrufe möglich."
- Was ist denn in dem Zusammenhang mit "absolut aufrufen" und "bedingt aufrufen" gemeint?
- Mein NC Programm besteht im Prinzip nur aus Synchronaktionen (ID/IDS [1]) - da würde es doch reichen, das ASUP nur einmal aufzurufen und dann die positive Flanke so lange lassen, bis der FC9 am Parameter "Done" und "Activ" eine "1" meldet? Oder muss ich - trotzdem im ASUP nur Synchronaktionen deklariert sind - den FC9 zyklisch aufrufen und das "Activ" Bit abfragen (und entsprechend darauf reagieren).
Sodele, die Frage wurde jetzt leider doch länger ... Danke, dass ihr so weit gelesen habt!!
Viele Grüße, Jürgen
[1] https://support.industry.siemens.com/cs/document/109760806/sinumerik-840d-sl-828d-synchronaktionen
Zuletzt bearbeitet: