5. Roboter-I/O

5.1. Digitalausgang des Steuerschranks setzen

1/**
2* @brief  Setzt einen digitalen Ausgang des Steuerschranks.
3* @param  [in] id  I/O-Nummer, Bereich [0~15].
4* @param  [in] status 0-aus, 1-ein.
5* @param  [in] smooth 0-nicht glätten, 1-glätten.
6* @param  [in] block  0-blockierend, 1-nicht blockierend.
7* @return  Fehlercode.
8*/
9int SetDO(int id, int status, int smooth, int block);

5.2. Digitalausgang des Werkzeugs setzen

1/**
2* @brief  Setzt einen digitalen Ausgang des Werkzeugs.
3* @param  [in] id  I/O-Nummer, Bereich [0~1].
4* @param  [in] status 0-aus, 1-ein.
5* @param  [in] smooth 0-nicht glätten, 1-glätten.
6* @param  [in] block  0-blockierend, 1-nicht blockierend.
7* @return  Fehlercode.
8*/
9int SetToolDO(int id, int status, int smooth, int block);

5.3. Analogausgang des Steuerschranks setzen

1/**
2* @brief  Setzt einen analogen Ausgang des Steuerschranks.
3* @param  [in] id  I/O-Nummer, Bereich [0~1].
4* @param  [in] value  Prozentwert des Stroms oder der Spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
5* @param  [in] block  0-blockierend, 1-nicht blockierend.
6* @return  Fehlercode.
7*/
8int SetAO(int id, double value, int block);

5.4. Analogausgang des Werkzeugs setzen

1/**
2* @brief  Setzt einen analogen Ausgang des Werkzeugs.
3* @param  [in] id  I/O-Nummer, Bereich [0].
4* @param  [in] value  Prozentwert des Stroms oder der Spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
5* @param  [in] block  0-blockierend, 1-nicht blockierend.
6* @return  Fehlercode.
7*/
8int SetToolAO(int id, double value, int block);

5.5. Codebeispiel zum Setzen von Digital- und Analogausgängen

 1public static int TestAODO(Robot robot)
 2{
 3
 4    int status = 1;
 5    int smooth = 0;
 6    int block = 0;
 7
 8    for (int i = 0; i < 16; i++)
 9    {
10        robot.SetDO(i, status, smooth, block);
11        robot.Sleep(300);
12    }
13
14    status = 0;
15
16    for (int i = 0; i < 16; i++)
17    {
18        robot.SetDO(i, status, smooth, block);
19        robot.Sleep(300);
20    }
21
22    status = 1;
23
24    for (int i = 0; i < 2; i++)
25    {
26        robot.SetToolDO(i, status, smooth, block);
27        robot.Sleep(1000);
28    }
29
30    status = 0;
31
32    for (int i = 0; i < 2; i++)
33    {
34        robot.SetToolDO(i, status, smooth, block);
35        robot.Sleep(1000);
36    }
37
38    for (int i = 0; i < 100; i++)
39    {
40        robot.SetAO(0, i, block);
41        robot.Sleep(30);
42    }
43
44    for (int i = 0; i < 100; i++)
45    {
46        robot.SetToolAO(0, i, block);
47        robot.Sleep(30);
48    }
49
50    robot.CloseRPC();
51    return 0;
52}

5.6. Digitaleingang des Steuerschranks abrufen

1/**
2* @brief  Gibt den Zustand eines digitalen Eingangs des Steuerschranks zurück.
3* @param  [in] id  I/O-Nummer, Bereich [0~15].
4* @param  [in] block  0-blockierend, 1-nicht blockierend.
5* @param  [out] level  Array der Länge 1, 0-niedriger Pegel, 1-hoher Pegel.
6* @return  Fehlercode.
7*/
8int GetDI(int id, int block, int[] level);

5.7. Digitaleingang des Werkzeugs abrufen

1/**
2* @brief  Gibt den Zustand eines digitalen Eingangs des Werkzeugs zurück.
3* @param  [in] id  I/O-Nummer, Bereich [0~1].
4* @param  [in] block  0-blockierend, 1-nicht blockierend.
5* @param  [out] level  Array der Länge 1, 0-niedriger Pegel, 1-hoher Pegel.
6* @return  Fehlercode.
7*/
8int GetToolDI(int id, int block, int[] level);

5.8. Analogeingang des Steuerschranks abrufen

1/**
2* @brief  Gibt den Wert eines analogen Eingangs des Steuerschranks zurück.
3* @param  [in] id  I/O-Nummer, Bereich [0~1].
4* @param  [in] block  0-blockierend, 1-nicht blockierend.
5* @param  [out] persent  Array der Länge 1, Prozentwert des Eingangsstroms oder der -spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
6* @return  Fehlercode.
7*/
8int GetAI(int id, int block, double[] persent);

