14. Roboterschweißen

14.1. Parameter für Schweißprozesskurve einstellen

 1/**
 2* @brief Parameter für Schweißprozesskurve einstellen
 3* @param [in] id Schweißprozessnummer (1-99)
 4* @param [in] startCurrent Lichtbogenstartstrom (A)
 5* @param [in] startVoltage Lichtbogenstartspannung (V)
 6* @param [in] startTime Lichtbogenstartzeit (ms)
 7* @param [in] weldCurrent Schweißstrom (A)
 8* @param [in] weldVoltage Schweißspannung (V)
 9* @param [in] endCurrent Lichtbogenendstrom (A)
10* @param [in] endVoltage Lichtbogenendspannung (V)
11* @param [in] endTime Lichtbogenendzeit (ms)
12* @return Fehlercode
13*/
14int WeldingSetProcessParam(int id, double startCurrent, double startVoltage, double startTime, double weldCurrent, double weldVoltage, double endCurrent, double endVoltage, double endTime);

14.2. Parameter für Schweißprozesskurve abrufen

 1/**
 2* @brief Parameter für Schweißprozesskurve abrufen
 3* @param [in] id Schweißprozessnummer (1-99)
 4* @param [out] startCurrent Lichtbogenstartstrom (A)
 5* @param [out] startVoltage Lichtbogenstartspannung (V)
 6* @param [out] startTime Lichtbogenstartzeit (ms)
 7* @param [out] weldCurrent Schweißstrom (A)
 8* @param [out] weldVoltage Schweißspannung (V)
 9* @param [out] endCurrent Lichtbogenendstrom (A)
10* @param [out] endVoltage Lichtbogenendspannung (V)
11* @param [out] endTime Lichtbogenendzeit (ms)
12* @return Fehlercode
13*/
14int WeldingGetProcessParam(int id, ref double startCurrent, ref double startVoltage, ref double startTime, ref double weldCurrent, ref double weldVoltage, ref double endCurrent, ref double endVoltage, ref double endTime);

14.3. Beziehung zwischen Schweißstrom und Analogausgang einstellen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Beziehung zwischen Schweißstrom und Analogausgang einstellen
3* @param [in] currentMin Stromwert des linken Punkts der linearen Beziehung (A)
4* @param [in] currentMax Stromwert des rechten Punkts der linearen Beziehung (A)
5* @param [in] outputVoltageMin Analogausgangsspannung des linken Punkts (V)
6* @param [in] outputVoltageMax Analogausgangsspannung des rechten Punkts (V)
7* @return Fehlercode
8*/
9int WeldingSetCurrentRelation(double currentMin, double currentMax, double outputVoltageMin, double outputVoltageMax);

14.4. Beziehung zwischen Schweißspannung und Analogausgang einstellen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Beziehung zwischen Schweißspannung und Analogausgang einstellen
3* @param [in] weldVoltageMin Spannungswert des linken Punkts der linearen Beziehung (A)
4* @param [in] weldVoltageMax Spannungswert des rechten Punkts der linearen Beziehung (A)
5* @param [in] outputVoltageMin Analogausgangsspannung des linken Punkts (V)
6* @param [in] outputVoltageMax Analogausgangsspannung des rechten Punkts (V)
7* @return Fehlercode
8*/
9int WeldingSetVoltageRelation(double weldVoltageMin, double weldVoltageMax, double outputVoltageMin, double outputVoltageMax);

14.5. Beziehung zwischen Schweißstrom und Analogausgang abrufen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Beziehung zwischen Schweißstrom und Analogausgang abrufen
3* @param [out] currentMin Stromwert des linken Punkts der linearen Beziehung (A)
4* @param [out] currentMax Stromwert des rechten Punkts der linearen Beziehung (A)
5* @param [out] outputVoltageMin Analogausgangsspannung des linken Punkts (V)
6* @param [out] outputVoltageMax Analogausgangsspannung des rechten Punkts (V)
7* @return Fehlercode
8*/
9int WeldingGetCurrentRelation(ref double currentMin, ref double currentMax, ref double outputVoltageMin, ref double outputVoltageMax);

14.6. Beziehung zwischen Schweißspannung und Analogausgang abrufen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Beziehung zwischen Schweißspannung und Analogausgang abrufen
3* @param [out] weldVoltageMin Spannungswert des linken Punkts der linearen Beziehung (A)
4* @param [out] weldVoltageMax Spannungswert des rechten Punkts der linearen Beziehung (A)
5* @param [out] outputVoltageMin Analogausgangsspannung des linken Punkts (V)
6* @param [out] outputVoltageMax Analogausgangsspannung des rechten Punkts (V)
7* @return Fehlercode
8*/
9int WeldingGetVoltageRelation(ref double weldVoltageMin, ref double weldVoltageMax, ref double outputVoltageMin, ref double outputVoltageMax);

14.7. Schweißstrom einstellen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Schweißstrom einstellen
3* @param [in] ioType Steuerungs-I/O-Typ: 0-Steuerkasten-I/O; 1-Erweiterungs-I/O
4* @param [in] current Schweißstromwert (A)
5* @param [in] AOIndex Analogausgangsport des Steuerkastens für Schweißstrom (0-1)
6* @return Fehlercode
7*/
8int WeldingSetCurrent(int ioType, double current, int AOIndex);

14.8. Schweißspannung einstellen

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Schweißspannung einstellen
3* @param [in] ioType Steuerungs-I/O-Typ: 0-Steuerkasten-I/O; 1-Erweiterungs-I/O
4* @param [in] voltage Schweißspannungswert (V)
5* @param [in] AOIndex Analogausgangsport des Steuerkastens für Schweißspannung (0-1)
6* @return Fehlercode
7*/
8int WeldingSetVoltage(int ioType, double voltage, int AOIndex);

14.9. Pendelparameter einstellen

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1/**
 2* @brief Pendelparameter einstellen
 3* @param [in] weaveNum Konfigurationsnummer der Pendelparameter
 4* @param [in] weaveType Pendeltyp: 0-Ebenen-Dreieck; 1-Vertikal-L-förmiges Dreieck; 2-Kreis im Uhrzeigersinn; 3-Kreis gegen Uhrzeigersinn; 4-Ebenen-Sinus; 5-Vertikal-L-förmiger Sinus; 6-Vertikales Dreieck; 7-Vertikaler Sinus
 5* @param [in] weaveFrequency Pendelfrequenz (Hz)
 6* @param [in] weaveIncStayTime Wartemodus: 0-Zyklus ohne Wartezeit; 1-Zyklus mit Wartezeit
 7* @param [in] weaveRange Pendelamplitude (mm)
 8* @param [in] weaveLeftRange Länge der linken Seite beim vertikalen Dreieckspendeln (mm)
 9* @param [in] weaveRightRange Länge der rechten Seite beim vertikalen Dreieckspendeln (mm)
10* @param [in] additionalStayTime Verweilzeit am vertikalen Dreieckspunkt (ms)
11* @param [in] weaveLeftStayTime Verweilzeit links (ms)
12* @param [in] weaveRightStayTime Verweilzeit rechts (ms)
13* @param [in] weaveCircleRadio Rücklaufverhältnis für Kreispendeln (0-100%)
14* @param [in] weaveStationary Position während Wartezeit: 0-Position bewegt sich weiter; 1-Position ruht
15* @param [in] weaveYawAngle Azimutwinkel der Pendelrichtung (Rotation um die Pendel-Z-Achse) [°]
16* @return Fehlercode
17*/
18int WeaveSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, double weaveLeftRange, double weaveRightRange, int additionalStayTime, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary, double weaveYawAngle, double weaveRotAngle = 0);

