It's something like
------ t = 0.0 : master receive datagram 0, receive actual position -2 t = 0.1 : master send datagram 1 (target position 1) t = 0.2 : drive receive datagram 1 (actual position -1 returned) t = 0.5 : drive sync 0, target position 1 becomes active, actual position 0 is recorded ------ t = 0.0 : master receive datagram 1, receive actual position -1 t = 1.1 : master send datagram 2 t = 1.2 : drive receive datagram 2 (actual position 0 returned) t = 1.5 : drive sync 0, target position 2 becomes active, actual position 1 is recorded ------ t = 2.0 : master receive datagram 2, receive actual position 0 t = 2.1 : master send datagram 3 t = 2.2 : drive receive datagram 3 (actual position 1 returned) t = 2.5 : drive sync 0, target position 3 becomes active, actual position 2 is recorded ------ t = 3.0 : master receive datagram 3, receive actual position 1 t = 3.1 : master send datagram 4 t = 3.2 : drive receive datagram 4 (actual position 2 returned) t = 3.5 : drive sync 0, target position 4 becomes active, actual position 3 is recorded So you are comparing Target Position 4 with Actual Position 1 which, due to the sync0 time, is around 3 ½ cycles old. What you need to do is find the Following Error PDO index, add that to your drive PDO data, and use it. I use Yaskawa Drives so don't know what the ELMO one is (and you need to log in to get the ESI file so I can't look it up). On the Yaskawa drive it is index 0x60F4:00. Note: the above assumes that your master is waking at cycle time zero; the slave distributed clocks are nicely synced; you have an appropriate Sync Shift Time (say 500us); and the ecrt_master_send() is called so that the drive receives its datagram before the sync event. Regards, Graeme. -----Original Message----- From: etherlab-users [mailto:etherlab-users-boun...@etherlab.org] On Behalf Of Michael Ruder Sent: Wednesday, 16 May 2018 4:52 AM To: etherlab-users@etherlab.org Subject: [etherlab-users] Cyclic Synchronous Position mode Hello, I am currently experimenting with the Cyclic Synchronous Position mode of ELMO drives. I am using EtherLab 1.5.2 from the 1.5.2 branch with ec_generic on a PREEMPT RT system (kernel 4.14.28). If I compare the current position the drive reports in the frame I receive after I send a frame with a new target position, I see a certain offset between this current position and the new target position that I do not understand. If I divide the offset by the current velocity, I receive a constant time delay of about 3.45 ms (which means 3.45 cycles, as we have 1 ms cycle time). >From my understanding, the new target position should become active some time >after the frame has been received (depending on several 0x1c32 values), while >the inputs are sampled at some other moment (depending on serveral 0x1c33 >values). This could explain the 0.45 cycles as being the delay between input >sampling and activating the output value. However, this still does not explain the 3 cycle delay. One cycle I could understand because I compare the just sent target position with the right afterwards received current position, which is from the previous cycle. But where do the other 2 come from? I could not find any documentation about a FIFO like buffer in the drives. Also, for precise synchronisation, I would need to know the 0.45 ms delay not just approximately by measureing it. Unfortunately, all 0x1c32/0x1c33 (index 6 and 9) are 0 for my slaves. Is there some "general" information on those delays? I am using SYNC0 (with period 1 ms like my cycle). The SYNC0 offset does not affect the above offset, which seems however understandable as all 0x1c3x-delays are relative to the SYNC0 moment. The SYNC0 offset however does of course affect the real time moment the axis reaches the position. Thanks for any help, -- . -Michael _______________________________________________ etherlab-users mailing list etherlab-users@etherlab.org<mailto:etherlab-users@etherlab.org> http://lists.etherlab.org/mailman/listinfo/etherlab-users
_______________________________________________ etherlab-users mailing list etherlab-users@etherlab.org http://lists.etherlab.org/mailman/listinfo/etherlab-users