14. Robot di saldatura

14.1. Impostare i parametri della curva del processo di saldatura

 1/**
 2 * @brief  Imposta i parametri della curva del processo di saldatura
 3 * @param  [in] id  Numero del processo di saldatura (1-99)
 4 * @param  [in] startCurrent  Corrente di accensione dell'arco (A)
 5 * @param  [in] startVoltage  Tensione di accensione dell'arco (V)
 6 * @param  [in] startTime  Tempo di accensione dell'arco (ms)
 7 * @param  [in] weldCurrent  Corrente di saldatura (A)
 8 * @param  [in] weldVoltage  Tensione di saldatura (V)
 9 * @param  [in] endCurrent  Corrente di spegnimento dell'arco (A)
10 * @param  [in] endVoltage  Tensione di spegnimento dell'arco (V)
11 * @param  [in] endTime  Tempo di spegnimento dell'arco (ms)
12 * @return  Codice di errore
13 */
14int WeldingSetProcessParam(int id, double startCurrent, double startVoltage, double startTime, double weldCurrent, double weldVoltage, double endCurrent, double endVoltage, double endTime);

14.2. Ottenere i parametri della curva del processo di saldatura

 1/**
 2 * @brief  Ottieni i parametri della curva del processo di saldatura
 3 * @param  [in] id  Numero del processo di saldatura (1-99)
 4 * @param  [out] startCurrent  Corrente di accensione dell'arco (A)
 5 * @param  [out] startVoltage  Tensione di accensione dell'arco (V)
 6 * @param  [out] startTime  Tempo di accensione dell'arco (ms)
 7 * @param  [out] weldCurrent  Corrente di saldatura (A)
 8 * @param  [out] weldVoltage  Tensione di saldatura (V)
 9 * @param  [out] endCurrent  Corrente di spegnimento dell'arco (A)
10 * @param  [out] endVoltage  Tensione di spegnimento dell'arco (V)
11 * @param  [out] endTime  Tempo di spegnimento dell'arco (ms)
12 * @return  Codice di errore
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. Impostare la relazione tra corrente di saldatura e uscita analogica

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Imposta la relazione tra corrente di saldatura e uscita analogica
3 * @param [in] currentMin  Valore corrente del punto sinistro della relazione lineare corrente-uscita analogica (A)
4 * @param [in] currentMax  Valore corrente del punto destro della relazione lineare corrente-uscita analogica (A)
5 * @param [in] outputVoltageMin  Valore di tensione di uscita analogica del punto sinistro della relazione lineare (V)
6 * @param [in] outputVoltageMax  Valore di tensione di uscita analogica del punto destro della relazione lineare (V)
7 * @return Codice di errore
8 */
9int WeldingSetCurrentRelation(double currentMin, double currentMax, double outputVoltageMin, double outputVoltageMax);

14.4. Impostare la relazione tra tensione di saldatura e uscita analogica

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Imposta la relazione tra tensione di saldatura e uscita analogica
3 * @param [in] weldVoltageMin  Valore di tensione di saldatura del punto sinistro della relazione lineare (V)
4 * @param [in] weldVoltageMax  Valore di tensione di saldatura del punto destro della relazione lineare (V)
5 * @param [in] outputVoltageMin  Valore di tensione di uscita analogica del punto sinistro della relazione lineare (V)
6 * @param [in] outputVoltageMax  Valore di tensione di uscita analogica del punto destro della relazione lineare (V)
7 * @return Codice di errore
8 */
9int WeldingSetVoltageRelation(double weldVoltageMin, double weldVoltageMax, double outputVoltageMin, double outputVoltageMax);

14.5. Ottenere la relazione tra corrente di saldatura e uscita analogica

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Ottieni la relazione tra corrente di saldatura e uscita analogica
3 * @param [out] currentMin  Valore corrente del punto sinistro della relazione lineare corrente-uscita analogica (A)
4 * @param [out] currentMax  Valore corrente del punto destro della relazione lineare corrente-uscita analogica (A)
5 * @param [out] outputVoltageMin  Valore di tensione di uscita analogica del punto sinistro della relazione lineare (V)
6 * @param [out] outputVoltageMax  Valore di tensione di uscita analogica del punto destro della relazione lineare (V)
7 * @return Codice di errore
8 */
9int WeldingGetCurrentRelation(ref double currentMin, ref double currentMax, ref double outputVoltageMin, ref double outputVoltageMax);

14.6. Ottenere la relazione tra tensione di saldatura e uscita analogica

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Ottieni la relazione tra tensione di saldatura e uscita analogica
3 * @param [out] weldVoltageMin  Valore di tensione di saldatura del punto sinistro della relazione lineare (V)
4 * @param [out] weldVoltageMax  Valore di tensione di saldatura del punto destro della relazione lineare (V)
5 * @param [out] outputVoltageMin  Valore di tensione di uscita analogica del punto sinistro della relazione lineare (V)
6 * @param [out] outputVoltageMax  Valore di tensione di uscita analogica del punto destro della relazione lineare (V)
7 * @return Codice di errore
8 */
9int WeldingGetVoltageRelation(ref double weldVoltageMin, ref double weldVoltageMax, ref double outputVoltageMin, ref double outputVoltageMax);

14.7. Impostare la corrente di saldatura

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Imposta la corrente di saldatura
3 * @param [in] ioType  Tipo IO di controllo 0-IO della centralina; 1-IO esteso
4 * @param [in] current  Valore della corrente di saldatura (A)
5 * @param [in] AOIndex  Porta di uscita analogica della centralina per il controllo della corrente di saldatura (0-1)
6 * @return Codice di errore
7 */
8int WeldingSetCurrent(int ioType, double current, int AOIndex);

