External Coolant Controls

More
5 years 2 months ago #217835 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
Code:
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.
Code:
#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.

More
5 years 2 months ago #217840 by nkp
Replied by nkp on topic External Coolant Controls
Code:
        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
Code:
         # 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
Code:
          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']
Code:
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.

More
5 years 2 months ago #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.)

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

More
5 years 2 months ago #217915 by davidimurray
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

 

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

More
5 years 2 months ago #217916 by andypugh
Replied by andypugh on topic External Coolant Controls
Code:
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.

More
5 years 2 months ago #218176 by davidimurray
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

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

Time to create page: 0.137 seconds
Powered by Kunena Forum