> -----Original Message-----
> From: Jon Elson [mailto:el...@pico-systems.com]
> 
> On 01/21/2020 11:55 PM, Chris Albertson wrote:
> > Yes.  I would not blindly recommend any of the RTOSes without a doing a
> > more detailed design of the application.  Nutx might be better.      They
> > are VERY different from Linux.     Linux boots of a disk that allows you to
> > run other independent apps.   This other class of OS must if linked in with
> > the application code and when the machine boots it will only run that code.
> >   one does not bot an RTOS then run an app, rather the ROS is a library that
> > you apps links to.
> >
> I find it very useful to have my CNC control on my local
> network.  I have hundreds of often-used
> toolpath programs on it, and back it up every once in a
> while. Also, I can generate new
> toolpaths on CAD systems and download them to the CNC computer.
> 
> Jon
> 

What a fascinating discussion.  Be prepared. What follows is pretty long.

Takes me back to the mid 80's when I wrote our own RTOS for the NEC 78C10 
series of micro-processors.  Or even earlier when I wrote code to move an XY 
gantry laser cutter system.  The motion control code was all done in 8085 
Assembler and specifically just to demo motion.  Not accept programs; just move 
hardware.

I believe it's important to separate the components of the system in the sense 
of describing what they do.  Initially the 8080/Z80/6502/6800 based systems 
clearly separated the Basic hardware dependant I/O System (BIOS) from the 
System that Operated and interacted with the end user (the OS) and the software 
Applications (Apps)  that end users used.

Apple did a really good job of blending them all into one since they also 
supplied the 6502 hardware.   Before the IBM PC the Micropolis DOS, Northstar 
DOS and CP/M could all be ported to different hardware although Micropolis and 
Northstar both used proprietary disk drive hardware.  Seattle Computer Products 
DOS-86 was out just before CP/M-86 for the 8086 S-100 bus computers.  And 
needing a vehicle for his Basic Interpreter, Microsoft quickly purchase DOS-86 
renaming it to MSDOS 1.0 and sold licenses through IBM for the new 8 bit 
version of the 8086.  (8088).  

Meanwhile on the minicomputer side was Unix (I wrote graphics software on a 
PDP-10 in University) but for the most part that was still all terminal based.  
Graphics were limited.  And then along came the APPLE MAC.  And shortly after 
that WIN-286, WIN-386, WIN-3.0 and finally the one that lasted for a while 
WIN-3.1.

My time then, from 1992 to 1994, was spent writing software for an OS9-68K 
(upgraded OS9 for the 16 bit 68000 processor like the one used in the Apple 
MAC).  EMAC editor until I convinced them to give us PCs so we could edit the 
programs using CodeWright from Borland.  Visual editing that detected CR or LF 
or Both for end of lines.  Syntax highlighting.  Etc.  Via serial port we still 
compiled on the OS9-68K system and then burned EPROMs to take out onto the shop 
floor to insert into the equipment.

Somewhere around this time Linux showed up along with the GNU (GNU is Not 
Unix).     And with the various Linux flavours (and books) regardless of the 
open software concept, only the most expert and dedicated could port to new 
hardware.  Far more difficult than an MP/M-86 port I did in the 80's.

Complexity aside, Linux has probably kept the hardware, the OS and the User 
Interface more separated than any other system.  So now what does that have to 
do with LinuxCNC (formally EMC)

The real time nature of machine control means that an event needs to be 
responded to within a specific amount of time or the event becomes an error.  
In the past when any retrofitting to CNC (Computer Numerically Controlled with 
punched paper tape) the motors ran with +/-10V signals and fed back position 
with resolvers or encoders.  The control was all hardware and with EMC that was 
moved into the PC.  

That's why you still see proponents of these systems stating the best place for 
the closed loop is in the actual PC generating the G-Code.   Because LinuxCNC 
could produce a voltage and read the encoder and close loop PID control the 
motor. But the advent of inexpensive stepper motors that were reliable enough, 
when not overloaded, to run open loop changed the game for everyone.  The 
interrupt driven device driver for MACH2 and then MACH3 using the simple 
parallel port and only step/dir signals changed the world.  Retrofitting big 
commercial mills still required closed loop at some point and although, over 
the years we've seen a number of Servo/Encoder/Resolver units with fault 
outputs if motion is incorrect, for many systems closing the loop inside 
LinuxCNC was the only solution.

Meanwhile the 3D printing world, with 8 bit micro-controllers doing extremely 
fast step/dir of lightweight motors, has changed the perspective of what is 
needed for CNC in general.  The loss of the parallel port on PCs now requires 
that add on card that a decade ago was considered way too expensive now appears 
to just be another cost.  Or maybe not?

What exactly is a CNC system supposed to do?  Does it need a GUI (Graphical 
User Interface)?  Certainly the 3D printers don’t have them although I rarely 
look at the two line character display on mine.  Mostly I use OctoPi written in 
Python, running as a WEB application via WiFI to a different room.  
Sophisticated enough so the Raspberry Pi2 Camera can provide what feedback is 
required.  And the Pi is still talking to a small 8 bit micro-controller via a 
USB port.

So why has Machine Tool CNC stayed with PCs?  It's because they can be easily 
swapped.  If you were using a custom ARM32 processor with all the I/O for 
+/-10V and encoder feedback for that old set of servos and the unit failed 
unless you have a spare board it's quite possible that you now have an orphan.  
But the motor controllers are now sophisticated ARM32 processors themselves 
(STMBL has two).  Inexpensive user interfaces in the form of tablets with touch 
screens or  are dropping in cost.    So what's left?

 The future of CNC will go in the same direction whether we like it or not.    
The CNC engine.  The one that reads G-Codes and sends out commands to the axis 
will become a block and quite likely will have 32 bit processor and RTOS.  It 
might even have a small 4x40 line diagnostic display with a button and a rotary 
knob to access menus.  

And like the STMBL servo drive, which with the correct configuration files can 
run all sorts of motor combinations,  the block that does the G-Code to 
messaging will be the same.    Likely won't be LinuxCNC although there's no 
reason it couldn't as long as it ran the real time versions.  And all in a 
small 100mm by 100mm x 20mm box.  If it's got an Ethernet connection (or USB3) 
then a laptop/tablet becomes the user interface.  Common code that runs on 
Windows or Linux (no longer LinuxCNC much like OctoPi)

The issue then is what 100mm x 100mm x 20mm block.  And there's the catch.  
Machine tool lifetime is often measured in decades, not 3 year planned 
obsolescence cycles.   And as long as PCs are still around with a common 
architecture, they will probably remain the building block.

It's just a matter of separating the processing of the motion control commands 
from the hardware on one side and user interface on the other side.

IMHO.

John Dammeyer










_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to