14.8. Impostare la tensione di saldatura

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Imposta la tensione di saldatura
3 * @param [in] ioType  Tipo IO di controllo 0-IO della centralina; 1-IO esteso
4 * @param [in] voltage  Valore della tensione di saldatura (V)
5 * @param [in] AOIndex  Porta di uscita analogica della centralina per il controllo della tensione di saldatura (0-1)
6 * @return Codice di errore
7 */
8int WeldingSetVoltage(int ioType, double voltage, int AOIndex);

14.9. Impostare i parametri di oscillazione

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

 1/**
 2 * @brief Imposta i parametri di oscillazione
 3 * @param [in] weaveNum  Numero di configurazione dei parametri di saldatura oscillante
 4 * @param [in] weaveType  Tipo di oscillazione 0-Oscillazione a onda triangolare piana; 1-Oscillazione a onda triangolare L verticale; 2-Oscillazione circolare in senso orario; 3-Oscillazione circolare in senso antiorario; 4-Oscillazione a onda sinusoidale piana; 5-Oscillazione a onda sinusoidale L verticale; 6-Oscillazione a onda triangolare verticale; 7-Oscillazione a onda sinusoidale verticale
 5 * @param [in] weaveFrequency  Frequenza di oscillazione (Hz)
 6 * @param [in] weaveIncStayTime  Modalità di attesa 0-Il ciclo non include il tempo di attesa; 1-Il ciclo include il tempo di attesa
 7 * @param [in] weaveRange  Ampiezza di oscillazione (mm)
 8 * @param [in] weaveLeftRange  Lunghezza della corda sinistra per l'oscillazione triangolare verticale (mm)
 9 * @param [in] weaveRightRange  Lunghezza della corda destra per l'oscillazione triangolare verticale (mm)
10 * @param [in] additionalStayTime  Tempo di permanenza nel punto del triangolo verticale (ms)
11 * @param [in] weaveLeftStayTime  Tempo di permanenza a sinistra (ms)
12 * @param [in] weaveRightStayTime  Tempo di permanenza a destra (ms)
13 * @param [in] weaveCircleRadio  Rapporto di ritorno per l'oscillazione circolare (0-100%)
14 * @param [in] weaveStationary  Attesa della posizione di oscillazione, 0-La posizione continua a muoversi durante il tempo di attesa; 1-La posizione rimane ferma durante il tempo di attesa
15 * @param [in] weaveYawAngle  Angolo di direzione dell'oscillazione (rotazione attorno all'asse Z dell'oscillazione), unità °
16 * @return Codice di errore
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. Esempio di codice per impostare i parametri di saldatura

Nuovo nella versione 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. Impostare i parametri di oscillazione in tempo reale

Nuovo nella versione C#SDK-v1.0.4.

 1/**
 2 * @brief Imposta i parametri di oscillazione in tempo reale
 3 * @param [in] weaveNum  Numero di configurazione dei parametri di saldatura oscillante
 4 * @param [in] weaveType  Tipo di oscillazione 0-Oscillazione a onda triangolare piana; 1-Oscillazione a onda triangolare L verticale; 2-Oscillazione circolare in senso orario; 3-Oscillazione circolare in senso antiorario; 4-Oscillazione a onda sinusoidale piana; 5-Oscillazione a onda sinusoidale L verticale; 6-Oscillazione a onda triangolare verticale; 7-Oscillazione a onda sinusoidale verticale
 5 * @param [in] weaveFrequency  Frequenza di oscillazione (Hz)
 6 * @param [in] weaveIncStayTime  Modalità di attesa 0-Il ciclo non include il tempo di attesa; 1-Il ciclo include il tempo di attesa
 7 * @param [in] weaveRange  Ampiezza di oscillazione (mm)
 8 * @param [in] weaveLeftStayTime  Tempo di permanenza a sinistra (ms)
 9 * @param [in] weaveRightStayTime  Tempo di permanenza a destra (ms)
10 * @param [in] weaveCircleRadio  Rapporto di ritorno per l'oscillazione circolare (0-100%)
11 * @param [in] weaveStationary  Attesa della posizione di oscillazione, 0-La posizione continua a muoversi durante il tempo di attesa; 1-La posizione rimane ferma durante il tempo di attesa
12 * @return Codice di errore
13 */
14int WeaveOnlineSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);

14.12. Impostare i parametri di rilevamento dell’interruzione dell’arco di saldatura del robot

1/**
2 * @brief Imposta i parametri di rilevamento dell'interruzione accidentale dell'arco di saldatura del robot
3 * @param [in] checkEnable  Abilita il rilevamento; 0-Disabilitato; 1-Abilitato
4 * @param [in] arcInterruptTimeLength  Durata di conferma dell'interruzione dell'arco (ms)
5 * @return Codice di errore
6 */
7int WeldingSetCheckArcInterruptionParam(int checkEnable, int arcInterruptTimeLength)

14.13. Ottenere i parametri di rilevamento dell’interruzione dell’arco di saldatura del robot

1/**
2 * @brief Ottieni i parametri di rilevamento dell'interruzione accidentale dell'arco di saldatura del robot
3 * @param [out] checkEnable  Abilita il rilevamento; 0-Disabilitato; 1-Abilitato
4 * @param [out] arcInterruptTimeLength  Durata di conferma dell'interruzione dell'arco (ms)
5 * @return Codice di errore
6 */
7int WeldingGetCheckArcInterruptionParam(ref int checkEnable, ref int arcInterruptTimeLength)

14.14. Impostare i parametri di recupero dell’interruzione di saldatura del robot

1/**
2 * @brief Imposta i parametri di recupero dell'interruzione di saldatura del robot
3 * @param[in] enable  Abilita il recupero dell'interruzione di saldatura
4 * @param[in] length  Distanza di sovrapposizione della saldatura (mm)
5 * @param[in] velocity  Velocità percentuale del robot per tornare al punto di riaccensione (0-100)
6 * @param[in] moveType  Metodo di movimento del robot verso il punto di riaccensione; 0-LIN; 1-PTP
7 * @return Codice di errore
8 */
9int WeldingSetReWeldAfterBreakOffParam(int enable, double length, double velocity, int moveType)

