Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Read multiple axis status

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

0 Kudos
Message 1 of 4
(3,491 Views)

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

0 Kudos
Message 2 of 4
(3,473 Views)

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è
0 Kudos
Message 3 of 4
(3,469 Views)

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

0 Kudos
Message 4 of 4
(3,461 Views)