Category: motion control
Playing with ethercat servo drives
Ethercat digital IO test with Beckhoff modules
- Hardware setup:
– EK1100 ethercat coupler.
– Four EL2008 modules for 32-bit digital output.
– Four EL1018 modules for 32-bit digital input.
– Two DC 24V SMPS
- Software setup:
(1) Debian Jessie and Xenomai dual kernel.
(2) Ubuntu 14.04 and RT-preempt kernel.
(3) Debian Wheezy and RTAI dual kernel.
- Test result: cycle-time 190 us in DC mode.
Design of a PCI digital IO board
- Hardware structure: simple but flexible.
- PCI IP core: open-source. Downloaded from opencores.org
- Data transfer speed of the PCI digital IO board without using DMA: 66.8 Mbits/sec on 33MHz 32-bit PCI bus.
Design of an 8-axis PCI/USB motion card [1]
Design of a PCI motion card
Building and running “Ethernet Powerlink” demo on PCs
Building and running openPOWERLINK v2.1.1 demos on Linux PCs
1. Ubuntu14.04:
- demo_cn_console, demo_mn_console: run without any problem.
- demo_mn_qt: crashes. —> bug fixed in openPOWERLINK v2.1.2
2. Ubuntu 14.10, Ubuntu 12.04, Debian Jessie :
- demo_cn_console, demo_mn_console, demo_mn_qt: run without any problem.
3. Kernel 3.18.11-rt on Ubuntu 14.10:
- locktorture.c should be patched to compile the kernel.
- RCU-related kernel options should be properly set to prevent softirqs messages while running the demo.
Details of the “Ethernet Powerlink” can be found at
www.ethernet-powerlink.org
Implementation of a PC-based motion controller/robot controller with USB interface [4]
USB Comminication speed between a host computer/board and the motion-control FPGA.
1. Experiment setup.
- 1530-byte round-trip test.
- Asynchronous FIFO mode of the FT2232H.
2. Experiment results.
- PC running a plain Linux: about 50 Mbits/sec.
- Raspberry Pi 2 running a realtime Linux: at least 30 Mbits/sec.
Implementation of a PC-based motion controller/robot controller with USB interface [3]
Motion-control FPGA:
- Reads the status of external sensors and servo drives and sends it to the PC.
- Receives commands from the PC and writes them to external devices and servo drives.
Internal structure of the motion-control FPGA:
- command-pulse-generator module: generating command pulses for servo drives.
- quadrature-counter module: counting quadrature pulses from servo drives.
- output-latch module: latching parallel output signals to external devices and servo drives.
- input-latch module: latching parallel input signals from external sensors and servo drives.
- USB-interface module: reading/writing data from/to USB bus.
- Finite-state-machine module: controlling the data flows among the above modules.
Design of a motion-control ASIC/FPGA
Assuming all the compulations are done by a PC or an external processor, I designed a motion-control FPGA as follows:
If a soft processor such as MIcroBlaze or Nios II is placed on the FPGA, construction of a standalone motion controller (without a PC or an external processor) is possible.
Because both MicroBlaze and NIOS II are Linux/Xenomai-ready, porting Linux/Xenomai software to MicroBlazer or NIOS II is trivial.