From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Customize Motion Control using cRIO, SoftMotion and AKD EtherCAT servo drives

Hello gentlemen,

 

I don't know if you were able to solve your problem.

 

I wanted to say that CANopen interface has no problem controlling multiple AKDs in torque mode writing directly to torque demand registers.

Multiple drives can be synchronised to very high degree (miscroseconds) using native CANopen means.

 

I am wondering why EtherCAT has been chosen as a control media as opposed to CANopen?

 

Thanks

Leo 

0 Kudos
Message 11 of 22
(4,515 Views)

Hi Eric,

 

I have experience the same problem regarding enable and controlling the drive. I have used the XML file you posted and I have tried the XML file supplied with the drive.

Same result, no writing only reading position and status word.

 

I am not using the softmotion module only read and write directly to the variables of the device.

 

Have you got any feedback from kollmorgen or du you have any suggestion?

 

Thanks in advance.


Rune Veddegjerde

Norway

0 Kudos
Message 12 of 22
(4,424 Views)
Running into exactly the same issues. Have bought a Kollmorgen AKD, and cRIO 9074. Implementing a step-out motor speed controller for a brushless motor. Dont want to build a robot, no trajectories or synchronised motions, just want a R&D labbench setup to drill a hole, just like drilling a hole in the wall at home with a DIY tool... Motor, AKD, cRIO, and many Gb of labview, sotfmotion, ethercat drivers acquired through NI. However,the new controller, which is not a standard PID thing, must run in the cRIO. There I calculate a new requested torque, and that commanded torque value must be passed over ethercat 1000 times per second to the AKD. Yes I could of course buy an analog out for cRIO and hook that to the analog in of the AKD, but...,. Come on NI, what is the trick here? Is the best solution today really still to give it a go with the zipped xml file that was posted in this thread?
0 Kudos
Message 13 of 22
(4,214 Views)

It is a pitty that this issue has not been dealt with by NI for more than two years.

 

It seems that they are happy enough with just sending the position and velocity setpoints through Ethercat, with no posibility to send the current setpoint, in spite of the fact that probably current setpoint is the most interesting one for engineers working on control laboratories.

 

My knowledge is very limited on bus communication, but how about using a CAN-EtherCat bridge? Since "LBodnar" mentioned that AKDs work well with current setpoint from CANopen maybe this could be a possibility.

 

http://esd.eu/en/products/can-ethercat

 

Anyway this would be a expensive fix, and probably it would require some work to configure the bridge, and pray for the cRIO to work with this solution.

 

We are in this situation because no one in NI except for Eric Reid talked to Kollmorgen's engineers to solve the issue. We extensively talked about this with our local NI support centre, they promised they would talk with the Ethercat guys in NI HQ... no way.

 

All NI chatter about extensive tech support are empty words.

0 Kudos
Message 14 of 22
(4,195 Views)

Aha. Glad to see that I'm not only one suffering here. Now let's get this sorted. Going CAN is not quite the way I want to go.

I now read in Jon_dela's post today (thanks!) that setting a speed setpoint from a LabView VI, from a cRIO, over EtherCAT, and still using the Kollmorgen speed controller, might work. I'd be partially served already if I could send over EtherCAT the speed setpoint instead of a position setpoint. Although torque as a setpoint is preferred...

 

Is NI's mr Eric Ried reading this forum? If so, much appreciated if he can shed some light on this. Reading the thread it looks like he never finished the proposed workarounds with the akd.xml file (~2011). Or maybe he did, but didn't share it in this forum thread?

 

Any help appreciated. Will give this a few more days, if no resolution provided then I have no other option left than buying an analog out module for the cRIO, and feeding that analog (...) signal to Analog_Vin for the Kollmorgen AKD that -fingers crossed- will happily stay in torque controller "oO" mode even when reading back position, velocity and torque over EtherCAT. Gutfeeling now tells me that even that's impossible, meaning I need to ditch EtherCAT altogeher and read back the relevant Kollmorgen drive encoder signals using an analog in... The sad thing is that I can already build the controller I want using 4 opamps. That's one LM324, some R's and C's and a soldering iron. Deep sigh......   

 

  

Message 15 of 22
(4,191 Views)

