I am planning to use BLDC servo motors with EMC2.
The BLDC controllet itself has some microcontroller
doing the controll task.
Easiest way may be just do stepper step/dir emulation and connect it
to printer port but then we are loosing most of servo advantages.
Other way is just emulate DC-servo amplifier and connect it with
analog interface to some proprietary DC-servo interface board and
then connect encoder to same board and use existing DC-servo HAL drivers.
This looks just too much extra complexity just unecessary converting
the motor command to analog and back to digital and all other
side efects come with it and of cource extra price of DC-servo
board.
I had in my mind idea that the inner servo loop can be moved to the
microcontroller so that the microcontroller runs this 20Khz PID loop
and reads the encoder. It just gets the 1Khz positioning commands
from PC and returns encoder position. For this speed USB isochronous
or Ethernet can be used.
There is still possibility to also run the inner 20Khz loop in ENC2 and
then use 100Mbit/s ethernet to send 20K command packets to controller.
Then there is third, more complex and expensive solution that is
still better than analog conversion. Make FPGA based PCI board
using www.opencores.org PCI core, implement encoder input and
SPI output for motor command. So, replacing DA->AD just simple
SPI. There is also possibility still interface encoder to microcontroller
and then use same SPI to read encoder position back.
Ethernet, USB and SPI all needs to have new HAL driver.
I have experience of linux kernel and driver writting but
not yet any HAL experience.
Katti