11-18-2008 05:38 AM
The problem is the slowness of some commands in Labview 8.2 (winxp and PXI-8105 controller)
I am trying to control the speed of a three axis robot using a PXI-7350 motion controller, but I need to update very fastly the control loop (1-2ms)
I found that the more time consuming functions are "read per axis status" and "load velocity".
These are probably the main issues to be considered
1. I need only to read the "motor off", "following error", "Move Complete" while the "read per axis status"returns many other variables.
2. Both the vi must be called three times, one time for each axis.
Is it possible to build a single vi that, using a single command, queries the motion controller only for few specified variables and sets all the axis velocities?
In case, the variables are:
"motor off"
"following error"
"Move Complete"
"vector space position"
Thanks
11-19-2008 09:44 AM
Fabrizio,
there is no such function available in NI-Motion. In general the 7350 board is meant to do all time-critical control tasks onboard, so typically the communication speed between the board and the controller doesn't matter.
Please explain from an application's point of view, what you try to accomplish, so I may come up with an alternative solution.
Thanks,
Jochen Klier
National Instruments
11-19-2008 12:13 PM
The application is: to move the end effector as a function of an analog feedback signal, avoiding auto-collision (like moving a robot with a joystick).
The problem is that the signal is correlated to the motor displacements via a unlinear process so the control board cannot be configured using that signal. I have to measure the signal and to calculate on the fly the velocities of the motor that make the end effector follows the feedback signal. I need to optimize the "control loop" in order to avoid vibrations, jitter and to permit the PXI to make other things like data communication with other pc in the network. Another important issue is the critical routine for auto-collision avoiding: the robot must stop as soon as particular combination of axes position occurs.
It's incredible, I spent so much time in optimizing the kinematic calculations (a 9x9 non-linear sistem of equations solved in 2ms) and now I see that the critical routine is the communication between PXI-controller and motion controller!!!
(I know that the best solution would be to build a motion controller by myself using a NI-FPGA device, but I really don't know how to implement a matrix inversion calculation on a FPGA processor...)
Fabrizio Patanè
11-20-2008 02:27 AM
Fabrizio,
thank you for the detailed information. This helps me to better understand the situation. In fact, there is no way to speed up the communication with the 7350 to match the 2 ms of your matrix calculations. So a solution based on LabVIEW FPGA should be the best option. In such a scenario you don't need to to run the matrix inversion on the FPGA. Typically the FPGA runs all I/O operations, the position conrol loop and in many cases a spline engine to generate interpolated sepoints to adjust the faster loop rate of the FPGA to the slower loop rate o fthe PXI-controller. The PXI-controller then runs your matrix inversion and generates the trajectory data for your axes.
Here is some more information about this topic.
I'm sorry, that I can't provide a solution based on your current hardware, but this type of application is just not the intended usecase for the 73xx boards.
Regards,
Jochen