How turn off servo loop for one axis?

More
16 Aug 2023 02:40 #278108 by tommylight

IMHO a better place would be in 'Advanced Configuration'. Maybe a mod could move it there

Done, thank you.
The following user(s) said Thank You: JPL

Please Log in or Create an account to join the conversation.

More
16 Aug 2023 11:40 #278161 by Taichi
I really appreciate the forum's help. The forum and the lcnc developers have been very helpful in getting this rather complex machine working again. Forum participants helped from reflashing the mesa boards to the full functionality of the machine no worse than a siemens or fanuc CNC. And these systems cost a lot, like a spaceship.
Also I started to understand the structure of lcnc. Therefore, when I myself solved the problem for which I asked, I tried to describe how I solved it. So someone else who faces the same problem will read the forum and maybe it will help him.
The language barrier is a bit of a hindrance, I'm from Ukraine, and I often use a translator. That is why I questioned whether I expressed myself correctly. Thank you.

Please Log in or Create an account to join the conversation.

More
16 Aug 2023 17:48 - 16 Aug 2023 18:25 #278187 by Taichi
#*******************
# AXIS A JOINT 3
#*******************

setp pid.a.Pgain [JOINT_3]P
setp pid.a.Igain [JOINT_3]I
setp pid.a.Dgain [JOINT_3]D
setp pid.a.bias [JOINT_3]BIAS
setp pid.a.FF0 [JOINT_3]FF0
setp pid.a.FF1 [JOINT_3]FF1
setp pid.a.FF2 [JOINT_3]FF2
setp pid.a.deadband [JOINT_3]DEADBAND
setp pid.a.maxoutput [JOINT_3]MAX_OUTPUT
setp pid.a.error-previous-target true

net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-pos-fb => pid.a.feedback
net a-output <= pid.a.output

# ---PWM Generator signals/setup---

setp hm2_5i25.0.7i77.0.1.analogout3-scalemax [JOINT_3]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout3-minlim [JOINT_3]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout3-maxlim [JOINT_3]OUTPUT_MAX_LIMIT

net a-output => hm2_5i25.0.7i77.0.1.analogout3
net a-pos-cmd <= joint.3.motor-pos-cmd
net a-enable <= joint.3.amp-enable-out

# ---Encoder feedback signals/setup---

setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
setp hm2_5i25.0.encoder.03.scale [JOINT_3]ENCODER_SCALE

net a-pos-fb <= hm2_5i25.0.encoder.03.position
net a-vel-fb <= hm2_5i25.0.encoder.03.velocity
net a-pos-fb => joint.3.motor-pos-fb
net a-index-enable joint.3.index-enable <=> hm2_5i25.0.encoder.03.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.03.rawcounts

# ---setup home / limit switch signals---

net a-home-sw => joint.3.home-sw-in hm2_5i25.0.7i77.0.0.input-06-not
net a-neg-limit => joint.3.neg-lim-sw-in
net a-pos-limit => joint.3.pos-lim-sw-in
Can I break this thread so the system doesn't track the position. -> net a-pos-fb => pid.a.feedback
Or physically turn off the encoder, but specify the system so that there is no feederror
FERROR = 0.5 ------ > FERROR = 0 MIN
_FERROR = 0.05 -----> MIN_FERROR = 0


 
Last edit: 16 Aug 2023 18:25 by Taichi.

Please Log in or Create an account to join the conversation.

More
17 Aug 2023 05:10 #278230 by spumco
I - think - the solution is to use a mux component to swich the encoder's output between the spindle PID and the axis PID.

The switch is made using a pair of M-codes (axis mode on/off).  When in spindle mode, the encoder is connected to spindle PID, and vice-versa for axis mode.  And the axis-mode M-code also contains an un-home then home command.

So every time you activate the axis it will turn on encoder.N.index-enable, connect the output to the PID (via the mux), and then run the homing process.

I don't think physically turning off the encoder is the way to go.

Hopefully somone else can confirm or elaborate on the above.

Please Log in or Create an account to join the conversation.

