Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
- CAD-CAM-EDM-DRO
- Messages
Search
Re: Linux vs. DOS
Matt Shaver
I finally have made my first item using EMC!!!I like it! I'm also happy to see that you were able to use your CAM output with the EMC. In getting this g-code to run I have discovered another thing I wish EMCwindow along with the error message debugging a g-code program would be 1000 timesAt the beginning of the error message there is a number. Although it doesn't say so, this is the line number of the error. Not the "N" number (if you use them), but the number of lines into the program from the top. This should be easy to find with emacs or any editor that counts the lines for you. I'll agree that the error messages could be more explanatory in their verbiage. Here is a question for Matt or Jon or anyone else running EMC:just loading it in Xemc and running it?Yes, open the file for editing, scroll down all the way to the last line that says M2 and put your cursor there. Press the "Set Run Mark" button at the bottom of the editor window, and confirm that you want to start running at this line when the little window pops up to ask you. Make sure you are clear of any obstructions since the machine may try to move to the position that it would be in at the end of your program (probably the tool change position). Originally, the interpreter could be run in standalone mode (without the motion control system) and do its inputs and outputs to and from disk files. More interpreter information is in the file: ftp://ftp.isd.cme.nist.gov/pub/emc/emcsoft/RS274NGC_22.doc I am about halfway through turning this document into html which will improve its accessibility. The raw .doc file doesn't have the table of contents, illustrations, tables, etc. I found that if I tried running the codeSince you have no feedback in your control system (like encoders), I don't think you should get following errors. I'm puzzled by this, so I'll forward it to Fred. Now for some observations that may help others over the EMC learning curvea little faster:I didn't know this, but it may be fixable. I'll send it to Fred as well. EMC seems to want it's circular moves (G2, G3) to be entered in the formatActually, I had the same problem, but the other way around. I couldn't always use R format, but IJ worked fine. I'd like to know what the error message was. I drew these in AutoCad and assuming the starting point to be X-2.196 Y-5.946 I got the following results: EMC seems to likes: N331 G03 X-2.309 Y-6.059 R.094The center of this arc is X-2.2175 Y-6.0375. EMC seems to not like: N331 G03 X-2.309 Y-6.059 I-2.253 J-6.003The radius of this arc is .0806 . Truthfully, I got some bad R format output from my CAM system that the EMC couldn't digest. Here are some excerpts from the e-mail of that era: ----- From: Matt Shaver When the EMC tried to execute the block: N285G3X22.4352Y-1.8132R0.0025 it produced the error: "arc_data_r: error 2: Arc Radius is too small to reach end point". The starting point for the arc was X22.4388 Y-1.8168. I thought it might be the result of a rounding error so I changed the post processor in the CAM software we're using to output the coordinates with 100% precision. This made the code look like: N285G3X22.4352322Y-1.8132322R-0.0025 but it still failed. I drew the geometry (as two points connected by an arc) in AutoCAD to check whether this was a valid arc and it seems OK. The entity list was: POINT Layer: 0 Space: Model space at point, X= 22.4352 Y= -1.8132 Z= 0.0000 POINT Layer: 0 Space: Model space at point, X= 22.4388 Y= -1.8168 Z= 0.0000 ARC Layer: 0 Space: Model space center point, X= 22.4370 Y= -1.8150 Z= 0.0000 radius 0.0025 start angle 315 end angle 135 ----- Tom Kramer, the author of the G code interpreter replied: ----- The start and end point are 0.0050919293 apart. This is 0.00009 more----- Since switching to IJ format there haven't been any problems since for any two points (start and end) and a specified center point, an arc of some radius exists! |
Re: Linux vs. DOS
Jon Elson
Tim Goldstein wrote:
Yes, Fred and Matt Shaver have made some comments about parameterizingHas anyone tried running a lathe using EMC? I have set up a 2 axisGot impatient and gave it a try. Here is what I found: the axis names. Most of the other info for each axis is already a parameter. Also, you need diameter display, which I think can be a display-only finction of the user interface. Jon |
Re: Linux vs. DOS
Jon Elson
Tim Goldstein wrote:
From: "Tim Goldstein" <timg@...>Very cute! You should send one to Fred Proctor! I think it would look nice on his desk! <snip> Here is a question for Matt or Jon or anyone else running EMC:Hmm, you must have your encoders hooked up. What you can do is build a 'demo' version of EMC, that has simulation code rather than motion hardware code. In fact, you should have these programs and scripts on your system. It will give you a quick check of a program, but you'll still have the same problem of identifying WHERE the error is. Fred is supposed to be working on a major revamp of this whole area. All this keyboard stuff is one of the biggest bags of worms in Linux. It has to do with the huge variety of keyboards that have been made, and the wide variety of keyboard scan codes they produce. All of this can be fixed in the X-windows setup script, but it is not that easy to decipher the wrong keycodes. There are a couple of utilities that tell you what keycodes and scancodes are being generated by various keys. EMC seems VERY picky about the g-code it will accept. The other controllerI addressed some of this in a response to another message on this list. On the plus side, my machine seems to run much smoother under EMC than onYes, the smooth blending of any move into the next move, whether linear, arc or helical, in any of the 3 planes, is tough enough that I shied away from rolling my own CNC for exectly that reason. That's why a group of guys spent a couple of years figuring all this out at taxpayer's expense! Next time you pay your taxes, remember that that is also funding the great guys like Will Shackleford and Fred Proctor who beat this path through for us! So, I can understand why Allen-Bradley and Fanuc have this, and why Ah-Ha and Microkinetics might not. Jon |
Re: EMC & Linux
Jon Elson
Matt Shaver wrote:
3. Maybe there should be an _actual_ feed rate display to compliment theMy antique Allen-Bradley had this. The feedrate would actually ramp up and down as moves started and stopped. This much activity isn't necessary (the AB updated the screen at 100 Hz, same as the servo update rate and the trajectory update). But, showing the rate it is actually going (at the plateau of the trapezoidal velocity profile) would be nice. Of course, it now shows the feedrate of the LAST move in the program, since the interpreter has run to the end before I hit start! Jon |
Re: EMC & Linux
Jon Elson
Tim Goldstein wrote:
What I noticed was not that EMC wouldn't process the I & J format, but thatYes, EMC is VERY picky about inside corners when using a cutter radius offset. It is also very picky about extremely small errors in matching the radius computed from the I and J words to the current position and the new position specified in the X and Y words. These things have to match to about .000001" or you get an error. To make an arc, you have to know not only where you started and where you end, but also the radius. The I, J and K words are the distance from the starting point to the center of the arc, in the X, Y and Z axes, respectively. So, in your earlier question, the I and J words give a set of coordinates for the center of the arc. Then, EMC compares the length of imaginary lines from this center to the start and end points. many CNC controls allow quite a bit of difference in these, and just fudge it. EMC requires them to be really accurately the same length. This is the blending of moves. It can be a problem when you make an XI found out that if you set the Acceleration too low, you get some odd move, then a Y move, as the Y move will start to ramp up when the X move just begins to ramp down. But, for a string of short continuous moves describing a fluid curve, you need this, or the machine will absolutely CREEP. (My antique AB suffered from this.) Maybe we should ask Fred Proctor for some sort of switch (either in the RS-274 program (G-code) or on the user interface) to turn this on and off. Actually I had no problems running any code in lathe mode. Here is the fewThis is good news (although, really, except for some very small tricks like wanting a diameter/radius display) the CNC really doesn't need to know what it is moving - a Mill, a Lathe, or a robot. Oh, yes, then there is the constant surface speed trick, where the spindle speed changes as the cutter radius changes. I agree on the program. I like what it has to offer a lot. I want to get aI believe Fred has something in the works that will make this a lot better. Clearly, a real need. Jon |
Re: EMC & Linux
Matt Shaver
From: "Tim Goldstein" <timg@...>I and J are the coordinates of the center of the arc, I=X, J=Y. See my next post for more on this. <much other stuff cut> I've got a lot to say about the rest of this stuff you're talking about, but I'm slow at typing so I might break it down into a few separate replies. I'm beginning to think we need audio/video/whiteboard type conferencing rather than e-mail! Matt |
Re: EMC & Linux
Tim Goldstein
Matt,
toggle quoted message
Show quoted text
Sorry to hear you are still sick. It sure is a drag when you have things you need to do. -----Original Message-----I would agree with the scenario giving 60,60,60,30 and also think you should never be able to do anything that will cause the machine to try and move faster than what is set in the MAX_VELOCITY parameter. I also think a window that showed the actual rate you will get (programmed rate X override, not to exceed MAX_VELOCITY) would be a handy addition. DeskNC offers this feature and I found it handy. There is a ./update script as well that I believe saves your customizedI tried the ./update script and as best as I could tell it didn't do anything. It took only a second or two to run and gave a number of directory not found messages. I don't know if the problem is that I am using the directory structure as you suggested (/usr/local/nist) and it expected everything to be at /usr/local/emc or whether it just does not work. Here is what I tried first: I put the emc-05-jun-1999.tgz file in the nist directory and did tar -xzvf on it. Then while still in the nist directory I did ./install and got the above results. I finally just did a ./install without a clean or anything and it looks like it just overwrote all the existing source and library files and then compiled everything without deleting any of my files that were in the emc directory. Don't know if this is the recommended method, but it seems like it did the job. Tim [Denver, CO] |
Re: EMC & Linux
Tim Goldstein
toggle quoted message
Show quoted text
-----Original Message-----What I noticed was not that EMC wouldn't process the I & J format, but that it seemed as if I had more errors than if I used the R format. Except for very simple stuff I use Vector 7.0 to generate my g-code and what I found was when I generated both styles off the same part there were far fewer lines that errored with the R format. This could be an indication that Vector's g-code algorithms are a little lacking when it comes to the I & J style, but I never had a problem with it in DeskNC. Despite having used the I & J format in the past I will admit that I really don't understand it. It is my understanding that the X & Y values indicate the destination position, but can you clue me in on what the I and J are indicating? I found out that if you set the Acceleration too low, you get some oddI haven't tried going to settings that low, but it is good to know what type of behavior to expect if you get it too low. Currently I have the acceleration set to 0.8 and that seems to be working well. I am not sure what the symptom would be for having it set too high, but it seems as if it would be hard on the drive train (cogged belts in my case) to have the motor try to hit top speed in too short a time. What kind of problem did you have with the XZ motion with the lathe? DidActually I had no problems running any code in lathe mode. Here is the few lines I tried to run. It has small enough move you should have no problems if you want to give it a try. It isn't anything special. It just turns a shaft down to a number of steps with roughing passes and then has a finish pass to complete it. N10 F20 N11 G40 N12 G00 X3.559 Y-1.118 N13 G01 X3.559 Y-1.068 N14 X1.113 Y-1.068 N15 G02 X1.039 Y-1.118 R0.079 N16 G01 X1.095 Y-1.174 N17 G00 X3.559 Y-1.174 N18 G01 X3.559 Y-1.068 N19 X3.559 Y-1.018 N20 X1.118 Y-1.018 N21 X1.118 Y-1.039 N22 G02 X1.113 Y-1.068 R0.079 N23 G01 X1.168 Y-1.124 N24 G00 X3.559 Y-1.124 N25 G01 X3.559 Y-1.018 N26 X3.559 Y-0.968 N27 X1.118 Y-0.968 N28 X1.118 Y-1.000 N29 X1.118 Y-1.018 N30 X1.174 Y-1.074 N31 G00 X3.559 Y-1.074 N32 G01 X3.559 Y-0.968 N33 X3.559 Y-0.918 N34 X1.118 Y-0.918 N35 X1.118 Y-0.968 N36 X1.174 Y-1.024 N37 G00 X3.559 Y-1.024 N38 G01 X3.559 Y-0.918 N39 X3.559 Y-0.868 N40 X2.039 Y-0.868 N41 X1.118 Y-0.868 N42 X1.118 Y-0.918 N43 X1.174 Y-0.974 N44 G00 X3.559 Y-0.974 N45 G01 X3.559 Y-0.868 N46 X3.559 Y-0.818 N47 X2.113 Y-0.818 N48 G02 X2.039 Y-0.868 R0.079 N49 G01 X2.095 Y-0.924 N50 G00 X3.559 Y-0.924 N51 G01 X3.559 Y-0.818 N52 X3.559 Y-0.768 N53 X2.118 Y-0.768 N54 X2.118 Y-0.789 N55 G02 X2.113 Y-0.818 R0.079 N56 G01 X2.168 Y-0.874 N57 G00 X3.559 Y-0.874 N58 G01 X3.559 Y-0.768 N59 X3.559 Y-0.718 N60 X2.118 Y-0.718 N61 X2.118 Y-0.750 N62 X2.118 Y-0.768 N63 X2.174 Y-0.824 N64 G00 X3.559 Y-0.824 N65 G01 X3.559 Y-0.718 N66 X3.559 Y-0.668 N67 X2.118 Y-0.668 N68 X2.118 Y-0.718 N69 X2.174 Y-0.774 N70 G00 X3.559 Y-0.774 N71 G01 X3.559 Y-0.668 N72 X3.559 Y-0.618 N73 X2.118 Y-0.618 N74 X2.118 Y-0.668 N75 X2.174 Y-0.724 N76 G00 X2.174 Y-0.928 N77 X2.039 Y-0.928 N78 G01 X2.039 Y-0.868 N79 X1.118 Y-0.868 N80 X1.174 Y-0.924 N81 G00 X1.174 Y-1.118 N82 X3.559 Y-1.118 N83 G01 X3.519 Y-1.039 N84 G00 X3.519 Y-0.539 N85 G01 X3.401 Y-0.539 N86 X2.039 Y-0.539 N87 X2.039 Y-0.750 N88 G02 X2.000 Y-0.789 R0.039 N89 G01 X1.039 Y-0.789 N90 X1.039 Y-1.000 N91 G02 X1.000 Y-1.039 R0.039 N92 G01 X0.055 Y-1.039 N93 X0.111 Y-1.095 N94 G00 X3.519 Y-1.095 N95 X3.519 Y-1.039 N96 M2 I really do like this program so far. The fact that it is rewrotespindle to the compound using encoders. I don't have servos yet, but someday I will biteI agree on the program. I like what it has to offer a lot. I want to get a better handle on how to use the cutter comp and I would like to find a way to know what line it is that is failing on a program, but all in all it is a far superior program to the DOS / Windows based items I have been using. I'm also with you on the servos. I have started talking with Jon Elson and will be taking a look at building up his design. You may want to take a look at it. Tim [Denver, CO] |
Re: EMC & Linux
Tim Goldstein
toggle quoted message
Show quoted text
-----Original Message-----Just had a few minutes to install the new build. I don't know all the fixes or if they affect you servo guys, but this version has fixed the problem with the DEFAULT_VELOCITY setting. What you enter in this parameter in the [TRAJ] section of your ini file is now the feed rate that Xemc initializes with. Also, the MAX_VELOCITY setting in the [TRAJ] section is working as the feed rate you get for your "G0" rapid moves. Tim [Denver, CO] |
Re: EMC & Linux
Matt Shaver
From: "Tim Goldstein" <timg@...>Sorry, I forgot to tell you. I believe this fixes the problem of DEFAULT_VELOCITY not affecting the default feed rate. It also may limit the max feed rate to MAX_VELOCITY. Fred told me this on Friday, but I was sick and my brain was clogged up so I didn't do any writing to the list and by now I've forgotten the exact details. Fred also e-mailed a question to me today on this same subject and I'm sure he wont mind my echoing it here as well as my reply: From: Fred ProctorI replied: ----- I think the 60, 60, 60, 30 scenario is the correct one. The way this is handled in other cncs is that the rapid traverse rate is greater than the highest allowable _programmed feed rate_. Also, the feed override control usually only goes up to 125%. For example, on a mill that rapids at 150ipm, the max feed rate you can program might be 100ipm which can be increased to 125ipm with the feed override knob. Some random ideas: 1. Add a MAX_PROGRAMMED_FEED_RATE parameter to allow setting up the conditions described above. The writer of the .ini file could always goof up and allow MAX_PROGRAMMED_FEED_RATE x MAX_FEED_OVERRIDE > MAX_VELOCITY, but the maximum actual velocity should never exceed MAX_VELOCITY. 2. Maybe there should be a "clipping" indicator when this error condition happens. 3. Maybe there should be an _actual_ feed rate display to compliment the _commanded_ feed rate display we have now. If we go to the "exact path" motion control system this would show when the system is forced to decrease the feed rate to keep acceleration within bounds. Sorry I didn't get your phone message earlier, I've been home most all day but I left to go to Radio Shack when your message came in and I never looked at the machine until I read your e-mail. The stepper control hardware is progressing... Thanks, Matt ----- If anyone else has suggestions on how to handle this, speak up! When I do a software update, I usually: 1. Save run.emc (or whatever you've named your customized script), emc.ini (ditto here), tool.tbl (tool data), and rs274ngc.var (the offsets). Also save any other stuff you want to keep that is in or below /usr/local/nist/emc. 2. Go to /usr/local/nist and run ./clean which removes everything including the emc directory. 3. Put the latest emc.tgz (whatever its name) in /usr/local/nist and un-tar/zip it. 4. Run ./install to compile the new version. 5. Put back the files you saved in step 1. There is a ./update script as well that I believe saves your customized settings, but I've never used it. If you try it, let me know, maybe I should too! Thought I would take the opportunity to start a new thread name as theup and using Linux and EMC.A good idea! I'll start using it too. Matt |
Re: EMC & Linux
Dan Falck
Tim,
I have been running EMC this week on a Sherline mill. I haven't made any parts yet, but have been running the table to get a feel for it. On G02, G03, cirular interpolation- I have been using I and J format with no problem so far. Maxnc uses I's and J's, so I'm use to it now. I found out that if you set the Acceleration too low, you get some odd behavior. The move that is just ending slides to a stop slowly after the next move starts. The ramping was working pretty good for my setup and I kept running it lower and lower just to try it out. At Acceleration set to .05 it does this lazy motion thing. At .15 it looks ok. When I cut parts I will check it for sure. What kind of problem did you have with the XZ motion with the lathe? Did you set up a G18 (XZ plane) before trying to make a curve? I haven't tried it myself yet. I will try it tommorrow. I really do like this program so far. The fact that it is rewrote constantly and the source is out there is kind of reassuring. I am looking forward to being able to use it for the lathe and gang the spindle to the compound using encoders. I don't have servos yet, but someday I will bite the bullet and get them. Sincerly, Dan Falck At 07:25 PM 6/5/99 -0600, you wrote: From: "Tim Goldstein" <timg@...>discussion of shop built systems in the above catagories. |
EMC & Linux
Tim Goldstein
I just checked the ftp server for EMC and there is a new build dated
June-5-1999 on the site. Don't know what it fixes, but I am downloading it right now and will report back later. Thought I would take the opportunity to start a new thread name as the original one of Linux vs. DOS has become just info and tips about setting up and using Linux and EMC. Tim [Denver, CO] |
Re: Linux vs. DOS
Tim Goldstein
toggle quoted message
Show quoted text
-----Original Message-----Got impatient and gave it a try. Here is what I found: You have to change your g-code to be X Y and not X Z as is normal for lathes. Don't set the AXES setting in the [TRAJ] setting to 2. If you do Xemc will come up with the Z axis numbers in red and you can jog X and Y just fine, but as soon as you try to gun a g-code program and it hits a linear move you get an error something like "linear moves can't be made if beyond the limit". After checking to make sure I was not beyond the soft limits for X & Y and restarting EMC a few times it dawned on me what is happening. The red numbers is the same thing you get when you hit a limit switch. Apparently, EMC thinks you are against the limit switch for the Z axis. Other than this it seems to work just fine after you reverse the direction of movement of the X and Y axis in your ini file. Tim [Denver, CO] |
Re: Linux vs. DOS
Tim Goldstein
I finally have made my first item using EMC!!!
If you want to check it out you can see it on my website at In getting this g-code to run I have discovered another thing I wish EMC would do. When it runs into an error in your g-code EMC pops up an alert window telling you what the error is in terms that give you a hint at the problem, but it resets your program at that point and gives you no indication of the line that caused the error. The code for cutting this little EMC sign I made was 572 lines long. So it was a little bit of a pain to watch the program code as it flys by in Xemc and hope I was paying close enough attention to catch the line number just before I hit an error. If Fred could add the ability to display the line of g-code in the alert window along with the error message debugging a g-code program would be 1000 times faster. Here is a question for Matt or Jon or anyone else running EMC: Is there a way to run the g-code through EMC's code interpreted without just loading it in Xemc and running it? I found that if I tried running the code with the my stepper controller turned off so I could crank up the feed rate to just check the code more quickly I would get an error that would abort the code referring to a "follow error" on an axis. If I ran the code with the controller turned on I had no errors in this section of code, but it took MUCH longer as I had to use realistic feed rates. Now for some observations that may help others over the EMC learning curve a little faster: The enter key by your number pad and the enter key by your letter keys are not equivalent in EMC. If you use your mouse to click on either the feed rate or the feed override it pops up a window to enter a rate into, but to get it to accept the rate and use it you have to use the enter key by your letter keys. The one on the number pad will close the box, but your entry disappears. EMC seems to want it's circular moves (G2, G3) to be entered in the format using R and not I and J. EMC seems to likes: N331 G03 X-2.309 Y-6.059 R.094 EMC seems to not like: N331 G03 X-2.309 Y-6.059 I-2.253 J-6.003 BTW, does anyone know of a way to easily figure out what a circular move in the XYIJ format would be in the XYR format? EMC seems VERY picky about the g-code it will accept. The other controller software product I was using will let you run most any code you throw at it as long as you don't give it a code it doesn't handle. EMC seems to require everything is exact. This is not a bad thing, but it does make the debugging lengthy particularly in light of the fact that when it errors you have no clue of the line that caused it. On the plus side, my machine seems to run much smoother under EMC than on any of the other softwares I have tried. Has anyone tried running a lathe using EMC? I have set up a 2 axis configuration file on my machine and hope to give it a try this weekend. Tim [Denver, CO] |
Re: Term: Mag Amp
Mike Chaney <[email protected]
Jon Elson wrote:
Sorry, old technology. Mag amp is short for a magnetic amplifier.Ah! You mean a "saturable reactor". These were once the cutting edge technology for stage lighting dimmers - until someone invented the thyristor. Mike |
Re: Term: Mag Amp
"Ian W. Wright" <[email protected]
Thanks Jon.
Ian Jon Elson wrote: No. What is similar to the low voltage winding of a mains transformerBest wishes Ian -- Ian W. Wright LBHI Sheffield Branch Chairman of the British Horological Institute. Bandmaster and Euphonium player of the Hathersage Brass Band. UK. See our homepage at:- or or 'Music is the filling of regular time intervals with harmonious oscillations.' |
Re: Term: Mag Amp
Jon Elson
"Ian W. Wright" wrote:
From: "Ian W. Wright" <Ian@...>No. What is similar to the low voltage winding of a mains transformer would be put in series with the AC output of the real mains transformer, before the rectifiers. This would lower the current flowing through the rectifier, and bring down the DC voltage at the capacitors after the rectifier. So, the mag amp goes into the power supply, and is not connected to the motor. Also, a mains transformer would likely make a poor mag amp. Special magnetic laminations much different from ordinary transformer iron would be used. Also, the control winding would be wound with LOTS of turns of fine wire, to minimize power demand to saturate the iron. I hope this helps clear it up. Anyway, there are much better ways to do this, today. A chopper-type stepper drive is cheaper, more efficient, probably more reliable, more responsive, a LOT smaller and lighter, etc. Jon |
Re: Term: Mag Amp
"Ian W. Wright" <[email protected]
Thanks Jon but let me just get it clear. Are you saying that if you put,
toggle quoted message
Show quoted text
say, the high voltage winding of a mains transformer in series with the low voltage motor, it will boost its starting torque? Ian Jon Elson wrote: -- Best wishes Ian --
Ian W. Wright LBHI Sheffield Branch Chairman of the British Horological Institute. Bandmaster and Euphonium player of the Hathersage Brass Band. UK. See our homepage at:- or or 'Music is the filling of regular time intervals with harmonious oscillations.' |
Term: Mag Amp
Jon Elson
"Ian W. Wright" wrote:
From: "Ian W. Wright" <Ian@...>Sorry, old technology. Mag amp is short for a magnetic amplifier. This goes back to WW-II, and certainly Korea. A way of getting a lot of gain without much energy loss is to use a winding of many turns of fine wire to drive an inductor into and out of saturation. When the inductor is saturated, AC current passes through a winding of a modest number of turns of heavy wire fairly easily. When the control winding does not saturate the inductor, then the inductance blocks the power flow through the power winding. Jon |
to navigate to use esc to dismiss