Yet Another New Machine

Oct 30, 2024 Last reply: 1 year ago 13 Replies

I might not be allowed to talk about it here though. Except for setting it up it probably won't see much metalworking. I wanted a bigger CNC machine for sheet goods. I really wanted something in the 5'x10' size envelope, but everything I liked was out of my price range, and I struggled with where I would put it. Even the machine with the 4'x4' cut range I ordered might get put in the garage instead of the shop.



All of my planned first projects with the new CNC router are in wood, plywood, MDF, or HDPE. Drawers, hold down table (of course), rod racks, cabinets, etc.



I think with extendable out feed rollers and good indexing plans I'll be able to work on upto 4x8 sheet goods and not tie up all that space when its not in use. It is however not a real "pro" machine. High end of the hobby range is my hope. Then again I started mold making as a business with a low/mid range hobby machine, so there is no telling what this new toy might wind up doing.



The thing that excites me most about it (Onefinity Elite Foreman) is the Masso G3 Touch controller it comes with. It looks like its instruction set includes everything my main CAM software can put out, and a few things more. If I like it I may use a Masso controller on the Bridgeport. It would simplify a lot of the controller planning over my earlier plan to run with LinucCNC and a MESA I/O board. At 4GB of code capacity per program that means millions of lines of code. No bottle neck there thank goodness. I do run code files over a million lines, and have run a few well over 2 million lines.



... The thing that excites me most about it (Onefinity Elite Foreman) is the Masso G3 Touch controller it comes with. ... Bob La Londe

------------------------------ I began designing machine control panels with paper drawings to be made on a shear, brake and Strippit punch. CAD/CAM and plasma cutting is quite an advance but I must say the old way was easy to learn and worked pretty well. I was earning a living with just a pencil.

Learning the old manual methods has been useful when I needed to modify existing equipment that was too awkward or flexible to do on a machine.

I also designed relay ladder logic for actual relays, before PLCs arrived. I began circuit board design with black tape or a laundry marker and advanced through computerized design and simulation as they developed. The electronics I learned in the Army used individual transistors, then I closely followed the growth progress of ICs through FPGAs that could self-configure to match a CAD schematic. The computer revolution has been interesting to observe and participate in.

First off I have "built up" a couple CNC control systems. Designed might be a strong word, but assembled from assorted "black boxes" would not. The thing is the Masso G3 control does "almost" everything in one finished unit for not much more than I could buy the parts, and it appears to be code compatible with what I am already using so the post processor would need little or no modification. Yes I have modified the post processors for all of my different machines. Most are just minor tweaks. Actually I rewrote the macros more than modified the post on the Mach controlled machines, so except for physical capability the code is cross compatible on all of those.

Well if I was cheap I could build a controller a lot cheaper, but I'm tired of tweaking machines for weeks to get them to run right.

I was warned to expect 3-4 weeks to ship as they build machines to order. I got notice this morning my machine is shipping today. I guess I'll be desperately be trying to build a base and table for it in the next couple days before it arrives.

I was warned to expect 3-4 weeks to ship as they build machines to order. I got notice this morning my machine is shipping today. I guess I'll be desperately be trying to build a base and table for it in the next couple days before it arrives.

Most OS/PC based controllers would appear more to interpret g-Code rather than compile it. Mach 3/4, LinuxCNC/PathPilot, UCNC, GRBL, Acorn, Edding, etc etc. There are features of the interpreters that do more than just interpret such as do a look ahead and deliberately introduce a rounding error (constant velocity mode) in the trajectory planner in order to improve machine time. They do a look ahead in the code to see what's coming next.

Anyway, they act like interpreters (with some extra features and to provide some environmental settings (to specify the machine capabilities)) rather than a compiler. G-code is a simple text file. I think of them as an interpreter sending instructions to a multiplexer via a port or ports. Probably not exactly accurate, but close enough for generalization.

Most of the G-Code execution programs use some, but not necessarily all, of the Fanuc standard instruction set, and some (HAAS among others) add or modify them to suit their own applications more directly. Some interpret them slightly differently or require some minor variations in syntax.

I suspect "most" modern G-code execution programs are interpreters/controllers running under an overlying operating system. There might be some that are an interpreter/controller and their own operating system in one, but I do not know enough to determine that, and I expect anybody running something like that would not tell me.