14.15. Ottenere i parametri di recupero dell’interruzione di saldatura del robot

1/**
2 * @brief Ottieni i parametri di recupero dell'interruzione di saldatura del robot
3 * @param [out] enable  Abilita il recupero dell'interruzione di saldatura
4 * @param [out] length  Distanza di sovrapposizione della saldatura (mm)
5 * @param [out] velocity  Velocità percentuale del robot per tornare al punto di riaccensione (0-100)
6 * @param [out] moveType  Metodo di movimento del robot verso il punto di riaccensione; 0-LIN; 1-PTP
7 * @return Codice di errore
8 */
9int WeldingGetReWeldAfterBreakOffParam(ref int enable, ref double length, ref double velocity, ref int moveType)

14.16. Impostare la porta DO estesa per la modalità di controllo della saldatrice

1/**
2 * @brief Imposta la porta DO estesa per la modalità di controllo della saldatrice
3 * @param DONum  Porta DO per la modalità di controllo della saldatrice (0-127)
4 * @return Codice di errore
5 */
6int SetWeldMachineCtrlModeExtDoNum(int DONum);

14.17. Imposta Modalità di Controllo della Saldatrice

1/**
2* @brief Imposta la modalità di controllo della saldatrice
3* @param [in] mode Modalità di controllo della saldatrice; 0-Modo unico DC; 1-Modo unico a impulsi; 2-Modalità JOB; 3-Modalità controllo locale; 4-Modalità separata; 5-Modalità CC/CV; 6-TIG; 7-CMT
4* @param [in] ioType Tipo di controllo; 0-IO del box di controllo; 1-Protocollo di comunicazione digitale (UDP); 2-Protocollo di comunicazione digitale (ModbusTCP)
5* @return Codice di errore
6*/
7public int SetWeldMachineCtrlMode(int mode,int ioType = 1)

14.18. Inizio della saldatura

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Inizia la saldatura
3 * @param [in] ioType  Tipo IO 0-IO del controllore; 1-IO esteso
4 * @param [in] arcNum  Numero del file di configurazione della saldatrice
5 * @param [in] timeout  Tempo di timeout per l'accensione dell'arco
6 * @return Codice di errore
7 */
8int ARCStart(int ioType, int arcNum, int timeout);

14.19. Fine della saldatura

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Termina la saldatura
3 * @param [in] ioType  Tipo IO 0-IO del controllore; 1-IO esteso
4 * @param [in] arcNum  Numero del file di configurazione della saldatrice
5 * @param [in] timeout  Tempo di timeout per lo spegnimento dell'arco
6 * @return Codice di errore
7 */
8int ARCEnd(int ioType, int arcNum, int timeout);

14.20. Inizio dell’oscillazione

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Inizia l'oscillazione
3 * @param [in] weaveNum  Numero di configurazione dei parametri di saldatura oscillante
4 * @return Codice di errore
5 */
6int WeaveStart(int weaveNum);

14.21. Fine dell’oscillazione

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Termina l'oscillazione
3 * @param [in] weaveNum  Numero di configurazione dei parametri di saldatura oscillante
4 * @return Codice di errore
5 */
6int WeaveEnd(int weaveNum);

14.22. Alimentazione del filo in avanti

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Alimentazione del filo in avanti
3 * @param [in] ioType  Tipo IO 0-IO del controllore; 1-IO esteso
4 * @param [in] wireFeed  Controllo alimentazione filo 0-Ferma alimentazione filo; 1-Alimenta filo
5 * @return Codice di errore
6 */
7int SetForwardWireFeed(int ioType, int wireFeed);

14.23. Alimentazione del filo all’indietro

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Alimentazione del filo all'indietro
3 * @param [in] ioType  Tipo IO 0-IO del controllore; 1-IO esteso
4 * @param [in] wireFeed  Controllo alimentazione filo 0-Ferma alimentazione filo; 1-Alimenta filo
5 * @return Codice di errore
6 */
7int SetReverseWireFeed(int ioType, int wireFeed);

14.24. Alimentazione del gas

Nuovo nella versione C#SDK-v1.0.4.

1/**
2 * @brief Alimentazione del gas
3 * @param [in] ioType  Tipo IO 0-IO del controllore; 1-IO esteso
4 * @param [in] airControl  Controllo alimentazione gas 0-Ferma alimentazione gas; 1-Alimenta gas
5 * @return Codice di errore
6 */
7int SetAspirated(int ioType, int airControl);

14.25. Impostare il recupero della saldatura dopo l’interruzione del robot

1/**
2 * @brief Imposta il recupero della saldatura dopo l'interruzione del robot
3 * @return Codice di errore
4 */
5int WeldingStartReWeldAfterBreakOff()

14.26. Impostare l’uscita dalla saldatura dopo l’interruzione del robot

1/**
2 * @brief Imposta l'uscita dalla saldatura dopo l'interruzione del robot
3 * @return Codice di errore
4 */
5int WeldingAbortWeldAfterBreakOff()

14.27. Esempio di codice

 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. Inizio della saldatura a segmenti

