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.

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

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:


  1. command-pulse-generator module: generating command pulses for servo drives.
  2. quadrature-counter module: counting quadrature  pulses from servo drives.
  3. output-latch module: latching parallel output signals  to external devices and servo drives.
  4. input-latch module:  latching parallel  input signals from external sensors and servo drives.
  5. USB-interface module: reading/writing data from/to  USB bus. 
  6. 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.