KonstantinKolev
Member
Hi,
We have a machine with 9 servo motors and Kinetix 5100 drives. The controller is L33ER and there is no motion control in the project.
The standard motion instructions are used in the project - MSF, MSO, MAM, MAH, MAT, MAS, MAJ.
There is a routine for the servo motion part of the project, where, in a separate task, each servo has its own instance of the add-on instruction called. The add-on instruction is, in my opinion, a general approach as it has all the motion instruction called and each of them a bit for enable. Each servo has a UDT as an INOUT parameter to the add-on instruction.
Now, the condition for enabling a motion instruction is a rising edge of a bit and this bit is reset after some time with a timer.
Let us assume that a MAM instruction was executed and the PC bit is on, the motor is at the desired position and no errors occurred.
In the logic the IP bit is monitored to proceed to the next state where the PC bit is expected.
What if I want to execute the same instruction again with no change in the desired position. The IP bit should get on and the logic should proceed to the next state of the state machine.
The execution of the motion instruction more than once is utilized in the error recovery routine that every module add-on instruction has.
My observations show that sometimes the IP is seen by the program and the recover sequence is executed successfully, but on a random occurrence the IP bit does not get on since the logic just stays at the state where the IP is expected.
Perhaps, the reason that I issue multiple motion commands and they cannot be executed in one cycle is the reason for the random occurrence of the weird behavior. In some situations 5 servos should be started at the same time.
What causes this behavior and what would your approach be?
Best Regards
Konstantin Kolev
We have a machine with 9 servo motors and Kinetix 5100 drives. The controller is L33ER and there is no motion control in the project.
The standard motion instructions are used in the project - MSF, MSO, MAM, MAH, MAT, MAS, MAJ.
There is a routine for the servo motion part of the project, where, in a separate task, each servo has its own instance of the add-on instruction called. The add-on instruction is, in my opinion, a general approach as it has all the motion instruction called and each of them a bit for enable. Each servo has a UDT as an INOUT parameter to the add-on instruction.
Now, the condition for enabling a motion instruction is a rising edge of a bit and this bit is reset after some time with a timer.
Let us assume that a MAM instruction was executed and the PC bit is on, the motor is at the desired position and no errors occurred.
In the logic the IP bit is monitored to proceed to the next state where the PC bit is expected.
What if I want to execute the same instruction again with no change in the desired position. The IP bit should get on and the logic should proceed to the next state of the state machine.
The execution of the motion instruction more than once is utilized in the error recovery routine that every module add-on instruction has.
My observations show that sometimes the IP is seen by the program and the recover sequence is executed successfully, but on a random occurrence the IP bit does not get on since the logic just stays at the state where the IP is expected.
Perhaps, the reason that I issue multiple motion commands and they cannot be executed in one cycle is the reason for the random occurrence of the weird behavior. In some situations 5 servos should be started at the same time.
What causes this behavior and what would your approach be?
Best Regards
Konstantin Kolev