Hello Painfull,
Your program is not good.
A-
Don't forget that one of the output can be, at the beginning, in the wrong position.
You need an initialisation step at the beginning.
On the both robots, set the ouput to 1 and wait that the input is 1. To be sure that the other robot is connected and running.
B-
In your program, the synchronisation after the point[0] (for the R1). :
1-movel(points[0], TCP, mdesc0000)
2-waitEndMove()
3-dos[1] = true
4-waitEndMove()
5-wait(dis[0] == true)
6-waitEndMove()
7-dos[1] = false
Imagine that the R1 is faster to the R2
The R1 is waiting Input to 1(Line 5)
As soon as the R2 set the output, the R1 reset his output. (Line 7)
In the same time, the R2 wait his Input to 1...an is blocked !
With only 1 input and 1 output per robots, it's not very easy.
For me, after each synchronisation point , you can test this sequence :
(after an initilisation to 1 at the beginning)
Set the Output to 0 (To say that the robot is arrive on the point)
Wait the input is 0 (to wait the other robot)
Set the Output to 1 (to start the new sequence)
Wait the Input to 1 (To be sure that the other robot is ready to)
You can write this sequence in a program and call it in your main program.
C-
Other thing, in :
dos[0] = true
waitEndMove()
wait(dis[1] == true)
You don't need the WaitEndMove()
Best regards