Still struggling. But how about the following: should I maybe use the NI SoftMotion module after all, and do as if I'm controlling an infinitely long position trajectory, and then throttle the speed by capping the max speed (upper speed limit) parameter, so that the net effect is that the speed limit parameter becomes the speed setpoint?? Bit weird and what a waste of money, but if that's the only way forward then maybe should I give that a try?

Any help appreciated.

 

0 Kudos
Message 16 of 22
(4,170 Views)

Have you seen this community document?

https://decibel.ni.com/content/docs/DOC-25269

 

It seems to suggest that they have developed a workaround that is functional.

0 Kudos
Message 17 of 22
(4,144 Views)

Many thanks. That looked useful, pity I didn't know about this before. Tried that, got a list for the AKD that included a velocity setpoint. But the examples then suggest that I still need SoftMotion software in the cRIO. In that case, I though I'd better stick with my earlier plan of using the default mode with a position controller in the AKD, then telling it to make an infinite long move, and throtlling the speed limit so that I get a pseudo speed setpoint within LabView. Guess what, I then found there's an option to change the controller into a velocity mode within the LabView VI block diagram.

 

Then I could do all I wanted (after compromising from torque controller to speed controller...). However, the scan rate is limited to 5 ms, and the LabView real time engine seems to run with a 20 ms cycle time. I wanted 1 ms. So far failed to get it all in a 1 ms (over EtherCAT) mode.

Any help appreciated!

0 Kudos
Message 18 of 22
(4,121 Views)

Sorted. Finally.

 

Find attached my how-to VI to finally get Kollmorgen AKD EtherCat controlled from a LabView cRIO-9074. A very basic Speed or Torque(limiter) controller, just spin the motor to a commanded RPM. Forget SoftMotion, because that's position-control centric. It would have saved me a couple of month of puzzling if someone had posted this before...
Firstly, the xml file for the AKD that is used in LabView needs to be upgraded as per instructions on www (https://decibel.ni.com/content/docs/DOC-25269). Then you MUST restart LabView from scratch. Then autdetect the AKD from a cRIO that has EtherCat equipped.

Must do: set scan engine to 1 ms in LabView project AND in the Kollmorgen AKD. For AKD, using Kollmorgen Workbench PC software, edit parameter 'fieldbus cycle time' in FiledBuses section, set it to 16 so that cycle time is 16*62.5=1000 us. Also set the AKD in 'Velocity'mode (thus showing not o0, not o2, but o1 on its green led display).

In the demo VI attached to this posting, set the Outputs-Max torque to something like 10000. It's a 16 bit uint. Turn knob to set setpoint speed. That's a 32 bit uint.
To get the motor spinning, first press the 'start' button, so that the drive's Control Word gets populated with 0, 6, 7, 15 successively.
ONLY use if you have a tiny AKM-11 type of motor in your hands, not connected to any machinery (you might break something if your motor starts torqueing and or spinning unexpectedly...)
Dont forget the AKD needs AC mains power on X3 AND a separate 24 VDC on X1-1(+24) and X1-2(GND). Must connect +24 VDC also to the AKD X1-3 (STO pin) and to X8-4, with GND to X8-3.
ToDo: get the AKD into Velocity mode automatically. It now defaults to Torque control after re-deploying. Good luck!
PS I used LabView 2012 and 2013. Just the default software PLUS EtherCat support into the cRIO using NI-MAX.

Message 19 of 22
(3,899 Views)
Plus sorted how to get the scan rate on both sides to what I really wanted, i.e. 1 ms. And how to make it start in Velocity Control mode by default. In the LabView project explorer goto the EtherCat AKD device, right click to select properties, and then change under EtherCAT:Advanced:Initial Commandes these settings: PreOp -> SafeOp (0x6060.0x0, OpMode) set it to 03 - that makes it boot in Velocity Control mode! PreOp -> SafeOp (0x6062.0x1, Cycle time) set it to 01 - that makes the Fieldbuses Cycle time in the Kollmorgen AKD drive 16*62.5 = 1 ms! PreOp -> SafeOp (0x60C2.0x2, Cycle exp) keep at FD - not sure what this does...
Message 20 of 22
(3,878 Views)