Nuovo nella versione C#SDK-v1.0.4.

 1/**
 2 * @brief Inizia la saldatura a segmenti
 3 * @param [in] startDesePos  Posizione cartesiana del punto di inizio
 4 * @param [in] endDesePos  Posa cartesiana del punto di fine
 5 * @param [in] startJPos  Posa articolare del punto di inizio
 6 * @param [in] endJPos  Posa articolare del punto di fine
 7 * @param [in] weldLength  Lunghezza del segmento di saldatura (mm)
 8 * @param [in] noWeldLength  Lunghezza del segmento non saldato (mm)
 9 * @param [in] weldIOType  Tipo IO di saldatura (0-IO della centralina; 1-IO esteso)
10 * @param [in] arcNum  Numero del file di configurazione della saldatrice
11 * @param [in] weldTimeout  Tempo di timeout per accensione/spegnimento dell'arco
12 * @param [in] isWeave  Se oscillare
13 * @param [in] weaveNum  Numero di configurazione dei parametri di saldatura oscillante
14 * @param [in] tool  Numero dello strumento
15 * @param [in] user  Numero del pezzo
16 * @param [in] vel   Percentuale di velocità, range [0~100]
17 * @param [in] acc   Percentuale di accelerazione, range [0~100], attualmente non disponibile
18 * @param [in] ovl   Fattore di scala della velocità, range [0~100]
19 * @param [in] blendR [-1.0]-Movimento fino a destinazione (bloccante), [0~1000.0]-Raggio di levigatura (non bloccante), unità mm
20 * @param [in] epos   Posizione degli assi estesi, unità mm
21 * @param [in] search  0-Nessuna ricerca del filo, 1-Ricerca del filo
22 * @param [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/pezzo, 2-Offset nel sistema di coordinate utensile
23 * @param [in] offset_pos   Quantità di offset della posa
24 * @return Codice di errore
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. Esempio di codice per la saldatura a segmenti del robot

Nuovo nella versione 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. Inizio della simulazione di oscillazione

1/**
2 * @brief  Inizia la simulazione di oscillazione
3 * @param  [in] weaveNum  Numero dei parametri di oscillazione
4 * @return  Codice di errore
5 */
6int WeaveStartSim(int weaveNum);

14.31. Fine della simulazione di oscillazione

1/**
2 * @brief  Termina la simulazione di oscillazione
3 * @param  [in] weaveNum  Numero dei parametri di oscillazione
4 * @return  Codice di errore
5 */
6int WeaveEndSim(int weaveNum);

14.32. Inizio del rilevamento di traiettoria di allarme (senza movimento)

1/**
2 * @brief  Inizia il rilevamento di traiettoria di allarme (senza movimento)
3 * @param  [in] weaveNum   Numero dei parametri di oscillazione
4 * @return  Codice di errore
5 */
6int WeaveInspectStart(int weaveNum);

14.33. Fine del rilevamento di traiettoria di allarme (senza movimento)

1/**
2 * @brief Termina il rilevamento di traiettoria di allarme (senza movimento)
3 * @param  [in] weaveNum   Numero dei parametri di oscillazione
4 * @return  Codice di errore
5 */
6int WeaveInspectEnd(int weaveNum);

14.34. Inizio della transizione graduale di oscillazione

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief  Inizia la transizione graduale di oscillazione
3 * @param [in] weaveChangeFlag 1-Cambia parametri di oscillazione; 2-Cambia parametri di oscillazione + velocità di saldatura
4 * @param [in] weaveNum  Numero di oscillazione
5 * @param [in] velStart  Velocità di inizio saldatura, (cm/min)
6 * @param [in] velEnd  Velocità di fine saldatura, (cm/min)
7 * @return  Codice di errore
8 */
9int WeaveChangeStart(int weaveChangeFlag, int weaveNum, double velStart, double velEnd);

14.35. Fine della transizione graduale di oscillazione

1/**
2 * @brief  Termina la transizione graduale di oscillazione
3 * @return  Codice di errore
4 */
5int WeaveChangeEnd()

14.36. Esempio di codice per la saldatura con transizione graduale di oscillazione del robot

Nuovo nella versione 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. IO esteso - Configurare il segnale di rilevamento del gas della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di rilevamento del gas della saldatrice
3 * @param  [in] DONum  Numero DO esteso per il segnale di rilevamento del gas
4 * @return  Codice di errore
5 */
6int SetAirControlExtDoNum(int DONum);

14.38. IO esteso - Configurare il segnale di accensione dell’arco della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di accensione dell'arco della saldatrice
3 * @param  [in] DONum  Numero DO esteso per il segnale di accensione dell'arco
4 * @return  Codice di errore
5 */
6int SetArcStartExtDoNum(int DONum);

14.39. IO esteso - Configurare il segnale di alimentazione all’indietro del filo della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di alimentazione all'indietro del filo della saldatrice
3 * @param  [in] DONum  Numero DO esteso per il segnale di alimentazione all'indietro del filo
4 * @return  Codice di errore
5 */
6int SetWireReverseFeedExtDoNum(int DONum);

14.40. IO esteso - Configurare il segnale di alimentazione in avanti del filo della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di alimentazione in avanti del filo della saldatrice
3 * @param  [in] DONum  Numero DO esteso per il segnale di alimentazione in avanti del filo
4 * @return  Codice di errore
5 */
6int SetWireForwardFeedExtDoNum(int DONum);

14.41. IO esteso - Configurare il segnale di successo dell’accensione dell’arco della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di successo dell'accensione dell'arco della saldatrice
3 * @param  [in] DINum  Numero DI esteso per il segnale di successo dell'accensione dell'arco
4 * @return  Codice di errore
5 */
6int SetArcDoneExtDiNum(int DINum);

14.42. IO esteso - Configurare il segnale di pronto della saldatrice

1/**
2 * @brief IO esteso - Configura il segnale di pronto della saldatrice
3 * @param  [in] DINum  Numero DI esteso per il segnale di pronto della saldatrice
4 * @return  Codice di errore
5 */
6int SetWeldReadyExtDiNum(int DINum);

14.43. IO esteso - Configurare i segnali di recupero dell’interruzione di saldatura

