Hi,
i have the robot running with the same program for three years and in the last two to three weeks the error message sometimes comes up. Not with every time it runs, but always on the same position in the program. Before that it always run without problems.
Where i can see which thread ist controlling the robot and which one wants to controll the robot?
Since i started the robot i didn’t update the firmware or software. Can this cause also problems?
Here the programm (it’s in german):
Programm
Init Variablen
VorStart
First_Run≔ True
write_output_integer_register(0,0)
PRG_Parkposi≔ False
Lage_Zähler≔0
weiter≔ False
Lage_Fehler≔ False
Lage_Abgehoben≔ False
Programm_Aktiv≔ False
Einstellen A0_Parkposition=Aus
Einstellen A1_Sichere_Lage=Aus
Einstellen A2_Karton_voll=Aus
Einstellen A3_Lage_Fehler=Aus
Einstellen out_Vakuum=Aus
Wunschhoehe≔0.8
aktuelle_Pos≔get_actual_tcp_pose()
neu1_mit_fest_Z≔p[aktuelle_Pos[0],aktuelle_Pos[1],Wunschhoehe,aktuelle_Pos[3],aktuelle_Pos[4],aktuelle_Pos[5]]
If I2_FG_Offenhalt≟ True
FahreLinear
neu1_mit_fest_Z
Einstellen A1_Sichere_Lage=Ein
Warten: 1.0
Wegpunkt_2
Parkposition
Einstellen A0_Parkposition=Ein
Else
Warten I2_FG_Offenhalt=HI
Warten: 0.5
FahreLinear
neu1_mit_fest_Z
Einstellen A1_Sichere_Lage=Ein
Warten: 1.0
Wegpunkt_2
Parkposition
Einstellen A0_Parkposition=Ein
Roboterprogramm
If First_Run≟ True
Lage_Zähler≔1
Warten I3_Karton_da=HI
Programm_Aktiv≔ True
First_Run≔ False
Schleife Programm_Aktiv≟ True
If Lage_Zähler≟0 or Lage_Zähler>Lage_Vorgabe
Aufruf Unterprogramm_Karton_Voll
ElseIf Lage_Zähler≟1 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_1
ElseIf Lage_Zähler≟2 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_2
ElseIf Lage_Zähler≟3 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_3
ElseIf Lage_Zähler≟4 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_4
ElseIf Lage_Zähler≟5 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_5
ElseIf Lage_Zähler≟6 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_6
ElseIf Lage_Zähler≟7 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_7
ElseIf Lage_Zähler≟8 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_8
ElseIf Lage_Zähler≟9 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_9
ElseIf Lage_Zähler≟10 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_10
ElseIf Lage_Zähler≟11 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_11
ElseIf Lage_Zähler≟12 and Lage_Zähler≤Lage_Vorgabe
Aufruf Unterprogramm_Lage_12
Thread_2
‘Kette für Parkposition anfahren’
Schleife I2_FG_Offenhalt≟ True
Warten read_input_boolean_register(8)≟ True
PRG_Parkposi≔ True
Programm_Aktiv≔ False
Einstellen A0_Parkposition=Aus
If First_Run≟ True
Lage_Zähler≔1
First_Run≔ False
Else
Lage_Zähler≔0
aktuelle_Pos≔get_actual_tcp_pose()
neu2_mit_fest_Z≔p[aktuelle_Pos[0],aktuelle_Pos[1],Wunschhoehe,aktuelle_Pos[3],aktuelle_Pos[4],aktuelle_Pos[5]]
Warten: 1.0
write_output_boolean_register(8, True )
FahreLinear
neu2_mit_fest_Z
Einstellen A1_Sichere_Lage=Ein
Wegpunkt_2
Warten: 0.5
FahreLinear
Parkposition
Einstellen A0_Parkposition=Ein
Warten: 0.5
PRG_Parkposi≔ False
Programm_Aktiv≔ True
write_output_integer_register(0,0)
write_output_boolean_register(8, False )
Thread_3
‘Kette für Überprüfung nach Aufnahme’
If Lage_Abgehoben≟ True and out_Vakuum≟ True and (In_Vakuum_da≟ False or I5_Kamera_Fehl≟ True )
Lage_Fehler≔ True
Warten: 0.2
weiter≔ False
ElseIf Lage_Abgehoben≟ True and out_Vakuum≟ True and In_Vakuum_da≟ True and I5_Kamera_Fehl≟ False
Lage_Fehler≔ False
Warten: 0.2
weiter≔ True
Thread_4
Schleife Lage_Fehler≟ True
Lage_Abgehoben≔ False
FahreLinear
Lage_Fallhöhe
Einstellen out_Vakuum=Aus
Warten: 0.5
FahreLinear
Parkposition
Einstellen A1_Sichere_Lage=Ein
Einstellen A0_Parkposition=Ein
Einstellen A3_Lage_Fehler=Ein
Warten: 1.0
Einstellen A3_Lage_Fehler=Aus
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A0_Parkposition=Aus
Einstellen A1_Sichere_Lage=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
If In_Vakuum_da≟ True and I5_Kamera_Fehl≟ False
weiter≔ True
Lage_Fehler≔ False
Else
Lage_Abgehoben≔ True
Thread_5
Schleife
Lage_Vorgabe≔read_input_integer_register(0)
‘Unterprogr_Kamera’
Unterprogramm_Karton_Voll
write_output_integer_register(0,0)
Einstellen A2_Karton_voll=Ein
Warten I3_Karton_da=HI
Warten: 0.5
Einstellen A2_Karton_voll=Aus
Lage_Zähler≔1
Unterprogramm_Lage_1
FahreLinear
Warten I0_Deck_abholen=HI
Warten I1_FG_Umsetzer=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage1_überKart
FahreLinear
Lage1_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage1_überKart
write_output_integer_register(0,1)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔2
Unterprogramm_Lage_2
FahreLinear
Warten I0_Deck_abholen=HI
Warten I1_FG_Umsetzer=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage2_überKart
FahreLinear
Lage2_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage2_überKart
write_output_integer_register(0,2)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔3
Unterprogramm_Lage_3
FahreLinear
Warten I0_Deck_abholen=HI
Warten I1_FG_Umsetzer=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage3_überKart
FahreLinear
Lage3_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage3_überKart
write_output_integer_register(0,3)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔4
Unterprogramm_Lage_4
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
wieder_oben
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage4_überKart
FahreLinear
Lage4_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage4_überKart
write_output_integer_register(0,4)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔5
Unterprogramm_Lage_5
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage5_überKart
FahreLinear
Lage5_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage5_überKart
write_output_integer_register(0,5)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔6
Unterprogramm_Lage_6
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage6_überKart
FahreLinear
Lage6_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage6_überKart
write_output_integer_register(0,6)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔7
Unterprogramm_Lage_7
FahreLinear
Warten I0_Deck_abholen=HI
Parkposition
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage7_überKart
FahreLinear
Lage7_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage7_überKart
write_output_integer_register(0,7)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔8
Unterprogramm_Lage_8
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage8_überKart
FahreLinear
Lage8_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage8_überKart
write_output_integer_register(0,8)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔9
Unterprogramm_Lage_9
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage9_überKart
FahreLinear
Lage9_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage9_überKart
write_output_integer_register(0,9)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔10
Unterprogramm_Lage_10
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage10_überKart
FahreLinear
Lage10_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage10_überKart
write_output_integer_register(0,10)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔11
Unterprogramm_Lage_11
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage11_überKart
FahreLinear
Lage11_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage11_überKart
write_output_integer_register(0,11)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔12
Unterprogramm_Lage_12
FahreLinear
Warten I0_Deck_abholen=HI
Einstellen A1_Sichere_Lage=Aus
Einstellen A0_Parkposition=Aus
Einstellen out_Vakuum=Ein
Parkposition
Aufnahme
Warten: 0.5
Parkposition
Lage_Abgehoben≔ True
Warten: 0.2
Warten weiter≟ True
Einstellen A1_Sichere_Lage=Ein
Lage_Abgehoben≔ False
weiter≔ False
FahreAchse
Warten I2_FG_Offenhalt=HI
Lage12_überKart
FahreLinear
Lage12_inKart
Warten: 0.5
Einstellen out_Vakuum=Aus
Warten: 1.0
FahreLinear
Lage12_überKart
write_output_integer_register(0,12)
FahreAchse
Parkposition
Einstellen A0_Parkposition=Ein
Lage_Zähler≔0