what does the pluto use for a clock?
jmkasunich: there's a little 4 pin crystal oscillator (black rectangular thing) on the bottom side
I'm running this on sim-with-hacked-outb() so it could be due to that
ok - crystals are usually well under 1% (like 0.01%), so thats probably not it
it's marked 40.0000
and you are using 40MHz in your timing calculations?
that could explain a lot ;-)
I wouldn't expect it to be so consistent
I suppose I should try a real machine though
if its not too much of a pain, that would either explain it, or rule out sim effects
jmkasunich: did you see stuart's homing images? they look ok to me. seems maybe he's getting more index pulses than he should
I'm reluctant to once again publically blame it on the ppmc, but I blame it on the ppmc
that would suck
on the other hand, I think the ppmc has a pin that says it's latched an index during this cycle. it would be nice to watch that.
you mean a HAL pin?
if the index-enable hal pin is borked (hw or driver issue), I dunno how the "I saw an index" pin can be trusted either
that's just how I feel about index problems.
grumble, the key repeat on this machine is acting weird
"eeeeee" I type, accidentally
your laptop with the dodgy keyboard?
no, this is my 64-bit machine -- the only machine in my house that might have working realtime
but at least while it is working on building emc2 (make -j2) the keyboardd is aaacting funny
oh interesting. wonder if that's the bug that haunts me too
yep bet so
cradek: wah sounds like a youpper-ism
this is 3 or 4 extra letters, not a thousand
you been hanging around with ray?
3 float IN 10 pluto-step.stepgen.0.velocity-cmd <== vel
3 float OUT 20.03115 pluto-step.stepgen.0.velocity-fb
did I say I trusted realtime on this machine?
yeah I remember something about that
I have a great realtime machine just sitting - you can have it if you want
vel fb is pos-fb thru a ddt?
jmkasunich: no, it's computed inside the module
hence the pluto on the front ;-)
so, fb is new-pos-fb - old?
and velcmd is what? new cmd - old?
velocity-cmd is the velocity command, it's an input
it's arbitrarily set to 10
ok, you use that with a PID
baby steps first .. velocity mode is (should be) easier to do
velocity-fb is based on (new - last)
do you make frequency visible as a param?
I think I changed one of these constants between the time I was getting 5% too low, and when I changed machines and got 100% too high
now it's wobbling between just-over-10 and just-under-10
there's still a scale wrong somewhere, because position-fb is not changing 10 per second
but I probably just have constant factors wrong because I haven't thought things through
if you put a constant vel cmd in, frequency cmd to the hardware, and actual frequency out, should be constant
pos fb will be quantized, so vel fb will jump around
do you have a scope or freq counter to check the actual output?
I do have a scope
if you can confirm that the output is right, then you can focus on the feedback/counter part
(or vice versa)
ID Type Name PID Sta
ID Type Name PID Sta
sorry -- paste gone wrong
my mouse seems to have freaked out, as a matter of fact
mes[2461053.212867] psmouse.c: Explorer Mouse at isa0060/serio1/input0 lost synchronization, throwing 2 bytes away.
getting a lot of these messages
not a happy kernel?
I've removed my cheap kvm from the mix, let's see if that makes any difference
you shoulda bought my cheap kvm
well, the stuttering keyboard problem still exists so I don't think it's the cause
which kernel is it?
Linux tall 22.214.171.124-smp-magma #1 SMP PREEMPT Wed Jun 6 17:50:57 CDT 2007 x86_64 GNU/Linux
I don't remember if I had it in 2.6.20 or not
I know 2.6.17 has it
you wouldn't think they could screw up keyboards...
unfortunately I reinstalled my only 32-bit system with realtime, because after my success on this machine I figured getting a RT kernel to work on 32-bit feisty would be a piece of cake
seriously, I can bring you a machine
stepgen_velocity_fb(i) = (count - data.last_count[i]) / stepgen_position_scale(i) / fperiod / (1 << F);
but I suppose you have parts around anyway
yeah I have parts
they just have the wrong OSes installed on them
oh, found it -- I divided out the fractional part of the feedback twice
* cradek grumbles about the 1 hour battery life of his new laptop
nope, normal one
is this a new new laptop, or an new old laptop?
I got two new batteries, might get it up to 3-4 hrs like I'm used to
only new to me
so the batteries might be a little pooped
it can take 3 batteries at a time :-)
it's quite a large laptop
Intel Server / Dual P3 550mhz/ 1Gb/ SCSI - $350 <-- craigslist
ha, good luck
people obviously don't know what old computers are worth
take off the zero and they might do better
otoh: Dualcore Gateway Laptop MT6456 160gb 1gb ram 802.11n - $500
claimed to be brand new
that seems like a good price for a laptop you can go check out
Dualcore Gateway Laptop MT6456 160gb 1gb ram 802.11n - $500
[00:41:49] <jmkasunich> http://cleveland.craigslist.org/sys/367078127.html
1280x800 = no good
I hate widescreens
looks like the wireless is not likely to work
I'm not even remotely interested, and its too far away for you guys... I just was browsing
jmkasunich: this can't possibly be all there is to it: vel_cmd = (pos_cmd - stepgen->old_pos_cmd) * recip_dt;
for position mode?
no, thats not all there is to it
where's the rest hidden?
you are looking at stepgen?
vel_cmd is the commanded velocity from EMC (or whatever), its not the velocity that you need to send to the hardware
wow, stepgen is complicated. glad you understand it.
new_vel is the velocity that is sent to make_pulses
making it obey the vel and accel limits is the messy part
let's say I'm not doing acceleration limiting
(I'll leave that to a limit3 or to emc)
oh I'm the slow one - are you doing pluto stepgen?
you still need to correct for the odd step that gets rounded off here and there, otherwise those errors will integrate
then I should look at "we can match velocity in one period" (962)?
new_vel = vel_cmd - 0.5 * est_err * recip_dt;
cradek: 4 stepgens + dio fits (barely); no pwm or watchdog
jepler: I'm not sure
4 stepgens + counters for feedback I assume?
yes -- all with not quite as many bits as you'd wish for
is the feedback a separate counter, with one count granularity? or is it the accumulator value of the stepgen itself (with quite a few fraction bits)
9-bit+sign velocity to fpga, 9.9bit location from fpga
[01:12:55] <jepler> http://emergent.unpy.net/index.cgi-files/sandbox/not-quite.png
hmm is it just hitting a velocity limit?
what is the limit?
it should have been 1e30 units per second
with a slower sine wave it works much better: http://emergent.unpy.net/index.cgi-files/sandbox/maybe-so.png
there is a limit in the HW
the first screenshot was a sine wave frequency=1 amplitude=10; the second if frequency=.2 (I think)
when you put all 1s into the freq register, you will get some maximum frequency
well below 1e30 ;-)
I thought my limit was about 1/1600ns = 625kHz, but this was more like 200kHz
I've probably still got scales wrong or something
my programming style is too "cowboy"
completely irrelevant, but... http://jmkasunich.dyndns.org/pics/buddy-under-table1.jpg
sometimes I miss having a dog
I need to make friends with someone who has a dog to play with.
you used to?
have had two, long time ago
buddy is our third
one at a time
yeah one is plenty
[01:26:23] <jepler> http://emergent.unpy.net/index.cgi-files/sandbox/pluto-step-following-error.png
the error is a *lot* of steps
when did halscope start displaying the units/div under the trace names?
after somebody implemented it
not long, but before fest
how much is the error in time?
it's very nice
50 counts of error at 50KHz is 1mS
you have to expect a mS or so of lag
no, something else is wrong -- I can get steady-state error
.200 units when the input is unchanging
_tkinter.TclError: Togl: X server has no OpenGL GLX extension
trying to run sim/axis on this machine (sim)
does glxgears work?
Xlib: extension "GLX" missing on display ":0.0".
Error: couldn't get an RGB, Double-buffered visual
nvidia driver breakage?
I could swear it did before
I'm running stock dapper kernel (I think, lemme check)
Linux mahan 2.6.15-28-686 #1 SMP PREEMPT Thu May 10 09:56:30 UTC 2007 i686 GNU/Linux
I wonder tho, I was switching kernels a while back, maybe the driver needs rebuilt?
sure could be
make sure you have linux-restricted-modules-`uname -r`
(and then reboot)
be sure to curse nvidia the whole time - that's what I do
I've already started that
it seems to help
ii linux-restricted-modules-2.6.15-28-686 126.96.36.199-28.2 Non-free Linux 2.6.15 modules on PPro/Celero
that means I have it, right?
I think so
I think I've managed to make a mess of my system
I tried to get rid of some of the many kernel packages that were installed
(a couple weeks ago)
and now its not sure whether it has 2.6.15-26, or 2.6.15-28
huh -- I'm getting more and more puzzled as time goes by
I think it's time to quit working on this for the night
that makes two of us
jmkasunich@mahan:~/emcdev/emc2head$ dpkg -l | grep linux-image
ii linux-image-2.6.15-28-686 2.6.15-28.55 Linux kernel image for version 2.6.15 on PPr
ii linux-image-686 188.8.131.52 Linux kernel image on PPro/Celeron/PII/PIII
isn't the "linux-image-686" a sort of meta-package thats supposed to refer to the newest image available?
ok, after much fiddle-farting around, I have open-gl working, and I can run sim-axis
which brings me to the question I wanted to ask 30 mins ago
what do you call the widget that axis uses for the jog increment?
it normally says "continuous", but when you click on it you get a bunch of choices - pick one and it goes back to being a single line with the selected choice in it
I thought it was a "listbox", but the online info I've found for tkinter listboxes don't look anything like that
that's a "combobox"
[02:20:28] <jepler> http://aspn.activestate.com/ASPN/docs/ActiveTcl/8.4/bwidget/ComboBox.html
ah, its a bwidget thing, not native tkinter
no wonder I couldn't find it on the tkinter docs
if it's not necessary to (A) look too much like a standard control or (B) enter text not found on the menu, Tk offers "tk_optionMenu"
I specifically don't want to allow text not found in the menu
this is basically an "enum" thing - display the options, and let the user pick from only those options
>>> v = Tkinter.StringVar(app)
>>> m = Tkinter.OptionMenu(app, v, "eggs", "bacon", "sausage", "beans")
example of optionmenu
you might want to 'v.set(defaultvalue)' before showing the window, otherwise it starts empty
there will always be a "current value" when the widget is drawn, so I use that value to set the default, right?
looks like optionMenu will do the trick
jepler: if "eggs", "bacon", and "ham" are a list, how do I pass them?
passing the list results in a single choice that is the entire list
use "*" in a way you might not be familiar with: f(*[a,b,c]) is equivalent to f(a,b,c)
indeed I was unfamiliar with that
jepler: thanks for the help
glad to help
now if only I could figure out what is going on with my stuff enough to ask you a smart question
ask a dumb one instead
do you refrigerate potatoes?
cradek: ingrid says a cold root cellar is best, but a fridge works OK -- better than leaving them on the counter
my parents always did. but, the internets unanimously say it ruins them (turns them sweet)
we don't use many potatoes, so we buy them as needed instead of the the big bag
we normally use the counter method, but it's tempting to refrigerate them because we currently have lots
otherwise we'd have them sprouting
yeah I've sprouted my share of potatoes too
just keeping up with knocking the sprouts off helps a lot
jmkasunich: I must have some bit widths wrong, but what I saw right before I gave up was the raw commanded velocity value (which I expect to go from -512 to 512) was going from about 160 to 240 instead
but, sometimes, I have other things to worry about instead
when following a sine wave, feedback velocity clearly on both sides of zero
you're saying the value you wrote to the HW varied from 160 to 240, but the actual result was bipolar?
all those should have been adding to the accumulator, but I was observing that the accumulator went up and down both
160 = A0, right?
and 240 = F0?
so both have the high bit (sign bit) set
I don't even know if those are the exact values, but it was something like that
not crossing 128 or 256, that's what I remember for sure
he doesn't like fireworks
I think I'm going to go keep him company
Just got back from a soggy Texas, and I'm looking into the problem reported by Stuart Stevenson.
And, he seems to be right. I do homing with both velocities in the same direction, and I might have seen it glitch once, but it might have been a sticky indicator. I then changed it so it did the final search for the index pulse in the opposite direction, and I got very erratic home positions. On my system, it seemed to home in .020" quanta.
So, I decided to update the Bridgeport to the current CVS, and I got a HAL error "setp requires 2 arguments, 3 given"
This was a collection of configs files that worked before. I can't find this 3rd argument, even looked for non-printing chars on the line. Any ideas?
halcmd: setp and2.0.in1 1
halcmd: setp and2.0.in1 1 a
HAL:5: setp requires 2 arguments, 3 given
inifile: [S]X=1 1
setp and2.0.in1 [S]X
you at work already?
got a slow start this morning
what are your plans for breakfast?
I dunno, I'd sure go to stauffer's around 8
I have really gotten a slow start this morning and should be doing anything but talking on IRC
sounds good to me. wonder if we should meet at work or there
I bet michael is already biking into work .. he'll need a ride from one of us
ok we'll meet at work
I'll try to make it in by around 8
must be nice.. ;)
barry is all stitched up with a drain tube.. He seems to be doing fine.. Just looks like a hurting unit.
* jepler <-- back from stuffing himself with an omlette, hash browns, and biscuit
* alex_joni had a schnitzel the other day
although initially I could swear it's a pizza
[14:15:26] <alex_joni> http://184.108.40.206/~juve/ram/DSC00062.JPG
what is it?
it's not food
"Wiener schnitzel (from the German Wiener Schnitzel, meaning Viennese cutlet) is a traditional Vienna dish, consisting of a thin slice of veal or other light meat, coated in breadcrumbs and fried."
with french fries on top for good measure?
at least I think that's what we're talking about here
I might have ordered the wrong thing.. it was called gigantic schnitzel for a reason :/
sounds like country fried steak for breakfast
this was dinner, not breakfast.. and I had no food the next day :D
jepler: how did the stepper coding go? The_Ball may be a good one to test it..
skunkworks: I ran into a bunch of bugs
skunkworks: it's not ready yet by a longshot
:) thats ok..
at first everything seemed to be going so well, but then I started seeing weird behavior
I read a little bit of it.. but it was a bit over my head.
don't feel too bad
I do think I found one bug which would make speeds between 256 and 512 make the motor go backwards (wrong # of bits in one place) -- but that doesn't quite square with what I saw in halscope, unless I was misreading the display
but that's certainly the easiest explanation
that's not on my short list of things I think are silly about NGC...
It is one of those - cool - things that would probably only be used once.
it could be nice for some programatically generated gcode
but yeah, probably won't be used often.
if the post-processor supports it..
franken-barry seems to be doing ok so far. He was bright eye-ed and bushy tailed this morning.
he has good people looking after him
[16:04:19] <cradek> http://timeguy.com/cradek-files/emc/arbarc.png
^ arc in the plane normal to (1,1,1)
the underlying code works, it's just a gcode issue
how silly and un-featureproof
oh right - I fogot
a feature-proof future
I'm trying to wrap my head around a good representation for arbitrary helixes
I think some controls allow you to specify an arbitrary plane with some G17/18/19-like code
that may be a good way to do it
oh so set the plane first, in a separate gcode?
G17.1 "set plane for arcs"
or whatever number you want to assign
that only gives the normal then?
well, you'd have to also specify an origin, I think (so it is more complex)
what do you mean origin?
one sec - phone
I should work backward instead of forward - do the gcode last - that worked for uvw
the start point plus the normal gives you the plane of the arc
you can find how far off the plane the end point is, that gives the helicalness
and you can find the center in the same way as now given the start point, the plane, and the end point projected onto the plane (either with IJK or R)
that's where I was headed - the canon call would be start (implicit), normal, end, rotation (direction)
the end can be off the plane for a helix
rotation is like the existing canon call: positive is the right-hand arc etc
[16:20:36] <jepler> http://blog.modernmechanix.com/2007/07/06/psychology-and-the-instrument-panel/
jepler: that same (cunfusion) issue is why they rotate all the gages in race cars so the "normal" has the needles pointing straight up.
I ran into this on the mazak. To move the quill up, you turn the jogwheel to the right (Z +). I never messed it up, but it's totally unnatural.
maybe that's natural to cnc folks, but to someone who is used to manual machines, it feels very wrong
were you using your left hand on the Mazak?
(or your right, if you're left-handed)
my left hand is even dumber than my right
right - it's backwards, so it would feel natural to turn the wrong way :)
I guess Y is backwards from a manual machine too isn't it
regarding origins - it isn't needed in plane selection - it would be a different feature
the screw is left-handed on a BP
so it turns correctly
I mean on the jogwheel it's backwards
ah - could be
cranking the jogwheel "in" causes the table to move "out"
* cradek shivers
ok three jogwheels mounted parallel to the three axes...
Remember its all an illusion - the table never moves - the tool moves...
yeah yeah - frame of reference and all that
Skullworks-PGAB: I know how it works and how to figure it out, but I have to think about it each time and it feels unnatural
that's what jepler's article is about (preventing mistakes)
it's easier if you're looking at a workpiece and tool
that's why mills have one RH screw and one LH on the table - to make it feel natural
I was just going to say that.
(in reference to the 3 jog wheels mounted on 3 sides of a box.)
yeah that's what I want
then they could all turn the "right" ways
and god help anyone else who tries to use it
one mounted on the top,side and front of the monitor ;)
How about 1 MPG - but the wiring for axis select could invert A/B to provide the direction for the axis of choice...
yes that's definitely possible in HAL
assumes a rotary switch
nah, do it in HAL
that works (if you say so)
what truely get me is people that make DIY machines and wire Z+ to be going down into the work...
I know it's not customary, but that is not surprising to me. If you turn a crank to drill a hole, what should the dial read? depth.
yeah but 6th grade math taught |ABS|.
aha! the step generator was issuing more steps per servo cycle than could be correctly extended, due to the limited number of bits transmitted to emc
no wonder there was no particular logic in the *output* step rate which caused the problem
kinda buffering the extra and dumping on the next cycle?
crap, I think the vertical deflection on my (borrowed) scope is broken
it will trigger on the signal from the 300mV square wave test point (so it's not that I've selected REF/GND on the scope probe or input) but nothing I can do (even adjusting "position" and "trace sep") moves the trace from the line where it falls
I used it some time in the month before fest, that's the last I remember
there are no surprising smells coming from it ..
cradek: I want my money back...
if the position knob doesn't move it, the failure must be pretty close to the deflection output
might not be too hard to figure out what's gone wrong
would be best to have a schematic to see how the HV works though
there's something on bama - downloading it now
you'll fix it for me, right?
OK, since I can't actually scope the step waveform, back to trusting the position feedback which I do think I've fixed