14.10. Codebeispiel zum Einstellen von Schweißparametern

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1private void button7_Click(object sender, EventArgs e)
 2{
 3    robot.WeldingSetProcessParam(1, 177, 27, 1000, 178, 28, 176, 26, 1000);
 4    robot.WeldingSetProcessParam(2, 188, 28, 555, 199, 29, 133, 23, 333);
 5
 6    double startCurrent = 0;
 7    double startVoltage = 0;
 8    double startTime = 0;
 9    double weldCurrent = 0;
10    double weldVoltage = 0;
11    double endCurrent = 0;
12    double endVoltage = 0;
13    double endTime = 0;
14
15    robot.WeldingGetProcessParam(1, ref startCurrent, ref startVoltage, ref startTime, ref weldCurrent, ref weldVoltage, ref endCurrent, ref endVoltage, ref endTime);
16    Console.WriteLine("the Num 1 process param is " + startCurrent + " " + startVoltage + " " + startTime + " " + weldCurrent + " " + weldVoltage + " " + endCurrent + " " + endVoltage + " " + endTime);
17    robot.WeldingGetProcessParam(2, ref startCurrent, ref startVoltage, ref startTime, ref weldCurrent, ref weldVoltage, ref endCurrent, ref endVoltage, ref endTime);
18    Console.WriteLine("the Num 2 process param is " + startCurrent + " " + startVoltage + " " + startTime + " " + weldCurrent + " " + weldVoltage + " " + endCurrent + " " + endVoltage + " " + endTime);
19
20    int rtn = robot.WeldingSetCurrentRelation(0, 400, 0, 10, 0);
21    Console.WriteLine("WeldingSetCurrentRelation rtn is: " + rtn);
22
23    rtn = robot.WeldingSetVoltageRelation(0, 40, 0, 10, 1);
24    Console.WriteLine("WeldingSetVoltageRelation rtn is: " + rtn);
25
26    double current_min = 0;
27    double current_max = 0;
28    double vol_min = 0;
29    double vol_max = 0;
30    double output_vmin = 0;
31    double output_vmax = 0;
32    int curIndex = 0;
33    int volIndex = 0;
34    rtn = robot.WeldingGetCurrentRelation(ref current_min, ref current_max, ref output_vmin, ref output_vmax, ref curIndex);
35    Console.WriteLine("WeldingGetCurrentRelation rtn is: " + rtn);
36    Console.WriteLine("current min " + current_min + " current max " + current_max + " output vol min " + output_vmin + " output vol max " + output_vmax);
37
38    rtn = robot.WeldingGetVoltageRelation(ref vol_min, ref vol_max, ref output_vmin, ref output_vmax, ref volIndex);
39    Console.WriteLine("WeldingGetVoltageRelation rtn is: " + rtn);
40    Console.WriteLine("vol min " + vol_min + " vol max " + vol_max + " output vol min " + output_vmin + " output vol max " + output_vmax);
41
42    rtn = robot.WeldingSetCurrent(1, 100, 0, 0);
43    Console.WriteLine("WeldingSetCurrent rtn is: " + rtn);
44
45    System.Threading.Thread.Sleep(3000);
46
47    rtn = robot.WeldingSetVoltage(1, 10, 0, 0);
48    Console.WriteLine("WeldingSetVoltage rtn is: " + rtn);
49
50    rtn = robot.WeaveSetPara(0, 0, 2.000000, 0, 10.000000, 0.000000, 0.000000, 0, 0, 0, 0, 0, 60.000000);
51    Console.WriteLine("rtn is: " + rtn);
52
53    robot.WeaveOnlineSetPara(0, 0, 1, 0, 20, 0, 0, 0, 0);
54
55    rtn = robot.WeldingSetCheckArcInterruptionParam(1, 200);
56    Console.WriteLine("WeldingSetCheckArcInterruptionParam    " + rtn);
57    rtn = robot.WeldingSetReWeldAfterBreakOffParam(1, 5.7, 98.2, 0);
58    Console.WriteLine("WeldingSetReWeldAfterBreakOffParam    " + rtn);
59    int enable = 0;
60    double length = 0;
61    double velocity = 0;
62    int moveType = 0;
63    int checkEnable = 0;
64    int arcInterruptTimeLength = 0;
65    rtn = robot.WeldingGetCheckArcInterruptionParam(ref checkEnable, ref arcInterruptTimeLength);
66    Console.WriteLine("WeldingGetCheckArcInterruptionParam  checkEnable  " + checkEnable + "   arcInterruptTimeLength  " + arcInterruptTimeLength);
67    rtn = robot.WeldingGetReWeldAfterBreakOffParam(ref enable, ref length, ref velocity, ref moveType);
68    Console.WriteLine("WeldingGetReWeldAfterBreakOffParam  enable = " + enable + ", length = " + length + ", velocity = " + velocity + ", moveType = " + moveType);
69
70    robot.SetWeldMachineCtrlModeExtDoNum(17);
71    for (int i = 0; i < 5; i++)
72    {
73        robot.SetWeldMachineCtrlMode(0);
74        Thread.Sleep(1000);
75        robot.SetWeldMachineCtrlMode(1);
76        Thread.Sleep(1000);
77    }
78}

14.11. Pendelparameter online einstellen

Neu in Version C#SDK-v1.0.4.

 1/**
 2* @brief Pendelparameter online einstellen (während der Bewegung)
 3* @param [in] weaveNum Konfigurationsnummer der Pendelparameter
 4* @param [in] weaveType Pendeltyp (siehe WeaveSetPara)
 5* @param [in] weaveFrequency Pendelfrequenz (Hz)
 6* @param [in] weaveIncStayTime Wartemodus (siehe WeaveSetPara)
 7* @param [in] weaveRange Pendelamplitude (mm)
 8* @param [in] weaveLeftStayTime Verweilzeit links (ms)
 9* @param [in] weaveRightStayTime Verweilzeit rechts (ms)
10* @param [in] weaveCircleRadio Rücklaufverhältnis für Kreispendeln (0-100%)
11* @param [in] weaveStationary Position während Wartezeit (siehe WeaveSetPara)
12* @return Fehlercode
13*/
14int WeaveOnlineSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);

14.12. Parameter zur Erkennung eines unerwarteten Lichtbogenabbruchs einstellen

1/**
2* @brief Parameter zur Erkennung eines unerwarteten Lichtbogenabbruchs beim Schweißen einstellen
3* @param [in] checkEnable Erkennung aktivieren? 0-nein; 1-ja
4* @param [in] arcInterruptTimeLength Bestätigungsdauer für Lichtbogenunterbrechung (ms)
5* @return Fehlercode
6*/
7int WeldingSetCheckArcInterruptionParam(int checkEnable, int arcInterruptTimeLength);

14.13. Parameter zur Erkennung eines unerwarteten Lichtbogenabbruchs abrufen

1/**
2* @brief Parameter zur Erkennung eines unerwarteten Lichtbogenabbruchs beim Schweißen abrufen
3* @param [out] checkEnable Erkennung aktiviert? 0-nein; 1-ja
4* @param [out] arcInterruptTimeLength Bestätigungsdauer für Lichtbogenunterbrechung (ms)
5* @return Fehlercode
6*/
7int WeldingGetCheckArcInterruptionParam(ref int checkEnable, ref int arcInterruptTimeLength);

14.14. Parameter für die Wiederaufnahme nach Schweißunterbrechung einstellen

1/**
2* @brief Parameter für die Wiederaufnahme nach Schweißunterbrechung einstellen
3* @param[in] enable Wiederaufnahme nach Unterbrechung aktivieren? 0-nein; 1-ja
4* @param[in] length Überlappungslänge der Schweißnaht (mm)
5* @param[in] velocity Geschwindigkeitsprozentsatz für die Rückkehr zum Wiederzündpunkt (0-100)
6* @param[in] moveType Bewegungsart zum Wiederzündpunkt: 0-LIN; 1-PTP
7* @return Fehlercode
8*/
9int WeldingSetReWeldAfterBreakOffParam(int enable, double length, double velocity, int moveType);

14.15. Parameter für die Wiederaufnahme nach Schweißunterbrechung abrufen

1/**
2* @brief Parameter für die Wiederaufnahme nach Schweißunterbrechung abrufen
3* @param [out] enable Wiederaufnahme aktiviert? 0-nein; 1-ja
4* @param [out] length Überlappungslänge der Schweißnaht (mm)
5* @param [out] velocity Geschwindigkeitsprozentsatz für die Rückkehr zum Wiederzündpunkt (0-100)
6* @param [out] moveType Bewegungsart zum Wiederzündpunkt: 0-LIN; 1-PTP
7* @return Fehlercode
8*/
9int WeldingGetReWeldAfterBreakOffParam(ref int enable, ref double length, ref double velocity, ref int moveType);

14.16. Erweiterten DO-Port für Schweißgerät-Steuermodus einstellen

1/**
2* @brief Erweiterten DO-Port für Schweißgerät-Steuermodus einstellen
3* @param DONum DO-Portnummer für Schweißgerät-Steuermodus (0-127)
4* @return Fehlercode
5*/
6int SetWeldMachineCtrlModeExtDoNum(int DONum);

14.17. Schweißmaschinen-Steuerungsmodus einstellen

1/**
2* @brief Schweißmaschinen-Steuerungsmodus einstellen
3* @param [in] mode Schweißmaschinen-Steuerungsmodus; 0-Gleichstrom-Einknopf-Modus; 1-Impuls-Einknopf-Modus; 2-JOB-Modus; 3-Nahsteuerungs-Modus; 4-Separat-Modus; 5-CC/CV-Modus; 6-TIG; 7-CMT
4* @param [in] ioType Steuerungstyp; 0-Steuerkasten-IO; 1-Digitales Kommunikationsprotokoll (UDP); 2-Digitales Kommunikationsprotokoll (ModbusTCP)
5* @return Fehlercode
6*/
7public int SetWeldMachineCtrlMode(int mode,int ioType = 1)

14.18. Schweißstart

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Schweißstart (Lichtbogen zünden)
3* @param [in] ioType I/O-Typ: 0-Steuerungs-I/O; 1-Erweiterungs-I/O
4* @param [in] arcNum Nummer der Schweißgeräte-Konfigurationsdatei
5* @param [in] timeout Lichtbogenstart-Timeout [ms]
6* @return Fehlercode
7*/
8int ARCStart(int ioType, int arcNum, int timeout);

14.19. Schweißende

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Schweißende (Lichtbogen löschen)
3* @param [in] ioType I/O-Typ: 0-Steuerungs-I/O; 1-Erweiterungs-I/O
4* @param [in] arcNum Nummer der Schweißgeräte-Konfigurationsdatei
5* @param [in] timeout Lichtbogenlösch-Timeout [ms]
6* @return Fehlercode
7*/
8int ARCEnd(int ioType, int arcNum, int timeout);

14.20. Pendelstart

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Pendelstart
3* @param [in] weaveNum Konfigurationsnummer der Pendelparameter
4* @return Fehlercode
5*/
6int WeaveStart(int weaveNum);

14.21. Pendelende

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Pendelende
3* @param [in] weaveNum Konfigurationsnummer der Pendelparameter
4* @return Fehlercode
5*/
6int WeaveEnd(int weaveNum);

14.22. Vorwärts-Drahtvorschub

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Vorwärts-Drahtvorschub
3* @param [in] ioType I/O-Typ: 0-Steuerungs-I/O; 1-Erweiterungs-I/O
4* @param [in] wireFeed Drahtvorschubsteuerung: 0-stoppen; 1-vorschub
5* @return Fehlercode
6*/
7int SetForwardWireFeed(int ioType, int wireFeed);