5.9. Analogeingang des Werkzeugs abrufen

1/**
2* @brief  Gibt den Wert eines analogen Eingangs des Werkzeugs zurück.
3* @param  [in] id  I/O-Nummer, Bereich [0].
4* @param  [in] block  0-blockierend, 1-nicht blockierend.
5* @param  [out] persent  Array der Länge 1, Prozentwert des Eingangsstroms oder der -spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
6* @return  Fehlercode.
7*/
8int GetToolAI(int id, int block, double[] persent);

5.10. Status der Punktaufzeichnungstaste am Roboterende abrufen

1/**
2* @brief  Gibt den Status der Punktaufzeichnungstaste am Roboterende zurück.
3* @param  [out] state  Array der Länge 1, Tastenstatus, 0-gedrückt, 1-losgelassen.
4* @return  Fehlercode.
5*/
6int GetAxlePointRecordBtnState(int[] state);

5.11. DO-Ausgangsstatus am Roboterende abrufen

1/**
2* @brief  Gibt den DO-Ausgangsstatus am Roboterende zurück.
3* @param  [out] do_state  Array der Länge 1, DO-Ausgangsstatus, do0~do1 entsprechen bit1~bit2, beginnend bei bit0.
4* @return  Fehlercode.
5*/
6int GetToolDO(int[] do_state);

5.12. DO-Ausgangsstatus des Robotersteuerschranks abrufen

1/**
2* @brief  Gibt den DO-Ausgangsstatus des Robotersteuerschranks zurück.
3* @param  [out] do_state_h  Array der Länge 1, DO-Ausgangsstatus, co0~co7 entsprechen bit0~bit7.
4* @param  [out] do_state_l  Array der Länge 1, DO-Ausgangsstatus, do0~do7 entsprechen bit0~bit7.
5* @return  Fehlercode.
6*/
7int GetDO(int[] do_state_h, int[] do_state_l);

5.13. Codebeispiel zum Abrufen von Roboter-DI/DO-Status

 1public static int TestGetDIAI(Robot robot)
 2{
 3    int status = 1;
 4    int smooth = 0;
 5    int block = 0;
 6    int[] di =new int[]{0}, tool_di =new int[] {0};
 7    double[] ai =new double[] {0}, tool_ai = new double[]{0};
 8    double value = 0.0;
 9
10
11    robot.GetDI(0, block, di);
12    System.out.println("di0:"+di[0]);
13
14    robot.GetToolDI(1, block, tool_di);
15    System.out.println("tool_di1:"+ tool_di[0]);
16
17    robot.GetAI(0, block, ai);
18    System.out.println("ai0:"+ ai[0]);
19
20    robot.GetToolAI(0, block, tool_ai);
21    System.out.println("tool_ai0:"+ tool_ai[0]);
22
23    int[] _button_state=new int[]{0};
24    robot.GetAxlePointRecordBtnState(_button_state);
25    System.out.println("_button_state is: "+ _button_state[0]);
26
27    int[] tool_do_state=new int[]{0};
28    robot.GetToolDO(tool_do_state);
29    System.out.println("tool DO state is: "+ tool_do_state[0]);
30
31    int[] do_state_h=new int[]{0};
32    int[] do_state_l=new int[]{0};
33    robot.GetDO(do_state_h, do_state_l);
34    System.out.println("DO state high is: "+do_state_h[0]+", DO state low is: "+ do_state_l[0]);
35
36    return 0;
37}

5.14. Auf digitalen Eingang des Steuerschranks warten

1/**
2* @brief Wartet auf einen digitalen Eingang des Steuerschranks.
3* @param  [in] id  I/O-Nummer, Bereich [0~15].
4* @param  [in] status 0-aus, 1-ein.
5* @param  [in] max_time  Maximale Wartezeit, Einheit ms.
6* @param  [in] opt  Strategie bei Zeitüberschreitung: 0-Programm stoppen und Timeout melden, 1-Timeout ignorieren und Programm fortsetzen, 2-unbegrenzt warten.
7* @return  Fehlercode.
8*/
9int WaitDI(int id, int status, int max_time, int opt);

