I’m seeing some unexpected behavior with my code that worked fine (before upgrading) for methods 119/121. It appears to be skipping the stage 1 move (even though the input is low).
Testing it on my AKD I’m seeing the expected behavior for these two methods.
Could you do some testing in RapidSetup on your system?
Try HomeTriggerStateSet(LOW)? Skipping a stage would be a symptom that makes sense if this was set opposite of what it should be. When the switch is depressed what does the Dedicated I/0 HomeInput show in Rapid Setup?
You may need to call HardwareNegLimitTriggerStateSet() or HardwarePosLimitTriggerStateSet() now when you wouldn’t have needed to in 10.3.1 As those limits could be in an incorrectly active state during the homing routine now causing it to error out.
You will get a message like this in RapidSetup if the state of the +/- limit is the issue during homing.
The input you are recording here is the arbitrary hardware input for your home and not the RMP Home Limit correct?
And you are physically off the switch at the start?
Implying the hardware is sending an Active HIGH type of signal to RMP.
I haven’t tested this homing routine with a HomeLimitCustomConfigSet() yet but it should work.
I would be very curious what behavior you get on your system if you call HomeTriggerStateSet(0) even though this is the opposite of what you are telling me the configuration should be.
Please also observe in Rapid Setup or your recorder if the STATUS BITS HW Positive Limie or HW Negative limit remain LOW during homing.
The view is zoomed to ~50 ms before homing starts (when the commanded velocity changes).
The dedicated inputs only over has two values: 0, 2048.
In RapidSetup, I see “Home Limit” on before I start moving. I would guess that this is how RMP is concluding that it should start with stage 2.
Questions
What about 10.3.1 → 10.3.3 would change the interpretation of the home limit? I’m not “using” a home limit for this drive, though RMP is surely defining one somewhere. I’m not deliberately using this in any way (that I know of).
Does the Home Limit represent only the dedicated home input on the drive?
NodeInfo.XML
Here’s the Product element for the drive in question. I don’t see anything defined for “home” in the inputs elements.
<Product Code="0x10006">
<ProductName>D3_America EtherCAT Drive (CoE)</ProductName>
<ShortName>CTB D3</ShortName>
<ItemSubType>Drive</ItemSubType>
<AxisCount>3</AxisCount>
<StatusWord>Inputs.Status word0</StatusWord>
<PositionActual>Inputs.Position actual value0</PositionActual>
<VelocityActual>Inputs.Velocity actual value0</VelocityActual>
<TorqueActual>Inputs.Torque actual value0</TorqueActual>
<ControlWord>Outputs.Control word0</ControlWord>
<PositionDemand>Outputs.position set point (PCMD)0</PositionDemand>
<VelocityDemand>Outputs.velocity set point (VCMD)0</VelocityDemand>
<TargetTorque>Outputs.Target torq0</TargetTorque>
<GeneralInputs Size="2">Inputs.Digital0 input status</GeneralInputs>
<ModeOfOperation>Outputs.Modes of operation0</ModeOfOperation>
<GeneralOutputs Size="2">Outputs.Digital0 output control</GeneralOutputs>
<IO>
<DigitalInputItems>
<DigitalInput SigBits="0xFFFF" Size="16">Inputs.Digital0 input status</DigitalInput>
<DigitalInput SigBits="0xFFFF" Size="16">Inputs.Digital1 input status</DigitalInput>
<DigitalInput SigBits="0xFFFF" Size="16">Inputs.Digital2 input status</DigitalInput>
</DigitalInputItems>
<DigitalOutputItems>
<DigitalOutput SigBits="0xFFFF" Size="16">Outputs.Digital0 output control</DigitalOutput>
<DigitalOutput SigBits="0xFFFF" Size="16">Outputs.Digital1 output control</DigitalOutput>
</DigitalOutputItems>
</IO>
<AdditionalAxes>
<Axis Index="1">
<StatusWord>Inputs.Status word1</StatusWord>
<PositionActual>Inputs.Position actual value1</PositionActual>
<VelocityActual>Inputs.Velocity actual value1</VelocityActual>
<TorqueActual>Inputs.Torque actual value1</TorqueActual>
<ControlWord>Outputs.Control word1</ControlWord>
<PositionDemand>Outputs.position set point (PCMD)1</PositionDemand>
<VelocityDemand>Outputs.velocity set point (VCMD)1</VelocityDemand>
<TargetTorque>Outputs.Target torq1</TargetTorque>
<ModeOfOperation>Outputs.Modes of operation1</ModeOfOperation>
</Axis>
<Axis Index="2">
<StatusWord>Inputs.Status word2</StatusWord>
<PositionActual>Inputs.Position actual value2</PositionActual>
<VelocityActual>Inputs.Velocity actual value2</VelocityActual>
<TorqueActual>Inputs.Torque actual value2</TorqueActual>
<ControlWord>Outputs.Control word2</ControlWord>
<PositionDemand>Outputs.position set point (PCMD)2</PositionDemand>
<VelocityDemand>Outputs.velocity set point (VCMD)2</VelocityDemand>
<TargetTorque>Outputs.Target torq2</TargetTorque>
<ModeOfOperation>Outputs.Modes of operation2</ModeOfOperation>
</Axis>
</AdditionalAxes>
</Product>