14.23. Rückwärts-Drahtvorschub

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Rückwärts-Drahtvorschub
3* @param [in] ioType I/O-Typ: 0-Steuerungs-I/O; 1-Erweiterungs-I/O
4* @param [in] wireFeed Drahtvorschubsteuerung: 0-stoppen; 1-vorschub
5* @return Fehlercode
6*/
7int SetReverseWireFeed(int ioType, int wireFeed);

14.24. Gaszufuhr

Neu in Version C#SDK-v1.0.4.

1/**
2* @brief Gaszufuhr
3* @param [in] ioType I/O-Typ: 0-Steuerungs-I/O; 1-Erweiterungs-I/O
4* @param [in] airControl Gassteuerung: 0-stoppen; 1-zufuhr
5* @return Fehlercode
6*/
7int SetAspirated(int ioType, int airControl);

14.25. Wiederaufnahme des Schweißens nach Unterbrechung starten

1/**
2* @brief Wiederaufnahme des Schweißens nach Unterbrechung starten
3* @return Fehlercode
4*/
5int WeldingStartReWeldAfterBreakOff();

14.26. Schweißen nach Unterbrechung abbrechen

1/**
2* @brief Schweißen nach Unterbrechung abbrechen (nicht wiederaufnehmen)
3* @return Fehlercode
4*/
5int WeldingAbortWeldAfterBreakOff();

14.27. Codebeispiel (Schweißablauf)

 1private void button7_Click(object sender, EventArgs e)
 2{
 3    robot.WeldingSetCurrent(1, 230, 0, 0);
 4    robot.WeldingSetVoltage(1, 24, 0, 1);
 5
 6    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 7    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 8
 9    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
10    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
16    robot.ARCStart(1, 0, 10000);
17    robot.WeaveStart(0);
18    robot.MoveL (p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese);
19    robot.ARCEnd(1, 0, 10000);
20    robot.WeaveEnd(0);
21}

14.28. Segment-Schweißen starten

Neu in Version C#SDK-v1.0.4.

 1/**
 2* @brief Segment-Schweißen starten (Heftschweißen / Intervallschweißen)
 3* @param [in] startDesePos Kartesische Position des Startpunkts
 4* @param [in] endDesePos Kartesische Pose des Endpunkts
 5* @param [in] startJPos Gelenkpose des Startpunkts
 6* @param [in] endJPos Gelenkpose des Endpunkts
 7* @param [in] weldLength Länge des Schweißsegments (mm)
 8* @param [in] noWeldLength Länge des Nicht-Schweißsegments (mm)
 9* @param [in] weldIOType Schweiß-I/O-Typ (0-Steuerkasten-I/O; 1-Erweiterungs-I/O)
10* @param [in] arcNum Nummer der Schweißgeräte-Konfigurationsdatei
11* @param [in] weldTimeout Lichtbogenstart/-lösch-Timeout [ms]
12* @param [in] isWeave Pendeln verwenden? true/false
13* @param [in] weaveNum Konfigurationsnummer der Pendelparameter
14* @param [in] tool Werkzeugnummer
15* @param [in] user Werkstücknummer
16* @param [in] vel Geschwindigkeitsprozentsatz [0~100]
17* @param [in] acc Beschleunigungsprozentsatz [0~100] (vorübergehend nicht freigegeben)
18* @param [in] ovl Geschwindigkeitsskalierungsfaktor [0~100]
19* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend) [mm]
20* @param [in] epos Position der Erweiterungsachse [mm]
21* @param [in] search 0-keine Schweißdrahtsuche, 1-Schweißdrahtsuche
22* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem
23* @param [in] offset_pos Posenversatz
24* @return Fehlercode
25*/
26int SegmentWeldStart(DescPose startDesePos, DescPose endDesePos, JointPos startJPos, JointPos endJPos, double weldLength, double noWeldLength, int weldIOType, int arcNum, int weldTimeout, bool isWeave, int weaveNum, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, byte search, byte offset_flag, DescPose offset_pos);

14.29. Codebeispiel für Robotersegment-Schweißen

Neu in Version C#SDK-v1.0.4.

 1private void btnWeldStart_Click(object sender, EventArgs e)
 2{
 3    robot.WeldingSetCurrent(1, 230, 0, 0);
 4    robot.WeldingSetVoltage(1, 24, 0, 1);
 5
 6    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 7    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 8
 9    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
10    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    int rtn = robot.SegmentWeldStart( p1Desc,  p2Desc,  p1Joint,  p2Joint, 20, 20, 0, 0, 5000, false, 0, 0, 0, 100, 100, 100, -1,  exaxisPos, 0, 0,  offdese);
16    Console.WriteLine("SegmentWeldStart rtn is {0}", rtn);
17}

14.30. Simulations-Pendelstart

1/**
2* @brief Simulations-Pendelstart (nur Visualisierung, keine I/O)
3* @param [in] weaveNum Pendelparameternummer
4* @return Fehlercode
5*/
6int WeaveStartSim(int weaveNum);

14.31. Simulations-Pendelende

1/**
2* @brief Simulations-Pendelende
3* @param [in] weaveNum Pendelparameternummer
4* @return Fehlercode
5*/
6int WeaveEndSim(int weaveNum);

14.32. Trajektorienprüfungs-Warnung starten (ohne Bewegung)

1/**
2* @brief Trajektorienprüfungs-Warnung starten (ohne Bewegung)
3* @param [in] weaveNum Pendelparameternummer
4* @return Fehlercode
5*/
6int WeaveInspectStart(int weaveNum);

14.33. Trajektorienprüfungs-Warnung beenden

1/**
2* @brief Trajektorienprüfungs-Warnung beenden
3* @param [in] weaveNum Pendelparameternummer
4* @return Fehlercode
5*/
6int WeaveInspectEnd(int weaveNum);

14.34. Pendel-Gradientenstart (allmähliche Änderung)

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Pendel-Gradientenstart (allmähliche Änderung der Parameter)
3* @param [in] weaveChangeFlag 1-nur Pendelparameter ändern; 2-Pendelparameter + Schweißgeschwindigkeit ändern
4* @param [in] weaveNum Pendelnummer
5* @param [in] velStart Start-Schweißgeschwindigkeit (cm/min)
6* @param [in] velEnd End-Schweißgeschwindigkeit (cm/min)
7* @return Fehlercode
8*/
9int WeaveChangeStart(int weaveChangeFlag, int weaveNum, double velStart, double velEnd);

14.35. Pendel-Gradientenende

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Pendel-Gradientenende
3* @return Fehlercode
4*/
5int WeaveChangeEnd();