1/**
2 * @brief IO esteso - Configura i segnali di recupero dell'interruzione di saldatura
3 * @param  [in] reWeldDINum  Numero DI esteso per il segnale di recupero della saldatura dopo interruzione
4 * @param  [in] abortWeldDINum  Numero DI esteso per il segnale di uscita dalla saldatura dopo interruzione
5 * @return  Codice di errore
6 */
7int SetExtDIWeldBreakOffRecover(int reWeldDINum, int abortWeldDINum);

14.44. Esempio di codice per impostare i segnali di saldatura IO estesi

 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. Controllo del tracciamento dell’arco

 1/**
 2 * @brief  Controllo del tracciamento dell'arco
 3 * @param  [in] flag  Interruttore, 0-Spegnere; 1-Accendere
 4 * @param  [in] dalayTime  Tempo di ritardo, unità ms
 5 * @param  [in] isLeftRight  Compensazione deviazione sinistra-destra
 6 * @param  [in] klr  Coefficiente di regolazione sinistra-destra (sensibilità)
 7 * @param  [in] tStartLr  Tempo di inizio compensazione sinistra-destra cyc
 8 * @param  [in] stepMaxLr  Compensazione massima per volta sinistra-destra mm
 9 * @param  [in] sumMaxLr  Compensazione totale massima sinistra-destra mm
10 * @param  [in] isUpLow  Compensazione deviazione alto-basso
11 * @param  [in] kud  Coefficiente di regolazione alto-basso (sensibilità)
12 * @param  [in] tStartUd  Tempo di inizio compensazione alto-basso cyc
13 * @param  [in] stepMaxUd  Compensazione massima per volta alto-basso mm
14 * @param  [in] sumMaxUd  Compensazione totale massima alto-basso mm
15 * @param  [in] axisSelect  Selezione sistema coordinate alto-basso, 0-Oscillazione; 1-Utensile; 2-Base
16 * @param  [in] referenceType  Metodo impostazione corrente di riferimento alto-basso, 0-Retroazione; 1-Costante
17 * @param  [in] referSampleStartUd  Conteggio inizio campionamento corrente di riferimento alto-basso (retroazione), cyc
18 * @param  [in] referSampleCountUd  Conteggio ciclo campionamento corrente di riferimento alto-basso (retroazione), cyc
19 * @param  [in] referenceCurrent  Corrente di riferimento alto-basso mA
20 *  @param  [in] offsetType  Tipo di tracciamento offset, 0-Nessun offset; 1-Campionamento; 2-Percentuale  /version 3.7.9
21 * @param  [in] offsetParameter  Parametro offset; Campionamento (tempo di inizio campionamento offset, per default campiona un ciclo); Percentuale (percentuale offset (-100 ~ 100)) /version 3.7.9
22 * @return  Codice di errore
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. Selezione banda passante AI per il tracciamento dell’arco

1/**
2 * @brief  Selezione banda passante AI per il tracciamento dell'arco
3 * @param  [in] channel  Selezione banda passante AI per il tracciamento dell'arco, [0-3]
4 * @return  Codice di errore
5 */
6int ArcWeldTraceExtAIChannelConfig(int channel);

14.47. Attivazione tracciamento arco + compensazione multi-strato multi-passata

1/**
2 * @brief Attiva tracciamento arco + compensazione multi-strato multi-passata
3 * @return Codice di errore
4 */
5int ArcWeldTraceReplayStart();

14.48. Disattivazione tracciamento arco + compensazione multi-strato multi-passata

1/**
2 * @brief Disattiva tracciamento arco + compensazione multi-strato multi-passata
3 * @return Codice di errore
4 */
5int ArcWeldTraceReplayEnd();

14.49. Trasformazione delle coordinate di offset - Saldatura multi-strato multi-passata

 1/**
 2 * @brief Trasformazione delle coordinate di offset - Saldatura multi-strato multi-passata
 3 * @param [in] pointO  Posa cartesiana del punto di riferimento
 4 * @param [in] pointX  Posa cartesiana del punto nella direzione dell'offset X rispetto al punto di riferimento
 5 * @param [in] pointZ  Posa cartesiana del punto nella direzione dell'offset Z rispetto al punto di riferimento
 6 * @param [in] dx  Quantità di offset in direzione X (mm)
 7 * @param [in] dy  Quantità di offset in direzione Y (mm)
 8 * @param [in] db  Quantità di offset attorno all'asse Y (°)
 9 * @param [out] offset  Quantità di offset calcolata
10 * @return Codice di errore
11 */
12int MultilayerOffsetTrsfToBase(DescTran pointO, DescTran pointX, DescTran pointZ, double dx, double dy, double db, ref DescPose offset);

14.50. Esempio di codice per il tracciamento dell’arco nella saldatura multi-strato multi-passata

  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. Selezione canale AI per la retroazione della corrente della saldatrice nel tracciamento dell’arco

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Selezione canale AI per la retroazione della corrente della saldatrice nel tracciamento dell'arco
3 * @param [in]  channel  Canale; 0-AI esteso 0; 1-AI esteso 1; 2-AI esteso 2; 3-AI esteso 3; 4-AI centralina 0; 5-AI centralina 1
4 * @return Codice di errore
5 */
6int ArcWeldTraceAIChannelCurrent(int channel);

14.52. Selezione canale AI per la retroazione della tensione della saldatrice nel tracciamento dell’arco

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Selezione canale AI per la retroazione della tensione della saldatrice nel tracciamento dell'arco
3 * @param [in]  channel  Canale; 0-AI esteso 0; 1-AI esteso 1; 2-AI esteso 2; 3-AI esteso 3; 4-AI centralina 0; 5-AI centralina 1
4 * @return Codice di errore
5 */
6int ArcWeldTraceAIChannelVoltage(int channel);