5.15. Auf mehrere digitale Eingänge des Steuerschranks warten

 1/**
 2* @brief Wartet auf mehrere digitale Eingänge des Steuerschranks.
 3* @param  [in] mode 0-UND-Verknüpfung aller Kanäle, 1-ODER-Verknüpfung aller Kanäle.
 4* @param  [in] id  I/O-Nummern als Bitmaske, Bits 0-7 für DI0-DI7, Bits 8-15 für CI0-CI7.
 5* @param  [in] status 0-aus, 1-ein.
 6* @param  [in] max_time  Maximale Wartezeit, Einheit ms.
 7* @param  [in] opt  Strategie bei Zeitüberschreitung: 0-Programm stoppen und Timeout melden, 1-Timeout ignorieren und Programm fortsetzen, 2-unbegrenzt warten.
 8* @return  Fehlercode.
 9*/
10int WaitMultiDI(int mode, int id, int status, int max_time, int opt);

5.16. Auf digitalen Eingang des Werkzeugs warten

1/**
2* @brief Wartet auf einen digitalen Eingang des Werkzeugs.
3* @param  [in] id  I/O-Nummer, Bereich [0~1].
4* @param  [in] status 0-aus, 1-ein.
5* @param  [in] max_time  Maximale Wartezeit, Einheit ms.
6* @param  [in] opt  Strategie bei Zeitüberschreitung: 0-Programm stoppen und Timeout melden, 1-Timeout ignorieren und Programm fortsetzen, 2-unbegrenzt warten.
7* @return  Fehlercode.
8*/
9int WaitToolDI(int id, int status, int max_time, int opt);

5.17. Auf analogen Eingang des Steuerschranks warten

 1/**
 2* @brief Wartet auf einen analogen Eingang des Steuerschranks.
 3* @param  [in] id  I/O-Nummer, Bereich [0~1].
 4* @param  [in] sign 0-größer als, 1-kleiner als.
 5* @param  [in] value  Prozentwert des Eingangsstroms oder der -spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
 6* @param  [in] max_time  Maximale Wartezeit, Einheit ms.
 7* @param  [in] opt  Strategie bei Zeitüberschreitung: 0-Programm stoppen und Timeout melden, 1-Timeout ignorieren und Programm fortsetzen, 2-unbegrenzt warten.
 8* @return  Fehlercode.
 9*/
10int WaitAI(int id, int sign, double value, int max_time, int opt);

5.18. Auf analogen Eingang des Werkzeugs warten

 1/**
 2* @brief Wartet auf einen analogen Eingang des Werkzeugs.
 3* @param  [in] id  I/O-Nummer, Bereich [0].
 4* @param  [in] sign 0-größer als, 1-kleiner als.
 5* @param  [in] value  Prozentwert des Eingangsstroms oder der -spannung, Bereich [0~100] entspricht Strom [0~20 mA] oder Spannung [0~10 V].
 6* @param  [in] max_time  Maximale Wartezeit, Einheit ms.
 7* @param  [in] opt  Strategie bei Zeitüberschreitung: 0-Programm stoppen und Timeout melden, 1-Timeout ignorieren und Programm fortsetzen, 2-unbegrenzt warten.
 8* @return  Fehlercode.
 9*/
10int WaitToolAI(int id, int sign, double value, int max_time, int opt);

5.19. Codebeispiel zum Warten auf digitale/analoge Eingangssignale des Steuerschranks

 1public static int TestWaitDIAI(Robot robot)
 2{
 3    int rtn=-1;
 4
 5    int status = 1;
 6    int smooth = 0;
 7    int block = 0;
 8    int di = 0, tool_di = 0;
 9    double ai = 0.0, tool_ai = 0.0;
10    double value = 0.0;
11
12    rtn = robot.WaitDI(0, 1, 1000, 1);
13    System.out.println("WaitDI over; rtn is: "+ rtn);
14
15    robot.WaitMultiDI(1, 3, 3, 1000, 1);
16    System.out.println("WaitDI over; rtn is: "+ rtn);
17
18    robot.WaitToolDI(1, 1, 1000, 1);
19    System.out.println("WaitDI over; rtn is: " + rtn);
20
21    robot.WaitAI(0, 0, 50, 1000, 1);
22    System.out.println("WaitDI over; rtn is: " + rtn);
23
24    robot.WaitToolAI(0, 0, 50, 1000, 1);
25    System.out.println("WaitDI over; rtn is: " + rtn);
26    return 0;
27}

5.20. Einstellung, ob DO-Ausgänge des Steuerschranks nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die DO-Ausgänge des Steuerschranks nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag);

5.21. Einstellung, ob AO-Ausgänge des Steuerschranks nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die AO-Ausgänge des Steuerschranks nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag);

5.22. Einstellung, ob DO-Ausgänge des Endeffektorwerkzeugs nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die DO-Ausgänge des Endeffektorwerkzeugs nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetAxleDO(int resetFlag, int reloadFlag);

5.23. Einstellung, ob AO-Ausgänge des Endeffektorwerkzeugs nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die AO-Ausgänge des Endeffektorwerkzeugs nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetAxleAO(int resetFlag, int reloadFlag);

5.24. Einstellung, ob erweiterte DO-Ausgänge nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die erweiterten DO-Ausgänge nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetExtDO(int resetFlag, int reloadFlag);

5.25. Einstellung, ob erweiterte AO-Ausgänge nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die erweiterten AO-Ausgänge nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetExtAO(int resetFlag, int reloadFlag);

5.26. Einstellung, ob SmartTool-DO-Ausgänge nach Stopp/Pause zurückgesetzt werden

1/**
2* @brief Legt fest, ob die SmartTool-DO-Ausgänge nach einem Stopp/Pause zurückgesetzt werden.
3* @param resetFlag  0-nicht zurücksetzen; 1-zurücksetzen.
4* @param reloadFlag Ob nach Wiederaufnahme der Pause neu geladen werden soll, 0-nicht laden; 1-laden.
5* @return Fehlercode.
6*/
7public int SetOutputResetSmartToolDO(int resetFlag, int reloadFlag);

5.27. Codebeispiel zum Zurücksetzen der Ausgänge nach LUA-Programmstopp/-pause

 1public static void TestDOReset(Robot robot)
 2{
 3    for (int i = 0; i < 16; i++)
 4    {
 5        robot.SetDO(i, 1, 0, 0);
 6        robot.Sleep(200);
 7    }
 8    int resetFlag = 1;
 9    int resumeReloadFlag = 1;
10    int rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
11    robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
12    robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
13    robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
14    robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
15    robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
16    robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
17    robot.ProgramLoad("/fruser/test.lua");
18    robot.ProgramRun();
19    robot.Sleep(2000);
20    robot.PauseMotion();
21    robot.Sleep(2000);
22    robot.ResumeMotion();
23    robot.Sleep(2000);
24    robot.CloseRPC();
25}

5.28. Konfigurierbare CI-Portfunktionen des Steuerkastens einstellen

 1/**
 2* @brief Einstellen der konfigurierbaren CI-Portfunktionen des Steuerkastens
 3* @param config CI0-CI7 Funktionscodes;
 4* 0-Keine;1-Lichtbogenstart erfolgreich;2-Schweißgerät bereit;3-Förderbanderkennung;4-Pause;5-Fortsetzen;6-Start;7-Stopp;
 58-Pause/Fortsetzen;9-Start/Stopp;10-Fußtaster-Ziehen;11-Zur Arbeitsposition bewegen;12-Manuell/Auto umschalten;
 613-Drahtpositionssuche erfolgreich;14-Bewegungsunterbrechung;15-Hauptprogramm starten;16-Rückspulen starten;17-Startbestätigung;
 718-Photoelektrisches Erkennungssignal X;19-Photoelektrisches Erkennungssignal Y;20-Externer Not-Halt-Eingangssignal 1;21-Externer Not-Halt-Eingangssignal 2;
 822-Stufe 1 Reduzierungsmodus;23-Stufe 2 Reduzierungsmodus;24-Stufe 3 Reduzierungsmodus (Stopp);25-Schweißen fortsetzen;26-Schweißen beenden;
 927-Hilfszug aktivieren;28-Hilfszug deaktivieren;29-Hilfszug aktivieren/deaktivieren;30-Alle Fehler löschen;
1031-Manuell/Auto umschalten (High/Low-Pegel);32-Aktivieren;33-Deaktivieren;34-Aktivieren/Deaktivieren (steigende/fallende Flanke);35-Fixpunkt-Tracking starten/beenden
11* @return Fehlercode
12*/
13public int SetDIConfig(int[] config)

