I found a problem when using NexeedEcIaiMconDrive_native object, the version is 22.214.171.124.
the problem is described below:
When I start Axis with this peripheral, the ExecState of Unit becomes DONE soon, but the Axis is still running, then I set Execute of Unit to False, then I can start Axis again, and this time it works right, please see the picture which I got by TwinCAT Scope (Blue line is Unit.ExecState, Red is Peripheral._status.Pending, Cyan is Peripheral._status.Moving).
I think this is a bug for NexeedEcIaiMconDrive_native object, it think it just check Pending signal, if Pending is True, then set RetVal of method to OK. but actually, the sevo is not running now, I think after start axis, it must check running, then check Pending, and also must handle the case that Axis move to current position(axis should not move and set RetVal to OK)
The object sets the desired target value and starts the movement independently of the _status.Pending signal. After the movement has been started, the object expects the controller to update the _status.PositionReached signal. This is checked in the next cycle. If the signal is true in the next cycle, the object assumes that the target position has been reached. If the signal is wrong in this cycle, it would mean that the signal update in the controller is slower than the cycle time of the PLC. What is the cycle time used in the project? Can you please send a ticket to our helpdesk to make a direct data exchange possible? It would be great if you could also send a scope with _status.PositionReached and _targetPos so we can check the timing issue.