There is some grey area, as most do calculate the entire tool path for the entire job prior to being able to execute. In Mach 3 you will see every single line on the tool path display if it is turned on. In LinuxCNC it will display up to whatever calculation limit you set on the screen. I leave it at the default because it uses less processor power and less graphics processor memory in LinuxCNC. On older machines running Mach 3, after making sure the tool path display didn't show me anything obviously wrong I would turn off the tool path display on large files (800K to a few million lines of code).

It also gets grey when running some external motion controllers. Many of them store several lines of machine instructions (pulse stream, tachometer, external feedback information) to prevent or reduce issues from the controller computer getting busy. This can be an issue with Windows for example because it is not a real time operating system. Or rather it does not by default give real time control to programs running under its overhead. Not sure I said that right, but I am sure you get the idea.

So is it a compiler? Well at some point it turns text into pulse streams, voltage levels, and other final data and signals that goes to the drivers and the motors, relays, and voltage regulators (0-10VDC for spindle control for example) but it executes the code one line at a time even if the output is stored in memory or an external device for the next several/many lines interpreted. It does not create an executable file that runs directly under the OS either standalone like a little .COM file created by CHASM or with a range of supporting libraries like a C outputted .EXE file. No I think its best described as a specialized interpreter.

I'm far from an expert, but I did eventually drop out of college while working on my degrees in business and computer information systems. (originally computer programming) LOL. In my defense I had all the core credits for two degrees, but they played games with the qualification of some of my non core credits. Classes that they changed from a humanities to a social science after I had taken them. Things like that. I got up and walked out when they told me my Introduction to Computer Programming no longer qualified and I had to pay more to take Introduction to Data Processing. A class where I had taught at least a third of the students how to pass in the computer lab, and instructors actually came to me to ask permission to copy some of my lessons (for more advanced classes usually) and examples in class. Sorry, there is more to it than that and a few decades later I still have a lot of heartburn over it. At least the worthless low down no good yellow bellied scum sucking bastards finally stopped sending me Alumni solicitations.

As a side note. I took a couple geology classes in College. I wanted hard sciences, but openings were always full from nursing and engineering students. I got stuck with geology, and it really is as easy as other fields joke it is. I think below 300 level geology should be taught in high school. Anyway, one of my instructors who obviously was not a jock who took geology in order to not get disqualified from football was doing computer models for ground water saturation studies for the Bureau of Reclamation. He was running a basic interpreter on an old (new back then, we only had one in the computer lab) 386 and it was taking a day or two to execute. Sometimes a lot more. I introduced him to Quick Basic V4.5 and wrote some simple programs to clean up his code so Quick Basic would compile it, and an execution from data entry to result took just a couple hours at most after that.

I have not written an actual computer program in probably 20-25 years. It was a simple screen saver and program execution menu for PC-Dos 7.0. in order to prevent monitor burn in it would randomly flash the date and time around the screen. When you hit any key it brought up an executable menu. Not as fancy as Deskview on the menuing side, but it kept monitors readable. I used that particular computer for remote programming alarm panels and some phone switches via modem. Technically entering parameters, and reading activity logs. Not really programming, but people call it that.

I quickly discovered Window's time slice multitasking and I/O port polling from a scope capture of a carefully timed I2C data stream generated by the printer port's control bits. Quick Basic running under the enhanced DOS behind Win98 and 2000 eliminated the gaps and polling, the only active interrupt in DOS updates the clock every 55mS, which I could detect and then have the CPU and I/O address space registers all to myself until the next predictable one.

Windows still has an increasingly powerful DOS behind it, and it's needed for the fsutil.exe command that controls SSD garbage collection. This describes it in Windows 10/11:

formatting link
The Shift, Ctrl and Alt keys set I/O address space register bits that allow a program to detect them, which was handy when the keyboard had been pushed almost out of reach by the circuit board being tested. Ctrl or Alt in the bottom row would advance the program. The F1-F12 keys return two bytes. I wrote an input function that correctly returned anything in the keyboard buffer, including ESCape, or that it was empty and the program could continue looping. It could also read a macro string of key commands.