5.29. Konfigurierbare CI-Portfunktionen des Steuerkastens abrufen

 1/**
 2* @brief Abrufen der konfigurierbaren CI-Portfunktionen des Steuerkastens
 3* @param config CI0-CI7 Funktionscodes;
 4* 0-Keine;1-Lichtbogenstart erfolgreich;2-Schweißgerät bereit;3-Förderbanderkennung;4-Pause;5-Fortsetzen;6-Start;7-Stopp;
 58-Pause/Fortsetzen;9-Start/Stopp;10-Fußtaster-Ziehen;11-Zur Arbeitsposition bewegen;12-Manuell/Auto umschalten;
 613-Drahtpositionssuche erfolgreich;14-Bewegungsunterbrechung;15-Hauptprogramm starten;16-Rückspulen starten;17-Startbestätigung;
 718-Photoelektrisches Erkennungssignal X;19-Photoelektrisches Erkennungssignal Y;20-Externer Not-Halt-Eingangssignal 1;21-Externer Not-Halt-Eingangssignal 2;
 822-Stufe 1 Reduzierungsmodus;23-Stufe 2 Reduzierungsmodus;24-Stufe 3 Reduzierungsmodus (Stopp);25-Schweißen fortsetzen;26-Schweißen beenden;
 927-Hilfszug aktivieren;28-Hilfszug deaktivieren;29-Hilfszug aktivieren/deaktivieren;30-Alle Fehler löschen;
1031-Manuell/Auto umschalten (High/Low-Pegel);32-Aktivieren;33-Deaktivieren;34-Aktivieren/Deaktivieren (steigende/fallende Flanke);35-Fixpunkt-Tracking starten/beenden
11* @return Fehlercode
12*/
13public int GetDIConfig(int[] config)

5.30. Konfigurierbare CO-Portfunktionen des Steuerkastens einstellen

 1/**
 2* @brief Einstellen der konfigurierbaren CO-Portfunktionen des Steuerkastens
 3* @param config CO0-CO7 Funktionscodes;
 4* 0-Keine;1-Roboterfehler;2-Roboter in Bewegung;3-Spritzen start/stopp;4-Spritzpistolenreinigung;5-Gaszufuhrsignal;6-Lichtbogenstartsignal;7-Tippen Drahtvorschub;
 58-Rückwärts Drahtvorschub;9-JOB-Eingang 1;10-JOB-Eingang 2;11-JOB-Eingang 3;12-Förderband start/stopp Steuerung;13-Roboter pausiert;14-Arbeitsposition erreicht;
 615-Interferenzbereich erreicht;16-Drahtpositionssuche start/stopp Steuerung;17-Roboterstart abgeschlossen;18-Programm start/stopp;19-Auto/Manuell-Modus;20-Not-Halt-Ausgangssignal 1-Sicherheit;
 721-Not-Halt-Ausgangssignal 2-Sicherheit;22-Lua-Skriptprogramm läuft/gestoppt;23-Sicherheitsstatusausgang-Sicherheit;24-Schutzstopp-Statusausgang-Sicherheit;
 825-Roboter in Bewegung-Sicherheit;26-Roboter im Reduzierungsmodus-Sicherheit;27-Roboter nicht im Reduzierungsmodus-Sicherheit;28-Roboter nicht gestoppt;29-Roboterfehler-Befehlspunktfehler;
 930-Roboterfehler-Antriebsfehler;31-Roboterfehler-Weichgrenze überschritten;32-Roboterfehler-Kollisionsfehler;33-Roboterfehler-Fehler bei Anzahl aktiver Slaves;
1034-Roboterfehler-Slave-Fehler;35-Roboterfehler-IO-Fehler;36-Roboterfehler-Greiferfehler;37-Roboterfehler-Dateifehler;38-Roboterfehler-Singuläre Pose;
1139-Roboterfehler-Antriebskommunikationsfehler;40-Roboterfehler-Parameterfehler;41-Roboterfehler-Externe Achse Weichgrenze überschritten;42-Roboterwarnung-Warnung;
1243-Roboterwarnung-Sicherheitstürwarnung;44-Roboterwarnung-Bewegungswarnung;45-Roboterwarnung-Interferenzbereichswarnung;46-Roboterwarnung-Sicherheitswandwarnung;
1347-Aktivierungsstatus;48-Automatisches Anheben bei Unterbrechung;49-Würfel 1 Interferenzwarnung;50-Würfel 2 Interferenzwarnung;51-Würfel 3 Interferenzwarnung;52-Würfel 4 Interferenzwarnung;
14* @return Fehlercode
15*/
16public int SetDOConfig(int[] config)

