4. Roboter-Eingabe- und Ausgaberegister

Der CNDE-Client und der Roboter können über Eingabe- und Ausgaberegister Daten austauschen. Dies umfasst im Wesentlichen zwei Prozesse:

① Die CNDE-Client-Eingangskonfiguration enthält Eingangsregister. Bei der Eingabe von Daten werden die Werte der Eingangsregister geändert. Dem Roboter-LUA-Programm wird ein Befehl zum Lesen der Eingangsregister hinzugefügt. Bei der Ausführung des LUA-Programms können die vom CNDE-Client geänderten Werte der Eingangsregister gelesen werden.

② Dem Roboter-LUA-Programm wird ein Befehl zum Schreiben in Ausgangsregister hinzugefügt. Bei der Ausführung des LUA-Programms werden Werte in die Ausgangsregister geschrieben. Die CNDE-Client-Ausgangskonfiguration enthält Ausgangsregister. Nach dem Starten der CNDE-Statusrückmeldung des Roboters kann der Client durch den Empfang der CNDE-Ausgangsdaten die im LUA-Programm geschriebenen Werte der Ausgangsregister auslesen.

4.1. Eingangsregister lesen

Öffnen Sie die WebApp, klicken Sie nacheinander auf „Teachprogramm“ und „Programmierung“ und erstellen Sie ein neues Benutzerprogramm „testReg.lua“.

../_images/01213.png

Abbildung 4-1 Neues Programm „testReg.lua“ erstellen

Klicken Sie auf „Variable“, wählen Sie im rechten Befehlsbereich „Eingangsregistervariable lesen“ aus. Wählen Sie den Variablentyp „int“, den Startindex des Registers 0, die Anzahl der Register 3 und klicken Sie auf die Schaltflächen „Hinzufügen“ und „Übernehmen“.

../_images/01314.png

Abbildung 4-2 Befehl zum Lesen von Eingangsregistern hinzufügen

Nun wurde in „testReg.lua“ ein Befehl zum Lesen von Eingangsregistern vom Typ „int“ hinzugefügt.

../_images/01412.png

Abbildung 4-3 Befehl zum Lesen von Eingangsregistern (Typ „int“) hinzugefügt

Klicken Sie auf die Umschalttaste, um in den programmierbaren Modus zu wechseln. Fügen Sie vor dem Befehl zum Lesen der Eingangsregister drei LUA-Programmvariablen hinzu, um die drei gelesenen Eingangsregisterwerte zu empfangen.

../_images/01511.png

Abbildung 4-4 Variablen zum Empfangen der Eingangsregisterwerte hinzufügen

Auf die gleiche Weise können Sie das Lesen von Registerdaten vom Typ „bit“ und „double“ hinzufügen.

../_images/01612.png

Abbildung 4-5 Lesen von Eingangsregistern der Typen „bit“ und „double“ hinzufügen

Speichern Sie das obige Programm, schalten Sie den Roboter in den Automatikmodus und führen Sie das Programm aus. Die Werte der Eingangsregister werden in die LUA-Programmvariablen eingelesen.

4.2. Ausgangsregister schreiben

Öffnen Sie die WebApp, klicken Sie nacheinander auf „Teachprogramm“ und „Programmierung“ und erstellen Sie ein neues Benutzerprogramm „testReg.lua“.

../_images/01712.png

Abbildung 4-6 Neues Programm „testReg.lua“ erstellen

Klicken Sie auf „Variable“, wählen Sie im rechten Befehlsbereich „Ausgangsregistervariable schreiben“ aus. Wählen Sie den Variablentyp „int“, den Startindex des Registers 0, die Anzahl der Register 2, den Registerwert „18,55“ und klicken Sie auf „Hinzufügen“. Wählen Sie dann erneut „Ausgangsregistervariable lesen“ aus, wählen Sie den Variablentyp „int“, den Startindex 0, die Anzahl der Register 2 und klicken Sie auf „Hinzufügen“ und „Übernehmen“.

../_images/01812.png

Abbildung 4-7 Befehle zum Schreiben und Lesen von Ausgangsregistern hinzufügen