I dabbled in G code very little, mostly in the similar Gerber vector graphic language for photoplotting circuit board artworks, and the text language for transferring CAD electrical schematics to the PC board design program. The two disagreed on which end of a diode was pin 1, which caused puzzling problems to engineers who had used other board designers and gave me wizard status when I fixed them.

Your college issues were worse than mine, at the end I arbitrarily needed 4 more credits, effectively 2 classes, in any subject to graduate and I signed up for 6 credit summer theatre as a carpenter. Instead of 2 hours 3 times a week it ran 12-14 hours a day, but was fun and I learned a lot about interacting with people who were very different from techies. The professors/directors were masters at coaxing yet another maximum effort from tired actors and dancers.

OTOH as I neared graduation and the absolute need to continue to an advanced degree to be more than a pharmacy clerk the grad school draft deferment was cancelled. I think I made the best of it by enlisting for and completing the Army's longest and most difficult electronics school which enabled my subsequent career.

In 8th grade I did take Geology, called Earth Science. It proved too difficult for most of the students, many who were children of Phillips Exeter Academy faculty and convinced of their intellectual superiority over us "townies" until I bested them in that class and even worse French.

I simply wondered if CAD systems typically generated readable and editable G code.

I may have mentioned that another programmer's screen saver randomly flashed "REPENT, THE END IS NEAR" as though it had been alerted by a sinner's presence. I worked on a machine sensitive enough to detect a human within about 20' but it only woke up and greeted them, which still bothered one woman.

It's been a while since I've done any Windows programming but the last main application was doing some data logging from force and torque equipment via the serial port and in order to get better timing response did set the thread as 'real time priority' in a Windows  data structure but the main thing that allowed decent timing at around 50Hz was to use the timeBeginPeriod () and timeEndPeriod () to set the system timer to 2ms.

Ready for it?

No. Cad generates pretty pictures. CAM generates g-code (or other code possibly).

Yes, generally g-code is a simple text file with no hidden characters other than a line break. I'm not sure that's the correct character. It might be a hard return. Whatever notepad generates when you hit the enter key is it. I forget. Its been a long time since I looked at that stuff. Anyway a simple text file can be edited in windows notepad. In fact its my default to open an .nc file in Windows if I click on it. .nc .tap .txt or virtually any other extension will work as long as your control software will show and open the file. .nc is the default I use. Mach 3 used .tap by default, but I prefer .nc because it says what it is. A numerical control file.

Embedded documentation is a mixed bag. Some CAM programs will document basics automatically if set to do so. Most probably. Most modern controllers will just ignore comments, but some (mostly early g-code adopters on under powered processors) will reject anything that is not an executable line of code and not execute at all or throw an error.

