Overrides Hal example

More
10 years 6 months ago #73252 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 to join the conversation.

More
10 years 6 months ago #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.
Code:
# --- 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 to join the conversation.

More
10 years 6 months ago #73298 by andypugh
Replied by andypugh on topic Overrides Hal example

Mtndrew77 wrote: 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
Code:
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.
Code:
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.

Please Log in to join the conversation.

More
10 years 6 months ago #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

Please Log in to join the conversation.

More
10 years 6 months ago #73339 by andypugh
Replied by andypugh on topic Overrides Hal example

Mtndrew77 wrote: 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.

Please Log in to join the conversation.

More
10 years 6 months ago #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!

Please Log in to join the conversation.

More
10 years 6 months ago #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.

Please Log in to join the conversation.

More
10 years 6 months ago #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

Please Log in to join the conversation.

More
10 years 6 months ago #73506 by andypugh
Replied by andypugh on topic Overrides Hal example

Mtndrew77 wrote: 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 to join the conversation.

More
10 years 6 months ago #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

Please Log in to join the conversation.

Time to create page: 0.101 seconds
Powered by Kunena Forum