5.31. Konfigurierbare CO-Portfunktionen des Steuerkastens abrufen

 1/**
 2* @brief Abrufen der konfigurierbaren CO-Portfunktionen des Steuerkastens
 3* @param config CO0-CO7 Funktionscodes;
 4* 0-Keine;1-Roboterfehler;2-Roboter in Bewegung;3-Spritzen start/stopp;4-Spritzpistolenreinigung;5-Gaszufuhrsignal;6-Lichtbogenstartsignal;7-Tippen Drahtvorschub;
 58-Rückwärts Drahtvorschub;9-JOB-Eingang 1;10-JOB-Eingang 2;11-JOB-Eingang 3;12-Förderband start/stopp Steuerung;13-Roboter pausiert;14-Arbeitsposition erreicht;
 615-Interferenzbereich erreicht;16-Drahtpositionssuche start/stopp Steuerung;17-Roboterstart abgeschlossen;18-Programm start/stopp;19-Auto/Manuell-Modus;20-Not-Halt-Ausgangssignal 1-Sicherheit;
 721-Not-Halt-Ausgangssignal 2-Sicherheit;22-Lua-Skriptprogramm läuft/gestoppt;23-Sicherheitsstatusausgang-Sicherheit;24-Schutzstopp-Statusausgang-Sicherheit;
 825-Roboter in Bewegung-Sicherheit;26-Roboter im Reduzierungsmodus-Sicherheit;27-Roboter nicht im Reduzierungsmodus-Sicherheit;28-Roboter nicht gestoppt;29-Roboterfehler-Befehlspunktfehler;
 930-Roboterfehler-Antriebsfehler;31-Roboterfehler-Weichgrenze überschritten;32-Roboterfehler-Kollisionsfehler;33-Roboterfehler-Fehler bei Anzahl aktiver Slaves;
1034-Roboterfehler-Slave-Fehler;35-Roboterfehler-IO-Fehler;36-Roboterfehler-Greiferfehler;37-Roboterfehler-Dateifehler;38-Roboterfehler-Singuläre Pose;
1139-Roboterfehler-Antriebskommunikationsfehler;40-Roboterfehler-Parameterfehler;41-Roboterfehler-Externe Achse Weichgrenze überschritten;42-Roboterwarnung-Warnung;
1243-Roboterwarnung-Sicherheitstürwarnung;44-Roboterwarnung-Bewegungswarnung;45-Roboterwarnung-Interferenzbereichswarnung;46-Roboterwarnung-Sicherheitswandwarnung;
1347-Aktivierungsstatus;48-Automatisches Anheben bei Unterbrechung;49-Würfel 1 Interferenzwarnung;50-Würfel 2 Interferenzwarnung;51-Würfel 3 Interferenzwarnung;52-Würfel 4 Interferenzwarnung;
14* @return Fehlercode
15*/
16public int GetDOConfig(int[] config)

5.32. Konfigurierbare End-CI-Portfunktionen des Endeffektors einstellen

 1/**
 2* @brief Einstellen der konfigurierbaren End-CI-Portfunktionen des Endeffektors
 3* @param config End CI0-CI1 Funktionscodes;
 4* 0-Keine;1-Zieh-Teaching-Werkzeugschalter;2-Punktaufzeichnungssignal;3-Manuell/Auto umschalten (Impulssignal);4-TPD-Aufzeichnung start/stopp;5-Bewegung pausieren;
 56-Bewegung fortsetzen;7-Start;8-Stopp;9-Pause/Fortsetzen;10-Start/Stopp;11-Kraftsensor-Hilfszug aktivieren;12-Kraftsensor-Hilfszug deaktivieren;
 613-Kraftsensor-Hilfszug aktivieren/deaktivieren;14-Lasererkennungssignal X;15-Lasererkennungssignal Y;16-PTP-Bewegung zur Arbeitsposition;17-Bewegungsunterbrechung, aktuelle Bewegung je nach Signal stoppen;
 718-Hauptprogramm starten;19-Rückspulen starten;20-Startbestätigung;21-Schweißen fortsetzen;22-Schweißen beenden;23-Fehler löschen;24-Manuell/Auto umschalten (High/Low-Pegel);
 825-Aktivieren;26-Deaktivieren;27-Aktivieren/Deaktivieren;28-Laser-Servo-Tracking start/stopp Signal;
 9* @return Fehlercode
10*/
11public int SetToolDIConfig(int[] config)

5.33. Konfigurierbare End-CI-Portfunktionen des Endeffektors abrufen

 1/**
 2* @brief Abrufen der konfigurierbaren End-CI-Portfunktionen des Endeffektors
 3* @param config End CI0-CI1 Funktionscodes;
 4* 0-Keine;1-Zieh-Teaching-Werkzeugschalter;2-Punktaufzeichnungssignal;3-Manuell/Auto umschalten (Impulssignal);4-TPD-Aufzeichnung start/stopp;5-Bewegung pausieren;
 56-Bewegung fortsetzen;7-Start;8-Stopp;9-Pause/Fortsetzen;10-Start/Stopp;11-Kraftsensor-Hilfszug aktivieren;12-Kraftsensor-Hilfszug deaktivieren;
 613-Kraftsensor-Hilfszug aktivieren/deaktivieren;14-Lasererkennungssignal X;15-Lasererkennungssignal Y;16-PTP-Bewegung zur Arbeitsposition;17-Bewegungsunterbrechung, aktuelle Bewegung je nach Signal stoppen;
 718-Hauptprogramm starten;19-Rückspulen starten;20-Startbestätigung;21-Schweißen fortsetzen;22-Schweißen beenden;23-Fehler löschen;24-Manuell/Auto umschalten (High/Low-Pegel);
 825-Aktivieren;26-Deaktivieren;27-Aktivieren/Deaktivieren;28-Laser-Servo-Tracking start/stopp Signal;
 9* @return Fehlercode
10*/
11public int GetToolDIConfig(int[] config)

