Steve,
"Articulated" and "4-bar" are actually different animals. 4-bar refers to a specific type of linkage that is simple (made of, surprisingly, 4 bars each with pivots at each end, and those pivots connecting them all together. Googling "4-bar linkage" will give you many examples. This class of linkage, properly designed, is capable of producing nearly ANY motion profile desired. But, as I said, the design of such a linkage for complex motion profiles can be quite difficult. Introductory 4-bar design was the topic of an entire semester-long class when I was in college. Obviously an articulated arm is a viable option, but an expensive one, due to the extra joints, and extra actuators/sensors required. I ruled that approach out on mine pretty early. I'm sure it makes good sense on yours.
I used RS232 because it's simple, cheap, robust, and is built into virtually every MCU on the planet. USB is too finicky, not good over any distance, and NOT good in a noisy environment. RS232 will handle all of those easily. For what I'm doing, high speed is not required. I created a very simple "network" protocol that allows me to have up to 10 devices in the network, with a combination of "star" and "ring" connections, for maximum flexibility. The KFlop is the network "Master", and all other devices are, essentially, intelligent "slaves". Right now, I've implemented on controller that handles the spindle, coolant, and air blasts, and also acts as the network "hub", since the KFlop has only one serial port. The pendant and control panel devices are on the "ring" side of the network, and the PDB and ATC are on the "star" side. The KFlop can simply send a serial command that says, for example, "Turn on Flood", "Load Tool #5", etc., and each device does what it's told, and reports back status to the KFlop. This makes the only connections to the KFlop for all these peripherals the serial link, and all the I/Os, control logic, relays, sensors, etc. move to the MCU on each peripheral. Since all are running the same "network stack", 90% of the code on each device is identical, with only the part that implements each controllers unique functionality being different for each. The code is very simple, and very robust, and can easily be ported to virtually any MCU.
Re: Mach and KFlop - I did do a complete implementation of Mach3 with KFlop, but abandoned it once I got my own app going back last January. I was able to do this in such a way that 95% of the code was common between my Mach3 implementation, my KMotionCNC implementation, and what I now use for my own app. So, I could, if I wanted, resurrect Mach3 probably in a few hours. I just haven't wanted to.... Anyway, if you have questions or need help getting it going under Mach3, don't hesitate to ask. And, of course, you're welcome to my code if you want it.
Regards,
Ray L.