NX100 - Positionen via Bus übergeben
- dirknico
- Erledigt
-
-
-
Moin,
ein Doppelwort wirst Du an einer NX100 nicht an einem Stück übertragen bekommen. Mehr als ein Byte vertragen DIN und DOUT nicht. Das müsstest Du entsprechend aufteilen und über mehrere Ein-/Ausgänge machen. An einer YRC ginge es. Da gibt es Nutzerdefinierte Ein- und Ausgänge. Oder meintest Du, ob/wie es prinzipiell geht? Dann wären die Antworten folgende:
Code
Alles anzeigen' SPS -> Roboter ' Wert, der an IG#(32)...IG#(35) anliegt, in B060...B063 schreiben DIN B060 IG#(32) DIN B061 IG#(33) DIN B062 IG#(34) DIN B063 IG#(35) ' D060 löschen SUB D060 D060 ' Byte B060 zum Double D060 addieren ADD D060 B060 ' Mit 256 multiplizieren = Linksverschiebung um 8 Bit, ' d.h. aus 00000000 00000000 00000000 11111111 wird ' 00000000 00000000 11111111 00000000 MUL D060 256 ' 2. Byte addieren und verschieben ADD D060 B061 MUL D060 256 ' 3. Byte addieren und verschieben ADD D060 B062 MUL D060 256 ' Letztes Byte addieren. Fertig ADD D060 B063 ' Wert in D060 in die X-Position von Robotervariable 126 schreiben SETE P126 (1) D060
So in der Art müsste es gehen. Ist allerdings nicht getestet. Der Weg Roboter -> SPS geht ähnlich. Das Double durch 256 teilen (= Rechtsverschiebung um 8 Bit). Vom Ursprünglichen Wert den durch 256 geteilten Wert abziehen ergibt das erste Byte.
Code
Alles anzeigen' Roboter -> SPS ' X-Wert der Roboterposition nach D020 schreiben GETE D020 P032 (1) ' D020 = 153197 ' Nach D021 kopieren SET D021 D020 ' D021 = 153197 ' Durch 256 teilen, gleich wieder multiplizieren und voneinander abziehen = MOD DIV D021 256 ' D021 = 598 MUL D021 256 ' D021 = 153088 SET D022 D020 ' D022 = 153197 SUB D022 D021 ' D022 = 109 ' Erhaltenen Wert in Byte schreiben und über Ausgang ausgeben SET B020 D022 ' B020 = 109 DOUT OG#(32) B020 ' Jetzt mit dem gleichen Schema weiter, bis Du alle 4 Bytes über die Ausgänge raus hast. In ' der SPS musst Du die Einzelwerte dann wieder zusammenfrickeln.
Gruß
Jörn
-
Danke!
Nachdem das Projekt lange auf Eis lag, geht es nun wieder los.
Eine Frage habe ich diesbezüglich noch.Ist es im NX100 möglich die via Bus empfangenen Daten so zu verarbeiten das der Roboter die übergebene Achsposition anfährt?
Also irgendwie so:
-
Du kannst einzelne Werte, z.B. via Bus empfangene, mit dem Befehl SETE in ein Positionsregister schreiben. Bewegungsbefehle (MOVJ, MOVL, ...) können neben direkt im Programm geteachten Positionen, auch mit diesen Positionsregistern gefüttert werden.
Auf der folgenden Seite findets Du Doku haufenweise Doku:
https://www.motoman.com/en-us/…ing/product-documentation
Du brauchst für den Anfang diese beiden:
178645-1CD (YRC1000 General Operator's) Link -> 178645-1 CD)
178649-1CD (Inform Language YRC1000) Link -> 178649-1CD
-
Danke, werde es mal probieren!
Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen