Post by Bob La LondeFirst 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.
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.
--
Bob La Londe
CNC Molds N Stuff
--
This email has been checked for viruses by AVG antivirus software.
www.avg.com