03alex_joni * 10emc2/src/ (configure.in configure): changed the default file checked to emc/motion/motion.c now that hal_intf is gone
03alex_joni * 10emc2/scripts/emc.run: added classicladder to the list of processes to be taken down on emc exit
03alex_joni * 10emc2/configs/step_cl.hal: added the classicladder GUI to be started automatically
* Jymmm pokes les_w
03rumley * 10emc/src/rs274ngc_new/rs274ngc_pre.cc: (log message trimmed)
Several clean-up changes from this past summer
1. Revert G10 code back to a distilled version of the original.
The change reverts G10 back to take absolute (same as used for G53 command) coordinate system values. G10 values are placed directly into a given coordinate system offset.
2. Split out G92 P<x> to its own function. Use G92 P<x> X Y Z to set coordinate systems G54-G59.3 directly to the entered value. This may be the functional equivalent G52 on some newer CNC machines.
i.e. G92 P1 X1 Y2 Z3 sets the G54 coordinate system offsets so that current position is X1 Y2 Z3.
3. Pulled out G54-G59.3 P2 modifier, as this can be set via the ini file option 'KEEP_G92_OFFSETS_AFTER_WCS_CHANGE'.
that's quite a log message
yah, this is the crap that scares me with emc2
well... if you "keep the newbies/hobbyists off the development branches" then unfortunately there's nobody left at all
of course i have no idea why he did what he just did
and commits should be separated into individual changes
emc2 is working great here.... better stepper action than emc1 ever was
last job drilling and routing pcb was over an hour of runtime without a hitch
icee is talking about random people submitting changes to a supposedly stable branch and the user unsuspectingly running the new code without it being tested
this is why there's a cradek_stable branch of emc1
* fenn applauds cradek's efforts
in my opinion, interpreter changes do not belong on the head of emc1
in emc2, fine, although I think people are starting to use it for production
i dont see any G54-G59.3 P2 modifier in the handbook.. what's he talking about?
I don't know
how do you read cvs logs without using the web interface?
anyone here know anything about APT?
not the package installer
this thing? http://claymore.engineer.gvsu.edu/~jackh/eod/mechtron/mechtron-580.html#pgfId-57950
I don't know anything about it
it looks like an interesting idea, but one that I ultimately feel is misguided.
jepler_ is now known as jepler
It's better to actually use an existing HLL (one of the interpreted ones, like python, ruby, php, or perl) to output this kind of low-level code.
By inventing these not-quite-programming languages, you will create more development time for yourself, and ultimately have a less sophisticated language than the ones I mentioned
If I wanted to sell a product I might be attracted to something like APT because I could claim it wasn't programming; this might get me sales from people who "know" they can't program
Howdy folks, I finally got this figured out, haven't used IRC in a decade :(
Glad to see someones around.
Have you been following the mailing list?
Oh, then you wouldn't be fam with my current project.
nope. what is it?
Replacing the crappy Z axis screw in a micromill with a piece of Nooks 10 tpi half inch acme
ATM I'm carving the end of a new nut I just got today to mate with the nut holder I've already made.
I'd nearly talked myself into buying one of those sub-$500 mills and doing a CNC conversion, but I realized I didn't have the motivation (or skill, probably) to finish such a project.
I'm much more a software guy
But discovered that I'm not only going to have to get some ball nose mills, but figure out howto make the 1/4 circle I'm now cutting in the yz plane into about a 120 degree arc segment.
Chuckle, this micromill is the $300 model.
And the conversion is fun, but you'll also need a small lathe, mine is a 7x12 with bigger chucks.
jepler: the neat thing about APT is that it's already implemented, and the source code is public domain (but it's in fortran i think)
fenn: *choking noises*
and lots of old cnc people are familiar with it
Believe it or not, fortran is a foreign language to me, my roots are in assembly and C.
assembly on the 6x09, and C on it too, as used in the trs-80 Color Computers way back then.
I've never done fortran either
basic and 6502 assembler are my earliest experience
if i had to re-implement apt i would probably do it in python
[03:29:05] <Ephexis> http://www.core.org.cn/OCW_CN/Mechanical-Engineering/2-737Spring1999/Projects/detail/project97.htm
I'm a certified old fart at 71, an almost retired broadcast chief engineer.
EMC can controll this type of machine?
Yup, its doing it right now, to accuracy limited by the screws in this el-cheapo.
ephexis you might have to modify the puma kinematics, but yeah there's no reason why not
Using xylotek amps & motors, I made the mounts and couplings.
Gene: I think Ephexis means the machine in his URL, not your machine.
All (spit) steppers
the problem is the software to draw a line, for example
Yeah, two conversations here I think.
yes, in url
Gene: Well, you finally got off the mailing list, and into irc... I'll be damn =)
ephexis one problem i see is that there is a 'singularity' when the plotter crosses the origin
but they cleverly prevented that by putting a bolt there :)
at the center of rotation of the platform with the piece of paper on it
Well, IRC and me parted ways way back when I was using an amiga, till now
Gene: LOL, go back to fixing relic transmitters instead =)
I'm looking at that url, a smith chart plotter? Neat!
Hey, thats what I did last night, put a pair of 4cx250B's in the mod stage, didn't help that much, so put a pair of 4-100A's in the next stage, that woke her right up, making good power & sync waveforms now.
eeck, s/b 4-1000-A
I'm probably the only tv station in the country stil running an old, water cooled GE transmitter
Hard to beat it though, the final being in the socket is good for the first 25kw, its a 75kw rated tube!
So in terms of 'relic' guilty...
are either of you gcode experts?
Gene: where is this tv station you run?
Or should I define expert as someone more than 50 miles from home and carrying a briefcase?
North Central West (by God) Virginia
Gene: nobody claims to be an expert, but one or more of us might be able to answer a question
I'm physically in Weston, mile 99 on I-79, and the transmitter is about 3 miles north of me.
Lemme see if I can copy paste about 15 lines of code I need help with.
#1 = 0 (home positions)
#2 = 0.5100 (universal here)
#3 = 0 (will be X increment)
#4 = -0.5100 (inverse of #2)
#5 = 15 (FeedSpeed)
(go to home in case not there)
n0020 G1 F#5 X#1 Z#1 Y#1
(place cutter at locus of 1/4 circle)
n0040 G1 Y#2
(cutter should be at Z0.0, Y+0.450 X wherever)
(now cut lower left quadrant)
n0050 G2 G19 F#5 Y#1 Z#4 J#4 (do cut)
n0070 #3 = [#3 + 0.050] (calculate new X now +0.050)
n0080 G1 F#5 X#3 Y#2 Z#1 (move X, Y to new cut)
What I need is for the Y to come a bit past the bottom of the 90 degrees, say to about 120 for the full path.
gene i think you are making things too complicated on yourself
the vars make it harder for us humans to read, that's for sure
Is it that bad Chris?
But they make writing 100 loops of the above a piece of cake.'
so you want the g2 to cut further on the same circle?
you just change the Y and Z on the G2 line then
maybe I don't understand the question
y= (thinks for a second)
It places the bit at the back of the piece, then descends to exactly the bottom while comeing toward me in the Y plane.
er sorry y=tan(30)*r
gene: are you asking for help with the gcode, or the trig, or something else?
The gcode, I need to extend the cut by another 30 degrees past the endpoint now.
heh i suck at doing trig in my head
you just specify the endpoint you want
it will be a point further along the circle
since the center and first point are the same, the i/j/k don't change
Then I can basicly set another of those #number vars and use it for the endpoint Y?
sure, you could
Right, the J gets adjusted for the final size when the ball mills get here.
the Z will be higher too
I did some carving with the end mill today, but stopped short of fial size by about 1/4"
ok pencil and paper to the rescue - z=-1*cos(30)*r, y= -1*sin(30)*r
that's for the endpoints
since you want to go another 30 degrees into the negative y/z quadrant going clockwise right?
I did this on graph paper yesterday to get a general idea, but didn't realise till the nut forging got here today that it was more than the #2 or #4 numbers thick, thicker by about another .120"
Its currently cutting from the 3 oclock postiion to the 6 oclock position as viewed from the right end of the table, and I want it to go aon around to about 7:30 or 8ish.
Gene: take pictures when you're done so we know wtf you were doing
Does the mailing list accept attachments?
eck, and I've never bothered to setup a web page at vz
personally i would just bolt and glue on a block of delrin with threads cut into it
They also have memory usage limits, so a bunch of pix from my camera would eat that quickly.
Having some experience with delrin stuff in transmitters, I'd druther build it to outlast me
Besides, those pricey Nook acme bolts and nut are just plain pretty. I've probably got a kilo in this thing right now.
Gene: Free photo sharing ---> http://www.flickr.com/
i got 3 foot long brand new acme leadscrews w/nuts for $5 each at the retrofest
Its only money, and I have a very frugal missus
And I should thank Gid she is too. Had her for 16 years now, I think I'll keep her till??
Besides, where is this retrofest?
Ephexis: look in puma50kins.c, there's a line that looks like "double PUMA560_A2 = 300.0;" that's the length of the arm.. i bet if you fool around with those you can make it into something like that plotter
the retrofest was at a machine shop in the middle of nowhere near galesburg, IL
[04:05:44] <fenn> http://cnc-workshop.com/
Ummm, 600 miles from me (approx), driving WV cadillac, aka 99 GMC 3 door king cab 4wd.
[04:06:37] <fenn> http://fenn.freeshell.org/retrofest/dcp_0384.jpg
i got 15 of em :)
my car was bottoming out on the way back home
But that wouldn't bother my jimmy :)
heh this is my car only half full http://neme-s.org/CNC_Workshop/CNC_Workshop_25.htm
fenn, so EMC finds the points of a straight line, and angles for the steppers?
you can also manually move the motors around
Going back and looking at that code, if I make a #7=..300, and use that in line n0050 for the Y?
will that get the extra motion I need?
Now I see why the car was sagging :)
my advice: ditch all the variable except #3
Yes, and set it equal to about 0.300
Well, I agree its hard to read, but when doing th cut & paste repeats since there is no subroutine ability, the # vars make global adjustments a piece if cake.
when I want to do something nontrivial, I generate the g-code with a higher level language
writing g-code by hand sucks (and subroutines wouldn't make it not suck)
Is there a freeware translator?
he means write a script that writes the gcode for you
there are lots of free high level languages
the general idea is to write a program that outputs g-code on stdout for redirection into a file
any language you like can print formatted strings on stdout.
I agree, but if I'm to learn the language, I should "learn the language", not always trivial as the years on the grey matter pile up...
do you know any programming language?
C, assembly on the 6809/z80/1802, bash
even line numbered basic is better than g code.
C is the only one of those that will comfortably do trig...
Did you do much on the 1802? That's a peculiar beast.
did you build an Elf?
That sucks dead toads thru soda straws, I've used good basic, like basic09. It has line numbers, but almost as an afterthough to make it look like other basics
Build an elf, yes, and made it into a tape generation saver at KRCR in Redding CA when I was the ACE ther from 78-90
[04:21:25] <cradek> http://incolor.inetnebr.com/bill_r/computer_simulators.htm
I loved the 1802, Weird maybe, but once you got a handle on it it was a great processor.
it runs on windows, unfortunately, but this is a cosmac elf simulator bill_r and I wrote
I never wrote anything nontrivial on it, but I did enough to notice how peculiar it is with all those program counters
The other oddball in the cpu architecture arena was the TI-9900, all registers were memory locations, and toi switch contexts, you simple reloaded the register pointer.
I've written lots for the Fairchild F8, which is possibly stranger still
Yes, I was never able to get a good handle on that one though, the only thing that used it was made my microtime & they had more lawyers than engineers....
[04:24:25] <cradek> http://timeguy.com/cradek/clocks
near the bottom of this page is my favorite F8 project
The Z-80 was the bastard IMO, with its very limited range conditional jumps.
yeah, F8 has that too, branches have only one byte offset
you have to branch to a full jump if you want to go farther
Chuckle, neat clock, but whats so fancy about leap year? Its a well known formula, even published in the K&R C reference manuals.
let's see you get from "day 312" to month/date using only 8-bit math
on the F8
I've done it, but the code is on a machine in the basement with no way to get it up here, no network & differing floppy formats
well, it's not magic, but if your code takes four years to test, it's a nice surprise to find that it's right on the first try
hence the story
I should say get it up here quickly.
fenn, hey.. where is puma50kins.c?
Well the leap year stuff does tend to fubar those who don't take the long view, even the K&R does go past the 400 year cycle.
Ephexis: i havent used any weird kinematics yet, so i dunno how to specify which kinematics to use in the .ini file
Theres an article in this months discover rag on the Long Now clock, and it does even the pole wobbles in 10,000 years
Gah, typu above does -> doesn't
In the line re the K&R does=doesn't
I wonder how the upcoming leap second shows up in the WWVB signal
Its getting sleepy out around here, and I've had my regulation 2 beers for the night (I'm diabetic) so I think I'm gonna hit the hay.
I should too
I always stay up too late on the weekends and then monday is worse than usual
I believe they skip the pulse, but don't make me lay a hand on the good book about that.
[04:36:45] <Ephexis> http://www.mae.ufl.edu/~dixon/images/research/puma_560.jpg
cool.. robot arm
I was listening once and though I heard a skip.
we haven't had one for years
fenn, first i want to understand how to find the points
scara is similar to puma, but the joints are rotated 90 degrees
Thats a cool arm, intended for factory floor stuff?
so scara might be more similar to what you are doing
Goodnight guys, thanks
hmm i wonder why more hobby cnc machines don't follow the scara/puma model
seems much easier to build than a crazy gantry hoohah
that plotter is very simple
but is very hard to draw on it
why do you say that?
its all angular
* fenn blinks
did you build that machine?
well, luckily there are now free circuit schematics for controlling steppers from a pc parallel port
and converting from rotary to cartesian doesn't seem too difficult to code
the circuit is very simple, just a transistor/fet/mosfet do switch
but the code's already there, so you just have to build it
if you have to put out 4 signals for each motor you run out of pins pretty fast
it's doable though
yeah, but this use 2 motors
4 motors need STEP/DIR
* fenn wants to make a scara robot now
hey, EMC only works with step/dir?
um.. i dont remember
step/dir, phase, quadrature
cradek do you need much rigidity for milling circuit boards?
i will build 2 phasedrivers with BC337 and 4n35
or TIPs.. the motor is only 0,6A
fenn: you need exact repeatability and no backlash
cool then a scara is perfect
fenn: threre is virtually no cutting force if that's what you're asking
the tool is .010 dia!
hey Chris... routed my first pcb... it actually works... not the the most beautiful thing to look at
built a programmer for the dspic chips... yea about 177 holes if I remember right
sure is nice to not have to drill by hand, isn't it
that's a mind-numbing task if ever there was one
also a test board for the chips.... I have one programmed with a flashing led program...
yea drilling is cool to watch on the machine... not one drill broken
I want sure which would work best... drill then route or route then drill.... I drilled first... lost a couple of pads, but it didnt matter
I've tried it both ways - doesn't seem to matter
usually drilling is first but that's because it's necessary for thru-hole plating
currently I route then drill
the cutter I used was UGLY... a broken PCB drill hand sharpened with a diamond burr that was much too coarse
lots of runout!... path was a littlewider than expected
yep, that'll do it
i need go to sleep.. 3AM now
thanks fenn !
I have a nice diamond disk for sharpening, but I need to get it mounted on a spindle
good night all
23:00 = bedtime
03paul_c * 10emc2-auto/wiki/ (20 files in 16 dirs): "Auto update wiki from a cron job. Sun Nov 6 05:30:01 GMT 2005 "
* fenn turns a bored eye to the exploding transformer..
must be past my bedtime
logger_aj: you are truly a stupid logger
I'm logging. I don't understand 'you are truly a stupid logger', alex_joni. Try /msg logger_aj help
As I see it, and I'm no coder at this level.
Well, I took a brief look at the existing emc2 interpreter. It is essentially the same as the old one except broken into parts. I would diff the old emc against the one with my changes and merge that into the new. It should not be a big deal -- a few days work to do it.
lerman_: if you do, please use a branch
And that would make your changes compatable with what is there?
And then we could do the same with Keith?
I consider the changes I made to be one feature, although it could be broken into a few features. For instance, there is the addition of logical EQ, NE, GT, LT, LE, GE operations. Then, the control features. And last, subroutines. But Isuspect that subroutines and control flow should be the same hunk because they both add new "keywords".
To do the work, I'd need to put emc2 on a box (I might want a new computer), or at least the capability to run emc2 in simulator mode without the RT and motion stuff so I could run it as a user on an existing box.
lerman_: Do your features cause fundamental changes to the way the "old" interpreter works?
lerman_: emc2 doesn't run as sim yet
There are NO fundamental changes. Although one version of the interpreter had support for 'O' words which I think was an alias for 'N' words. I've taken over the meaning of 'O' words to be used to define 'labels'. Other than that, there are no changes that would affect how existing gcode works. If you don't use the new features, you don't see them.
Will we have any issues if Ken develops for emc2 on an extended rc46?
ken, can I use the new interpreter with emc1?
les_w: probably need to recompile
rayh: added branches for emc2 to the wiki page
What do you mean by "new interpreter"? The one with the subroutine changes in it is part of emc1. I don't know if the emc2 interpreter we are talking about changing will compile in the emc1 environment.
just replace the rs274.cc source and compile?
les_w: to translate ken's reply. yes you can. it is in CVS under emc, you need to grab the latest and recompile
What are you running there les_w ?
ok. I am running emc1.
A BDI rc46, and BDI 2.20?
2.20 I think. Paul put it on this spring.
Wasn't that a BDI 4.xx this spring?
SWPadnos: no, paul was at les's place this spring, and installed a 2.20 probably (if les says that)
We need the answer to the command "cat /proc/version"
but he's running with a STG, so I wouldn't think BDI
I still have a rather old redhat system. We did not use bdi...just transferred source.
but he's running with a STG, so I wouldn't think BDI4.xx
Paul went to Les's place directly after Fest, and I know that BDI4 was around then. I thought they did a clean install when testing the TP
(see -you leave for a couple of months, and can't remember anything :) )
we could not mess much with the production box, but did pull the stg and run it in Pauls portable box for some stuff.
SWPadnos: I had to take care of code I haven't touched in a year last night...
Suppose I have a release on my machine -- can I tell what release it is by looking at it somewhere. cat /proc/version on my system gives: 2.4.25-adeos. That doesn't tell what BDI I have.
SWPadnos: don't be, what I was saying is that memory still has it all there, just need to dig harder
lerman_: you probably should know what you install
alex_joni: That's bs
Jymmm: you don't know what you install? if it involves a 700MB download?
alex_joni: I have like 3 or 4 different cd's sitting here. Upgraded from a to b then did I get to c or d ????
I don't see a stg driver in any of the 4xx stuff here.
What I should know and do know are two different things. Yeah, I could dig it out, but that requires work.
rayh: that's why I said that I doubt that les is running 4.xx
Back in the old days, you could run a tickle script from tkemc
and it would tell you a whole bunch of stuff.
Jymmm: bet you know what OS you have installed..
versions for emc and kernel and who had done 'em
mine is old. Paul did run the machine with the latest at that time from his box.
alex_joni: Could be RH or deb - nfc
Jymmm: if you don't, then I might have overappreciated you...
Wait just a minute here. We even have subversioning now.
There have been at least three kernel and 2 emc releases for BDI-4.30
OK - that may be what I was remembering - the tests on the newer BDI
rayh: it's not really a problem to tell what every one is running
alex_joni: Versioning was talked about a couple months ago. But nothing implemented to tell the user what is actually installed
Jymmm: if you're talking about installed then only BDI4.xx
the rest don't install, they run-in place
Funny thing...one old box was a 200 Mhz k6. His was a 500 Mhz intel I think. The old K6 had faster servo update rates!
(talking about emc software now..)
It's very hard, considering that a BDI4.2 install, which is then upgraded (via apt), will be mostly like a BDI 4.3 install (but not necessarily identical)
Old chipsets (and CPUs) work better WRT latency. New chips are better for throughput.
yea, yea. What SWP said!
If only I could run an AVR at 1 GHz
SWPadnos: you could.. but need lots of liquid nitrogen
I just noticed that the source files don't even have 'ident' strings in them. So, you can't even look at a source file and see what version of the source you have.
That's true of emc1, but changed in the BDI branch (and presumably in HEAD) of emc2
I seem to remember some sort of issue with ident strings and diff.
almost all emc2 files have a header
containing the revision
author and date
using diff external to CVS will give you false positives on any of the CVS fields
no more is needed, rest is taken care by CVS
using CVS diff should ignore those fields
rayh: what you remembered was me removing those nasty $log$ fields from the files
les_w: My suggestion is that you check out emc(1), put it in a directory by itself.
and try a compile.
But ident strings are transferred into the object and executable. So you can look at a binary and see what it has.
rayh: remember he needs rcslib
alex_joni: Ah that was it.
Yes. he does.
rayh: I shudder when I look back at compiling emc
how does he use your ./configure there.
* alex_joni spent endless nights to do that
I've done it.
it's in rcslib/etc/ iirc
then compile with PLAR=realtime and PLAT=nonrealtime
but this is from the back of my head (about a year ago, or more), so it might be bogus
emc can run from anyplace in the file structure.
So les does not need to clobber his running system to test the new.
rayh: I've compiled emc/rcslib too, quite a few times.. but it was hard for uninitiated
the module install could be problematic though
rayh, or were you talking about emc2?
module install? in emc1? don't remember that...
* Jymmm hands les a 2nd hdd and a copy of GHOST.
Not if it's emc or emc2 but not bdi-4xx
uh-oh - we're in trouble now
paul_c: glad you made it..
wth is up with the mailing lists at the mo ?
BDI-4xx is the only system that installs modules to /lib/modules.
All of the other systems out there can be run in place.
So if les_w's system is based around an old redhat there is not need
to replace the good system to test another.
I have 4 or 5 running emcs installed
we did a lot of segmentqueue testing etc.
out of curiosity, has anyone tried to use a VMWare or UML install for testing (obviously, it wouldn't actually be realtime)
Okay. Maybe you've already got one with ken's additional interpreter stuff?
How would he test that, Ken?
So, I copied down emc2-20051103.tar.gz, and untarred it. Then I typed ./configure (silly me). And got an error: RT not found.
No, I don't have one with Ken's stuff. Would like to though. copy over only rs274.cc and compile in a different directory is what I would do.
Try running some code with the new stuff. O111 if [1 eq 1]
That's where my VMWare / UML question cones in - you can't even compile without RT, which is a real barrier for people adding to the code
if the machine goes to 1,1,1 you have the new stuff. If the interpreter barfs, you don't.
That sounds like a good test. Barfing is a good test!
I'll look at that. I sure would like to use your subroutines. repeating code 81 times is nasty.
Actually, its a rotten test because if you have the new stuff, the machine take off and you might not want to do that.
If we start a emc2 branch named ken-interp...
My machine is not a very good testbed for some stuff....it can get violent!
can other guys help you, Ken?
les_w: I saw some of the code you posted with the variable assignments. That's just the way you should use this stuff.
well the old code was a 9x4 array, because of the 9 fixture offsets. Now I have to fill up the table...using variables or g10
cam systems in general don't do arrays very well
Well, as I "said" earlier, I hate to commit stuff because I don't like to break things. [Also, I'm not real familiar with CVS -- I come from an RCS world where someone 'owns' a module.] So, if someone could create a tarfile for me that I could untar, build, and run, I would then make the changes, build and run, and send back a tarfile with only the changed files (and appropriate descriptions of them). Then he could test the stuff an
d commit it.
lerman: With rumley messing up the interp, I don't think that is an issue any more.
That doesn't solve my problem of how I would test it -- since there is apparently no working simulator.
under emc2 ?
I believe that Keith Rumley offered to work toward a common interpreter in the email that I put on the wiki page.
I like the subroutines. Some of the other stuff I was not too crazy about.
I suspect the answer is that I need to get a new machine to run emc2 on and connect it to my existing hardware. [That really sucks -- the fact that you need a milling machine to test this on.] Do Jon Elson's drivers work on EMC2?
I think the bigger question is how does one develop / test EMC on a machine that doesn't have RT?
les_w: what other stuff?
lerman_: you don't need a machine connected to run emc2
lerman_, yes - there are working Pico drivers for emc2 (AFAIK)
Well now you do need rt but the parport is available
some of the g92 behavior
zwelch claimed to have a sim built for emc2, but never saw anything committed.
lerman_: you need a RT patched kernel though
and you do not need any machine connected to a parport in order to test.
paul_c: lots of stuff being claimed lately.. but commits.. no, sir
Can you use the same RT patched kernel that runs emc1? -- the same patches?
lerman_: of course
any BDI running emc1, can run emc2
without the need of disturbing the emc1 which runs there
Man, if I were the manager of a company doing this stuff, there is no way in hell that emc2 would NOT have a simulator.
lerman_: code it up, and I'll presonally commit it
But -- what the heck -- we'd all be getting paid big bucks :-)
especially since emc1 does..
Yeah, that's what I meant.
I don't really see the benefit of a SIM...
sim with good i/o display is priceless
One problem with building a sim for emc2 is that all of HAL runs as kernel modules
Well, I can look at a backplot and see if I'm cutting approximately what I think I'm cutting.
and they require the rtai stuff for them to work.
a usr space sim has some advantages when debugging
lerman_: you can do that with RT even better, without switching the machine on..
Sim could just be another hardware driver. As far as the rest of the system is concerned there is hardware there.
1000 pounds of rapidly moving iron with 5 kW peak servos sure makes a poor testbed...
paul_c: I credit that, but not very usefull to 99% of the userbase
alex_joni: how can I do that with RT without switching the machine on.
but it would be useful to 87.5% of the developer base
les_w: But a GREAT log splitter
lerman_: doesn't your machine have a poweroff switch? (I mean the mill)
lerman: That would have been true except for a couple of minor issues..
lerman_: You use a different run file or ini file.
SWPadnos: 87.5% of 5?
So that your signals go to an unused port
(4 + one half-time :) )
or is that 1/3 time?
ok..so you suggest spending 5 developers time to do work that would be usefull to 4 ;-)
The issue with running with power off is if you have estop configured to an external switch.
* alex_joni deliberately exagerates
Ah... you configure your ini file so that it thinks it is running a stepper machine or other machine without feedback.
rayh: you surely know there are ways around it.. there is even a sim.ini in emc2
I do it all the time here.
Turning power off would give an instant following error on a servo machine.
rayh might have known that. lerman sure didn't.
lerman_, are you thinking that you'd like to do development on a computer that isn't set up to run EMC (ie, no RT kernel)?
lerman_ probably didn't look at emc2 at all
Yep. Even emc.run in 2 will produce a working machine interface
I was thinking that becasue I have lots of non RT machines around.
any running debian?
lerman did look at emc2 -- that's how he (I) know that the interpreter is broken into lots of parts.
I run fedora on most of my systems.
ok, then maybe not at the run part / ini files
OK - that's what I'm thinking, too. I have 5 linux machines, and only one of them is meant to run EMC
One thing you have to do, if you try emc.run is make certain that you have NO printer connected to the default parport.
rayh: lol, gotta try that
rayh: well, you're no fun.... printing smoking!!!
You get some goofy results.
alex_joni is correct -- If I can't build it, there is no need to look at the run part. Remember that I'm concentrating my efforts on the interpreter.
might work.... with the older stepper centronics connections
lerman_: if you really want, you probably can run the interpreter in a non-RT environment
I did recently acquire an old laptap. Will it run on 256meg of memory or should I add a little.
test canon's and such
alex_joni: how would I do that? How would I build it?
a developer with your background, surely knows how to write a Makefile
lerman: I have 256MB in my laptop
* alex_joni runs emc2 on 64MB
on a PII-233 (the only one I found with ISA)
yeah -- I can make makefiles (but they all look the same). My concern was that there might be things in include files that require the RT stuff.
in the interp? no way
you could use the canon_stand_alone to test, probably
Is that a probably or a possibly?
I know Matt did some tests a while back, and successfully ran an stand-alone interpreter based on emc2's code
lerman_: oh, I'd say it shouldn't be very complicated even
So, that's a probably.
Matt's probably a lot smarter than I am... :-)
whats the differance between potentially and realisticaaly
anyone know if upload to the wiki works now ?
I have the potential to make a million dollars, save the world, end poverty. But realistically, I'm a bag of mostly water and a few dollars worth of minerals.
lerman_: I would (but then again, this is just me) take canon_stand_alone.cc and driver.cc from emc1/src/rs274ngc/, and compile those together with the emc2 interpreter
didn't the last time I tried.
If you ship me the images, I can put them in the dropbox or images directory at linuxcnc.
you can reference them from there.
ok, I spen't two sessions now on some matlab code to generate double-jerk limited trajectories
OK. I have my first assignment -- get a machine that will run emc2.
when it's anything to show, I'll let you know
easy assignment - download BDI4.3x, and install to a partition on some computer.
then follow the wiki for compiling emc on BDI
If you have a BDI-Live install running..
ok, gotta go, see you later all
etla: how can we get copies of the paper (without buying them). Is it possible to put up some parts of it that might be relevant.
You have a suitable system.
lerman_: I guess I can distribute the pdf for educational purposes. start a thread on the email-list, inlcude your email, and ask nicely
Yes. The notebook.
so bdi live... then compile emc2 in a stand alone directory??
dmess: any BDI, compile emc2 in a stand alone directory
cool i new there was a reason i did that...
was there a bdi 2.8x or similar with emc2 in it instead of emc1...
no BDI including emc2 so far
puppy has 2 only.
ok but it isnt listed as a bdi is it
Not at all.
What is the status of puppy and emc? My understanding is that generating a BDI is a pain, but that generating a new puppy is easy. What is the downside of puppy and should we switch over to doing puppy releases?
The guy who is doing this is talking about a developer release.
lerman_: puppy is a nice toy, it's running emc2, but.. not very tested
This requires quite a few more packages.
last version released was/is borked for some PC's
generic .debs (or the like) would be ideal, but that would likely be a nightmare (since the RT kernel and associated stuff would also have to be maintained)
puppy uses rpms or tarballs.
SWPadnos: .deb's are done for kernel & rtai (paul did them)
only emc2 is still missing
and I'm working on that, make install is almost finished
Is there documentation on how to generate new ones?
create new debs ?
probably kernel&rtai debs I think.. ?
What are the requirements for using dpkg-buildpackage? (.spec files or equivalent)
a set of rules
are the rules for EMC, RTkernel, and RTAI publically available? (are they on the BDI?)
apt-get source <package name>
check the <package-name>/debian directory - There you will find the rules.
cool. thanks for the info.
Just don't ask me for much help working up an emc2 package
What I'm hearing regarding the interpreter.
funny - I was just about to mention something about that :)
is that we will create a branch in emc2
I assume that there are numerous documents web-wide on how to create .debs in the first place
There is little point in messing around with it while it suffers from fundimental flaws
in which ken and others can work to bring the new features into existing emc2 files?
.deb, emc2, or the interpreter?
paul_c: we (I) would like to have a list of the perceived fundamental emc2 flaws.
And I think we need to transfer such a list to the Wiki for a couple of reasons. (1) we can debate them (2) we can keep track of them (3) the wiki can maintain a history so that the same thing doesn't get hashed over interminably.
breaking the kernel code up in to masses of "shitty little modules" "just because we can" is wrong - It is wastefull of system resources for starters.
Memory allocation for kernel modules is granular and is allocated in PAGE_SIZE blocks
so a 1K module will occupy 4K on a i386 platform
as for modules weighing in at 176K - Don't even go there.
paul_c: what source URI should I use for apt?
apt-get source emc
you have a line for emc debs ?
I have my mirror set up
but that's only sarge updates extras
same uri - just use deb-src rather than deb
ok.. works like a charm, ty
The most critical flaw of emc2 - The assumption that data is written atomically.
how is that assumption wrong?
A float requires several writes to memory - At any point, it can be pre-empted by a higher priority task
Isn't a float a 32-bit quantity (as opposed to a double, which is 64 or 80 bits)?
Ah - that could be a problem
Is that true? Isn't writing a float or even a double a single operation? If so, then single ops are NOT interruptable (with the exception of those that do block moves, etc.)
yes, a float is four bytes
paul_c: looking at emc-1.0/debian/control , not very much there (is that all to it?)
That's fixable anyway, using double-buffering of data larger than the machine word size
I wouldn't be surprised though if there were places in the code that wrote multiple values to shared memory without using some type of lock but with the expectation that all were written at once.
well, that's one way to handle being wrong
cradek: it isn't always necessary to say what you think. :-)
* cradek shrugs
Can someone who knows how to make a branch,
Only god can make a tree.
do that and put a copy of the current emc2 interpreter files in there?
JohnK and I discussed double-buffering at Fest, since there would eventually be a need for structs larget than 32 bits
Or is that the way we want to do this.
rayh: when you start a branch it contains all the code in the main tree
It depends on who will be checking out the CVS tree
only if you start modifying code it will be different
So when Ken and company have finished and testing is complete.
I'm going to take a current EMC2 tar file, make some changes to the interpreter, test them, and send the changed file to alex_joni (who seems to know what he is doing). At that time, he can make a branch and check the stuff in (I mean commit a change). See, I told you that I'm an RCS type of guy.
we would just merge back in the changed interpreter files?
not merge, first commit..
merge back to HEAD after it's proven to work
Okay. Then let me snip that and put it on the wiki page.
See: I told you that alex_joni seems to know what he is doing.
noting that Alex wants small changes at a time.
I guess I was hoping that we could employ several folk to work on this all at the same time.
lerman_: don't you have cvs access?
How many lines is a small change?
that is the advantage of CVS.
lerman_: certainly not more than 200
but the basic idea is to keep added functionality in a commit
I don't have CVS write access (because I'm afraid of it). And I've forgotten most of what I learned about CVS from reading a one page tutorial, but I could relearn it. Yeah, I'll do that.
not add more than one feature at a time...
lerman_: don't be afraid to ask for commands
lerman_: any screwup can be fixed.
* alex_joni also looks up most of them
Is there a requirement that each commit be tested before and work before it is committed?
lerman_: if you are a programmer, especially one who has used another revision control system, you can use cvs successfully with the man page "in hand"
cradek: yes, I know.
I certainly have to use the man page for anything other than update/commit
I would be surprised if the entire subroutine functionality took more than 200 lines.
yup, same here, especially for working with branches
It's getting the sandbox created that's the hardest. After that, all you need is cvs up or cvs ci
lerman_: rumley's latest commit is 25kB
IMO if we call this a Ken branch, you can do any sort of commit you like and that works for your co-conspirators.
So, if a line is 50 characters, it is 500 lines.
and the log message alone is almost a page
There are graphical CVS clients as well, which can make updating groups of files and adding comments easier (cervisia comes to mind, and I think there's a Gnome one as well)
* cradek shivers
lerman_: from reading the commit log I see 4 parts done there (so I'd want 4 different commits for that)
* rayh remembers so early cervisia attempts with redhat 5
that's right, a commit should not be a certain number of lines; it should be the changes related to one simple concept.
I still had some problems with it around Fest time
what's cervisia good for?
It's a gui front end for CVS. You can do things like multi-select files to update and that sort of thing.
oh.. ok, nm ;)
Would the head poobah in charge of the CVS repository for emc2 kindly make me a developer? [Damn, I didn't want to do that. I had planned on avoiding responsibility for anything.}
If I make the interpreter changes for emc2, does that mean I have to use it (emc2)
lerman_: if you tell us who that is
* SWPadnos thinks that rayh has poobah status :)
* alex_joni has no clue
SWPadnos: not simple poobah, head poobah he said
Ah - my bad
also in charge of the CVS repository for emc2
* alex_joni is also a simple poobah
a mortal one
I'm just a poo
may I quote you on that?
feel free - I don't take myself too seriously
"<SWPadnos> I'm just a poo"
ok.. assigned to F7
thatk you - I've now been duly quoted.
now dare to say something.. competent ;)
"I'm just a poo whose intentions are good. Oh lord, please don't let me be misunderstood"
SWPadnos: STEP AWAY FROM THE COUNTY MUSIC STATION!
eeeewww - country. I may throw up now
(the closest I get to country is parodies of country - Weird Al and Chris Wall come to mind)
we took the o outta country here... means something different now
lose the R and you're really in trouble
there are a number of poobahs
Eight of them, I'd say :)
lerman_: What's your sf handle?
By the way, did anything ever come of the "developer intent" emails a while ago?
rayh: sf == sourceforge? I think lerman.
I'll try and set you up now.
What were the developer intent emails?
Matt sent out a sort of survey to the registered developers, asking what their plans WRT emc were
so that they could cull the 54 developers down if people weren't interested any more
Ah... I didn't get it because I wasn't a registered developer. I think I was smarter then than I am now.
Nada came of it.
OK - just wondering.
If memory serves there were only a couple of bounces.
I thought that several people responded that they just didn't have the time any more
We'll have to ask matt_bksoon when he is.
rayh: all replies are on the list
jblunzen: what ?
alex_joni: who did you tell me wanted to talk to me ?
mshaver did I think, and fenn
but fenn seems away
I think those responses are on the board list - I don't see them on emc-users or emc-developers.
alex_joni: ok, ic, i leave now
hrmm.. SF is truly fscked.. cvs doesn't seem to work here
* rayh notes that lerman's add to cvs is dribbling up the phone wire toward the road.
does it work for anyone else?
yes - I just checked out emc1, emc2, and BDI4 (around 1/2 hour ago)
1/2 hour ago probably
just now it gives an ssh_exchange_identification: connection closed by remote host
lerman_: Permissions Updated we have liftoff.
You're right - it's not working now
Hey. I just found a machine to use. As part of my junk collection I discovered a 600 Mhz machine with 512 meg of ram and a 40 gig hard drive. We indeed have liftoff.
d00d - that's some nice junk
BTW my first sf commit trashed the whole emc repository.
lerman_: sounds like a lot ;)
* lerman_ is happy.
my second removed me from the sf system
rayh: don't give him bad ideas :)
too bad CVS is borked right now :(
cvs update -delete me --delete-all-others-too
I'm certain that I'm still in the top 10 screwups at SF.
[18:24:16] <dmess> http://www.telextreme.com/229233/
On 2005-10-08 at 05:00 Pacific, the project CVS services will be down for a period not to exceed 4 hours. This is in preparation to reduce the sync delay between developer an anonymous CVS services.
hrmm.. still 2 days away
As of 2005-11-01 at 10:00 Pacific, project's whose name begins with e, h, i or j will not have access to anonymous CVS, tarballs and ViewCVS. We are currently looking into this issue and hope to have it resolved soon.
oh... great ;) let's rename the project :))
well - if only it had been called LinuxEMC
yet ViewCVS seems to be working ;)
Well, I've been at this for about three hours. It's time for my lunch (otherwise I get cranky). I'll probably be back in an hour or two.
mshaver_bksoon is now known as mshaver
So - getting back to the interpreter, I was just looking at the differences between emc1 and emc2
wb? oh "where been"... church + breakfast
(welcome back i thin ) is this logged?
logger_aj is logging
(but wasn't all morning, just for the last 3 hours or so)
SWP and what diffs do you see
there are a lot of them, but many seem to be cleanup
tomp: anything you say can and will be used against you in any possible circumstances
but other than that .. it's safe to say about anything
back in another minute...
It also looks like a huge filewas split into several smaller files
mshaver is now known as mshaver_away
yay, cvs works again.. I think ;)
I can't see the actual file now, because I was in the process of re-checking out all versions of emc when CVS borked.
I'll try again now
SWP about these extensions like loops and named vars, is taht why your getting CVS chkout?
ah - rs274ngc_pre.cc was 540K in emc1. a good candidate for a split-up
not at the moment
* alex_joni starts to touch all files in emc2 CVS
that sounds like some interesting source code
there was a discussion about the two (or three, if you count Paul's threading) sets of interpreter changes, and how best to aplly them to EMC2
adding/modifying an unified header for the files
dmess: why interestig? because it's big?
rayh: you still around?
rs274ngc_pre.cc? i got 33K in emc2
no the rs274 ngc part
that's after the split-up
all of the files in that dir that start with interp_ weren't in emc1
phone for a few minutes
I think they are the result of splitting out different components of the interpreter
and making them classes.
SWPadnos: you are most correct in your assumptions
im on my way home now
anonimasu: cool.. did you win?
I remember now that we were talking about the ability of having multiple interpreters
"<SWPadnos> I'm just a poo"
the mill arrives at monday
sorry.. couldn't resist ;-)
by subclassing the right components (to get the interface to motion, etc)
I'm a Bah now
ok.. bah accepted :P
anonimasu: bummer :(
don't want me to push F5 or lower :D
But the various parts are NOT classes.
try assigning that to CTRL-ALT-DEL
we had trouble with the huydralics and a wheel bearing broke
so they aren't.
I know we had discussed this before - let me check the BDI interpreter...
sorry - have to update my BDI sandbox first
OK - there's a fairly thin class wrapper around the interpreter.
the Interp class? with the if oldstyle else newstyle? ( parm passing diffs )
ah - yes, "#ifndef NOT_OLD_EMC_INTERP_COMPATIBLE"
those ifdefs are removed in BDI
The other major change that jumped out at me was the removal of those SET_TO macros.
(I can't imagine what posessed someone to define SET_TO, EQUAL and NOT_EQUAL, and not use =, ==, and !=)
* chinamill is away: eat
the international obfuscation contest
but, whats the point, do you want it to work or work in BDI?
As far as I can tell, there have been 3 major sets of revisions to the interpreter lately.
One is Ken Lerman's code, which is in emc1
[18:57:15] <rayh> http://news.bbc.co.uk/2/hi/programmes/click_online/4407742.stm
Another is Keith Rumley's code, which is also in emc1
And then there's Paul's re-structuring the interpreter (getting rid of those "old_style" ifdefs, and making it an actual class)
Also, there are modifications that Paul has done WRT lathe threading, but I don't think those are released anywhere yet.
SWPadnos: he said they are merged in emc2 HEAD
Ah - OK.
they were in an emc2 branch, but should be in HEAD now
G33 is what he said
are the authors ( or proxies ) here to suggest ways to reconcile?
I'm seeing differences in the two interpreters bewtween BDI4 and EMC2 - are they actually different, or did I screw up the CVS checkouts today? ;)
they might be different
what tag did you use to checkout bdi4 ?
(or BDI-4 - I'm not sure)
Another way of describing the changes: lerman's adds functionality, Rumley's changes functionality (some might say, fixes it), and Paul's (restructuring it) does not affect functinality. (assuming, of course, that they do what they are intended to do)
That's probably accurate enough for the sake of discussing how to get all of the changes merged into one codebase, in EMC2 HEAD.
OK - it was bdi-4
mshaver_away is now known as mshaver
* mshaver is reading back + ray's link...
I think it's going to be a case of a tedious manual merge
Well, merging this would be simple if it we didn't have the restructuring. And personally, I don't think the restructuring really makes things better. Sure the SET_TO, EQUAL, ... stuff is crap, but it didn't make the code harder to understand. And three small files really aren't easier to deal with than one large file (at least in the editiors that I use).
On the otherhand, someone went to a lot of effort to restructure the code and I hate to be responsible for throwing away some else's work.
I really don't have a problem with merging in my changes. I think, though, that it would be easier if we do the merges consecutively rather than concurrently.
IMHO we should keep what's in EMC2 now, and review the stuff from EMC1 + the misc branches to figure out if/how it should be brought forward + I personally would like to see a stand alone version working again in EMC2
Anyone have any tricks when maching clear acrylic to get a nice finish?
I think we should also consider that G-code isn't the only thing that we may want dictating machine movement
yea, what lerman said...
some of the restructuring may make it easier to make interpreters for other code (STL->part, anyone?)
that brings up another importamt point, calls like "get_active_g_codes()" don't mean much if the input language doesn't have "g-codes"
is this about languages like logo pilot or dialog based? ( not gcode)
I spoke with fred proctor about hooking in his soo-to-be STEP interp, and we need to "generalize the interp api
what mshaver said
STEP is one thing, direct parasolid or STL import would also be grand
I think there was discussion of another language at Fest
actually, several of those calls are just to give the gui something to display, could be get_current_status()
where are you looking right now?
The interpreter is not just an interpreter. It's a gcode interpreter. Sure, we could make have a general interpreter interface. But there is no point in doing it now. Could we reasonably create a general canonical interface to handle nurbs for a five axis machine? When we have a second language to use, then we could consider generalizing the code to handle the second language and gcode.
well the trouble whth that is that emc is a control prog not a cam prog
there is a general canonical interface
in fact, Fred made another interpreter - canterp - at Fest
modest update to http://emc.sourceforge.net/cgi-bin/emcinfo.pl?AdditionalGCodeFunctionality
SWPadnos: The functions I'm talking about are from memory, I'll see if I can point you to a file...
check it out and see if it fits with the current discussion.
but handling nurbs would be sweet
brb - mother just arrived
canterp just looks like debug prints.. what was the idea?
hrmm.. I just built an emc2 deb ;)
mshaver, OK - I can grep for them
not that hard as I thought...
lerman does have a point - if you keep going, soon you are re-writing the whole program from scratch ;)
mshaver: talking to me?
"generalizing" the interp api is a different task from merging the changes, so that can certainly be put aside for now
alex_joni: most of the time I think I'm talking to myself...
mshaver: right, gives a whole new perspective to what you said lately ;-)
Well, the subject of "generalizing" came up in the context of justification for breaking the interp into multiple files. So, putting it aside *might* mean regressing the file split.
I'm in agreement with the notion of getting ken and keith's remodels into a interpreter for emc2
anyway, SOMEONE propose a way to merge this stuff & let's "do this thing"
and make the generalization task seperate
what ray said
I don't know if the regression is necessary. My initial impression is that I can put my changes in whether we have the split or not.
I suggested two ways earlier on.
trash the existing, and drag the stuff from emc over
Um... what is the purpose/goal of emc2?
or branch the current 2 and hand merge the stuff from 1
Shit man, don't confuse me with the facts. We need to get this done.
ok.. I think we have a conclusion
since Paul's stuff if supposed to be in EMC2 now, I like option 2 (merge EMC1 stuff into EMC2)
lerman: get a branch on emc2 started
bring in your changes
we'll look at it
if it's ok we merge it to HEAD
rayh: either is acceptable to me. Obviously, trashing the existing would be easier for me, but I wouldn't want my work trashed, so I wouldn't want to trash someone elses.
lerman: does that sound acceptable?
how about keith's changes? where's he?
mshaver: we need to talk it through with him (on the dev list, as I haven't seen him in here before)
alex_joni: that's fine. I'll go first. After my changes are in, keith can do his.
I just posted a wiki link that has his communications with me
but I definately would like to see some smaller chunks commited
ok.. now.. let's talk administrative
by tonight ballots should go out,
My guess is that I can do my part in three hunks.
and we don't have anyone to hold the voting
I did have a ? on lerman's proposal though...
lerman: that's fine
what's your ?
mshaver: go ahead.. you are the president after all :D
Is it a good idea to put in "GT" for "greater than", rather than ">"? (for how long though...)
Is president higher or lower than head poobah.
since we already use G & T for other things
but Grand poobah is higher than head poobah
I must be the only politician in history to want to "UN-stuff" the ballot box...
a parser can figger out T after G means same as > and we can use both
remove votes for himself
"stuffing" the ballot box = adding illegitimate votes for yourself
Gee, I don't know. The parser recognizes the GT in that context. If we changed GT to ">", we would then want to change EQ to "==" (or perhaps just "=") and that might confuse people. Yeah <tomp> we could do both -- just makes the code harder to read.
Hell, we could make it a run time option. Allow one or the other or both.
I was proposing to just use <,>,==, !=,=>,<=, etc....
* lerman sticks finger in mouth to induce vomiting.
Not at mshavers proposal. -- at the thought of making it a runtime option.
you read HEIDENHAIN's GT or FANUC's > , lets not hang on that now
ok, so maybe not then ;)
heidenhain uses GT?
no kidding, well that lends it more legitamacy
okay finally off the phone
* lerman is legitimate -- ask my mother.
There is one concern I have regarding the interpreter.
I'm not stuck on this one way or the other, just thought I'd bring it up since I think it would make parsing easier
it's name is "machine logic."
IMO some of the hard coded behaviors in or caused by the interpreter
mshaver -- the parser is done. It's all implemented. It's too late to make parsing easier. But it was pretty easy.
ought not to be caused by it unless the integrator/user chooses to employ them.
lerman: well, "already done" is a prettty powerful selling point! :)
* rayh sends tomp another ten spot!
The nature of what gets "reset"
What happens at m2 m30 m60
i assumed (!) that was configurable, like in mostsystems
that is a big nfw.
The lists of activities are in the code.
Now I'm not saying that TomK was incorrect in what he did.
ok.. don't want to spoil your fun.. but we need to do something on the election thingie?
He was pointing his interpreter in the most common direction.
My thoughts on that stuff (and on canned cycles) are that once one has subroutines, one could have user definable subroutines that would be executed on each of those commands. As long as the interpreter has a canon command to use, it can do it.
I will hold my thoughts.
ok.. so far we got nothing...
fenn sent an email about a friend who could do the ballotting, but that's it
rayh hates with a passion those kinds of subroutines.
Alex_joni: You keep mentioning the election. I think you have a desire to do it.
they mangle "machine logic" beyond recognition
lerman: do what?
alex_joni: run the election.
re election I was hoping that our man from last year coulld resurrect his code.
nope, I'm biased
but that does not appear to be the case.
ok, is a ballot ready to be filled out?
lerman: but I hate missing deadlines
As long as you don't tell us how you are biased, its ok with me. Besides honest and biased are not mutually exclusive (unless you are a politician).
once fenn's friend allows the ballot-ing
The easiest approach, assuming we can find someone to handle it, is to send a ballot email to each list
ask them to respond to someone's private mail account and that person sorts for single person single response.
and tallies the votes.
sounds easy enough for me...
Is fenn's friend willing?
btw, rayh your background is missing from http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl/emcinfo.pl?BoardElection
SWPadnos: likewise yours
didn't see zwisk to accept.. did he?
I'm going to only vote for people without backgrounds.
Okay. I'll write it.
the url Alex just posted can be hacked into the ballot form
may I suggest a small change for the page.
a table of contents that lists each candidates name at the top of the page.
so that the casual viewer doesn't need to wade through all my bs to get to those after me.
rayh: as you please ;)
Good idea. With a link to position you back down the page.
calling chris danial - last year's guy on the phone
not sure you can do that in the wiki ;)
mshaver: nice inventions those phones
okay I'll make that change and add my stuff.
i got him on the phone - bad conn
mshaver: bad inventions those phones
mshaver: nice inventions those phones
* alex_joni stops now.. :)
All right the list of names and links is in there.
I see that Matt's name didn't make it.
I wonder if any other acceptees are missing?
How many people do we have on the two lists together? How many voters do we expect to have? If we put the ballot on the list, we really don't have to give unique numbers to users. Send out the notice, get the results to an email address. Have someone count them by hand. What do you think -- 200 votes? (Gee maybe we should have a pool.)
* lerman thinks that we really don't have to worry about ballot stuffing.
Chris says he'll do it again
* alex_joni donates a beer on the first ocasion
whenever that will be... :(
it may take him longer as he is now both employed & has family obligations, but I am to call him tomorrow evening & work out the details
we'll need a list of subscribers I guess
* alex_joni can do that
emails only is ok?
yep, e-mail addresses is what we need
ok, and sorted and doubles removed
hang on a bit ;)
so, uh, about that machine logic & interp stuff?
did you guys decide what we're doing?
ray: hacked web page for voting forms , send it to you?
& what is a "CTCP PING" & how do you do one...
Well, I typed "/ping #emc". It responds with the round trip time to each of the users on the channel.
anyway, ray was talking about machine logic & M codes, and I figure that maybe each M code would have a HAL pin that classicladder could see, or something like that?
proxy:~ # less emcmail.mails | wc -l
mshaver: shall I mail you the list?
I can send it, or you can send it directly to Chris
That's a lot of people on the lists - I'm surprised
Anyone working on the election page on the wiki right now.
"Our unpopularity is greatly exagerated", to paraphrase Mark Twain
(though I should)
Maybe that's because Jymmm signed up under 347 names
oops, just sent to ray... a form added to wiki page (doh!)
SWPadnos: add your info to the Election page
Maybe Chris could be persuaded to send someone his ballot counting code, so it would be easier to do this next year (if he's not available)
alex_joni, I will - I just want to wait for Ray to finish (I gathered that he's doing his now)
there's only 8 victims on the form, right?
tomp: sounds like that
ok, rays got the from
okay added mshaver to the election wik page
gotta fix the spelling of my name :)
well.. you should
Re: the "ballot counting code" - the scripts didn't work, so it was lovingly hand counted
i always think Stevie Ray Padnos. dunno why
OK - I thikn just about anyone could do that :)
heh - I haven't been called Stevie since - well - almost never
(sometimes, Stevie, I wonder)
I believe the description of the procedure was that you could vote for up to five people. Why not let people vote for as many as they want to? The five with the highest number of votes would be elected.
There are 5 positions, so voting for more than 5 may not make sense.
Though, that would essentially be an instant-runoff election if more than 5 are allowed
Sure it would. You vote for all of those you consider acceptable.
ok, the forms cooked then! ferget it ray, lets get a menu 1st
tomp: One problem. They need to vote for no more than five.
Ken was just commenting on that :)
Can we make those check buttons rather than radio.
so 5 radio btn groups, done
each group a title
but not the same person more than once :)
Actually, having experienced first hand the horrors of democracy, I like this system:
[20:10:37] <mshaver> http://en.wikipedia.org/wiki/Preferential_voting
instant-runoff like Australia
who's in favor of building some kind of real release engineering process for EMC? my vote is for them ;P
im back... hee haa... small twister come up the back gully.... no more leaves on the trees ...
dm: wow, that sounds exciting ;)
rain was... fallin down HARD...then it was going NORTH HARDER.....
You make them radio buttons -- two buttons for each person -- yes or no. One group per person.
I think we've experienced the horrors of democracy twice in the last 5 years (maybe more)
many ways to do it, but I have the candidates, what are the offices?
another weather watchin friend called me 2 minutes prior... said get ready we got one on the line...
the only good democracy is a fair dictatorship...
opps i meant monarchy...
okay I put my background stuff on the wiki page.
spec/cert. ,development , platforms , support eng , production team , beta testers
rayh: that's pretty scarse, surely you can do better
The offices are "Director, Director, Director, Director, and President"
wait a sec Ray - I'm editing right now.
it should be dictator, dictator,dictator,dictator,and prez dictator
No, I don't think so. They are all directors. The directors then elect the president from their midst. (As in, I am willing to serve as a director; I don't think I want to be president.)
you don't need to want.. you get elected and you do ;)
Right on alex_joni We ganged up on Matt for years.
dictators directing directors... too many d's for me
Anyone know if a wiki can stand simultaneous edits to different parts of a single page?
it can.. but you need to take care of the merge manually
My guess is that we're about to find out :)
Okay. I presume that the way it does that is comprehensible at the time it happens.
I'll make a copy of my changes, just in case. You should do the same.
currently windy with bright blue skies
leaves moving NORTH again....
03alex_joni * 10emc2/directory.map: testing the new header and CVS replacing the custom cvs-codes
winds 65-70 mph
dmess don't send those leaves here, got enough already.
headed NORTH right now... lotsssa emm
rayh, I'm about to save my update - have you done your new changes yet?
a bit ago.
maple out front is always last to go and was stripped in under 1 minute
reading back I see that matt posted at comment about machine logic.
<mshaver> anyway, ray was talking about machine logic & M codes, and I figure that maybe each M code would have a HAL pin that classicladder could see, or something like that?
1 bird nest left in it.. says something for their engineering...
are we at the point where we can talk a bit about machine logic
SWPadnos: don't see your update
how about if HAL could assighn 2 or 3 or whatever the nxt accessory needs??
I got the update to swp.
I reloaded after your last update, so your edits shouldn't have been trashed
we will need acces to the " ladder " - HAL for many things
your addition looks good.
Right now, M codes above 100 are just scripts. Is there any good reason why they shouldn'tall be that way?
been writin... back now, ray look for mail of new form
I'll add some more "flowery s%$t on alex_joni's recomendation.
rayh: you do that
SWPadnos: it's hard to access HW from a script
if it were a HAL pin it would be lots easier
Why pick on just the M codes. Why not the canned cycles, also? I've written my own peck cycles using the subroutine capability.
maybe a combination would be best
alex_joni, that depends on how it's done
the interpreter shouldn't ever touch hardware directly
that stopped me completely on first glance but it works.
The only thing a counter would need to look for is more than vote for the same person.
oh and i see jone twice on each office
oops, expect it right away!
workin hard to get the party candidate elected, eh?
549 eligible voters
who's the 0.49?
markwayne: we had more last time..
60-70 ballots returned
ray, JE twice fixed now
some halfwit was the .49
a near-halfwit, I guess
tomp: Good work.
SWP the interpreter shouldn't ever touch hardware directly? uh, it's handy to do PLC like stuff for custom-ers (spcl mcode)
yes, but that would access hardware through HAL (or drivers)
right, go thru hal, so thats not >direct<, got it
the interpreter may try to set output bit #7, but it shouldn't write 0x80 to port 0x378 to accomplish that
thinking about M codes and I/O - since some M code may need to access hardware (ie, tool change), there needs to be a way of running scripts with I/O access
tomp: I know that Matt Shaver wasn't on the list when you got it but I added him a while ago.
other than that, it looks good to me.
also, with access to motion, if they're supposed to be used for homing, tool changes, etc.
could someone please gimme an example of that? the scripts cant, and I dont see the hooks for c code.
lerman: did you want the traj paper ?
etla, can you post a link to it?
it's from ieeexplore, I don't think you have access unless you are on a university campus
etla: me too! email@example.com
etla did, but it's an IEEE paper and you need access to it by subscription or payment.
Ah - OK. then can you send a copy to firstname.lastname@example.org
My IEEE mmembership has long expired
could you shoot me a copy as well?
Well I've been an IEEE member forever. I get my health insurance thru the IEEE.
* mshaver ain't never been a engineer
yeah, keep the emails coming :) need to sftp it from work...
I know of a few codes in the mazak lexicon that work rather directly with IO.
rayh, well, they're wrong :)
M45 is commonly used to causes an indexer to advance.
I would rather see these things added at the task level
sorry, "I ain't never were a engineer." Thanks Tom!
* alex_joni goes away for a while...
It's not that you shouldn't be acle to change I/O from the interpreter, it's that the interpreter should leave the actual hardware access to a driver (HAL in the case of emc2)
alex_joni is now known as alex_joni_away
There would be a strong temptation to violate a good machine
I agree with SWPadnos.
if a g0 could trigger an io pin.
sorry away... canned cycles are jus g-code scripst arent they??
dmess: only if they exec slow-er.. faster if native
No. They aren't. But (I think) they could be. And (I think) they should be.
as usual, just as things get interesting, I have to leave :(
If the interpreter isn't fast enough to do a peck cycle, there is something wrong.
Thanks for all the help today swp.
siemens is all scripts and rolls prety good
I'll review in a few hours, and if anyone's still around (or we can do something tomorrow), I'll be back then
Bye to SWP.
rayh, my pleasure - I'd forgotten how fun this stuff is :)
I think we made a lot of progress.
I'm assuming that some interp codes should be visible in classicladder where the logic would be implimented. Conversely, classicladder probably needs to be able to stop or initiate motion to do things like a tool change...
I gotta go too...
yeh, speed isnt the issue, it's the ability to get stuff done, at whatever level. it should be done right, but done.
back in a while
mshaver is now known as mshaver_away
arrgh! how do I turn on a bit in M101?
there needs to be a POSITIVE hand off of tast and acknowledgement of same at the end...
That is what I favor for most of these kinds of things.
to complete the M - code
Well, the interpreter also does a little of that. Think of probe cycles. It waits for the probe to indicate a hit.
m1xx scares the crap outa me.
a bash script with one line sudo cd / ; rm -rf
so we have the capability... it just isnt inclusive..
will the sourceforge list take attachments ?
try an existing probe macro...
but the probe internals arent available to the gcode/mcode level
that's why running emc sudoed is a bad idea
and ray, yeah, that sort of stuff... any bash cmd is right out
there's no reason for all of emc to be su; all it has to do is insert and remove modules.
the ultimate emc virus. "Hey guys try this great macro on your mill."
what about insertable m- codes.. in the .ini file??
with newer machines a M06 orients the spindle so unless you are positioning a boring bar or some such you wont need to orient the spindle
Oh. Writing to ini, var, tbl, and saving g-code files modified in the gui needs it sometimes also.
only if permissions are set wrong.
when its doing atool change I mean
simple matter of system configuration
yes.. have a m code or not...
spindle orient on the Mazak was a separate task but then we didn't get to final integration of these sorts of things.
I presume that we will add a task precondition for m6 that will handle that.
probably wil need plc i/o
or when the tool change message arrives in CL we will orient and check oriented before we continue with the change.
but plan for rigid tapping too... plz
jmk has a notion about rigid tapping but it will take me a few lines to explain it.
they work off the same hardware..
spindles orient a bunch of different ways
the mazak orient works off a 360 ppr encoder on the spindle.
so that has to be set up at intergration time
yea a servo type
each rotation yields a 0 to 1440 ramp.
reset by the index pulse.
We read the orient angle from the ini file
those should be not to bad
and when orient is commanded we simply set that angle as the
spindle orienation and axis syncronization.... peck tap 1"-8 unc
its a 3phase ac drive ?
desired position of the servo
3 phase in DC out.
so the spindle is a brush dc motor
not so hot for holding
it has a brake to hold in the oriented pos then
torque mode on this works pretty well.
as did velocity mode.
All of the mazak machines I've serviced do about the same thing.
I know there are some that use a stop dog to hold position but have no encoder.
I'd hate to see someone put a wrench on the tool dog and get it very far away from commanded position.
but they dont snchro ta
energize the dog and creep foward till it drops in place
have a wrench snap into someones melon..
darwin award candidate..
orientation is blackboxed thru hal, many modules allow many cfgs, ray where did we start on this mcode volatility?
im old school some things nc gont need to concern itsef with
plc will usually be ready BEFORE you
tomp: I've got this thing about what I call "machine logic."
is machine logic steam powered?
macine logic.... === plc logic... right??
Most commercial machine tools use ladder to handle the most of their machine specific stuff.
They also commonly use variables or parameters that determine how specific actions are handled.
An example would be how the part loading door interlock behaves.
and pass them pack and forth to the ladder
Or what get's kicked on after estop.
ok ok ok slow down... pick 1 and run
In my opinion, the EMC was written for three specific machines.
Toshiba had a memory of keystrokes... I KNEW Everything.... alarms times... to millisecs
A K&T800, a bridgeport, and a xxx little minimill that resided on the second floor of Fred's building at nist.
crashed at these coords.. at this time
how did emc vary between the 3?
While NIST worked up the K*T much of the machine logic was handled by the second half ot a split vme bus computer.
That has been lost but scattered throughout the code we have are hard coded bits that made emc behave the way the K&T expected.
ill shut upand listen
Na I'm just ramblin.
Most of the task controller was designed around that machine.\
several of the g-codes are handled in ways that the machine expected.
These are hard coded right up into the interpreter.
so kinematics are particulr to it??
It was a trivkins machine but yes.
No stacked rotaries or such.
so basic system will handle a 1967 type machine
oh goody. etla mailed the paper.
IMO we need to pull out all of those machine specific things.
so this 2nd computer handled the plc? how were gcodes specific to the K&T? example?
les_w: nice to see it arrived!
I think it was mid 70's metal.
hmm better... not
We should develop a lookup system around each of these machine logic points
from the interpreter right down to the HAL
That way the integrator can set these variables the way he wants.
No I can barely read c can't read c++.
it should be a std mappping from GO
What I could do is set up a gui or front end that would provide the set of values that a
how does HAL inteface to the M/C
person might want at each place in the emc.
gimmee an example of 1
Let's use a g30 program end with pallet change.
high pressure coolant ON
alex_joni_away is now known as alex_joni
There are things that need to happen before the pallet change message
and things that need to happen after the pallet change message is sent.
yup.. you go rayh
uh, point me to a file, i remember G30 as rewind...
Almost every "logic" pinch point has similar pre and post conditions.
That is one possible post condition.
Right now m2, m30, m60 all rewind and you've got no choice.
yes we used to build macros from hell to get thuu and pass conditions
sorry .. g30 unknown, so go on
I'd really like it if I could add a post condition to m30 -- restart.
That would give me a looping program like i need for bar stock jobs.
I'll shut up a minute and let you guys react.
ok, so this pre & post affects the gcode execution, and is in some config
and this is not availabel?
Not now. Pre and post conditions are hard coded.
at the interpreter and task levels.
ok, are any thngs like this configurable ( do we have a model )?
I guess the thing in emc2 that comes the closest is the stepping type
But that is a single choice that causes a specific kind of output.
as opposed to the pre/post concept?
search siemens docs on the web on www3.
Right. There are several hard coded pre and post in emctask.
I do the equivalent of pallet changes a bunch. I just end the program with % rather than m2 or m30, change, and restart
can we whack oone to make it read from a file the pre& post?
I'm wishing that we could try something like that.
It would be easy enough if we recompiled between but I don't know about reading in and setting up these sorts of things at machine startup.
M99 at the end of a program should make it loop...reading back
i just looked, do you mean the way lube_off is hardcoded?
I know that it's done all the time in commercial controls. The book will tell you if you need to shutdown the control or kill power and restart.
they are all.. system vars..
you need to bear in mind how this should get coded too
lube is an example.
for instance: <tomp> can we whack oone to make it read from a file the pre& post?
tomp: who reads it? where from? what format is it in?
don't need to answer now, just something to have in the back of your heads..
more generic and configurable without hacking C and recompiling
alex: yeah, looking for example then will look at the good way to do it (after "it" is defined better)
oh wait. There is an example of two of these.
They are tool_change_position
all generic macro code...
and tool_holder_clear position
If they exist in the ini file, the emc will initiate that motion at a tool change command.
in what file ray?
This was some recent stuff from fredp.
emccanon.cc about 874
The tool_change_position is a precondition to sending the tool change IO message.
hard coded rayh??
The tool_holder_clear message is post tool change IO but also pre a loop on tool change IO,
we've seen errors in the hard coding before
The job to be done is hard coded into that file but there is an if around it.
HAVE_TOOL_CHANGE_POSITION ? is the pre condition? a flag?
there may be (and likely should) a hardware interlock to check the spindle pos before atsrting the tool change sequence
has a HAL pin???
When SWP and I were discussing task some months ago we disagreed about how such things might be handled.
He suggested that we produce little coded and compiled modules
that could be plugged in when the flag said to.
That way as the interpreter approached one of these machine logic points,
it could drop the command through whatever set of modules existed for that type of machine.
this is outside the cnc it is inside the plc
think... flexible... but dont anticipate...
The logic of it is somewhat like the HAL where the connection of signals creates a path.
These could exist all the way through.
The interpreter would have a few dealing with program end, reset and such.
Task would have lots of them for tool change, brakes, coolants,
more really ray... but later
We have the ability now to deal well with IO through HAL and Classic Ladder.
* rayh shuts up for a while.
every HAL out in needs it own IN
to say comand complete
but every controlled device wont have a way to give ant feed back
true and it gets sticky there as well. alex and I've been working on estop
ESTOP = fun
With ladder it is possible to set up many different logical systems.
in Canada E-Stop removes power to everything..
an example is hydraulic pressure as a precondition for moving hydraulic actuators.
woa....you cant have Estop depending on CL ?
No but you can have many internal states depending upon it.
i dont see how ladder is connected to gcode flow. it seems very separate ( Canada, Ontario Hydro, arrgh!)
And it the US we have that orderly shutdown provision.
Many times a machine can be stopped faster by not powering down.
well you can read a pressure switch and have that switch hold in a estop relay
Some g-codes require IO actions.
tomp... be nice...
coolant for example
tell em Ray
rayh is just about typed out.
anyting witha relay or time limit will HAVE to go thru the PLC... the nonrealtime o/s
For me estop means the rapid halting of motions. Servos are disconnected and dynamically braked at the maximum safe rate. So is the spindle. But power is on...the computer is on, and the amps are on but inhibited.
the amps would be on but in brake mode
that is very close to the way I think about it.
This has to be hard wired.
yes, hardware can have 'markers' that can be seen by the cnc. safe estops are quickly safe
i'll but it ray... ;)
fast is usually hardwired, just reported to the control
but needs i/o
Right, it is reported to the control
And at the front of the estop chain is the PC. I want estop if the PC faults or the gui estop gets pressed.
Or that little charge pump drains out.
humm how about a watch dog for the PC
what if it locks
make hal tickle a pin
yes...I have limited protection against computer failure
JonE is fond of reminding of the time his display went away and the machine went ahead and finished the part.
well that OK
sorta I guess but scary
That was his reaction! Scary
i demonstrate a new control by yanking the power to the pc out in middle of a cut... the pc is just a terminal, the cnc is another box(not emc)
and have that pin reset a 555 or some such on the interface board
I think STG has a watchdog...not used though
as do many of the other fpga based systems as well.
now that is some thing that should be hard coded
must use watch dog
les_w: it'll be used in emc2 (the watchdog)
and if you by pass it and get hurt dont cry to me
on my to-do list ;)
writing one little bit to io each servo cycle would not hurt anything
motion has one HAL pin just for that
whats this bit ? "im ok" "im ok' 'im ok' ?
oh oh later got to go seperate dogs
Think of it like a bucket of water with a small hole a the bottom and a floating switch.
tomp: something like that
the bit keeps adding water
That is how the charge pump on the PMDX parport works
we used that for the Mazak project.
ok, charge pump, i use same idea on fire sensor, cap charges, fire discharges, lotsa fire blows sireeen
looks like markwayne has problems with his watchdogs.
ok, so chargepump is used in estop chain (in safe to run chain ), and is precondition to 'continue' ok
and preconditions ( and post) are soemthing we'd like more of
you didn't accept your nomination to the board
can we add you to the nominees?
he is there already..
sorry, & Hello
Sure, you can add me. If elected, I would serve.
off to add your name sir,
Thank you sir! :)
tomp: as I said.. his name is already there
It's great to see so much activity.
zwisk: you do need to add your backgroung info
[22:10:40] <alex_joni> http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl/emcinfo.pl?BoardElection
background even.. can't type..
oops, mr Zwisk, what is your name for the form?
oh, ok (,,,,,, )
dont give up the day job :)
ray dont give up the day job
ok, so chargepump is used in estop chain (in safe to run chain ), and is precondition to 'continue' , and.....
* alex_joni got tired of touching all the .c and .h files :(
alex, how do I get the log?
tomp: what log?
the log of todya's irc
tomp: you'll notice logs of every day there...
thanks, bye all, off to library
heh.. more than a year of logs.. just noticed :D
gotta run also. Thanks to all.
where can you get the total distance an axis has moved ?
or the larger picture is how do you know when to oil the ways
markwayne: if you see rust, you waited too long
Ahh... yeah... I've actuallly got a side project right now I'm working on to pull EMC's cvs into subversion for my own personal use. CVS is horrible at directory moves.
iwas thinking of the oiling that is in the bridgeport io
how does one go about updating their profile on the wiki page?
zwisk: first you need to go to your preferences page
03alex_joni * 10emc2/ (30 files in 7 dirs): added a standard header. hope I didn't screw up the licences...
* alex_joni goes to bed