5.34. Konfigurierbaren CI-Aktivzustand des Steuerkastens einstellen

1/**
2* @brief Einstellen des konfigurierbaren CI-Aktivzustands des Steuerkastens
3* @param config CI0-CI7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int SetDIConfigLevel(int[] config)

5.35. Konfigurierbaren CI-Aktivzustand des Steuerkastens abrufen

1/**
2* @brief Abrufen des konfigurierbaren CI-Aktivzustands des Steuerkastens
3* @param config CI0-CI7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int GetDIConfigLevel(int[] config)

5.36. Konfigurierbaren CO-Aktivzustand des Steuerkastens einstellen

1/**
2* @brief Einstellen des konfigurierbaren CO-Aktivzustands des Steuerkastens
3* @param config CO0-CO7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int SetDOConfigLevel(int[] config)

5.37. Konfigurierbaren CO-Aktivzustand des Steuerkastens abrufen

1/**
2* @brief Abrufen des konfigurierbaren CO-Aktivzustands des Steuerkastens
3* @param config CO0-CO7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int GetDOConfigLevel(int[] config)

5.38. Konfigurierbaren CI-Aktivzustand des Endeffektors einstellen

1/**
2* @brief Einstellen des konfigurierbaren CI-Aktivzustands des Endeffektors
3* @param config CI0-CI1 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int SetToolDIConfigLevel(int[] config)

5.39. Konfigurierbaren CI-Aktivzustand des Endeffektors abrufen

1/**
2* @brief Abrufen des konfigurierbaren CI-Aktivzustands des Endeffektors
3* @param config CI0-CI1 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int GetToolDIConfigLevel(int[] config)

5.40. Standard-DI-Aktivzustand des Steuerkastens einstellen

1/**
2* @brief Einstellen des Standard-DI-Aktivzustands des Steuerkastens
3* @param config DI0-DI7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int SetStandardDILevel(int[] config)

5.41. Standard-DI-Aktivzustand des Steuerkastens abrufen

1/**
2* @brief Abrufen des Standard-DI-Aktivzustands des Steuerkastens
3* @param config DI0-DI7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int GetStandardDILevel(int[] config)

5.42. Standard-DO-Aktivzustand des Steuerkastens einstellen

1/**
2* @brief Einstellen des Standard-DO-Aktivzustands des Steuerkastens
3* @param config DO0-DO7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int SetStandardDOLevel(int[] config)

5.43. Standard-DO-Aktivzustand des Steuerkastens abrufen

1/**
2* @brief Abrufen des Standard-DO-Aktivzustands des Steuerkastens
3* @param config DO0-DO7 Port-Aktivzustand; 0-aktiv high; 1-aktiv low
4* @return Fehlercode
5*/
6public int GetStandardDOLevel(int[] config)