14.36. Codebeispiel für robotergestütztes Gradienten-Pendelschweißen

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1private void btnweld_Click(object sender, EventArgs e)
 2{
 3    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 4    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 5
 6    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
 7    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
 8
 9    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
11
12    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.WeaveStartSim(0);
14    robot.MoveL(p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese);
15    robot.WeaveEndSim(0);
16    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
17    robot.WeaveInspectStart(0);
18    robot.MoveL(p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese);
19    robot.WeaveInspectEnd(0);
20
21    robot.WeldingSetVoltage(1, 19, 0, 0);
22    robot.WeldingSetCurrent(1, 190, 0, 0);
23    robot.MoveL( p1Joint,  p1Desc, 1, 1, 100, 100, 50, -1,  exaxisPos, 0, 0,  offdese);
24    robot.ARCStart(1, 0, 10000);
25    robot.ArcWeldTraceControl(1, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
26    robot.WeaveStart(0);
27    robot.WeaveChangeStart(1, 0, 50, 30);
28    robot.MoveL( p2Joint,  p2Desc, 1, 1, 100, 100, 1, -1,  exaxisPos, 0, 0,  offdese);
29    robot.WeaveChangeEnd();
30    robot.WeaveEnd(0);
31    robot.ArcWeldTraceControl(0, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
32    robot.ARCEnd(1, 0, 10000);
33}

14.37. Erweitertes I/O - Gasprüfsignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Gasprüfsignal für Schweißgerät konfigurieren
3* @param [in] DONum Erweiterte DO-Nummer für Gasprüfsignal
4* @return Fehlercode
5*/
6int SetAirControlExtDoNum(int DONum);

14.38. Erweitertes I/O - Lichtbogenstartsignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Lichtbogenstartsignal für Schweißgerät konfigurieren
3* @param [in] DONum Erweiterte DO-Nummer für Lichtbogenstartsignal
4* @return Fehlercode
5*/
6int SetArcStartExtDoNum(int DONum);

14.39. Erweitertes I/O - Rückwärts-Drahtvorschubsignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Rückwärts-Drahtvorschubsignal für Schweißgerät konfigurieren
3* @param [in] DONum Erweiterte DO-Nummer für Rückwärts-Drahtvorschubsignal
4* @return Fehlercode
5*/
6int SetWireReverseFeedExtDoNum(int DONum);

14.40. Erweitertes I/O - Vorwärts-Drahtvorschubsignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Vorwärts-Drahtvorschubsignal für Schweißgerät konfigurieren
3* @param [in] DONum Erweiterte DO-Nummer für Vorwärts-Drahtvorschubsignal
4* @return Fehlercode
5*/
6int SetWireForwardFeedExtDoNum(int DONum);

14.41. Erweitertes I/O - Lichtbogen-Erfolgssignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Lichtbogen-Erfolgssignal für Schweißgerät konfigurieren
3* @param [in] DINum Erweiterte DI-Nummer für Lichtbogen-Erfolgssignal
4* @return Fehlercode
5*/
6int SetArcDoneExtDiNum(int DINum);

14.42. Erweitertes I/O - Bereitschaftssignal für Schweißgerät konfigurieren

1/**
2* @brief Erweitertes I/O - Bereitschaftssignal für Schweißgerät konfigurieren
3* @param [in] DINum Erweiterte DI-Nummer für Bereitschaftssignal
4* @return Fehlercode
5*/
6int SetWeldReadyExtDiNum(int DINum);

14.43. Erweitertes I/O - Signale für Wiederaufnahme nach Schweißunterbrechung konfigurieren

1/**
2* @brief Erweitertes I/O - Signale für Wiederaufnahme nach Schweißunterbrechung konfigurieren
3* @param [in] reWeldDINum Erweiterte DI-Nummer für "Wiederaufnahme starten"
4* @param [in] abortWeldDINum Erweiterte DI-Nummer für "Wiederaufnahme abbrechen"
5* @return Fehlercode
6*/
7int SetExtDIWeldBreakOffRecover(int reWeldDINum, int abortWeldDINum);

14.44. Codebeispiel zum Einstellen erweiterter I/O-Schweißsignale

 1private void button51_Click(object sender, EventArgs e)
 2{
 3    robot.SetArcStartExtDoNum(10);
 4    robot.SetAirControlExtDoNum(20);
 5    robot.SetWireForwardFeedExtDoNum(30);
 6    robot.SetWireReverseFeedExtDoNum(40);
 7
 8    robot.SetWeldReadyExtDiNum(50);
 9    robot.SetArcDoneExtDiNum(60);
10    robot.SetExtDIWeldBreakOffRecover(70, 80);
11    robot.SetWireSearchExtDIONum(0, 1);
12}

14.45. Lichtbogenverfolgungssteuerung (Arc Tracking)

 1/**
 2* @brief Lichtbogenverfolgungssteuerung (Arc Tracking)
 3* @param [in] flag Schalter: 0-aus; 1-an
 4* @param [in] delayTime Verzögerungszeit [ms]
 5* @param [in] isLeftRight Links-Rechts-Abweichungskompensation aktivieren? 0/1
 6* @param [in] klr Links-Rechts-Regelkoeffizient (Empfindlichkeit)
 7* @param [in] tStartLr Startzeit für Links-Rechts-Kompensation [Zyklen]
 8* @param [in] stepMaxLr Maximale Schrittweite Links-Rechts [mm]
 9* @param [in] sumMaxLr Maximale Gesamtkompensation Links-Rechts [mm]
10* @param [in] isUpLow Oben-Unten-Abweichungskompensation aktivieren? 0/1
11* @param [in] kud Oben-Unten-Regelkoeffizient (Empfindlichkeit)
12* @param [in] tStartUd Startzeit für Oben-Unten-Kompensation [Zyklen]
13* @param [in] stepMaxUd Maximale Schrittweite Oben-Unten [mm]
14* @param [in] sumMaxUd Maximale Gesamtkompensation Oben-Unten [mm]
15* @param [in] axisSelect Koordinatensystem für Oben-Unten: 0-Pendel; 1-Werkzeug; 2-Basis
16* @param [in] referenceType Einstellungsart des Referenzstroms (Oben-Unten): 0-Rückmeldung; 1-Konstante
17* @param [in] referSampleStartUd Startzähler für Abtastung des Referenzstroms (nur bei Rückmeldung) [Zyklen]
18* @param [in] referSampleCountUd Anzahl der Abtastzyklen für Referenzstrom (nur bei Rückmeldung) [Zyklen]
19* @param [in] referenceCurrent Konstanter Referenzstrom (nur bei referenceType=1) [mA]
20* @param [in] offsetType Versatz-Tracking-Typ: 0-kein Versatz; 1-Abtastung; 2-Prozentsatz (ab Version 3.7.9)
21* @param [in] offsetParameter Versatzparameter: bei Abtastung (Startzeit der Versatzabtastung, standardmäßig ein Zyklus); bei Prozentsatz (Versatzprozentsatz (-100 ~ 100)) (ab Version 3.7.9)
22* @return Fehlercode
23*/
24int ArcWeldTraceControl(int flag, double delaytime, int isLeftRight, double klr, double tStartLr, double stepMaxLr, double sumMaxLr, int isUpLow, double kud, double tStartUd, double stepMaxUd, double sumMaxUd, int axisSelect, int referenceType, double referSampleStartUd, double referSampleCountUd, double referenceCurrent, int offsetType, int offsetParameter);

14.46. AI-Kanalwahl für Lichtbogenverfolgung

1/**
2* @brief AI-Kanalwahl für Lichtbogenverfolgung (Strom-/Spannungsrückmeldung)
3* @param [in] channel AI-Kanal [0-3] (wahrscheinlich erweiterte AI)
4* @return Fehlercode
5*/
6int ArcWeldTraceExtAIChannelConfig(int channel);

14.47. Kompensation für Mehrlagenschweißen mit Lichtbogenverfolgung starten

1/**
2* @brief Kompensation für Mehrlagenschweißen mit Lichtbogenverfolgung starten
3* @return Fehlercode
4*/
5int ArcWeldTraceReplayStart();

14.48. Kompensation für Mehrlagenschweißen mit Lichtbogenverfolgung beenden

1/**
2* @brief Kompensation für Mehrlagenschweißen mit Lichtbogenverfolgung beenden
3* @return Fehlercode
4*/
5int ArcWeldTraceReplayEnd();

14.49. Koordinatentransformation für Versatz (Mehrlagenschweißen)

 1/**
 2 * @brief Koordinatentransformation für Versatz (Mehrlagenschweißen)
 3 * @param [in] pointO Kartesische Pose des Basispunkts
 4 * @param [in] pointX Kartesische Pose eines Punkts in X-Richtung (zur Definition der X-Achse)
 5 * @param [in] pointZ Kartesische Pose eines Punkts in Z-Richtung (zur Definition der Z-Achse)
 6 * @param [in] dx Versatz in X-Richtung (mm)
 7 * @param [in] dy Versatz in Y-Richtung (mm)
 8 * @param [in] db Rotation um Y-Achse (°)
 9 * @param [out] offset Berechneter Versatz (Pose)
10 * @return Fehlercode
11 */
12int MultilayerOffsetTrsfToBase(DescTran pointO, DescTran pointX, DescTran pointZ, double dx, double dy, double db, ref DescPose offset);

14.50. Codebeispiel für Lichtbogenverfolgung mit Mehrlagenschweißen

  1private void button52_Click(object sender, EventArgs e)
  2{
  3    JointPos mulitilineorigin1_joint = new JointPos(-24.090, -63.501, 84.288, -111.940, -93.426, 57.669);
  4    DescPose mulitilineorigin1_desc = new DescPose(-677.559, 190.951, -1.205, 1.144, -41.482, -82.577);
  5
  6    DescTran mulitilineX1_desc = new DescTran();
  7    mulitilineX1_desc.x = -677.556;
  8    mulitilineX1_desc.y = 211.949;
  9    mulitilineX1_desc.z = -1.206;
 10
 11    DescTran mulitilineZ1_desc = new DescTran();
 12    mulitilineZ1_desc.x = -677.564;
 13    mulitilineZ1_desc.y = 190.956;
 14    mulitilineZ1_desc.z = 19.817;
 15
 16    JointPos mulitilinesafe_joint = new JointPos(-25.734, -63.778, 81.502, -108.975, -93.392, 56.021);
 17    DescPose mulitilinesafe_desc = new DescPose(-677.561, 211.950, 19.812, 1.144, -41.482, -82.577);
 18    JointPos mulitilineorigin2_joint = new JointPos(-29.743, -75.623, 101.241, -116.354, -94.928, 55.735);
 19    DescPose mulitilineorigin2_desc = new DescPose(-563.961, 215.359, -0.681, 2.845, -40.476, -87.443);
 20
 21    DescTran mulitilineX2_desc = new DescTran();
 22    mulitilineX2_desc.x = -563.965;
 23    mulitilineX2_desc.y = 220.355;
 24    mulitilineX2_desc.z = -0.680;
 25
 26    DescTran mulitilineZ2_desc = new DescTran();
 27    mulitilineZ2_desc.x = -563.968;
 28    mulitilineZ2_desc.y = 215.362;
 29    mulitilineZ2_desc.z = 4.331;
 30
 31    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 32    DescPose offset = new DescPose(0, 0, 0, 0, 0, 0);
 33
 34    Thread.Sleep(10);
 35    int error = robot.MoveJ( mulitilinesafe_joint,  mulitilinesafe_desc, 13, 0, 10, 100, 100,  epos, -1, 0,  offset);
 36    Console.WriteLine("MoveJ return: {0}", error);
 37
 38    error = robot.MoveL( mulitilineorigin1_joint,  mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1,  epos, 0, 0,  offset, 0, 100);
 39    Console.WriteLine("MoveL return: {0}", error);
 40
 41    error = robot.MoveJ(mulitilinesafe_joint, mulitilinesafe_desc, 13, 0, 10, 100, 100, epos, -1, 0, offset);
 42    Console.WriteLine("MoveJ return: {0}", error);
 43
 44    error = robot.MoveL(mulitilineorigin2_joint, mulitilineorigin2_desc, 13, 0, 10, 100, 100, -1,  epos, 0, 0,  offset, 0, 100);
 45    Console.WriteLine("MoveL return: {0}", error);
 46
 47    error = robot.MoveJ(mulitilinesafe_joint, mulitilinesafe_desc, 13, 0, 10, 100, 100, epos, -1, 0, offset);
 48    Console.WriteLine("MoveJ return: {0}", error);
 49
 50    error = robot.MoveL( mulitilineorigin1_joint,  mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1,  epos, 0, 0,  offset, 0, 100);
 51    Console.WriteLine("MoveL return: {0}", error);
 52
 53    error = robot.ARCStart(1, 0, 3000);
 54    Console.WriteLine("ARCStart return: {0}", error);
 55
 56    error = robot.WeaveStart(0);
 57    Console.WriteLine("WeaveStart return: {0}", error);
 58
 59    error = robot.ArcWeldTraceControl(1, 0, 1, 0.06, 5, 5, 50, 1, 0.06, 5, 5, 55, 0, 0, 4, 1, 10);
 60    Console.WriteLine("ArcWeldTraceControl return: {0}", error);
 61
 62    error = robot.MoveL( mulitilineorigin2_joint,  mulitilineorigin2_desc, 13, 0, 1, 100, 100, -1,  epos, 0, 0,  offset, 0, 100);
 63    Console.WriteLine("MoveL return: {0}", error);
 64
 65    error = robot.ArcWeldTraceControl(0, 0, 1, 0.06, 5, 5, 50, 1, 0.06, 5, 5, 55, 0, 0, 4, 1, 10);
 66    Console.WriteLine("ArcWeldTraceControl return: {0}", error);
 67
 68    error = robot.WeaveEnd(0);
 69    Console.WriteLine("WeaveEnd return: {0}", error);
 70
 71    error = robot.ARCEnd(1, 0, 10000);
 72    Console.WriteLine("ARCEnd return: {0}", error);
 73
 74    error = robot.MoveJ(mulitilinesafe_joint, mulitilinesafe_desc, 13, 0, 10, 100, 100, epos, -1, 0, offset);
 75    Console.WriteLine("MoveJ return: {0}", error);
 76
 77    error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin1_desc.tran, mulitilineX1_desc, mulitilineZ1_desc, 10.0, 0.0, 0.0, ref offset);
 78    Console.WriteLine("MultilayerOffsetTrsfToBase return: {0}  offect is {1} {2} {3}", error, offset.tran.x, offset.tran.y, offset.tran.z);
 79
 80    error = robot.MoveL( mulitilineorigin1_joint,  mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1,  epos, 0, 1,  offset, 0, 100);
 81    Console.WriteLine("MoveL return: {0}", error);
 82
 83    error = robot.ARCStart(1, 0, 3000);
 84    Console.WriteLine("ARCStart return: {0}", error);
 85
 86    error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin2_desc.tran, mulitilineX2_desc, mulitilineZ2_desc, 10, 0, 0, ref offset);
 87    Console.WriteLine("MultilayerOffsetTrsfToBase return: {0}  offect is {1} {2} {3}", error, offset.tran.x, offset.tran.y, offset.tran.z);
 88
 89    error = robot.ArcWeldTraceReplayStart();
 90    Console.WriteLine("ArcWeldTraceReplayStart return: {0}", error);
 91
 92    error = robot.MoveL( mulitilineorigin2_joint,  mulitilineorigin2_desc, 13, 0, 2, 100, 100, -1,  epos, 0, 1,  offset, 0, 100);
 93    Console.WriteLine("MoveL return: {0}", error);
 94
 95    error = robot.ArcWeldTraceReplayEnd();
 96    Console.WriteLine("ArcWeldTraceReplayEnd return: {0}", error);
 97
 98    error = robot.ARCEnd(1, 0, 10000);
 99    Console.WriteLine("ARCEnd return: {0}", error);
100
101    error = robot.MoveJ(mulitilinesafe_joint, mulitilinesafe_desc, 13, 0, 10, 100, 100, epos, -1, 0, offset);
102    Console.WriteLine("MoveJ return: {0}", error);
103
104    error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin1_desc.tran, mulitilineX1_desc, mulitilineZ1_desc, 0, 10, 0, ref offset);
105    Console.WriteLine("MultilayerOffsetTrsfToBase return: {0}  offect is {1} {2} {3}", error, offset.tran.x, offset.tran.y, offset.tran.z);
106
107    error = robot.MoveL( mulitilineorigin1_joint,  mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1,  epos, 0, 1,  offset, 0, 100);
108    Console.WriteLine("MoveL return: {0}", error);
109
110    error = robot.ARCStart(1, 0, 3000);
111    Console.WriteLine("ARCStart return: {0}", error);
112
113    error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin2_desc.tran, mulitilineX2_desc, mulitilineZ2_desc, 0, 10, 0, ref offset);
114    Console.WriteLine("MultilayerOffsetTrsfToBase return: {0}  offect is {1} {2} {3}", error, offset.tran.x, offset.tran.y, offset.tran.z);
115
116    error = robot.ArcWeldTraceReplayStart();
117    Console.WriteLine("MoveJ return: {0}", error);
118
119    error = robot.MoveL(mulitilineorigin2_joint, mulitilineorigin2_desc, 13, 1, 2, 100, 100, -1, epos, 1, 1, offset, 1, 100);
120    Console.WriteLine("MoveL return: {0}", error);
121
122    error = robot.ArcWeldTraceReplayEnd();
123    Console.WriteLine("ArcWeldTraceReplayEnd return: {0}", error);
124
125    error = robot.ARCEnd(1, 0, 3000);
126    Console.WriteLine("ARCEnd return: {0}", error);
127
128    error = robot.MoveJ(mulitilinesafe_joint, mulitilinesafe_desc, 13, 0, 10, 100, 100, epos, -1, 0, offset);
129    Console.WriteLine("MoveJ return: {0}", error);
130}

