LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Labview Vector pid

I'm trying to use LabVIEW's PID toolbox to control three inputs [a,b,c] that are multiplied by a [3x3]array for a result value of [x,y,z] Attatched is my attempt using a pid contol and a sub vi that is a simulator for the hardware I'm using. The primary difficulty I have is trying to set up the PID to take into account the fact that each every input changes every output. A seccondary issue is that the system has a non linear responce so, although I can use a matrix to provide an approximation for where I should go, I need a PID control to do fine tuning.

0 Kudos
Message 1 of 7
(3,710 Views)

Hello GentlemanS,

 

It sounds like your systems has three inputs and outputs. You mentioned each input changes each output. Does this mean you can characterize the system as a nonlinear system of equations?  Have you tried using the PID Advanced VI? The advanced version of the PID VI allows you to specify the system linearity. You can read more about it in this White Paper I found: http://www.ni.com/white-paper/3782/en/

0 Kudos
Message 2 of 7
(3,652 Views)

Earl, 

 

My system does have three inputs and three outputs and can be charactized as a system of equations. However I haven't been able to get the PID Advanced VI to "understand," that each input effects each output. Instead, it treats the inputs and outputs as 3 single input single output systems

0 Kudos
Message 3 of 7
(3,633 Views)
The LabVIEW PID block is only designed for single-input, single-output systems. The array version works for an array of such systems, but there's no interaction between them. You'll need to write your own version, or make a copy of the LabVIEW one and modify it, for your situation. This isn't typical PID control.
0 Kudos
Message 4 of 7
(3,615 Views)

Ok, I'll have to figure that out then. Thanks a lot!

0 Kudos
Message 5 of 7
(3,607 Views)

My head hurts thinking about a non-separable 3D PID problem!  Equations of motion in 3D can get quite complicated very quickly, particularly if you allow rotations.  I did a brief web search for Vector PID, and there doesn't seem to be much.

 

Is it possible to separate your 3D system by a suitable choice of coordinates to pick three axes that don't "talk" to each other?  That would allow you to reduce this to 3 1D PID controls, which should be much more tractable.

 

Bob Schor

0 Kudos
Message 6 of 7
(3,604 Views)

Bob,

 

I don't think that would be possible as I only have a single X Y Z hall sensor in the middle of a magnetic field.

 

The setup involves having 3 magnets fixed in 3d space arround a hall sensor oriented in XYZ. Each magnet pulls a vector foce that is "felt," by the hall sensor as the vector components. When all three magnets are active, the sensor feels the sum of the forces and would be unable to seperate the components of forces from each magnet

 

We do know the force generated by each magnet in terms of input power can be characterized by a saturation curve that is temperature dependent (we have temperature sensors that we could use to create a lookup table for those equations based on temperature) , however we would still need the system to have some degree of self correction.

0 Kudos
Message 7 of 7
(3,596 Views)