MoveSCurve() Not (Quite) Getting to Position

In this occurrence, the slaved motors are “reversed” (e.g. motors on opposite sides of a gantry) so that, say, -100,000 for the master corresponds to +100,000 for the slave.

The PDO values correspond to what RMP/RapidSetup says the command (output) and actual (input) positions are.

The only difference that I can see is that bit #10 (0x400, “target reached”) of the status word is off on the slave drive (showing standing following error).

Motor#1 (Master)
  (!reversed)
  Input Position: 4294095929 (-871367‬) 0xFFF2B436
  Origin Position: 524287
  Output Position: 4294095926 (-871370) ‭0xFFF2B436‬
  Command Position: -1395657
  Actual Position:  -1395657
  Status Word: 5687 0x1637  (0001 0110 0011 0111)
    Ready To Swith On (0x1)
    Switched On (0x2)
    Operation Enabled (0x4)
    Voltage Enabled (0x10)
    Quick Stop (0x20)
    Remote (0x200)
    Target Reached (0x400)
    Operation Mode Specific (0x1000)

Motor#0 (Slave)
  (REVERSED)
  Input Position: 902218 0xDC448   (adj: 1393742)
  Origin Positon: -491524
  Output Position: 904133          (adj: 1395657)
   delta (cmd-actual): 1915
  Command Position: 1395657
  Actual Position:  1393745
  Status Word: 4663 0x1237
    Ready To Swith On (0x1)
    Switched On (0x2)
    Operation Enabled (0x4)
    Voltage Enabled (0x10)
    Quick Stop (0x20)
    Remote (0x200)
    Operation Mode Specific (0x1000)

I assume that “target reached” in the status word is a direct reply by the drive that it has not (yet) reached the commanded position, which is certainly an accurate statement.

I don’t know why, however.

1 Like