Overrides Hal example
13 Apr 2016 20:56 #73252
by Mtndrew77
Overrides Hal example was created by Mtndrew77
I'm adding a spindle and feedrate override to my machine. The spindle override is a potentiometer with wiper connected to input 0 on my 7i76e, and the feedrate override is a 23 position selector switch with 5 outputs. I have those connected to inputs 16 and 20. Does anyone have a hal file example of something similar they could share?
Please Log in or Create an account to join the conversation.
14 Apr 2016 04:23 #73270
by cmorley
Replied by cmorley on topic Overrides Hal example
Cut from pncconf config:
Gives you (one) the general idea of how to do this with HALUI.
Gives you (one) the general idea of how to do this with HALUI.
# --- FO-INCR-A ---
net fo-incr-a <= hm2_5i25.0.7i76.0.0.input-20
# --- FO-INCR-B ---
net fo-incr-b <= hm2_5i25.0.7i76.0.0.input-21
# --- FO-INCR-C ---
net fo-incr-c <= hm2_5i25.0.7i76.0.0.input-22
# --- FO-INCR-D ---
net fo-incr-d <= hm2_5i25.0.7i76.0.0.input-23
# connect feed overide increments - switches
setp halui.feed-override.count-enable true
setp halui.feed-override.direct-value true
setp halui.feed-override.scale .01
net feedoverride-incr => halui.feed-override.counts
net fo-incr-a => foincr.sel0
net fo-incr-b => foincr.sel1
net fo-incr-c => foincr.sel2
net fo-incr-d => foincr.sel3
net feedoverride-incr <= foincr.out-s
setp foincr.debounce-time 0.200000
setp foincr.use-graycode False
setp foincr.suppress-no-input False
setp foincr.in00 0.000000
setp foincr.in01 5.000000
setp foincr.in02 10.000000
setp foincr.in03 25.000000
setp foincr.in04 50.000000
setp foincr.in05 75.000000
setp foincr.in06 90.000000
setp foincr.in07 100.000000
setp foincr.in08 110.000000
setp foincr.in09 125.000000
setp foincr.in10 100.000000
setp foincr.in11 150.000000
setp foincr.in12 165.000000
setp foincr.in13 180.000000
setp foincr.in14 190.000000
setp foincr.in15 200.000000
Please Log in or Create an account to join the conversation.
14 Apr 2016 13:28 #73298
by andypugh
So, there is an analogue voltage for spindle override and a 5-bit encoded feed override.
Your HAL / INI config will need to put the 7i76 into analogue input mode for the spindle.
In the HAL file. :
loadrt hm2_eth board_ip="192.168.1.121" config="firmware=hm2/7i76/7i76e.BIT num_encoders=1 num_pwmgens=0 num_stepgens=2 sserial_port_0=10xxxx"
You will then get some new pins, analogue inputs on IO pins 0 to 3.
Then
The example given by Chris seems to be using a mux-16 called "fo-incr", but you seem to have more that 16 options so need to use mux_generic
linuxcnc.org/docs/2.7/html/man/man9/mux_generic.9.html
For the feed-override I would start like this because it isn't clear how the switch is encoded.
The reason to set the inputs with numbers to match the input index is that you can then set up a halmeter on the mux-gen.00.out-float pin and see which input needs to be set to correspond to each switch position.
The switch is likely to be gray-code encoded, so the indexes will seem to jump about.
The rest of the config will be as Chris said.
Replied by andypugh on topic Overrides Hal example
spindle override is a potentiometer with wiper connected to input 0 on my 7i76e, and the feedrate override is a 23 position selector switch with 5 outputs
So, there is an analogue voltage for spindle override and a 5-bit encoded feed override.
Your HAL / INI config will need to put the 7i76 into analogue input mode for the spindle.
In the HAL file. :
loadrt hm2_eth board_ip="192.168.1.121" config="firmware=hm2/7i76/7i76e.BIT num_encoders=1 num_pwmgens=0 num_stepgens=2 sserial_port_0=10xxxx"
You will then get some new pins, analogue inputs on IO pins 0 to 3.
Then
loadrt scale names=spindle-scale
addf spindle-scale servo-thread
...
net spindle-analogue hm2_5i25.0.7i76.0.0.analogin0 => spindle-scale.in
net spindle-override spindle-scale.out => halui.spindle-override.value
setp halui.spindle-override.direct-value 1
setp spindle-scale.scale 1
setp spindle-scale.offset -2.5
The example given by Chris seems to be using a mux-16 called "fo-incr", but you seem to have more that 16 options so need to use mux_generic
linuxcnc.org/docs/2.7/html/man/man9/mux_generic.9.html
For the feed-override I would start like this because it isn't clear how the switch is encoded.
loadrt mux_generic config="ff24"
addf mux_gen.00 servo-thread
...
net feed-sel-0 hm2_5i25.0.7i76.input-16 => mux-gen.00.sel-bit-000
net feed-sel-1 hm2_5i25.0.7i76.input-17 => mux-gen.00.sel-bit-001
net feed-sel-2 hm2_5i25.0.7i76.input-18 => mux-gen.00.sel-bit-002
net feed-sel-3 hm2_5i25.0.7i76.input-19 => mux-gen.00.sel-bit-003
net feed-sel-4 hm2_5i25.0.7i76.input-20 => mux-gen.00.sel-bit-004
setp mux-gen.00.in-float-00 0
setp mux-gen.00.in-float-01 1
setp mux-gen.00.in-float-02 2
setp mux-gen.00.in-float-03 3
setp mux-gen.00.in-float-04 4
... and so on.
The reason to set the inputs with numbers to match the input index is that you can then set up a halmeter on the mux-gen.00.out-float pin and see which input needs to be set to correspond to each switch position.
The switch is likely to be gray-code encoded, so the indexes will seem to jump about.
The rest of the config will be as Chris said.
The following user(s) said Thank You: ts14
Please Log in or Create an account to join the conversation.
14 Apr 2016 15:28 #73309
by Mtndrew77
Replied by Mtndrew77 on topic Overrides Hal example
Well I see my first problem now was that I was in the wrong mode to get the analogue inputs. I could of swore I set that in PNC config,but
maybe not. I'm still struggling to wrap my head around the Mux Component. Does this sort of work like a switch statement in C? with the 24 in config="ff24" representing the number of different possible cases that determine the output of mux-gen.00.out?
Sorry if I'm being confusing, but like I said I'm still trying to wrap my head around it
Thanks
maybe not. I'm still struggling to wrap my head around the Mux Component. Does this sort of work like a switch statement in C? with the 24 in config="ff24" representing the number of different possible cases that determine the output of mux-gen.00.out?
Sorry if I'm being confusing, but like I said I'm still trying to wrap my head around it
Thanks
Please Log in or Create an account to join the conversation.
15 Apr 2016 10:08 #73339
by andypugh
It's a multiplexer, many inputs to one output. The "select" inputs choose which input is passed to the output.
mux2 is the simplest, two inputs and one output, the "select" bit switches between them.
mux4 has 2 select bits. We got up to mux16 before I decided that we just needed a general-purpose one that could also handle other data types.
The inputs can be set to constant values, or they can be linked to the output pins of other components.
I think my example might have a flaw, you probably need to use "ff32" so that it creates the right number of select bits. I think ff24 will only give you the integer indexer.
Replied by andypugh on topic Overrides Hal example
I'm still struggling to wrap my head around the Mux Component. Does this sort of work like a switch statement in C? with the 24 in config="ff24" representing the number of different possible cases that determine the output of mux-gen.00.out?
It's a multiplexer, many inputs to one output. The "select" inputs choose which input is passed to the output.
mux2 is the simplest, two inputs and one output, the "select" bit switches between them.
mux4 has 2 select bits. We got up to mux16 before I decided that we just needed a general-purpose one that could also handle other data types.
The inputs can be set to constant values, or they can be linked to the output pins of other components.
I think my example might have a flaw, you probably need to use "ff32" so that it creates the right number of select bits. I think ff24 will only give you the integer indexer.
The following user(s) said Thank You: Mtndrew77
Please Log in or Create an account to join the conversation.
15 Apr 2016 13:05 #73345
by Mtndrew77
Replied by Mtndrew77 on topic Overrides Hal example
Okay, that makes more sense. 5 bits can have 32 possible combinations. So I guess in my mind it
is sort of like a switch statement then. The light bulb just went on over my head--Thanks for the help!
is sort of like a switch statement then. The light bulb just went on over my head--Thanks for the help!
Please Log in or Create an account to join the conversation.
15 Apr 2016 13:16 #73346
by andypugh
Replied by andypugh on topic Overrides Hal example
I think of it as creating an integer from the bits, then using that as the index of an array of inputs.
Interestingly, that isn't how the less general-purpose mux components do it, they look like this:
github.com/LinuxCNC/linuxcnc/blob/master...components/mux4.comp
mux_generic is a lot more complicated
github.com/LinuxCNC/linuxcnc/blob/master...onents/mux_generic.c
Though the vast majority of that code only runs at setup time.
Interestingly, that isn't how the less general-purpose mux components do it, they look like this:
github.com/LinuxCNC/linuxcnc/blob/master...components/mux4.comp
mux_generic is a lot more complicated
github.com/LinuxCNC/linuxcnc/blob/master...onents/mux_generic.c
Though the vast majority of that code only runs at setup time.
Please Log in or Create an account to join the conversation.
17 Apr 2016 20:54 #73505
by Mtndrew77
Replied by Mtndrew77 on topic Overrides Hal example
Okay not sure what I'm doing wrong here. Looks like its failing to create the select bit pin. Got any ideas?
Debug file information:
Note: Using POSIX realtime
./spindletest.hal:296: Pin 'mux-gen.00.sel-bit-000' does not
Debug file information:
Note: Using POSIX realtime
./spindletest.hal:296: Pin 'mux-gen.00.sel-bit-000' does not
Please Log in or Create an account to join the conversation.
17 Apr 2016 21:19 #73506
by andypugh
Sorry, my mistake, the sel-bit-00 etc pins only have 2 digits.
I was going by the manpage, not a trial run.
(that still makes it my fault, I wrote the manpage
Replied by andypugh on topic Overrides Hal example
Pin 'mux-gen.00.sel-bit-000' does not
Sorry, my mistake, the sel-bit-00 etc pins only have 2 digits.
I was going by the manpage, not a trial run.
(that still makes it my fault, I wrote the manpage
Please Log in or Create an account to join the conversation.
17 Apr 2016 23:11 #73507
by Mtndrew77
Replied by Mtndrew77 on topic Overrides Hal example
One down, but now I get this one
Debug file information:
Note: Using POSIX realtime
./spindletest.hal:302: parameter or pin 'mux-gen.00.in-s32-00' not found
5789
Debug file information:
Note: Using POSIX realtime
./spindletest.hal:302: parameter or pin 'mux-gen.00.in-s32-00' not found
5789
Please Log in or Create an account to join the conversation.
Time to create page: 0.167 seconds