02-19-2012 03:07 PM - edited 02-19-2012 03:09 PM
I have an application that uses unbound axes in softMotion to drive a number of linear motors. The motors use analog postion transducers for feedback control.
I have adapted the example "Servo Interface (9263 & 9401).vi" to use a 9264 AO and a 9205 AI. However, when I run the RT VI I get error code 77003, which has the description "The device in use is not supported by the NI SoftMotion Module." This error occurs whenever I try to use a read data invoke node on the unbound axis. Can anyone explain this error a bit more clearly? I'm not sure which device the error refers to.
Also, in trying to find the source of the problem I opened the interactive test panel on an unbound axis. Here I can see that the "encoder position" variable is updating, but the "current position" variable does not change. Are these familiar problems to anyone?
02-21-2012 11:24 AM
My first questions is are you using a cRIO or cDAQ chassis, because this will not work in a cDAQ chassis. Also here is a link to our devices which support soft motion http://sine.ni.com/tabcat/app/main/p/ap/motion/lan
02-21-2012 02:03 PM
I am using a cRIO-9022. I have looked at the list of supported modules, but as far as I can see these are only the specialised motor drivers. The modules from the NI example I have used (9263 & 9401) don't appear on this list either. Doesn't the unbound axis option in softMotion allow for general purpose analog/digital IOs?
02-22-2012 05:34 PM
You are correct in what you said about being able to use the general purpose AIO/DIO devices, my apologies for my previous statement. Do you think you could post your modified code so I can take a look at it on my end?
02-22-2012 09:45 PM
Thanks for your help. Attached is my project.Hopefully there's not too much to change to get it working on your system.
02-24-2012 12:34 PM
Comparing the original example and your code it looks like you have added significant functionality. Have you tried setting up the example for your devices only (no additional functions/features) and deploying it?
02-26-2012 09:10 PM
I have tried to make the code as simple as possible and as close to the original example as possible. Three things were changed in the FPGA code between the example and my project. They are the following:
1. PID output was scaled to be appropriate to the AO limits in the Position/Velocity loop. I have since realised that this isn't necessary, as the axis properties allow you to set this up. Removing it from the FPGA hasn't fixed the problem though.
2. I have swapped the encoder loop to an AI read, as I have linear potentiometers, rather than a dedicated encoder for position. This loop removes the voltage offset and applies a sensitivity in um/V.
3. I removed the drive status loop, as there is no status line on my motors.
The only other functionality I can see is the loop timer in the position transducer loop. I hope this helps.
02-27-2012 07:49 PM
Since deleting the loop counter in my position transducer loop and removing my PID output scaling in the Position/Velocity loop I no longer get the 77003 error. I'm still not sure what this error was referring to, but the code is working.
Also, I have changed the UpdateFeedback VI so that the analog input is updated, as well as the encoder position variable. Now I can see the position variable update in the axis interface. As far as I can see, things are working now.
Thanks for your help!