14.51. AI-Kanalwahl für Lichtbogenverfolgung (Strom)

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief AI-Kanalwahl für Lichtbogenverfolgung (Stromrückmeldung)
3* @param [in] channel Kanal: 0-Erw. AI0; 1-Erw. AI1; 2-Erw. AI2; 3-Erw. AI3; 4-Steuerkasten AI0; 5-Steuerkasten AI1
4* @return Fehlercode
5*/
6int ArcWeldTraceAIChannelCurrent(int channel);

14.52. AI-Kanalwahl für Lichtbogenverfolgung (Spannung)

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief AI-Kanalwahl für Lichtbogenverfolgung (Spannungsrückmeldung)
3* @param [in] channel Kanal: 0-Erw. AI0; 1-Erw. AI1; 2-Erw. AI2; 3-Erw. AI3; 4-Steuerkasten AI0; 5-Steuerkasten AI1
4* @return Fehlercode
5*/
6int ArcWeldTraceAIChannelVoltage(int channel);

14.53. Umrechnungsparameter für Stromrückmeldung (Lichtbogenverfolgung)

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Umrechnungsparameter für Stromrückmeldung (Lichtbogenverfolgung)
3* @param [in] AILow Untere Grenze des AI-Kanals (Spannung), Standard 0V, Bereich [0-10V]
4* @param [in] AIHigh Obere Grenze des AI-Kanals (Spannung), Standard 10V, Bereich [0-10V]
5* @param [in] currentLow Schweißstromwert für untere AIGrenze, Standard 0A, Bereich [0-200A]? (Dokument sagt 0-200V, wahrscheinlich A)
6* @param [in] currentHigh Schweißstromwert für obere AIGrenze, Standard 100A, Bereich [0-200A]?
7* @return Fehlercode
8*/
9int ArcWeldTraceCurrentPara(float AILow, float AIHigh, float currentLow, float currentHigh);

14.54. Umrechnungsparameter für Spannungsrückmeldung (Lichtbogenverfolgung)

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Umrechnungsparameter für Spannungsrückmeldung (Lichtbogenverfolgung)
3* @param [in] AILow Untere Grenze des AI-Kanals (Spannung), Standard 0V, Bereich [0-10V]
4* @param [in] AIHigh Obere Grenze des AI-Kanals (Spannung), Standard 10V, Bereich [0-10V]
5* @param [in] voltageLow Schweißspannungswert für untere AIGrenze, Standard 0V, Bereich [0-200V]
6* @param [in] voltageHigh Schweißspannungswert für obere AIGrenze, Standard 100V, Bereich [0-200V]
7* @return Fehlercode
8*/
9int ArcWeldTraceVoltagePara(float AILow, float AIHigh, float voltageLow, float voltageHigh);