More
17 Aug 2023 09:58 - 17 Aug 2023 10:02 #278245 by Aciera
I'm not familiar with analog servo setups but I have implemented a rotary axis/spindle switch with a motor drive that could be run in position(step/dir)/velocity(analog) mode. Which means I did not run the motor with the stepgen while in spindle mode.
forum.linuxcnc.org/10-advanced-configura...code?start=30#272218
I wonder if you could do something similar so I'll try to give a quick overview of what was involved.

Say we start with the rotary running in axis mode.
Switch to spindle mode:
1. Move rotary to position zero

2. Store the current encoder count and switch the rotary feedback from the encoder count to the stored count. (this means the rotary axis 'thinks' it is standing still while in spindle mode)

3. In my case I switch the drive to speed mode and use normal spindle command (M3 Sxxxx) to output an analog signal to run the motor as a spindle. In your case I wonder if you could maybe switch to a different pwm generator.

To switch from spindle back to rotary:
1. use M19 spindle orient to bring the spindle to the zero position. There is a special component that resets the encoder count on a mesa board to zero on an index pulse (in my case this pulse comes from the encoder output of my motor drive if you don't have an index signal you may have to generate one using an extra sensor on the motor). This basically 'rehomes' the rotary.

2. we can now reconnect the encoder count to the rotary feedback position. Note that, depending on the accuracy of the spindle orientation the spindle will have overshot the zero position and the encoder may be somewhere past the zero count. The moment this count is reconnected to the rotary feedback it will be seen as a position error and will be corrected by the pid. This might require relaxing the f-error value to avoid triggering a following error.

All the relevant components (encoder switching, spindle-orient) and mcodes are attached to the post linked above and the one immediately following it.

Maybe this give you some ideas about how to proceed in your situation.
Last edit: 17 Aug 2023 10:02 by Aciera.
The following user(s) said Thank You: spumco

Please Log in or Create an account to join the conversation.

More
17 Aug 2023 10:07 #278247 by Taichi
How can I program M-code to enable and disable hm2_5i25.0.7i77.0.0.output-16?

I can't find the g-code that will send the axis to find a home..... And without that my idea won't work
Attachments:

Please Log in or Create an account to join the conversation.

More
17 Aug 2023 10:29 #278250 by Aciera

How can I program M-code to enable and disable hm2_5i25.0.7i77.0.0.output-16?

You could use M64/M65 to switch  hal pins 'motion.digital-out-0N'
linuxcnc.org/docs/html/gcode/m-code.html#mcode:m62-m65
Then you can use and AND component to  connect the relevant 'motion.digital-out-0x' pin and whatever signal you currently use to drive hm2_5i25.0.7i77.0.0.output-16

I can't find the g-code that will send the axis to find a home...

There is no such Gcode, which is why we have to use the M19 spindle orient to 'rehome' the rotary spindle  before we can use it as a rotary axis.
The following user(s) said Thank You: spumco

Please Log in or Create an account to join the conversation.

More
27 Aug 2023 09:55 - 27 Aug 2023 09:56 #279084 by Taichi
Hello, in general, the problem with controlling the axis as a spindle was solved. Two relays were installed and they are controlled by M64 and M65. The first relay turns off the power to the encoder, and the second relay passes 10V through the potentiometer. Now, to execute the program, you must first grind the surface and then turn the axis back on. The position of the axis when it is turned on and will be the index. And relative to this position, you can do any operations with correct angles. After that, you can turn off the axis again and turn on the spindle and polish again, but back in the axis mode you will no longer get into the index. I made it through two relays so that there was no reaction to the rattling of the contacts. Encoder power is turned on after the LCNC has gained control over 10v for this axis.
Thanks to everyone who helped. Best regards. The forum branch can be closed.
- machine working video
Last edit: 27 Aug 2023 09:56 by Taichi.

Please Log in or Create an account to join the conversation.

More
27 Aug 2023 10:19 #279085 by Aciera
Somewhat unusual way of doing it but I'm glad you found a solution that works for you.
Thanks for reporting back.

Please Log in or Create an account to join the conversation.

Time to create page: 0.096 seconds
Powered by Kunena Forum