14.53. Parametri di conversione per la retroazione della corrente della saldatrice nel tracciamento dell’arco

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Parametri di conversione per la retroazione della corrente della saldatrice nel tracciamento dell'arco
3 * @param [in] AILow  Limite inferiore canale AI, valore predefinito 0V, range [0-10V]
4 * @param [in] AIHigh  Limite superiore canale AI, valore predefinito 10V, range [0-10V]
5 * @param [in] currentLow  Valore di corrente della saldatrice corrispondente al limite inferiore del canale AI, valore predefinito 0V, range [0-200V]
6 * @param [in] currentHigh  Valore di corrente della saldatrice corrispondente al limite superiore del canale AI, valore predefinito 100V, range [0-200V]
7 * @return Codice di errore
8 */
9int ArcWeldTraceCurrentPara(float AILow, float AIHigh, float currentLow, float currentHigh);

14.54. Parametri di conversione per la retroazione della tensione della saldatrice nel tracciamento dell’arco

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Parametri di conversione per la retroazione della tensione della saldatrice nel tracciamento dell'arco
3 * @param [in] AILow  Limite inferiore canale AI, valore predefinito 0V, range [0-10V]
4 * @param [in] AIHigh  Limite superiore canale AI, valore predefinito 10V, range [0-10V]
5 * @param [in] voltageLow  Valore di tensione della saldatrice corrispondente al limite inferiore del canale AI, valore predefinito 0V, range [0-200V]
6 * @param [in] voltageHigh  Valore di tensione della saldatrice corrispondente al limite superiore del canale AI, valore predefinito 100V, range [0-200V]
7 * @return Codice di errore
8 */
9int ArcWeldTraceVoltagePara(float AILow, float AIHigh, float voltageLow, float voltageHigh);

14.55. Esempio di codice per il tracciamento dell’arco

Nuovo nella versione 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);// ----Imposta tensione
18    robot.WeldingSetCurrent(0, 260, 0, 0);// ----Imposta corrente
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. Impostare le porte IO estese per la ricerca del filo

1/**
2 * @brief Imposta le porte IO estese per la ricerca del filo
3 * @param searchDoneDINum  Porta DO per il successo della ricerca del filo (0-127)
4 * @param searchStartDONum  Porta DO per il controllo avvio/arresto della ricerca del filo (0-127)
5 * @return Codice di errore
6 */
7int SetWireSearchExtDIONum(int searchDoneDINum, int searchStartDONum);

14.57. Inizio della ricerca del filo

 1/**
 2 * @brief  Inizia la ricerca del filo
 3 * @param  [in] refPos  1-Punto di riferimento 0-Punto di contatto
 4 * @param  [in] searchVel   Velocità di ricerca %
 5 * @param  [in] searchDis   Distanza di ricerca mm
 6 * @param  [in] autoBackFlag  Flag ritorno automatico, 0-Non automatico; -Automatico
 7 * @param  [in] autoBackVel   Velocità di ritorno automatico %
 8 * @param  [in] autoBackDis   Distanza di ritorno automatico mm
 9 * @param  [in] offectFlag   1-Ricerca con offset; 0-Ricerca al punto insegnato
10 * @return  Codice di errore
11 */
12int WireSearchStart(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.58. Fine della ricerca del filo

 1/**
 2 * @brief  Termina la ricerca del filo
 3 * @param  [in] refPos  1-Punto di riferimento 2-Punto di contatto
 4 * @param  [in] searchVel   Velocità di ricerca %
 5 * @param  [in] searchDis   Distanza di ricerca mm
 6 * @param  [in] autoBackFlag  Flag ritorno automatico, 0-Non automatico; -Automatico
 7 * @param  [in] autoBackVel   Velocità di ritorno automatico %
 8 * @param  [in] autoBackDis   Distanza di ritorno automatico mm
 9 * @param  [in] offectFlag   1-Ricerca con offset; 2-Ricerca al punto insegnato
10 * @return  Codice di errore
11 */
12int WireSearchEnd(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.59. Calcolare l’offset della ricerca del filo

 1/**
 2 * @brief  Calcola l'offset della ricerca del filo
 3 * @param  [in] seamType   Tipo di giunzione
 4 * @param  [in] method    Metodo di calcolo
 5 * @param  [in] varNameRef  Punti di riferimento 1-6, "#" indica nessuna variabile punto
 6 * @param  [in] varNameRes  Punti di contatto 1-6, "#" indica nessuna variabile punto
 7 * @param  [out] offectFlag 0-L'offset viene aggiunto direttamente ai punti di comando; 1-L'offset richiede una trasformazione delle coordinate dei punti di comando
 8 * @param  [out] offect  Posa offset [x, y, z, a, b, c]
 9 * @return  Codice di errore
10 */
11int GetWireSearchOffset(int seamType, int method, string[] varNameRef, string[] varNameRes, ref int offsetFlag, ref DescPose offset);

14.60. Attendere il completamento della ricerca del filo

1/**
2 * @brief  Attende il completamento della ricerca del filo
3 * @return  Codice di errore
4 */
5int WireSearchWait(string name);

14.61. Scrivere il punto di contatto della ricerca del filo nel database

1/**
2 * @brief  Scrive il punto di contatto della ricerca del filo nel database
3 * @param  [in] varName   Nome del punto di contatto "RES0" ~ "RES99"
4 * @param  [in] pos   Dati del punto di contatto [x, y, z, a, b, c]
5 * @return  Codice di errore
6 */
7int SetPointToDatabase(string varName, DescPose pos);

14.62. Esempio di codice per la ricerca del filo del robot

 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);  //Punto di partenza
35    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  //Punto direzione
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);  //Punto di partenza
41    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  //Punto direzione
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);  //Punto di partenza
47    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  //Punto direzione
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);  //Punto di partenza
53    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, exaxisPos, 1, 0, offdese);  //Punto direzione
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. Impostare l’inizio della transizione graduale della tensione di saldatura

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

 1/**
 2 * @brief Imposta l'inizio della transizione graduale della tensione di saldatura
 3 * @param [in] IOType  Tipo di controllo; 0-IO della centralina; 1-Protocollo di comunicazione digitale (UDP); 2-Protocollo di comunicazione digitale (ModbusTCP)
 4 * @param [in] voltageStart  Tensione di saldatura iniziale (V)
 5 * @param [in] voltageEnd  Tensione di saldatura finale (V)
 6 * @param [in] AOIndex  Numero porta AO della centralina (0-1)
 7 * @param [in] blend  Se levigare 0-Non levigare; 1-Levigare
 8 * @return Codice di errore
 9 */
10int WeldingSetVoltageGradualChangeStart(int IOType, double voltageStart, double voltageEnd, int AOIndex, int blend);

14.64. Impostare la fine della transizione graduale della tensione di saldatura

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Imposta la fine della transizione graduale della tensione di saldatura
3 * @return Codice di errore
4 */
5int WeldingSetVoltageGradualChangeEnd();

14.65. Impostare l’inizio della transizione graduale della corrente di saldatura

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

 1/**
 2 * @brief Imposta l'inizio della transizione graduale della corrente di saldatura
 3 * @param [in] IOType  Tipo di controllo; 0-IO della centralina; 1-Protocollo di comunicazione digitale (UDP); 2-Protocollo di comunicazione digitale (ModbusTCP)
 4 * @param [in] currentStart  Corrente di saldatura iniziale (A)
 5 * @param [in] currentEnd  Corrente di saldatura finale (A)
 6 * @param [in] AOIndex  Numero porta AO della centralina (0-1)
 7 * @param [in] blend  Se levigare 0-Non levigare; 1-Levigare
 8 * @return Codice di errore
 9 */
10int WeldingSetCurrentGradualChangeStart(int IOType, double currentStart, double currentEnd, int AOIndex, int blend);

14.66. Impostare la fine della transizione graduale della corrente di saldatura

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2 * @brief Imposta la fine della transizione graduale della corrente di saldatura
3 * @return Codice di errore
4 */
5int WeldingSetCurrentGradualChangeEnd();

14.67. Esempio di codice per la transizione graduale di corrente e tensione di saldatura del robot

Nuovo nella versione 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. Impostare i parametri di oscillazione personalizzati

Nuovo nella versione C#SDK-V1.1.8: Web-3.8.6

 1/**
 2 * @brief Imposta i parametri di oscillazione personalizzati
 3 * @param [in] id  Numero di oscillazione personalizzata: 0-2
 4 * @param [in] pointNum  Numero di punti di oscillazione 0-10
 5 * @param [in] points  Dati dei punti di estremità del movimento x,y,z
 6 * @param [in] stayTimes  Tempi di permanenza nell'oscillazione ms
 7 * @param [in] frequency  Frequenza di oscillazione Hz
 8 * @param [in] incStayType  Modalità di attesa: 0-Il ciclo non include il tempo di attesa; 1-Il ciclo include il tempo di attesa
 9 * @param [in] stationary  Attesa della posizione di oscillazione: 0-Continua a muoversi durante il tempo di attesa; 1-Posizione ferma durante il tempo di attesa
10 * @return  Codice di errore
11 */
12public int CustomWeaveSetPara(int id, int pointNum, DescTran[] points, double[] stayTimes, double frequency, int incStayType, int stationary)

14.69. Ottenere i parametri di oscillazione personalizzati

Nuovo nella versione C#SDK-V1.1.8: Web-3.8.6

 1/**
 2 * @brief Ottiene i parametri di oscillazione personalizzati
 3 * @param [in] id  Numero di oscillazione personalizzata: 0-2
 4 * @param [out] pointNum  Numero di punti di oscillazione 0-10
 5 * @param [out] points  Dati dei punti di estremità del movimento x,y,z
 6 * @param [out] stayTimes  Tempi di permanenza nell'oscillazione ms
 7 * @param [out] frequency  Frequenza di oscillazione Hz
 8 * @param [out] incStayType  Modalità di attesa: 0-Il ciclo non include il tempo di attesa; 1-Il ciclo include il tempo di attesa
 9 * @param [out] stationary  Attesa della posizione di oscillazione: 0-Continua a muoversi durante il tempo di attesa; 1-Posizione ferma durante il tempo di attesa
10 * @return  Codice di errore
11 */
12public int CustomWeaveGetPara(int id, ref int pointNum, ref DescTran[] points, ref double[] stayTimes, ref double frequency, ref int incStayType, ref int stationary)

14.70. Esempio di codice per i parametri di oscillazione personalizzati

Nuovo nella versione 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. Configurazione dei Parametri della Saldatrice Laser

 1/**
 2* @brief Scrive i parametri di configurazione per uno dei 10 gruppi di processo della saldatrice laser e configura la saldatrice
 3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
 4* @param[in] num Numero del gruppo da impostare (1~10)
 5* @param[in] scanSpeed Velocità di scansione
 6* @param[in] scanWidth Larghezza di scansione
 7* @param[in] peakPower Potenza di picco
 8* @param[in] dutyCycle Ciclo di lavoro
 9* @param[in] freq Frequenza
10* @return Codice di errore
11*/
12public int SetLaserWeldingParam(int io_type, int num, int scanSpeed, int scanWidth, int peakPower, int dutyCycle, int freq)

14.72. Impostare Avvio/Arresto Saldatura Laser

1/**
2* @brief Imposta accensione/spegnimento della saldatrice laser
3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
4* @param[in] status Parola di controllo 0-laser spento 1-laser acceso
5* @param[in] max_waittime Tempo massimo di attesa
6* @return Codice di errore
7*/
8public int SetLaserWeldingStartEnd(int io_type, int status, int max_waittime)

14.73. Abilitazione/Disabilitazione Saldatrice Laser

1/**
2* @brief Abilita/disabilita la saldatrice laser
3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
4* @param[in] status 0-disabilita 1-abilita
5* @return Codice di errore
6*/
7public int SetLaserWeldingEnable(int io_type, int status)

