Thank you for this very detailed explanation.
I now hunderstand better how Robots work.
Quote
((Why is this a problem?))
At the time you read the input, it had a certain value. And this value is correct at this time.
If you have to keep the value "synchronous" with the PLC, you have to program a handshake.
PLC send a bit stream to the robot with a start command and data for motions instructions simultaneously.
There is the way it works now.
PLC : Cmd bit + Motion data stream -> to Robot
ROBOT: Processing data Ok -> to PLC
PLC : New Cmd bit + New Motion data stream -> to Robot
ROBOT: New Processing data Ok -> to PLC
etc...
We use this exact same data stream and operation on other robot brand and that works well.
The problem is, sometimes with Fanuc Robot , the start command signal is processed before some datas that have values of the bit stream n-1, resulting in wrong motion intruction.
As you explained to me, probably because of some IO refresh cycle interruption.
So For this Fanuc robot, I now have to find a way to ensure that all data stream is refreshed before sending the start cmd:
@PnsStarter As you mentionned, the easiest way would be to add an handshake :
PLC : Motion data stream -> to Robot
ROBOT: Processing data Ok -> to PLC
PLC: Cmd bit -> to Robot
ROBOT: Cmd bit Ok -> to PLC
PLC : New Cmd data stream -> to Robot
ROBOT: New Processing data Ok -> to PLC
PLC: New Cmd bit -> to Robot
ROBOT: New Cmd bit Ok -> to PLC
etc...