RE: What to use? EtherCAT or Ethernet Powerlink with CANopen protocol
"John Dammeyer" <[email protected]>
| Newsgroups | gmane.comp.hardware.bus.can |
|---|---|
| Message-ID | <6CF23DD7AAF94493A78B67B30732AC85@asus> |
> You're right Kees!! > But where can we follow with the discussion with the "field > buses gurus"? (I > will do my best. For sure!) > Thnaks and sorry, > > > Albert > www.inavcnc.com Albert, Your concept of trying to stay with CANOpen and run multiple synchronized motors is interesting. However, I'm not sure it's cost effective or feasable. The add on card that has at least 3 CAN bus ports (one for I/O and two for motors) can't be inexpensive. In the hobby and small industry world there are two programs out there that do CNC. One is called MACH3 and the other was called EMC and runs on Linux. At the start these systems controlled at most 4 motors with step/dir signals and the key to their functioning on a PC was the low level device driver interface and the parallel port. There's a whole automation industry running off MACH3 and the peripherals. Of course as the parallel port vanished from PCs a new solution had to be found. That's taken the form of either a USB or CAN bus add on module that then duplicates two parallel ports plus adding other automation features. For existing users, they need only buy the add on and move the parallel port cable from their old PC onto the add on and their CNC system continues as before. The key to the system is the simple step/direction signals for each motor. The PC application sends down blocks with an image of step or not in each byte to be sent out by the module at 25kHz or more. If more I/O is needed there are several companies producing MODBUS RTU modules that expand the I/O for limits, keypads, displays etc. To get into simple CNC or even just a motion system for pick and place for example, one need only buy an inexpensive set of stepper drivers, the motors, obviously the connecting hardware and a USB or Ethernet interface. The CNC software is $150. Not that I haven't considered using CAN as the backbone for running multiple steppers but I think the expense of intelligent motors plus the add on card is perhaps a non-starter. I know of one manufacturer who makes a stepper motor driver with CANOpen interface but position information is written using SDO messaging which always results in two messages. One to set the Object Dictionary value and one to reply that the value has been set. So you are right, PDOs with the data conntaining the next position is required. The code inside the motor driver has to be able to interpret the messages quickly enough and if micro-stepping the windings also handle everything involved in switching the current through the windings plus interpolating the number of steps to the next target position including accelerations and decelerations. Adding a CANOpen module to MACH3 or the up coming MACH4 would be a useful endeavour over say MODIO. Possibly using CANOpen with the SYNC message occuring often enough to tell each motor to now impliment the previously loaded move could work. But you need time for ERROR FLAGs and retransmissions. To design the system without room for those you can run into trouble. MilCAN dealt with that by banning ERROR FLAGs. This way their SYNC Frame from the master is guaranteed to be on time. But what happens if one of the move messages or position messages fails? In the Ethernet world or even USB world the MACH3 and EMC systems send enough data in larger blocks and the stepping engine accumulates these and is responsible for toggling the pins on the step and direction signals to the motor to make them move. But these stepping engines are FPGAs and everything is done in hardware. My Electronic Lead Screw project has an LCD display, 35 button keypad, a 16 position knob encoder, beeper and a micro-stepping driver. Plus CAN bus. So far I've ported the simple Microchip CANOpen stack to this and can send an SDO to show a specfic message on the LCD screen. I get PDOs from the button presses. But for the stepper drive the only solution I can see is a move to X at V with acceleration A. Which I really must get around to one of these days. I think with CAN it can be done. But not fine resolution multi-axis motion at a cost lower than what's already out there. And that's the key. At a lower cost. John Dammeyer "ELS! The Solution" Automation Artisans Inc. http://www.autoartisans.com/ELS/ Ph. 1 250 544 4950 -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector.com/canlist/ Report any problems to <[email protected]>