14.74. Ripristino Guasto Saldatrice Laser

1/**
2* @brief Ripristina il guasto della saldatrice laser
3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
4* @param[in] status Parola di controllo 0-invalido 1-ripristino guasto
5* @return Codice di errore
6*/
7public int ResetLaserWeldingErr(int io_type, int status)

14.75. Ottenere lo Stato di Funzionamento della Saldatrice Laser

1/**
2* @brief Ottiene lo stato di funzionamento della saldatrice laser
3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
4* @param[out] status Parola di controllo 0-fermo 1-in funzione
5* @return Codice di errore
6*/
7public int GetLaserWeldingRunningState(int io_type, ref int status)

14.76. Ottenere lo Stato di Guasto della Saldatrice Laser

1/**
2* @brief Ottiene lo stato di guasto della saldatrice laser
3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
4* @param[out] status 0-nessun guasto 1-guasto presente
5* @return Codice di errore
6*/
7public int GetLaserWeldingErrState(int io_type, ref int status)

14.77. Ottenere i Parametri Configurati della Saldatrice Laser

 1/**
 2* @brief Ottiene i parametri di configurazione per uno dei 10 gruppi di processo della saldatrice laser
 3* @param[in] num Numero del gruppo da impostare (1~10)
 4* @param[out] scanSpeed Velocità di scansione
 5* @param[out] scanWidth Larghezza di scansione
 6* @param[out] peakPower Potenza di picco
 7* @param[out] dutyCycle Ciclo di lavoro
 8* @param[out] freq Frequenza
 9* @return Codice di errore
10*/
11public int GetLaserWeldingParamTarget(int num, ref int scanSpeed, ref int scanWidth, ref int peakPower, ref int dutyCycle, ref int freq)

14.78. Ottenere i Parametri di Configurazione Attualmente Attivi della Saldatrice Laser

 1/**
 2* @brief Ottiene i parametri di configurazione attualmente attivi della saldatrice laser
 3* @param[in] io_type Tipo di comunicazione 0-IO 1-UDP
 4* @param[out] scanSpeed Velocità di scansione
 5* @param[out] scanWidth Larghezza di scansione
 6* @param[out] peakPower Potenza di picco
 7* @param[out] dutyCycle Ciclo di lavoro
 8* @param[out] freq Frequenza
 9* @return Codice di errore
10*/
11public int GetLaserWeldingParamActual(int io_type, ref int scanSpeed, ref int scanWidth, ref int peakPower, ref int dutyCycle, ref int freq)

14.79. Configurare la Porta DO di Abilitazione IO Esteso della Saldatrice Laser

1/**
2* @brief Imposta l'IO esteso della saldatrice laser, porta DO di abilitazione
3* @param[in] ctrlModeDONum Numero della porta DO estesa per l'abilitazione della saldatrice laser
4* @return Codice di errore
5*/
6public int SetLaserWeldingEnableExtDoNum(int ctrlModeDONum)

14.80. Configurare la Porta DO di Avvio IO Esteso della Saldatrice Laser

1/**
2* @brief Imposta l'IO esteso della saldatrice laser, porta DO di avvio
3* @param[in] ctrlModeDONum Numero della porta DO estesa per l'avvio (laser acceso/spento) della saldatrice laser
4* @return Codice di errore
5*/
6public int SetLaserWeldingStartExtDoNum(int ctrlModeDONum)

14.81. Configurare la Porta DO di Ripristino Guasto IO Esteso della Saldatrice Laser

1/**
2* @brief Imposta l'IO esteso della saldatrice laser, porta DO di ripristino guasto
3* @param[in] ctrlModeDONum Numero della porta DO estesa per il ripristino del guasto della saldatrice laser
4* @return Codice di errore
5*/
6public int SetLaserWeldingErrResetExtDoNum(int ctrlModeDONum)

14.82. Configurare il DI Esteso per lo Stato di Funzionamento (Stato Laser Accesso) della Saldatrice Laser

1/**
2* @brief Configura il DI esteso per lo stato di funzionamento (stato laser acceso) della saldatrice laser
3* @param[in] diNum Porta DI estesa per lo stato di funzionamento (stato laser acceso) della saldatrice laser
4* @return Codice di errore
5*/
6public int SetLaserWeldingRunningStateExtDiNum(int diNum)

14.83. Configurare la Porta DI di Stato Guasto IO Esteso della Saldatrice Laser

1/**
2* @brief Configura il DI esteso per lo stato di guasto della saldatrice laser
3* @param[in] diNum Porta DI estesa per lo stato di guasto della saldatrice laser
4* @return Codice di errore
5*/
6public int SetLaserWeldingErrStateExtDiNum(int diNum)

14.84. Esempio di Codice per Saldatura Laser

 1private void btnLaserWeld_Click(object sender, EventArgs e)
 2{
 3
 4    int rtn = -1;
 5    // Carica driver UDP
 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    // Imposta parametri saldatura laser: 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    // Imposta il numero della porta DO di avvio
25    rtn = robot.SetLaserWeldingStartExtDoNum(1);
26    if (rtn != 0)
27    {
28        Console.WriteLine("SetLaserWeldingStartExtDoNum failed, error code: " + rtn);
29    }
30
31    // Imposta la modalità 0 (modalità insegnamento)
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    // Muovi al primo punto di saldatura
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    // Avvia laser (laser acceso)
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    // Muovi al secondo punto di saldatura (durante la saldatura)
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    // Ferma laser (laser spento)
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    // Muovi al punto di sicurezza
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    // Imposta la modalità 1 (modalità remota)
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    // Chiudi connessione
92    robot.CloseRPC();
93    Thread.Sleep(1000);
94
95    Console.WriteLine("Test completed");
96
97    return ;
98}