"Well, WELL! WELLL!," you might say. "What about Fusion360?" you might ask. There are lots of CAD/CAM programs, but CAD and CAM are two different things. In Fusion the functions are tied together so a CAD modification will automatically create different code (if it doesn't cause a failure) the next time you generate code. With no other steps it will generate code based on the new CAD model. There are a fair number of seemingly commingled CAD/CAM programs these days. Fusion360, BobCAD/CAM, etc. Even many purely CAD programs of the past now have plugin's or integrations with CAM programs. Even FreeCAd now has available a "workbench" that can be used for CAM, and CamBam has many simple CAD tools built in. Still CAD and CAM are two different things. CAD generates pretty pictures and CAM generates g-code.

G-Code is just text. For a programmer its pretty easy to read and understand, but except for a few global settings (work offsets, base scale, velocity mode, and some parameters) each line is standalone. It executes the current line base on the information you have and the current position and status of the machine.

If you have a list of simple "G01 X(x) Y(y) F(f)" it will execute each one in order doing what you told it to do. If you used four of those bracketed by other overhead commands to cut a rectangle it will cut your rectangle one line at a time by going from the current location (whatever it is) to X(x) Y(y) in a straight line at a speed of F(f). If you decide you need to modify your rectangle you would need to modify TWO (2) lines of code. This is an over simplification, but it illustrates why some people get in trouble hand editing code. Understanding what a line of code does it a matter of looking up that code and how its executed based on the parameters given, and to a limited extent how the control software implements it. The number of commands (G Codes and M Codes) is rather small. There are also parameters for a single code that can be global until changed. For example drilling operations often will pass on all parameters except the coordinates. If you are drilling a list holes all the parameters that apply may only be in the first line of code to drill the first hole. If you decided to change one in the middle of that list by adding parameters every hole after that would have the new parameters. Maybe that's what you want, and maybe you just blew your part.

Yes, its readable. I think any even hack programmer would pick up the basics pretty quickly. Yes its editable. You really need to understand the whole string of events before you do.

I actually started out CNC machining functionally without CAD or CAM. I wrote out g-code by hand and used a spreadsheet to generate iterative code, and exported the text values of my formulas to copy into a text file.

An issue I ran into is that often the CAM software does not output parameters or lines of code that it doesn't know (because of something I did) that it needs to. A tool change macro would be such an example. If I move the machine in order to execute a tool change the CAM software that did its job at most recent minutes ago, and maybe days or years ago, didn't know that was going to happen. When it starts the next operation it thinks its still in the same place. I had to go back into my macro (part of the control software), save the current coordinates in the current work offset, execute the rest of the tool change, and then return to those coordinates. Specifically for tool changes I would move the table back out of the way, or on a router I might move the gantry to the front of the table either automatically in the macro or manually with the jog functions of the machine (if it allowed it). On another machine for tool changes it would just STOP. On that one I modified my post processor insert a machine coordinate Z height move that brought Z to zero leaving room for the tool change.

Even if you ONLY have CAM generate code for the program you still may need to write a machine specific macro or modify the post processor of the CAM program to add necessary code. Even if you never manually edit program code you still may find it beneficial to know how. On the other hand if you are just an operator then other people will do all of that. You just load the stock and push the start button. You may not even have to check your parts. The quality control people will do that. Then somebody will determine if you are running the machine wrong, if its setup wrong, or its designed (CAD/CAM) wrong.

Machine coordinate zero. Not work offset coordinate zero. On a 3 (or more) axis milling machine machine coordinate Z zero (G53) is typically at the furthest distance from the table. While work offset coordinate Z zero (G54,55,etc) is usually set at the top of the stock and sometimes at the bottom of the stock.

G53,54, 55 etc tells the machine which work coordinates it is working in. G53 is does not affect following commands. G54, 55, 56 is persistent.

Again there may be machine specific limitations.

Most people work with just G54 set, but G54 might be zeroed at the corner of one vise, and G55 might be zeroed at the corner of the next vise. G53 is always relative to the machine.

G54 [CODE BLOCK]

G55 [CODE BLOCK]

G54 (good practice to set machine back to the default work offset if the secondary offset "may" not apply) G0 (Set movement to maximum on some machines. There are some syntax variations) G53 Z0 F1000

I know this is all more than you asked, but other people may read it who might not pick up on important distinctions without it explained.

Okay... maybe not

UPS doesn’t have possession of the package yet. Estimated delivery date will be available as soon as we get the package.

Sigh! One of those. Create a label and provide tracking to delay claims if there is an issue or the customer gets tired of waiting. I hate that. I was all excited on Monday. Oh, well.

Ready for it?

No. Cad generates pretty pictures. CAM generates g-code (or other code possibly).

------------------ The electronic design CAD systems I'm familiar with could export the line vectors and properties or circuit connections behind the pretty pictures in an ASCII text file that the CAM program from another company with different expertise could accept, sometimes after tweaking. The text file format was different from G or Gerber code but the two could be related, element by element.

Have you tried Notepad++?

Sorry if I don't know all the proper CAD or CAM terms. I sketch parts on paper as I learned in Jr High when my antique machines were new and don't have even a DRO on them.

I've played with Notepad++ a few times. I like it for searching out code phrases/blocks in php scripts for "repairs" and mods.

Sounds like a friend's old Standard Modern CNC lathe I futzed around with for months years ago. It woul jump in and out of calibration randomly. It might make 50 good parts then go small or large for a couple, then MAYBE go back to good, or maybe not. After going through grounds, sheilding, wire and cable routing and who knows what all else I got the productivity up by about 500% but it could still not be trusted so it sat in the corner for YEARS. Switching from rotary encoders to a glass scale and a better controller would likely have made a decent machine out of it but the manufacturer had gone "t*ts up" by then and he was just SO over it.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required