Nun wurden in „testReg.lua“ Befehle zum Schreiben und Lesen von Ausgangsregistern vom Typ „int“ hinzugefügt.

../_images/01911.png

Abbildung 4-8 Befehle zum Schreiben und Lesen von Ausgangsregistern (Typ „int“) hinzugefügt

Klicken Sie auf die Umschalttaste, um in den programmierbaren Modus zu wechseln. Fügen Sie vor dem Befehl zum Lesen der Ausgangsregister zwei LUA-Programmvariablen hinzu, um die beiden gelesenen Ausgangsregisterwerte zu empfangen.

../_images/02012.png

Abbildung 4-9 Variablen zum Empfangen der Ausgangsregisterwerte hinzufügen

Speichern Sie das obige Programm, schalten Sie den Roboter in den Automatikmodus und führen Sie das Programm aus. Die Werte der LUA-Programmvariablen „intValue1“ und „intValue2“ sind nun 18 bzw. 55. Die Operationen für Register der Typen „bit“ und „double“ sind identisch mit denen für den Typ „int“.

4.3. Interaktive Anwendung der CNDE-Eingabe- und Ausgaberegister

../_images/02112.png

Abbildung 4-10 Datenaustausch über Eingabe- und Ausgaberegister

Die Szenarien für den Datenaustausch zwischen Roboter und CNDE-Client über Eingabe- und Ausgaberegister umfassen unter anderem die folgenden Typen:

① Steuerung der Roboterbewegung über Eingangsregister: Der CNDE-Client plant die Zielposition des Roboters und schreibt die Zielposition in die Eingangsregister. Im Roboter-LUA-Programm werden die Werte der Eingangsregister gelesen, um die Zielposition zu erhalten. Anschließend wird der Roboter über Bewegungsbefehle wie PTP, LIN, ServoJ zur Zielposition gesteuert. Ein Beispiel für ein LUA-Programm:

 1i = 0;
 2oldFlag = 0
 3while(1) do
 4    startFlag = ReadInputINTRegs(0,1)
 5    if(startFlag ~= oldFlag) then
 6        oldFlag = startFlag
 7        x, y, z, a, b, c = ReadInputDBLRegs(0,6)
 8        ServoJ({x, y, z, a, b, c}, {0, 0, 0, 0}, 10, 10, 0.008, 0, 0)
 9    end
10end

② Steuerung von Roboteraktionen über Eingangsregister: Der CNDE-Client schreibt unterschiedliche Werte in ein bestimmtes Eingangsregister, um verschiedene Roboteraktionen zu steuern. Das Roboter-LUA-Programm ruft in einer Schleife den Wert des entsprechenden Eingangsregisters ab und führt je nach Wert unterschiedliche Aktionen aus. Beispielprogramm:

 1runFlag = ReadInputINTRegs(0,1)
 2while(runFlag > 0) do
 3    motion,target = ReadInputINTRegs(1,2)
 4    if(motion > 0) then
 5        if(target == 1)then
 6            Lin(a1,100,-1,0,0)
 7        else if(target == 2) then
 8            Lin(a2,100,-1,0,0)
 9        else
10            Lin(safety,100,-1,0,0)
11        end
12        end
13    else
14        sleep_ms(100)
15    end
16end

③ Der Roboter schreibt während des Betriebs den aktuellen Programmstatus in die Ausgangsregister. Der CNDE-Client überwacht die Programmausführung des Roboters durch das Lesen des Ausgangsregisterstatus. Beispielprogramm:

 1local weldCount = 0
 2runFlag = ReadInputINTRegs(0,1)
 3while(runFlag > 0) do
 4    Lin(safety,100,-1,0,0)
 5    Lin(a1,100,-1,0,0)
 6    ARCStart(0, 0, 3000)
 7    Lin(a2,100,-1,0,0)
 8    ARCEnd(0, 0, 3000)
 9    runFlag = ReadInputINTRegs(0,1)
10    weldCount = weldCount + 1
11    WriteOutputINTRegs(0,1,{weldCount})
12end