I would like to add from experience with industrial robots, what could
be implemented in LinuxCNC and useful for more machines / cases.
The robots I met had electromechanical brakes and either resolvers or
single-turn-absolute-encoders on every joint.
The original control systems, as I understood, work by an algorithm:
----------
Power on
read non-volatile memory
For each joint:
If joint was marked as calibrated then:
Read resolver angle
If difference between last_angle and new_angle is less than
tolerance
(a degree or less, I suppose), then mark joint as calibrated /
referenced, calculate pos., etc.
Otherwise mark joint as not referenced / not calibrated.
If any of joints is not calibrated, inform user and ask for
re-calibration (either each or all joints)
...
Release brakes
...
After brake engage
wait for relays and mechanical brake to work
For each joint:
wait for joints velocity to reduce to ~0
store is-calibrated flag
If joint or robot is calibrated / referenced, then store last_angle
----------
This method relies on a very large probability that if a joint was moved
while offline, it was not moved exactly one resolver /
single-turn-encoder rotation (+/- small tolerance for backlash and
readout accuracy). Furthermore, algorithm may add that if at least 1
joint was moved, don't trust other joints, as this is logical for some
machines, like industrial robot..
01/05/2017 01:16 AM, Rene Hopf rašė:
>
>> On 4 Jan 2017, at 19:07, Nicklas Karlsson <[email protected]>
>> wrote:
>>
>> As I understand it position is already known from absolute encoder so there
>> is no need to run machine to a switch is hit?
>
> there are generally 2 types of abs encoders: multiturn and non multiturn.
> non multiturn encoders only give the absolute position to 0-360 deg, so one
> shaft revolution.
> if you turn it 5 times, the encoder cant tell without power.
> multiturn encoders usually have a battery backup, and can count multiple
> turns when powered off.
> with multiturn encoders its really easy, you just have a fixed offset to your
> home position, and it just works.
> the idea is to use non multiturn encoders in a multitun way, so you just have
> to remember on which rotation the servo is, but not where on that rotation.
> so when you assume your motors dont turn more than a full revolution while
> the machine is powered off, you can just use the abs position, and full
> revolutions to work out the exact position.
> of course this also works with resolvers.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers