Our goal is to include the position loops, the speed loops and the encoder-reading loops into the FPGA and use the SoftMotion axis and trajectory interface to generate trajectories. Our intention is to use the AKD servo drives in torque mode and send the current setpoint calculated by the CompactRIO controller directly via EtherCAT and thus achieve a good synchronization between the two axes. We want to do this because the level of synchronization between the axes is higher by sending setpoints via EtherCAT than by sending through an analog output card.
I know how to transmit analog setpoints just dragging the output block of C series analog output module to the block panel of LabVIEW FPGA but we are not clear as convey these setpoints via EtherCAT. (I have to emphasize that what interests me is to customize the control either with new PID topologies or other control algorithms.)
Im surprised this post fell unanswered. EtherCAT communication with the AKDs writes setpoints based on position. The software on the drive takes it from there for all PID control. I think I have an idea of what you are trying to do in your application. Another option we have for the AKD is to connect it to the 9514 modules, when used in this setup we can run the AKD in an analog mode for torque control. This means the drive will read a voltage and apply a proportional current to match it. Now using the drive in this way it will not be connected via EtherCAT. We sell a line of cables to directly connect the 9514 to the drive.
With the 9514 you can then run axis interface code and customize all the FPGA code, allowing you to take a pre plotted trajectory from SoftMotion and apply your own gain loops and control algorithms. You would then have a fully customizable platform.
Thank you very much for your answer.
The key of my question is that I must use the AKD and EtherCat in torque mode. I have to send the torque setpoint to the AKD via EtherCat. As you noted EtherCAT communication with the AKDs writes setpoints based on position, but not the torque setpoint.
Why I do I want to use the AKD in torque mode? I want to program some advanced control strategies in the cRIO and use the AKD just for the power electronics.
I have discarded the use of the 9514 module, or any other analog module, due to too long cable length from the cRIO to the AKD in an electrically noisy environment.
I am not an expert in EtherCat communication but having a look at the XML file for the AKD's EtherCat configuration and the example "NI SoftMotion 2009 Axis Interface and 3rd Party EtherCAT Drive Motion Control" (http://decibel.ni.com/content/docs/DOC-11191) I think that it should be possible to reconfigure the XML or VI files to send the torque setpoint through EtherCat, and not just the position setpoint.
I would like to contact an NI engineer with experience in EtherCat. I have been around this problem for 3 weeks and still have not found a solution, this issue is consting my company a lot of time, money and effort. I am quite dissapointed with NI/cRIO EtherCat capabilities.
Thanks in advance.
I understand now why the 9514 will not work for this application. I am unsure as to if there is a register for torque commands on the AKD. We only support position mode with SoftMotion so you would be developing code as you would in any NI EtherCAT application. If you do contact support please mark the issue as EtherCAT and not Motion, this will help you get to an engineer that can assist you better. When you add the AKD to the project you will notice a number of variables populate under the target. These variables are very simple to write to in the typical LabVIEW manner, the only issue is getting the variables you want on the list. To change the number of exposed registers you will need to modify the XML file that is being called.
At this point when we get into modifying the XML for support you may want to contact Kollmorgen or any other EtherCAT vendor for support. NI EtherCAT from my experiance has been pretty easy to use and very stable, the hard part is what your running into where you need to change the XML file and expose more registers.
Let me know if you run into issues and I can test it here. I will also look more into this if I get a chance today. Please keep us posted with your progress.
I modified the XML file and got it to load on my target. With the modified XML you should be able to do what you need to. This XML file will replace the one located at : C:\Program Files (x86)\National Instruments\Shared\IndComECAT\DD replacing the file AKD there. This XML file has been configured for torque mode and please note that when you overwrite your existing AKD file for it you will no longer be able to use the integrated LabVIEW AKD support. I recommend due to this you create a backup file.
The hard part comes that since we are no longer using the AKD with LabVIEW integration we now have to send down control words to step it through the initilization process. If I get time, I am going to play around with this more tomorrow and I will let you know if I get it to work.
On the modified XML you need to replace your existing XML. The property that I exposed was the Outputs-torque demand value. There should be 13 items in the modified xml.
Now I can see the new output called "torque demand value". We will keep going on this issue and we will post here the problems arise or the results we get.
Thank you very much again for your help.
Jonatan De la fuente
I have contacted Kollmorgen in regards to the control word to send to the drive. With the XML I linked I was not able to enable the drive. Let me know if you have more luck and I will post when I hear back from Kollmorgen.
I have planning to use cRIO-9074 for I made an etherCAT network with AKD servodrive. But my application must have torque and velocity control capability, therefore the controller 9074 must write setpoint velocity and torque and must to change control mode when it is required. In my application, I not need position control.
How could I do it?