5.44. Robot IO Konfigurationscodebeispiel

 1public static int TestIOConfig(Robot robot) {
 2    int[] setDIConfig = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
 3    int[] getDIConfig = new int[8];
 4    int rtn = robot.SetDIConfig(setDIConfig);
 5    System.out.println("SetDIConfig rtn is " + rtn);
 6    rtn = robot.GetDIConfig(getDIConfig);
 7    System.out.println("GetDIConfig rtn is " + rtn + ", value is " +
 8        getDIConfig[0] + " " + getDIConfig[1] + " " + getDIConfig[2] + " " + getDIConfig[3] + " " +
 9        getDIConfig[4] + " " + getDIConfig[5] + " " + getDIConfig[6] + " " + getDIConfig[7]);
10
11    int[] setDOConfig = new int[]{9, 10, 11, 12, 13, 14, 15, 16};
12    int[] getDOConfig = new int[8];
13    rtn = robot.SetDOConfig(setDOConfig);
14    System.out.println("SetDOConfig rtn is " + rtn);
15    rtn = robot.GetDOConfig(getDOConfig);
16    System.out.println("GetDOConfig rtn is " + rtn + ", value is " +
17        getDOConfig[0] + " " + getDOConfig[1] + " " + getDOConfig[2] + " " + getDOConfig[3] + " " +
18        getDOConfig[4] + " " + getDOConfig[5] + " " + getDOConfig[6] + " " + getDOConfig[7]);
19
20    int[] setToolDIConfig = new int[]{17, 18};
21    int[] getToolDIConfig = new int[2];
22    rtn = robot.SetToolDIConfig(setToolDIConfig);
23    System.out.println("SetToolDIConfig rtn is " + rtn);
24    rtn = robot.GetToolDIConfig(getToolDIConfig);
25    System.out.println("GetToolDIConfig rtn is " + rtn + ", value is " + getToolDIConfig[0] + " " + getToolDIConfig[1]);
26
27    int[] setDIConfigLevel = new int[]{1, 1, 1, 1, 0, 0, 0, 0};
28    int[] getDIConfigLevel = new int[8];
29    rtn = robot.SetDIConfigLevel(setDIConfigLevel);
30    System.out.println("SetDIConfigLevel rtn is " + rtn);
31    rtn = robot.GetDIConfigLevel(getDIConfigLevel);
32    System.out.println("GetDIConfigLevel rtn is " + rtn + ", value is " +
33        getDIConfigLevel[0] + " " + getDIConfigLevel[1] + " " + getDIConfigLevel[2] + " " + getDIConfigLevel[3] + " " +
34        getDIConfigLevel[4] + " " + getDIConfigLevel[5] + " " + getDIConfigLevel[6] + " " + getDIConfigLevel[7]);
35
36    int[] setDOConfigLevel = new int[]{0, 0, 0, 0, 1, 1, 1, 1};
37    int[] getDOConfigLevel = new int[8];
38    rtn = robot.SetDOConfigLevel(setDOConfigLevel);
39    System.out.println("SetDOConfigLevel rtn is " + rtn);
40    rtn = robot.GetDOConfigLevel(getDOConfigLevel);
41    System.out.println("GetDOConfigLevel rtn is " + rtn + ", value is " +
42        getDOConfigLevel[0] + " " + getDOConfigLevel[1] + " " + getDOConfigLevel[2] + " " + getDOConfigLevel[3] + " " +
43        getDOConfigLevel[4] + " " + getDOConfigLevel[5] + " " + getDOConfigLevel[6] + " " + getDOConfigLevel[7]);
44
45    int[] setToolDIConfigLevel = new int[]{1, 0};
46    int[] getToolDIConfigLevel = new int[2];
47    rtn = robot.SetToolDIConfigLevel(setToolDIConfigLevel);
48    System.out.println("SetToolDIConfigLevel rtn is " + rtn);
49    rtn = robot.GetToolDIConfigLevel(getToolDIConfigLevel);
50    System.out.println("GetToolDIConfigLevel rtn is " + rtn + ", value is " + getToolDIConfigLevel[0] + " " + getToolDIConfigLevel[1]);
51
52    int[] setStandardDILevel = new int[]{1, 1, 1, 1, 0, 0, 0, 0};
53    int[] getStandardDILevel = new int[8];
54    rtn = robot.SetStandardDILevel(setStandardDILevel);
55    System.out.println("SetStandardDILevel rtn is " + rtn);
56    rtn = robot.GetStandardDILevel(getStandardDILevel);
57    System.out.println("GetStandardDILevel rtn is " + rtn + ", value is " +
58        getStandardDILevel[0] + " " + getStandardDILevel[1] + " " + getStandardDILevel[2] + " " + getStandardDILevel[3] + " " +
59        getStandardDILevel[4] + " " + getStandardDILevel[5] + " " + getStandardDILevel[6] + " " + getStandardDILevel[7]);
60
61    int[] setStandardDOLevel = new int[]{0, 0, 0, 0, 1, 1, 1, 1};
62    int[] getStandardDOLevel = new int[8];
63    rtn = robot.SetStandardDOLevel(setStandardDOLevel);
64    System.out.println("SetStandardDOLevel rtn is " + rtn);
65    rtn = robot.GetStandardDOLevel(getStandardDOLevel);
66    System.out.println("GetStandardDOLevel rtn is " + rtn + ", value is " +
67        getStandardDOLevel[0] + " " + getStandardDOLevel[1] + " " + getStandardDOLevel[2] + " " + getStandardDOLevel[3] + " " +
68        getStandardDOLevel[4] + " " + getStandardDOLevel[5] + " " + getStandardDOLevel[6] + " " + getStandardDOLevel[7]);
69
70    robot.Sleep(2000);
71    return 0;
72}