External Coolant Controls
- davidimurray
- Offline
- Senior Member
Less
More
- Posts: 78
- Thank you received: 5
15 Aug 2021 17:43 #217835
by davidimurray
External Coolant Controls was created by davidimurray
Hi All
After a hiatus, I'm back working on my new lathe. Having done some setup on the bench in Linuxcnc, I am now working on moving various functions into PP.
One thing I'm looking to do is add some external controls - in addition to the software controls. I can get either the external control, or the on-screen buttons to work. But not both together. Any help would be appreciated
Looking in the UI file - it appears PP looks at tormach.coolant-iocontrol
In the postgui file I have the following. The last two line are the original PP code. As shown, the code switches my coolant relay with the external switch but on-screen does not work. If I uncomment the original code - it complains about more than one pin being connected to the signal.
Any ideas would be much appreciated.
Thanks
Dave
After a hiatus, I'm back working on my new lathe. Having done some setup on the bench in Linuxcnc, I am now working on moving various functions into PP.
One thing I'm looking to do is add some external controls - in addition to the software controls. I can get either the external control, or the on-screen buttons to work. But not both together. Any help would be appreciated
Looking in the UI file - it appears PP looks at tormach.coolant-iocontrol
def on_coolant_button_release_event(self, widget, data=None):
# POSTGUI_HALFILE contains:
# net coolant-flood tormach.coolant => parport.0.pin-14-out
# net coolant-flood-io iocontrol.0.coolant-flood => tormach.coolant-iocontrol
# The UI code here watches tormach.coolant-iocontrol for changes from LinuxCNC.
# See the periodic handler for details
if not self.is_button_permitted(widget): return
self.window.set_focus(None)
# disable coolant lockout : if user commands coolant, do it immediately
self.coolant_lockout = 0
# use our tormach.coolant HAL pin to track actual coolant state
coolant_on = self.hal['coolant']
if not coolant_on:
self.hal['coolant'] = 1
else:
self.hal['coolant'] = 0
In the postgui file I have the following. The last two line are the original PP code. As shown, the code switches my coolant relay with the external switch but on-screen does not work. If I uncomment the original code - it complains about more than one pin being connected to the signal.
#coolant toggle section#
loadrt toggle2nist count=1
loadrt edge count=1
addf toggle2nist.0 servo-thread
addf edge.0 servo-thread
net coolant-flood <= iocontrol.0.coolant-flood
# Coolant switch
net flood-button <= hm2_7i76e.0.7i76.0.0.input-06 => edge.0.in
net button-edge <= edge.0.out => toggle2nist.0.in
net flood-on <= toggle2nist.0.on => halui.flood.on
net flood-off <= toggle2nist.0.off => halui.flood.off
net flood-control <= halui.flood.is-on => toggle2nist.0.is-on
#original tormach code below here
#net coolant-flood tormach.coolant
#net coolant-flood-io iocontrol.0.coolant-flood => tormach.coolant-iocont
Any ideas would be much appreciated.
Thanks
Dave
Please Log in or Create an account to join the conversation.
- nkp
- Offline
- Premium Member
Less
More
- Posts: 147
- Thank you received: 39
15 Aug 2021 19:31 #217840
by nkp
Replied by nkp on topic External Coolant Controls
self.hal = hal.component("tormach")
self.hal.newpin("coolant", hal.HAL_BIT, hal.HAL_OUT)
self.hal.newpin("coolant-iocontrol", hal.HAL_BIT, hal.HAL_IN)
self.hal.newpin("coolant-tgbutton", hal.HAL_BIT, hal.HAL_IN) #nkp
# initial hal states:
self.prev_coolant_iocontrol = self.hal['coolant'] = 0
self.prev_coolant_tgbutton = 0 #nkp https://forum.linuxcnc.org/pathpilot/43326-external-coolant-controls
if self.prev_coolant_iocontrol != self.hal['coolant-iocontrol']:
if self.hal['coolant-iocontrol']:
self.hal['coolant'] = 1
else:
self.hal['coolant'] = 0
# current becomes previous
self.prev_coolant_iocontrol = self.hal['coolant-iocontrol']
# nkp https://forum.linuxcnc.org/pathpilot/43326-external-coolant-controls
if self.prev_coolant_tgbutton != self.hal['coolant-tgbutton']:
if self.hal['coolant-tgbutton']:
self.hal['coolant'] = 1
else:
self.hal['coolant'] = 0
# current becomes previous
self.prev_coolant_tgbutton = self.hal['coolant-tgbutton']
net coolant-flood tormach.coolant => parport.0.pin-14-out
net coolant-flood-io iocontrol.0.coolant-flood => tormach.coolant-iocontrol
net tgb tormach.coolant-tgbutton
loadusr sim_pin tgb
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
16 Aug 2021 13:26 #217881
by andypugh
Replied by andypugh on topic External Coolant Controls
I use a 3-position switch and a mux component for this.
In the central "auto" position the mux passes through the iocontrol.0.coolant-flood signal.
Then the off input is simply setp to 0, and on to 1. So I can either leave the coolant under software control, or force it on or off.
(Note that this is done with a mux-generic component, that can be configured for bit-type signals.)
In the central "auto" position the mux passes through the iocontrol.0.coolant-flood signal.
Then the off input is simply setp to 0, and on to 1. So I can either leave the coolant under software control, or force it on or off.
(Note that this is done with a mux-generic component, that can be configured for bit-type signals.)
Please Log in or Create an account to join the conversation.
- davidimurray
- Offline
- Senior Member
Less
More
- Posts: 78
- Thank you received: 5
16 Aug 2021 20:07 #217915
by davidimurray
Replied by davidimurray on topic External Coolant Controls
Thanks nkp - I tried for a few hours to get the code to work but I could not get it to switch with the external switch.
Andy - being cheeky would you have a sample of the code you use. I am a relative newbie to HAl and tried tonight to use mux-generic but think I confused myself!
Thanks both
Andy - being cheeky would you have a sample of the code you use. I am a relative newbie to HAl and tried tonight to use mux-generic but think I confused myself!
Thanks both
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
16 Aug 2021 21:17 #217916
by andypugh
Replied by andypugh on topic External Coolant Controls
loadrt mux_generic config="bb4"
addf mux-gen.00 servo-thread
net coolant-off hm2_7i84.008a.input-25 => mux-gen.00.sel-bit-00
net coolant-on hm2_7i84.008a.input-26 => mux-gen.00.sel-bit-01
net coolant-flood mux-gen.00.out-bit => hm2_7i84.008a.output-08
net coolant-auto iocontrol.0.coolant-flood => mux-gen.00.in-bit-00
setp mux-gen.00.in-bit-01 0
setp mux-gen.00.in-bit-02 1
setp mux-gen.00.in-bit-03 0
Please Log in or Create an account to join the conversation.
- davidimurray
- Offline
- Senior Member
Less
More
- Posts: 78
- Thank you received: 5
19 Aug 2021 20:16 #218176
by davidimurray
Replied by davidimurray on topic External Coolant Controls
Thanks Andy
I've been having a play and can get the external switch working, but not with the onscreen button. After some work, I;ve got HALshow working. And looking at the pins tormach.coolant seems to be the one that changes with the onscreen button.
I've tried changing
net coolant-auto iocontrol.0.coolant-flood => mux-gen.00.in-bit-00
to
net tormach.coolant => mux-gen.00.in-bit-00
but that doesn't work - any ideas much appreciated.
Thanks
I've been having a play and can get the external switch working, but not with the onscreen button. After some work, I;ve got HALshow working. And looking at the pins tormach.coolant seems to be the one that changes with the onscreen button.
I've tried changing
net coolant-auto iocontrol.0.coolant-flood => mux-gen.00.in-bit-00
to
net tormach.coolant => mux-gen.00.in-bit-00
but that doesn't work - any ideas much appreciated.
Thanks
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
19 Aug 2021 23:45 #218188
by andypugh
Replied by andypugh on topic External Coolant Controls
How doesn't it work? Is there an error message?but that doesn't work
Please Log in or Create an account to join the conversation.
- davidimurray
- Offline
- Senior Member
Less
More
- Posts: 78
- Thank you received: 5
20 Aug 2021 11:28 #218230
by davidimurray
Replied by davidimurray on topic External Coolant Controls
No error message. Pathpilot starts fine. When I toggle the on screen button, I can see tormach.coolant change states, but the output from the MUX does not change. If i use my external switch then the MUX output does change.
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
20 Aug 2021 11:31 #218231
by andypugh
Replied by andypugh on topic External Coolant Controls
What is the state of the mux select inputs in the "auto" position? perhaps toemach,coolant needs to go to in-bit-03
Please Log in or Create an account to join the conversation.
- davidimurray
- Offline
- Senior Member
Less
More
- Posts: 78
- Thank you received: 5
20 Aug 2021 11:53 #218234
by davidimurray
Replied by davidimurray on topic External Coolant Controls
I will have a play later when I get back from work and try changing the bit
Please Log in or Create an account to join the conversation.
Time to create page: 0.085 seconds