14.55. Codebeispiel für Lichtbogenverfolgung

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1private void btnweld_Click(object sender, EventArgs e)
 2{
 3    DescPose safetydescPose = new DescPose(-504.043, 275.181, 40.908, -28.002, -42.025, -14.044);
 4    JointPos safetyjointPos = new JointPos(-39.078, -76.732, 87.227, -99.47, -94.301, 18.714);
 5    DescPose startdescPose = new DescPose(-473.86, 257.879, -20.849, -37.317, -42.021, 2.543);
 6    JointPos startjointPos = new JointPos(-43.487, -76.526, 95.568, -104.445, -89.356, 3.72);
 7
 8    DescPose enddescPose = new DescPose(-499.844, 141.225, 7.72, -34.856, -40.17, 13.13);
 9    JointPos endjointPos = new JointPos(-31.305, -82.998, 99.401, -104.426, -89.35, 3.696);
10
11    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
12    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
13    robot.MoveJ(safetyjointPos, safetydescPose, 1, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
14
15    robot.WeldingSetCurrentRelation(0, 495, 1, 10, 0);
16    robot.WeldingSetVoltageRelation(10, 45, 1, 10, 1);
17    robot.WeldingSetVoltage(0, 25, 1, 0);// ---- Spannung einstellen
18    robot.WeldingSetCurrent(0, 260, 0, 0);// ---- Strom einstellen
19
20    int rtn = robot.ArcWeldTraceAIChannelCurrent(4);
21    Console.WriteLine("ArcWeldTraceAIChannelCurrent rtn is " + rtn);
22    rtn = robot.ArcWeldTraceAIChannelVoltage(5);
23    Console.WriteLine("ArcWeldTraceAIChannelVoltage rtn is " + rtn);
24    rtn = robot.ArcWeldTraceCurrentPara((float)0, (float)5, (float)0, (float)500);
25    Console.WriteLine("ArcWeldTraceCurrentPara rtn is " + rtn);
26    rtn = robot.ArcWeldTraceVoltagePara((float)1.018, (float)10, (float)0, (float)50);
27    Console.WriteLine("ArcWeldTraceVoltagePara rtn is " + rtn);
28
29    robot.MoveJ(startjointPos, startdescPose, 1, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
30    robot.ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
31    robot.ARCStart(0, 0, 10000);
32    robot.WeaveStart(0);
33    // robot.MoveL(endjointPos, enddescPose, 1, 0, 100, 100, 2, -1, exaxisPos, 0, 0, offdese);
34    robot.ARCEnd(0, 0, 10000);
35    robot.WeaveEnd(0);
36    robot.ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
37    robot.MoveJ(safetyjointPos, safetydescPose, 1, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
38}

14.56. Erweiterte I/O-Ports für Schweißdrahtsuche einstellen

1/**
2* @brief Erweiterte I/O-Ports für Schweißdrahtsuche einstellen
3* @param searchDoneDINum Erweiterte DI-Nummer für "Drahtsuche erfolgreich" (Eingang)
4* @param searchStartDONum Erweiterte DO-Nummer für "Drahtsuche Start/Stopp" (Ausgang)
5* @return Fehlercode
6*/
7int SetWireSearchExtDIONum(int searchDoneDINum, int searchStartDONum);

14.57. Schweißdrahtsuche starten

 1/**
 2* @brief Schweißdrahtsuche starten
 3* @param [in] refPos 1-Referenzpunkt; 0-Kontaktpunkt (vermutlich)
 4* @param [in] searchVel Suchgeschwindigkeit [%]
 5* @param [in] searchDis Suchdistanz [mm]
 6* @param [in] autoBackFlag Automatische Rückkehr-Flag: 0-nicht automatisch; 1-automatisch
 7* @param [in] autoBackVel Geschwindigkeit der automatischen Rückkehr [%]
 8* @param [in] autoBackDis Distanz der automatischen Rückkehr [mm]
 9* @param [in] offectFlag 1-Suche mit Versatz; 0-Suche an Teachpunkt
10* @return Fehlercode
11*/
12int WireSearchStart(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.58. Schweißdrahtsuche beenden

 1/**
 2* @brief Schweißdrahtsuche beenden
 3* @param [in] refPos 1-Referenzpunkt; 2-Kontaktpunkt (vermutlich)
 4* @param [in] searchVel Suchgeschwindigkeit [%]
 5* @param [in] searchDis Suchdistanz [mm]
 6* @param [in] autoBackFlag Automatische Rückkehr-Flag: 0-nicht automatisch; 1-automatisch
 7* @param [in] autoBackVel Geschwindigkeit der automatischen Rückkehr [%]
 8* @param [in] autoBackDis Distanz der automatischen Rückkehr [mm]
 9* @param [in] offectFlag 1-Suche mit Versatz; 2-Suche an Teachpunkt (vermutlich)
10* @return Fehlercode
11*/
12int WireSearchEnd(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.59. Schweißdrahtsuch-Versatz berechnen

 1/**
 2* @brief Schweißdrahtsuch-Versatz berechnen
 3* @param [in] seamType Schweißnahttyp
 4* @param [in] method Berechnungsmethode
 5* @param [in] varNameRef Array mit Namen der Referenzpunkte (1-6), "#" für keinen Punkt
 6* @param [in] varNameRes Array mit Namen der Kontaktpunkte (1-6), "#" für keinen Punkt
 7* @param [out] offsetFlag 0-Versatz direkt zum Befehlspunkt addieren; 1-Versatz erfordert Koordinatentransformation des Befehlspunkts
 8* @param [out] offset Berechneter Versatz [x, y, z, a, b, c]
 9* @return Fehlercode
10*/
11int GetWireSearchOffset(int seamType, int method, string[] varNameRef, string[] varNameRes, ref int offsetFlag, ref DescPose offset);

14.60. Auf Abschluss der Schweißdrahtsuche warten

1/**
2* @brief Auf Abschluss der Schweißdrahtsuche warten
3* @param [in] name Name der Suche/Variable (vermutlich)
4* @return Fehlercode
5*/
6int WireSearchWait(string name);

14.61. Schweißdrahtsuch-Kontaktpunkt in Datenbank schreiben

1/**
2* @brief Schweißdrahtsuch-Kontaktpunkt in Datenbank schreiben
3* @param [in] varName Name des Kontaktpunkts (z.B. "RES0" bis "RES99")
4* @param [in] pos Kontaktpunktdaten [x, y, z, a, b, c]
5* @return Fehlercode
6*/
7int SetPointToDatabase(string varName, DescPose pos);

14.62. Codebeispiel für robotergestützte Schweißdrahtsuche

 1private void button53_Click(object sender, EventArgs e)
 2{
 3    DescPose toolCoord = new DescPose(0, 0, 200, 0, 0, 0);
 4    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
 5    DescPose wobjCoord = new DescPose(0, 0, 0, 0, 0, 0);
 6    robot.SetWObjCoord(1, wobjCoord, 0);
 7
 8    int rtn0, rtn1, rtn2 = 0;
 9    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
11
12    DescPose descStart = new DescPose(216.543, 445.175, 93.465, 179.683, 1.757, -112.641);
13    JointPos jointStart = new JointPos(-128.345, -86.660, 114.679, -119.625, -89.219, 74.303);
14
15    DescPose descEnd = new DescPose(111.143, 523.384, 87.659, 179.703, 1.835, -97.750);
16    JointPos jointEnd = new JointPos(-113.454, -81.060, 109.328, -119.954, -89.218, 74.302);
17
18    robot.MoveL(jointStart, descStart, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);
19    robot.MoveL(jointEnd, descEnd, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);
20
21    DescPose descREF0A = new DescPose(142.135, 367.604, 86.523, 179.728, 1.922, -111.089);
22    JointPos jointREF0A = new JointPos(-126.794, -100.834, 128.922, -119.864, -89.218, 74.302);
23
24    DescPose descREF0B = new DescPose(254.633, 463.125, 72.604, 179.845, 2.341, -114.704);
25    JointPos jointREF0B = new JointPos(-130.413, -81.093, 112.044, -123.163, -89.217, 74.303);
26
27    DescPose descREF1A = new DescPose(92.556, 485.259, 47.476, -179.932, 3.130, -97.512);
28    JointPos jointREF1A = new JointPos(-113.231, -83.815, 119.877, -129.092, -89.217, 74.303);
29
30    DescPose descREF1B = new DescPose(203.103, 583.836, 63.909, 179.991, 2.854, -103.372);
31    JointPos jointREF1B = new JointPos(-119.088, -69.676, 98.692, -121.761, -89.219, 74.303);
32
33    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
34    robot.MoveL(jointREF0A, descREF0A, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);  // Startpunkt
35    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  // Richtungspunkt
36    rtn1 = robot.WireSearchWait("REF0");
37    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
38
39    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
40    robot.MoveL(jointREF1A, descREF1A, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);  // Startpunkt
41    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  // Richtungspunkt
42    rtn1 = robot.WireSearchWait("REF1");
43    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
44
45    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
46    robot.MoveL(jointREF0A, descREF0A, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);  // Startpunkt
47    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  // Richtungspunkt
48    rtn1 = robot.WireSearchWait("RES0");
49    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
50
51    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
52    robot.MoveL(jointREF1A, descREF1A, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);  // Startpunkt
53    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  // Richtungspunkt
54    rtn1 = robot.WireSearchWait("RES1");
55    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
56
57    string[] varNameRef = { "REF0", "REF1", "#", "#", "#", "#" };
58    string[] varNameRes = { "RES0", "RES1", "#", "#", "#", "#" };
59    int offectFlag = 0;
60    DescPose offectPos = new DescPose(0, 0, 0, 0, 0, 0);
61    rtn0 = robot.GetWireSearchOffset(0, 0, varNameRef, varNameRes, ref offectFlag, ref offectPos);
62    robot.PointsOffsetEnable(0, offectPos);
63    robot.MoveL(jointStart, descStart, 1, 1, 100, 100, 100, -1, exaxisPos, 0, 0, offdese);
64    robot.MoveL(jointEnd, descEnd, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);
65    robot.PointsOffsetDisable();
66}

14.63. Schweißspannungsgradienten starten

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1/**
 2* @brief Schweißspannungsgradienten starten (allmähliche Änderung)
 3* @param [in] IOType Steuerungstyp: 0-Steuerkasten-I/O; 1-Digitalkommunikation (UDP); 2-Digitalkommunikation (ModbusTCP)
 4* @param [in] voltageStart Start-Schweißspannung (V)
 5* @param [in] voltageEnd End-Schweißspannung (V)
 6* @param [in] AOIndex AO-Portnummer des Steuerkastens (0-1)
 7* @param [in] blend Glättung? 0-nein; 1-ja
 8* @return Fehlercode
 9*/
10int WeldingSetVoltageGradualChangeStart(int IOType, double voltageStart, double voltageEnd, int AOIndex, int blend);

14.64. Schweißspannungsgradienten beenden

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Schweißspannungsgradienten beenden
3* @return Fehlercode
4*/
5int WeldingSetVoltageGradualChangeEnd();

14.65. Schweißstromgradienten starten

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1/**
 2* @brief Schweißstromgradienten starten (allmähliche Änderung)
 3* @param [in] IOType Steuerungstyp: 0-Steuerkasten-I/O; 1-Digitalkommunikation (UDP); 2-Digitalkommunikation (ModbusTCP)
 4* @param [in] currentStart Start-Schweißstrom (A)
 5* @param [in] currentEnd End-Schweißstrom (A)
 6* @param [in] AOIndex AO-Portnummer des Steuerkastens (0-1)
 7* @param [in] blend Glättung? 0-nein; 1-ja
 8* @return Fehlercode
 9*/
10int WeldingSetCurrentGradualChangeStart(int IOType, double currentStart, double currentEnd, int AOIndex, int blend);

14.66. Schweißstromgradienten beenden

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Schweißstromgradienten beenden
3* @return Fehlercode
4*/
5int WeldingSetCurrentGradualChangeEnd();

14.67. Codebeispiel für Schweißstrom- und Spannungsgradienten

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1private void btnweld_Click(object sender, EventArgs e)
 2{
 3    DescPose startdescPose = new DescPose(-319.303, -240.689, 116.379, -175.879, -0.337, 148.239);
 4    JointPos startjointPos = new JointPos(20.474, -103.554, 126.774, -116.682, -87.746, -37.709);
 5
 6    DescPose enddescPose = new DescPose(-454.166, -327.159, 62.217, 177.199, -2.276, 154.955);
 7    JointPos endjointPos = new JointPos(27.176, -74.423, 104.557, -119.315, -93.514, -37.698);
 8
 9    DescPose safedescPose = new DescPose(-375.533, -543.319, 19.798, 177.486, -2.489, 175.825);
10    JointPos safejointPos = new JointPos(48.074, -59.714, 89.955, -119.777, -93.508, -37.683);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    robot.WeldingSetCurrentRelation(0, 495, 1, 10, 0);
16    robot.WeldingSetVoltageRelation(10, 45, 1, 10, 1);
17
18    robot.WeldingSetVoltage(0, 25, 1, 0);//
19    robot.WeldingSetCurrent(0, 260, 0, 0);//
20
21    robot.MoveJ(safejointPos, safedescPose, 1, 0, 5, 100, 100, exaxisPos, -1, 0, offdese);
22
23    int rtn = robot.WeldingSetCurrentGradualChangeStart(0, 260, 220, 0, 0);
24    Console.WriteLine($"WeldingSetCurrentGradualChangeStart rtn is {rtn}");
25    rtn = robot.WeldingSetVoltageGradualChangeStart(0, 25, 22, 1, 0);
26    Console.WriteLine($"WeldingSetVoltageGradualChangeStart rtn is {rtn}");
27
28    rtn = robot.ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
29    Console.WriteLine($"ArcWeldTraceControl rtn is {rtn}");
30
31    robot.MoveJ(startjointPos, startdescPose, 1, 0, 5, 100, 100, exaxisPos, -1, 0, offdese);
32
33    robot.ARCStart(0, 0, 10000);
34    robot.WeaveStart(0);
35    rtn = robot.WeaveChangeStart(2, 1, 24, 36);
36    Console.WriteLine($"WeaveChangeStart rtn is {rtn}");
37    //robot.MoveL(endjointPos, enddescPose, 1, 0, 100, 100, 2, -1, exaxisPos, 0, 0, offdese);
38    robot.ARCEnd(0, 0, 10000);
39    robot.WeaveChangeEnd();
40    robot.WeaveEnd(0);
41    robot.ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
42    robot.WeldingSetCurrentGradualChangeEnd();
43    robot.WeldingSetVoltageGradualChangeEnd();
44}

14.68. Benutzerdefinierte Pendelparameter einstellen

Neu in Version C#SDK-V1.1.8: Web-3.8.6

 1/**
 2 * @brief Benutzerdefinierte Pendelparameter einstellen
 3 * @param [in] id Benutzerdefinierte Pendelnummer: 0-2
 4 * @param [in] pointNum Anzahl der Pendelpunkte 0-10
 5 * @param [in] points Array der Bewegungspunkte (x, y, z) relativ zum Pfad
 6 * @param [in] stayTimes Array der Verweilzeiten an den Punkten [ms]
 7 * @param [in] frequency Pendelfrequenz [Hz]
 8 * @param [in] incStayType Wartemodus: 0-Zyklus ohne Wartezeit; 1-Zyklus mit Wartezeit
 9 * @param [in] stationary Position während Wartezeit: 0-Bewegung wird fortgesetzt; 1-Position ruht
10 * @return Fehlercode
11 */
12int CustomWeaveSetPara(int id, int pointNum, DescTran[] points, double[] stayTimes, double frequency, int incStayType, int stationary);

14.69. Benutzerdefinierte Pendelparameter abrufen

Neu in Version C#SDK-V1.1.8: Web-3.8.6

 1/**
 2 * @brief Benutzerdefinierte Pendelparameter abrufen
 3 * @param [in] id Benutzerdefinierte Pendelnummer: 0-2
 4 * @param [out] pointNum Anzahl der Pendelpunkte
 5 * @param [out] points Array der Bewegungspunkte
 6 * @param [out] stayTimes Array der Verweilzeiten
 7 * @param [out] frequency Pendelfrequenz [Hz]
 8 * @param [out] incStayType Wartemodus
 9 * @param [out] stationary Position während Wartezeit
10 * @return Fehlercode
11 */
12int CustomWeaveGetPara(int id, ref int pointNum, ref DescTran[] points, ref double[] stayTimes, ref double frequency, ref int incStayType, ref int stationary);

14.70. Codebeispiel für benutzerdefinierte Pendelparameter

Neu in Version C#SDK-V1.1.8: Web-3.8.6

 1public void TestCoordMain5()
 2{
 3    DescTran[] points = new DescTran[10];
 4    for (int i = 0; i < 10; i++)
 5    {
 6        points[i] = new DescTran();
 7    }
 8    points[0].x = -3;
 9    points[0].y = -3;
10    points[0].z = 0;
11    points[1].x = -6;
12    points[1].y = 0;
13    points[1].z = 0;
14    points[2].x = -3;
15    points[2].y = 3;
16    points[2].z = 0;
17    points[3].x = 0;
18    points[3].y = 0;
19    points[3].z = 0;
20    double[] stayTimes = new double[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
21    int rtn = robot.CustomWeaveSetPara(2, 4, points, stayTimes, 1.000, 0, 0);
22    Console.WriteLine($"CustomWeaveSetPara rtn is {rtn}");
23    System.Threading.Thread.Sleep(1000);
24    int pointNum = 0;
25    double frequency = 0;
26    int incStayType = 0;
27    int stationary = 0;
28    rtn = robot.CustomWeaveGetPara(2, ref pointNum, ref points, ref stayTimes, ref frequency, ref incStayType, ref stationary);
29    Console.WriteLine($"pointNum is {pointNum}");
30    for (int i = 0; i < pointNum; i++)
31    {
32        Console.WriteLine($"point {i}, point x y z {points[i].x:F6} {points[i].y:F6} {points[i].z:F6}");
33    }
34    Console.WriteLine($"fre is {frequency:F6}, stay is {incStayType} {stationary}");
35    robot.WeaveSetPara(0, 9, 1.000000, 1, 5.000000, 6.000000, 5.000000, 50, 100, 100, 0, 1, 0.000000, 0.000000);
36    DescPose desc_p1 = new DescPose(-288.650, 367.807, 288.404, 0.000, -0.001, 0.001);
37    DescPose desc_p2 = new DescPose(-431.714, 367.815, 288.415, 0.001, 0.001, 0.000);
38    DescPose desc_p3 = new DescPose(-348.666, 427.798, 288.404, -0.000, -0.000, 0.001);
39    JointPos j1 = new JointPos(140.656,  -84.560,  -91.707, -93.734,  90.000,50.655 );
40    JointPos j2 = new JointPos ( 149.873, -98.298, -77.599,  -94.103,  90.000,  59.873 );
41    JointPos j3 = new JointPos (139.773,  -96.173, -80.014,  -93.814,  90.000,  49.772 );
42    ExaxisPos epos = new ExaxisPos(0,0,0,0);
43    DescPose offset_pos = new DescPose(0,0,0,0,0,0);
44    robot.MoveJ(j1, desc_p1, 3, 0, 100, 100, 100, epos, -1, 0, offset_pos);
45    robot.WeaveStart(0);
46    robot.Circle(j3, desc_p3, 3, 0, 100, 100, epos, j2, desc_p2, 3, 0, 100, 100, epos, 10, -1, offset_pos, 100, -1, 0);
47    robot.WeaveEnd(0);
48    robot.MoveJ(j1, desc_p1, 3, 0, 100, 100, 100, epos, -1, 0, offset_pos);
49    robot.WeaveStart(0);
50    robot.MoveC(j3, desc_p3, 3, 0, 100, 100, epos, 0, offset_pos, j2, desc_p2, 3, 0, 100, 100, epos, 0, offset_pos, 10, -1, 0);
51    robot.WeaveEnd(0);
52    robot.MoveJ(j1, desc_p1, 3, 0, 100, 100, 100, epos, -1, 0, offset_pos);
53    robot.WeaveStart(0);
54    robot.MoveL(j2, desc_p2, 3, 0, 100, 100, 10, -1, epos, 0, 0, offset_pos, 0, 0, 10);
55    robot.WeaveEnd(0);
56}

14.71. Konfiguration der Laserschweißgerät-Parameter

 1/**
 2* @brief Schreibt die Konfigurationsparameter für eine der 10 Prozessgruppen des Laserschweißgeräts und konfiguriert das Schweißgerät
 3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
 4* @param[in] num Gruppennummer, die eingestellt werden soll (1~10)
 5* @param[in] scanSpeed Scangeschwindigkeit
 6* @param[in] scanWidth Scanbreite
 7* @param[in] peakPower Spitzenleistung
 8* @param[in] dutyCycle Tastverhältnis
 9* @param[in] freq Frequenz
10* @return Fehlercode
11*/
12public int SetLaserWeldingParam(int io_type, int num, int scanSpeed, int scanWidth, int peakPower, int dutyCycle, int freq)

14.72. Laserschweißen Start/Stopp einstellen

1/**
2* @brief Laserschweißgerät ein-/ausschalten
3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
4* @param[in] status Steuerwort 0-Laser aus 1-Laser an
5* @param[in] max_waittime Maximale Wartezeit
6* @return Fehlercode
7*/
8public int SetLaserWeldingStartEnd(int io_type, int status, int max_waittime)

14.73. Laserschweißgerät aktivieren/deaktivieren

1/**
2* @brief Laserschweißgerät aktivieren/deaktivieren
3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
4* @param[in] status 0-deaktivieren 1-aktivieren
5* @return Fehlercode
6*/
7public int SetLaserWeldingEnable(int io_type, int status)

14.74. Laserschweißgerät-Fehler zurücksetzen

1/**
2* @brief Fehler des Laserschweißgeräts zurücksetzen
3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
4* @param[in] status Steuerwort 0-ungültig 1-Fehler zurücksetzen
5* @return Fehlercode
6*/
7public int ResetLaserWeldingErr(int io_type, int status)

14.75. Laserschweißgerät-Betriebsstatus abrufen

1/**
2* @brief Betriebsstatus des Laserschweißgeräts abrufen
3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
4* @param[out] status Steuerwort 0-gestoppt 1-läuft
5* @return Fehlercode
6*/
7public int GetLaserWeldingRunningState(int io_type, ref int status)

14.76. Laserschweißgerät-Fehlerstatus abrufen

1/**
2* @brief Fehlerstatus des Laserschweißgeräts abrufen
3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
4* @param[out] status 0-kein Fehler 1-Fehler vorhanden
5* @return Fehlercode
6*/
7public int GetLaserWeldingErrState(int io_type, ref int status)

14.77. Konfigurierte Parameter des Laserschweißgeräts abrufen

 1/**
 2* @brief Konfigurationsparameter für eine der 10 Prozessgruppen des Laserschweißgeräts abrufen
 3* @param[in] num Gruppennummer, die eingestellt werden soll (1~10)
 4* @param[out] scanSpeed Scangeschwindigkeit
 5* @param[out] scanWidth Scanbreite
 6* @param[out] peakPower Spitzenleistung
 7* @param[out] dutyCycle Tastverhältnis
 8* @param[out] freq Frequenz
 9* @return Fehlercode
10*/
11public int GetLaserWeldingParamTarget(int num, ref int scanSpeed, ref int scanWidth, ref int peakPower, ref int dutyCycle, ref int freq)

14.78. Aktuell aktive Konfigurationsparameter des Laserschweißgeräts abrufen

 1/**
 2* @brief Die aktuell aktiven Konfigurationsparameter des Laserschweißgeräts abrufen
 3* @param[in] io_type Kommunikationstyp 0-IO 1-UDP
 4* @param[out] scanSpeed Scangeschwindigkeit
 5* @param[out] scanWidth Scanbreite
 6* @param[out] peakPower Spitzenleistung
 7* @param[out] dutyCycle Tastverhältnis
 8* @param[out] freq Frequenz
 9* @return Fehlercode
10*/
11public int GetLaserWeldingParamActual(int io_type, ref int scanSpeed, ref int scanWidth, ref int peakPower, ref int dutyCycle, ref int freq)

14.79. Erweiterte IO-Aktivierungs-DO-Port des Laserschweißgeräts konfigurieren

1/**
2* @brief Erweiterte IO der Laserschweißgeräts einstellen, Aktivierungs-DO-Port
3* @param[in] ctrlModeDONum Erweiterte DO-Portnummer für die Aktivierung des Laserschweißgeräts
4* @return Fehlercode
5*/
6public int SetLaserWeldingEnableExtDoNum(int ctrlModeDONum)

14.80. Erweiterte IO-Start-DO-Port des Laserschweißgeräts konfigurieren

1/**
2* @brief Erweiterte IO der Laserschweißgeräts einstellen, Start-DO-Port
3* @param[in] ctrlModeDONum Erweiterte DO-Portnummer für den Start (Laser an/aus) des Laserschweißgeräts
4* @return Fehlercode
5*/
6public int SetLaserWeldingStartExtDoNum(int ctrlModeDONum)

14.81. Erweiterte IO-Fehlerrücksetzungs-DO-Port des Laserschweißgeräts konfigurieren

1/**
2* @brief Erweiterte IO der Laserschweißgeräts einstellen, Fehlerrücksetzungs-DO-Port
3* @param[in] ctrlModeDONum Erweiterte DO-Portnummer für die Fehlerrücksetzung des Laserschweißgeräts
4* @return Fehlercode
5*/
6public int SetLaserWeldingErrResetExtDoNum(int ctrlModeDONum)

14.82. Erweiterte DI für Betriebsstatus (Laser an-Status) des Laserschweißgeräts konfigurieren

1/**
2* @brief Erweiterte DI für den Betriebsstatus (Laser an-Status) des Laserschweißgeräts konfigurieren
3* @param[in] diNum Erweiterte DI-Portnummer für den Betriebsstatus (Laser an-Status) des Laserschweißgeräts
4* @return Fehlercode
5*/
6public int SetLaserWeldingRunningStateExtDiNum(int diNum)

14.83. Erweiterte IO-Fehlerstatus-DI-Port des Laserschweißgeräts konfigurieren

1/**
2* @brief Erweiterte DI für den Fehlerstatus des Laserschweißgeräts konfigurieren
3* @param[in] diNum Erweiterte DI-Portnummer für den Fehlerstatus des Laserschweißgeräts
4* @return Fehlercode
5*/
6public int SetLaserWeldingErrStateExtDiNum(int diNum)

14.84. Laserschweiß-Codebeispiel

 1private void btnLaserWeld_Click(object sender, EventArgs e)
 2{
 3
 4    int rtn = -1;
 5    // UDP-Treiber laden
 6    rtn = robot.ExtDevLoadUDPDriver();
 7    if (rtn != 0)
 8    {
 9        Console.WriteLine("Failed to load UDP driver, error code: " + rtn);
10    }
11    Thread.Sleep(1000);
12
13    // Laserschweißparameter einstellen: io_type=1, num=3, scanSpeed=2000, scanWidth=3, peakPower=1500, dutyCycle=100, freq=1000
14    rtn = robot.SetLaserWeldingParam(1, 3, 2000, 3, 1500, 100, 1000);
15    if (rtn != 0)
16    {
17        Console.WriteLine("SetLaserWeldingParam failed, error code: " + rtn);
18    }
19    else
20    {
21        Console.WriteLine("SetLaserWeldingParam success");
22    }
23
24    // Start-DO-Portnummer einstellen
25    rtn = robot.SetLaserWeldingStartExtDoNum(1);
26    if (rtn != 0)
27    {
28        Console.WriteLine("SetLaserWeldingStartExtDoNum failed, error code: " + rtn);
29    }
30
31    // Auf Modus 0 (Teach-Modus) einstellen
32    rtn = robot.Mode(0);
33    if (rtn != 0)
34    {
35        Console.WriteLine("Set mode 0 failed, error code: " + rtn);
36    }
37    Thread.Sleep(1000);
38
39
40    DescPose desc_pos1 = new DescPose(-303.721, -206.960, 297.105, 152.209, 19.857, 109.166);
41    DescPose desc_pos2 = new DescPose(-301.575, -254.888, 284.786, 155.919, 26.946, 111.629);
42    DescPose desc_safe = new DescPose(-344.386, -280.830, 435.073, 173.835, 15.333, 124.931);
43
44
45    ExaxisPos exaxis = new ExaxisPos(0.0, 0.0, 0.0, 0.0);
46    DescPose offset = new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
47
48    // Zum ersten Schweißpunkt bewegen
49    int error = robot.MoveL(desc_pos1, 0, 0, 100, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0);
50    Console.WriteLine("MoveL to pos1 return: " + error);
51
52    // Laser starten (Laser an)
53    rtn = robot.SetLaserWeldingStartEnd(1, 1, 10000);
54    if (rtn != 0)
55    {
56        Console.WriteLine("SetLaserWeldingStartEnd (start) failed, error code: " + rtn);
57    }
58    else
59    {
60        Console.WriteLine("Laser started");
61    }
62
63    // Zum zweiten Schweißpunkt bewegen (während des Schweißens)
64    rtn = robot.MoveL(desc_pos2, 0, 0, 30, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0);
65    Console.WriteLine("MoveL to pos2 return: " + rtn);
66
67    Thread.Sleep(500);
68    // Laser stoppen (Laser aus)
69    rtn = robot.SetLaserWeldingStartEnd(1, 0, 10000);
70    if (rtn != 0)
71    {
72        Console.WriteLine("SetLaserWeldingStartEnd (stop) failed, error code: " + rtn);
73    }
74    else
75    {
76        Console.WriteLine("Laser stopped");
77    }
78
79    // Zum Sicherheitspunkt bewegen
80    rtn = robot.MoveL(desc_safe, 0, 0, 100, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0);
81    Console.WriteLine("MoveL to safe_pos return: " + rtn);
82
83    // Auf Modus 1 (Fernmodus) einstellen
84    rtn = robot.Mode(1);
85    if (rtn != 0)
86    {
87        Console.WriteLine("Set mode 1 failed, error code: " + rtn);
88    }
89    Thread.Sleep(1000);
90
91    // Verbindung schließen
92    robot.CloseRPC();
93    Thread.Sleep(1000);
94
95    Console.WriteLine("Test completed");
96
97    return ;
98}