PnCConf rework

More
12 Mar 2013 04:04 #31261 by arvidb
Replied by arvidb on topic PnCConf rework
Peter, can you confirm that "assumption a)" in my message above is correct?

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

More
12 Mar 2013 07:58 #31268 by PCW
Replied by PCW on topic PnCConf rework
Its not guaranteed but most configurations follow that rule.

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

More
18 Mar 2013 09:26 #31526 by arvidb
Replied by arvidb on topic PnCConf rework
I just wanted to let you know that I'm still working on this. Much of it is ready, I "only" have to put things together!

I've learned a lot about gtk programming today; signals, treeviews etc. Also struggling with Python imports. :S

Maybe after next weekend I'll have something to show.

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

More
24 Mar 2013 07:29 #31784 by arvidb
Replied by arvidb on topic PnCConf rework
I'm a bit confused about the handling of axes vs joints.

The HAL component axis.N actually handles joints, according to the man page . So axis.N.home-sw-in signals a _joint_ home (and homing must be made to joint positions, which is reasonable I guess).

And if I understand the documentation correctly, the .ini file's [AXIS_N] section name is also a misnomer, and instead map directly to the HAL axis component.

First I thought that there are values in the [AXIS_N] section that simply didn't make sense for joints, like TYPE and UNITS, and MAX_VELOCITY, MAX_ACCELERATION and BACKLASH (since they are in machine units). But then I realised that machine units and machine coordinates aren't the same thing, so even if a joint's backlash varies with its axis'/axes' position(s) in the machine coordinate frame, it can still be expressed in machine units in the joint's coordinate frame.

Ok, so perhaps I'm not so confused? Anyway, I guess the documentation should be changed to reflect that [AXIS_<num>] actually sets up joints, and not axes? (The word axis is used throughout the manual section on [AXIS_<num>].)

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

More
24 Mar 2013 09:04 #31786 by arvidb
Replied by arvidb on topic PnCConf rework
*sigh* But that can't be right: how do one home, say, an inverted tripod machine if homing is not synchronized?

Hmm, but then again, if such a machine is not homed (i.e. the absolute position of each joint is not known), it is impossible to do synchronized movement anyway.

Boy this is dizzying! :)

This would mean that one would have to use absolute feedback on a stiff hexapod machine?

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

More
24 Mar 2013 11:06 #31788 by cmorley
Replied by cmorley on topic PnCConf rework
You have discovered that axis and joints are not properly separated ideas in Linuxcnc.
There is actually a branch of linuxcnc that is a work in progress to separate the concepts.

Chris M

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

More
24 Mar 2013 22:58 #31805 by arvidb
Replied by arvidb on topic PnCConf rework
Well, I could at least fix the [AXIS_<num>] documentation section, if someone told me how to (and if there is a consensus that that section actually controls joints, not axes).

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

More
25 Mar 2013 08:23 - 25 Mar 2013 08:25 #31817 by arvidb
Replied by arvidb on topic PnCConf rework
Ok, so I'm slowly getting somewhere:

Hardware selection:


Joint configuration:


And this would generate a config something like this (but aligned - weird that the code tag doesn't use a monospaced font? Oh, it's just the preview that doesn't show the code section properly...):
#*********************************************************
#  AXIS X
#*********************************************************

setp   hm2_5i25.0.7i77.0.1.analogout0-scalemax       [AXIS_0]OUTPUT_SCALE
setp   hm2_5i25.0.7i77.0.1.analogout0-minlim         [AXIS_0]OUTPUT_MIN_LIMIT
setp   hm2_5i25.0.7i77.0.1.analogout0-maxlim         [AXIS_0]OUTPUT_MAX_LIMIT

setp   pid.x.Pgain                                   [AXIS_0]P
setp   pid.x.Igain                                   [AXIS_0]I
setp   pid.x.Dgain                                   [AXIS_0]D
setp   pid.x.bias                                    [AXIS_0]BIAS
setp   pid.x.FF0                                     [AXIS_0]FF0
setp   pid.x.FF1                                     [AXIS_0]FF1
setp   pid.x.FF2                                     [AXIS_0]FF2
setp   pid.x.deadband                                [AXIS_0]DEADBAND
setp   pid.x.maxoutput                               [AXIS_0]MAX_OUTPUT

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

net    x-enable                  <= axis.0.amp-enable-out
net    x-enable                  => hm2_5i25.0.7i77.0.1.analogena
net    x-enable                  => pid.x.enable

net    x-min                     => axis.0.neg-lim-sw-in

net    x-max                     => axis.0.pos-lim-sw-in

net    x-pos-cmd                 <= axis.0.motor-pos-cmd
net    x-pos-cmd                 => pid.x.command

net    x-index-enable           <=> hm2_5i25.0.encoder.00.index-enable
net    x-index-enable           <=> axis.0.index-enable
net    x-index-enable            => pid.x.index-enable

net    x-pos-rawcount            <= hm2_5i25.0.encoder.00.rawcount

net    x-home                    => axis.0.home-sw-in

net    x-vel-fb                  <= hm2_5i25.0.encoder.00.velocity
net    x-vel-fb                  => pid.x.command-deriv

net    x-output                  <= pid.x.output
net    x-output                  => hm2_5i25.0.7i77.0.1.analogout0

net    x-pos-fb                  <= hm2_5i25.0.encoder.00.position
net    x-pos-fb                  => pid.x.feedback
net    x-pos-fb                  => axis.0.motor-pos-fb

These are actual outputs from the program, but the HAL generation was an earlier experiment and I haven't gotten it integrated with the main program yet. Glade/gtk is quite complicated, and it takes time to get where I want! Although I guess I'm getting more familiar with it all the time.

As you can see the program is a complete redesign, although very much inspired by pncconf. Actually, there's no reason why this program could only handle Mesa hardware...
Attachments:
Last edit: 25 Mar 2013 08:25 by arvidb.

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

More
25 Mar 2013 11:41 - 25 Mar 2013 11:43 #31823 by cmorley
Replied by cmorley on topic PnCConf rework
Looking pretty good.

I would name it something snappy like: machine builder.
In your hardware tree how will you select which connector the 7i77 is on? If there are optional sserial boards how will you select which sserial channels they are on?
Will you allow deselection of components to free up GPIO?
Forgive me if I am getting ahead of you - I understand WIP.

One thing I always wanted was to have sane defaults for imperial and metric units. PNCconf just converts the imperial units and it doesn't always make sense. Something to keep in mind.
Even nicer if you could switch units per page - sometimes metric units are used on an other wise imperial machine.

I like the single signal / pin per line - nice and clean.

I would add a checkbox to invert the index direction and latch style.

and on a linear axis max velocity is usually shown in mm/min

Chris M
Last edit: 25 Mar 2013 11:43 by cmorley.

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

More
25 Mar 2013 17:14 #31833 by andypugh
Replied by andypugh on topic PnCConf rework

If there are optional sserial boards how will you select which sserial channels they are on?

This would be a good time to switch to identifying sserial boards by serial number, rather than attached port.
(See the Hostmot2 manpage. Note that even the online development docs seem to be out of date in this area)

However, this may not help if the configurator doesn't poll hardware to interrogate the boards.

One thing I always wanted was to have sane defaults for imperial and metric units. PNCconf just converts the imperial units

Off topic, but I saw a great example of this the other day "The temperature rose by 2 C (36 F) through the day"

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

Time to create page: 0.103 seconds
Powered by Kunena Forum