Dynamic force control using linear servo actuator + load cell
Hello,
I am designing a test fixture which will allow us to test the performance of actuators we install in our products. I need to apply a constant load to the actuator while it is extending/retracting. I would like to be able to use a linear servo actuator and a load cell on the same axis as the UUT to provide and monitor the load. The actuator under test does not travel at high speeds, its max speed is approximately 1in./sec.
I need to be able to maintain a constant load while the actuator is moving. Therefore I'll need some kind of closed loop system to maintain a velocity such that the load being reported from the load cell is equal to the expected load as the actuator is moving.
I am trying to figure out how to best implement this in a cost effective and time-saving way. I have not purchased any hardware at the moment so am open to suggestions. We do have LabView 2009 with all the toolkits. Would it be best to implement this using a motion controller card or would I be able to get good results using a standard DAQ?
Message Edited by fnaeem on 02-05-2010 05:58 PM
As you have stated correctly, you will need a deterministic closed loop system to accomplish this task. The most cost efficient while reliable solution for this purpose is a motion control board like the PCI-7352. This board provides quadrature encoder inputs for positioning tasks and analog inputs for any other type of control. Torque/force control is a very typical task for this board and it provides a simple API and useful configuration tools.
If cost savings are a primary goal, you could also use a PCI-7342, but for your application I would recommend the PCI-7352, as the PCI-7342 provides only 12-bit ADCs, while the PCI-7352 provides 16-bit ADCs, resulting in a much better resolution of your force feedback signal.
I hope that helps,
Jochen Klier
National Instruments
Similar Messages
-
A/C three Phase motor control using 1/4 bridge Load Cell output and a USB 9172 Daq
NI Assistant,
I am tasked with setting up a Motion Control using two each OMEGA LC712-100K, -50K and -10K load cells to monitor the cable tension on six A/C motor driven winches. I also need to Monitor and calculate a Moment as well as the load slope for Load verses Time.
I have zero time to develop and I have searched your databases for existing Motor Controls to modify.
Should I use Case Structures and then place them in a while loop?
I setup a drawing in Word to visually define the task.
Signed,
Patrick Murphy
Attachments:
Layout for Testing Spars.docx 15 KBHi Patrick,
The reason why the Motion Control examples will not work for you is beacuse they are meant to be used with the NI Motion boards. Since you are using DAQ boards, the examples are probably not going to be able to help you too much. However, there is one example on the community that might be a place for you to start.
pmurphy wrote: Should I use Case Structures and then place them in a while loop?
What exactly do you mean by this? What do you want in the case structure or while loop? -
How to finetune the force control of an AC Motor Linear Actuator?
Hello,
I
am hoping to find some help here with the following problem, which I am trying
to solve for several days now....
I
am using the UMI-7774 and an AC servo-motor-driven linear actuator to do
force control. Basically, I need the actuator to apply a constant force and
react quickly to force changes. My system setup is as follows: I am using
a PCI-7344 Motion Control Card to provide the analogue command signal
(0-10V). This signal is supplied to the actuator controller (through a
UMI-7774), which transforms the command signal to an amperage command signal
(0-2.17Arms). This is the signal controlling the actuator’s torque. The actuator controller is working in torque mode. I use
a Kistler PZT force sensor (ring type) and a Kistler amplifier as my feedback
source. The signal from the sensor amplifier is directly connected to the ADC of the
UMI. I am using MAX to tune my system and define a PID controller that gives
me a good step response.
(1)
The results so far show that it works in principle, but I believe my system is
not yet tuned optimally. However, the best step response results I have
obtained and the PID parameters I used are shown in the attached files. As I am
relatively new to this area, could you please advise me on how I could further
improve the step response of the system? The current rise time and
overshoot values are very good (a 3% overshoot would also be acceptable),
but the observed undershoot is causing delayed settling. Also, the oscillation
observed during undershoot is something I would like to remove.
(2)
I have tried increasing Kp and Kd values. Increased Kd does not seem to correct
the oscillation problem. On the contrary, it destabilises the system. Increasing
Kp causes an unwanted overshoot. I have also tried to reduce the
Derivative Sampling Period but that gave even worse results (System Inertia: J
= 1.8629*10^-5 Kgm^2).
At
Td=2 the actuator was retracting on its own to its home position when I set Ki>=8.
I got the most stable behaviour using Td=4. Is there any other way I could
improve the actuator’s response?
(3)
I have seen that in some cases people have used a “double PID loop” one
for the encoder feedback and one for the force feedback. Do you believe that
this would improve system behaviour? If so, how could
I implement two PID loops? I mean, MAX only allows me to enter
one set of PIDs....or is there a possibility to set up a second PID-loop
somewhere?....I have seen that the "Force Control Using Monitoring
Force" example essentially works with two Closed-loops, but one of them is
implemented in the application software and this would result in a
non-deterministic and comparatively slow response of the system, right??
Sorry for the long post and thanks
a lot in advance for help and advice.
Attachments:
Force Conrtol Loop Settings Actuator-BEST.JPG 41 KB
Step Responce Actuator-Force Feedback-BEST.JPG 58 KBHello Jochen and thank you for your very nice reply.
The past few days I have been trying to implement your advice, but unfortunately I did not have much success. Let me start by saying that explanations to my problem, the 2nd one looked more probable, as I always make sure that there is contact between my actuator and the workpiece I am pushing against. So, I unmapped my DAC by setting up the axis as a stepper axis with no feedback and I used the Load DAC to apply voltage and see when my actuator starts moving. That gave me the upper and lower limits for the Static Friction Compensation filter (please refer to attached image). I then implemented this filter and tried to retune the PID parameters, but the results I got were poor.
I can now adjust the parameters so that there is no initial spike and undershoot, but now the force ramps up fast to a specific value and then keeps rising slowly. Vibration is observed at the point of transition from fast to slow ramp-up (ref. Step Responce Actuator-Force Feedback-WITH FILTER_v2).
I could not eliminate the steady state error. When I tried to eliminate the steady state error by increasing Ki, or tried to create an initial overshoot by increasing Kp, I always ended up with an unstable system or a system with a response similar to the one shown in attached figure “Step Responce Actuator-Force Feedback-WITH FILTER_v1”.
Do you perhaps have an explanation or comments for this behaviour? As for your other questions:
Sensor Bandwidth: N/A, Charge Amplifier Bandwidth: 200 kHz, Low pass filter: No (Amplifier has the capability though)
PID Update Period: 250 microseconds (fastest available)
NI Motion Version 2.3
Labview Version 8.5.1
Thank you,
Thomas
Attachments:
Step Responce Actuator-Force Feedback-Filter Settings.JPG 28 KB
Step Responce Actuator-Force Feedback-WITH FILTER_v2.JPG 69 KB
Step Responce Actuator-Force Feedback-Filter Settings.JPG 28 KB -
Position Control of compumotor linear servo table and GV-U6E with PCI-7344
I'm referring PCI-7344 (not 7334).
I have the GV-U6E which is a drive only and does not possess control functionality. the drive only version does not store or use programs. So, serial commands can not be sent through COM port by LabVIEW even though A few basic commands can be emulated.
I am trying to do position control as I mentioned. For example, the motor should move A point to B point exactly with a certain speed. The points must be aboulte position.
I would like you to see the reference comment that I have been contacting with in your website forum.
http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=506500000008000000DD490000&USEARCHCONTEXT_CATEGORY_0=_14_&USEARCHCONTEXT_CATEGORY_S=0&UCATEGORY_0=_14_&UCATEGORY_S=0
Regard,
Jin Ho Lee
----- Original Message -----
From:
To:
Sent: Thursday, September 26, 2002 5:00 PM
Subject: Re: (Reference#1549-QYW196) "Position Control of linear servo table and GV-U6E with PCI-7344
>
> Note: Your reference number is included in the Subject field of this
> message. It is very important that you do not remove or modify this
> reference number, or your message may be returned to you.
>
>
> JinHo. Compumotor is a very popular brand, and I know of several customers
> who integrate our 7334 with Computmotor drives. However, when you say that
> the MAX configuration doesn't fit in the compumotor drive settings, are you
> referring to the specs from the 7344? It looks like the 7344 and the
> Compumotor will work well together through a UMI break out box. If you're
> referring to specific commands that the Compumotor receives, I'd have to
> know more about the protocol. If the Compumotor needs serial commands,
> then you can send them through the computer's COM port from LabVIEW.
> Please let me know exactly what kind of configurations you're trying to
> set. The 7344 can be completely configured in MAX and LabVIEW.
>
>
> Best Regards
>
> Kyle Voosen
> Applications Engineer
> National Instruments
> http://www.ni.com/support
>
> ------------------------------------------------------------------------------
>
> Problem Description :
> "Position Control of compumotor 406LXR linear servo table and GV-U6E(motor
> drive) with PCI-7344"
>
> "Since I had the answers referring:
> http://exchange.ni.com/servlet/ ProcessRequest?RHIVEID=101&RPAGEID=135&
> HOID=506500000008000000DD490000& USEARCHCONTEXT_CATEGORY_0=_14_&
> USEARCHCONTEXT_CATEGORY_S=0& UCATEGORY_0=_14_&UCATEGORY_S=0
>
> Wiring step was done well. However, I still have a problem that MAX
> configuration doesn't fit in compumotor drive settings. Therefore, the
> setup is shown below, and I want to know how I can set up PCI-7344
> configuration in MAX or LabVIEW VI.
>
>
> -----------------------------------------------------
>
> Uploaded from device address 0
>
> Gemini GV Servo Drive Setup
>
>
>
> Motor Setup
> DMTR 1703
> Motor ID (406-x-LXR-M-x-D13-x-x-x-x-E5-x-x-x)
> DMTIC 2.48
> Continuous Current (Amps-RMS)
> DMTICD 0.00
> Continuous Current Derating (% derating at rated speed)
> DMTKE 17.6
> Motor Ke (Volts (0-to-peak)/krpm)
> DMTRES 10.10
> Motor Winding Resistance (Ohm)
> DMTJ 119.300
> Motor Rotor Inertia (kg*m*m*10e-6)
> DPOLE 1
> Number of Motor Pole Pairs
> DMTW 40.5
> Motor Rated Speed (rev/sec)
> DMTIP 7.40
> Peak Current (Amps-RMS)
> DMTLMN 3.4
> Minimum Motor Inductance (mH)
> DMTLMX 3.4
> Maximum Motor Inductance (mH)
> DMTD 0.000000
> Motor Damping (Nm/rad/sec)
> DMTRWC 0.23
> Motor Thermal Resistance (degrees Celsius/Watt)
> DMTTCM 20.0
> Motor Thermal Time Constant (minutes)
> DMTTCW 0.33
> Motor Winding Time Constant (minutes)
> DMTAMB 40.00
> Motor Ambient Temperature (degrees Celsius)
> DMTMAX 90.00
> Maximum Motor Winding Temperature (degrees Celsius)
> DHALL 1
> Disable Hall Sensor Checking
> DMTLQS 0
> Set Q Axis Inductance Saturation
> DMTLDS 0
> Set D Axis Inductance Saturation
> DTHERM 0
> Disable motor thermal switch input
>
>
>
> Drive Setup
> DMODE 2
> Drive Control Mode
> DRES 8400
> Drive Resolution (counts/rev)
> DPWM 16
> Drive PWM Frequency (kHz)
> SFB 1
> Encoder Feedback
> ERES 8400
> Encoder Resolution (counts/rev)
> ORES 8400
> Encoder Output Resolution (counts/rev)
> DMEPIT 42.00
> Electrical Pitch (mm)
> SHALL 0
> Invert Hall Sensors
> DMTLIM 1.5
> Torque Limit (Nm)
> DMTSCL 1.5
> Torque Scaling (Nm)
> DMVLIM 119.000000
> Velocity Limit (rev/sec)
> DMVSCL 119.000000
> Velocity Scaling (rev/sec)
>
>
>
> Load Setup
> LJRAT 0.0
> Load-to-Rotor Inertia Ratio
> LDAMP 0.0000
> Load Damping (Nm/rad/sec)
>
>
>
> Fault Setup
> FLTSTP 1
> Fault on Startup Indexer Pulses Enable
> FLTDSB 1
> Fault on Drive Disable Enable
> SMPER 8400
> Maximum Allowable Position Error (counts)
> SMVER 0.000000
> Maximum Allowable Velocity Error (rev/sec)
> DIFOLD 0
> Current Foldback Enable
>
>
>
> Digital Input Setup
> INLVL 11000000
> Input Active Level
> INDEB 50
> Input Debounce Time (milliseconds)
> INUFD 0
> Input User Fault Delay Time (milliseconds)
> LH 0
> Hardware EOT Limits Enable
>
>
>
> Digital Output Setup
> OUTBD 0
> Output Brake Delay Time (milliseconds)
> OUTLVL 0100000
> Output Active Level
>
>
>
> Analog Monitor Setup
> DMONAV 0
> Analog Monitor A Variable
> DMONAS 100
> Analog Monitor A Scaling (% of full scale output)
> DMONBV 0
> Analog Monitor B Variable
> DMONBS 100
> Analog Monitor B Scaling (% of full scale ouput)
>
>
>
> Servo Tuning
> DIBW 1500
> Current Loop Bandwidth (Hz)
> DVBW 100
> Velocity Loop Bandwidth (Hz)
> DPBW 40.00
> Position Loop Bandwidth (Hz)
> SGPSIG 1.000
> Velocity/Position Bandwidth Ratio
> SGIRAT 1.000
> Current Damping Ratio
> SGVRAT 1.000
> Velocity Damping Ratio
> SGPRAT 1.000
> Position Damping Ratio
> DNOTAF 0
> Notch Filter A Frequency (Hz)
> DNOTAQ 1.0
> Notch Filter A Quality Factor
> DNOTAD 0.0000
> Notch Filter A Depth
> DNOTBF 0
> Notch Filter B Frequency (Hz)
> DNOTBQ 1.0
> Notch Filter B Quality Factor
> DNOTBD 0.0000
> Notch Filter B Depth
> DNOTLG 0
> Notch Lag Filter Break Frequency (Hz)
> DNOTLD 0
> Notch Lead Filter Break Frequency (Hz)
> SGINTE 1
> Integrator Option
> SGVF 0
> Velocity Feedforward Gain (%)
> SGAF 0
> Acceleration Feedforward Gain (%)
> -----------------------------------------------------
>
>
> Regards,
> JinHo"
> NI Software :
> LabVIEW version 6.0
> NI Hardware :
> Motion Control device PCI-7344
> Driver Version :
> no
> OS :
> Windows 2000
> CPU :
> Pentium
> RAM :
> 128
> Vendor :
> DELL
> Customer Information :
> Jin Ho Lee
> North Carolina State Univ.
> US
> [email protected]
> Ph: (
> 919
> )
> 512-9929
>
>Yes, we used an NI PXI-7344 motion control card with an NI UMI-7764 box connected to a Gemini GV-U12E servo drive. (which is a drive only.)
We did positional control in absolute position mode.
I can send you an AutoCAD schematic detailing how to connect the UMI-7764 to the Gemini GV servo drive.
In regard to the Rs232 interface to the GV servo drive,
the GV drive only model is "configurable" not "programmable". You can create unique GV configuration files with Compumotor's Motion planner then download the configuration via Rs232 using LabVIEW as desired. Or, using LabVIEW via Rs232 you can change individual GV drive parameters on demand,
or use the GV's two analog outputs back to LabVIEW's analog inputs to measure commanded motor current or torque, etc.etc.etc -
Hi. I have a UMI 7764 and I want to use it control a stepper motor and load cell input. I am using a power supply connected to the analog input on the card to simulate a load cell. However I can not find/read it in MAX. I am able to control my stepper motor with no problems.
Any input would be appreciated! Thanks.Hi Kenny,
First off, you may notice that this forum thread is nearly 6 years old. In the future, you'll typically have better luck getting responses by posting to a new thread on the motion forum.
To answer your questions:
1. The analog inputs on the NI 73xx motion controllers are not capable of being hardware timed, and therefore are limited to very slow sampling rates. This KB explains more. You'll notice that AI sampling rates are slower when used with onboard programs since the onboard controller must share processor time with higher priority tasks.
2. You can find more info about using onboard programs with 73xx motion controllers here. Also, there are a lot of shipping examples that show how to use the NI-Motion API and onboard programs. You can find all of those under Hardware Input and Output>>Motion Control>> NI 73xx in the Example Finder.
Cody A. -
Data acquisition from a 250N Load cell
Hi ,
I am very new at using the Labview.I am using Labview 6i(PCI 6052E).The load cell(250N) is connected to a pump.The pump has 2 bags.One of them is filled with water and the other is empty.I want to load the bag which is empty from the bag filled with water using the pump.The load cell is connected to the bag which is filled with water.I am trying to aquire a volatge signal continously from a load cell and display it on a chart.
My program has no errors and I am able to run the progam.But it is not aquiring any signal.Could u please help me out.Attached is my code for the same .
-ManasaHi Manasa,
Make sure you are handling your errors in your code. You can do this by wiring your error clusters through your VI and then terminate them in a General Error Handler VI. If you are doing this, make sure that your device works in Measurement & Automation Explorer (MAX). Do this by opening a test panel and verifying that you can get a known voltage (like a battery) to read correctly. If you can successfully get a voltage in MAX, try running one of the example programs. You can find them at Help » Find Examples..., then browse to hardware input and output. If you can get an example program that is similar to what you are trying to do to work, try comparing your code to the example.
Please post back if you have any questions. Have a great weekend!
Ryan D.
District Sales Manager for Boston & Northern New England
National Instruments -
I'm trying to use
load_cell_null_off_shuntcal.vi with load cell (Honeywell Model 31,
unamplified). I am using LabView 8.6, cDAQ-9172 and NI9237. Inputs:
internal excitation10V; mV/V 2.1492 (calib. sheet); max weight 10 lbs; bridge
resistance 350 ohms (Honeywell specs); 9237 internal shunt resistance 100
kohms; shunt location R4 (default setting). Have selected "Do offset
null" and "Do shunt cal".
Error -200077 occurred at DAQmx
Perform Shunt Calibration
(Bridge).vi:1 Possible reason(s):
Measurements: Requested value is not
a supported value for
this property.
Property:
AI.Bridge.ShuntCal.GainAdjust
You Have Requested: -61.980405e3
Valid Values Begin with: 500.0e-3
Valid Values End with: 1.500000
If "Do shunt cal" green
button not selected, no error. Gain adjust should be approx 1. subVI
DAQmx PerformShuntCalibration (bridge).vi contains "Call library function
node" which is locked (?).
Any ideas?
What is the correct shunt element
location for a full bridge load cell? Changing this location does not eliminate
error.
Solved!
Go to Solution.Hello CFJ,
The problem is most likely in your external connections of the NI 9237 and the load cell. As referenced in the NI 9237 Operating Instructions and Specifications, page 9, the SC+ and SC- pins should be connected across the resistor specified in the DAQmx Perform Shunt Calibration (Bridge).vi (in the case of a full bridge it would be R3).
Let me know if you are still having issues with your calibration.
Message Edited by Dan_K on 01-22-2009 04:31 PM
Regards,
Dan King -
Controlling Linear Actuator via Load Cell
Hello,
I need to control the position of a linear actuator based on the force feedback from a load cell (rated up to 100 ft/lbs) connected to the tip of the linear actuator. What I want to be able to do is to set a force and have the linear actuator (driven by a stepper motor) move until it is within 0.1 ft/lb of the force setpoint. Once within 0.1 ft/lb of the setpoint, I would like to hold and control to the setpoint based on a user configured hold time.
I have the following hardware:
PXI-1033 chassis
PXI-7340 Motion controller card
UMI-7764 Terminal Block
P7000 Drive
Omega Engineering Load Cell model number LC201-100
Omega CCT-80 Load Cell Signal Conditioner
Omega FAR-1 Power Supply
I have the + output of the CCT-80 connected to the Analog Input (AIN1) and the - output connected to the Analog Input Ground (AIGND). This output signal is -10V to +10V (verified by DMM)
I have the ADC range set to -10 to +10
I'm reading the ADC as fast as possible (get about 700 samples/second) and this just isn't fast enough to control to the precision that I need. Also, it seems like there is a substantial amount of noise on this line.
Does anyone have any recommendations on improving the speed of the ADC read, or how to reduce the noise on the line?
If my requirement of holding to 0.1ft/lb is too strict for this hardware (7340 motion card) is there something else that I should try?
If I'm missing any other info that is needed to help me out, let me know and I'll update this post.
Thanks!Hello AMac,
I have a setup similar to yours with a load cell attached to a linear stage. I want to use position control of the stage to apply a set load on the load cell (position-based explicit force control). Do you have a example VI I could look at if yours was successful?
Thanks,
Kyle -
My system
PXI 1052 chassis
PXI 8196 RT controller
Flexmotion 7356 motion controller
Flexmotion 7354 motion controller
6259 M series DAQ
1520 SCXI
1520 SCXI
1314 SCXI frount mounting terminal block
DSM strain gage load cells
Exlar SR Brushless PM motors
Kollmorgen servo star CD series 5 drives
My objective:
I want to measure the force on the load cells with the 1520 SCXI (i.e. excite the load cell then amplify and condition its output) then I want to use this analog (force) signal as the primary feedback for my motion control system (7356 and 7354 motion controller connected to my drives and motors).
The problem:
The motion controller boards (7356 and 7354) can be configured for force feedback control via analog feedback from a load cell. However the boards implicitly expect the load cell signal to be amplified and conditioned with and external signal conditioner rather then using an NI SCXI module. Currently I’m am reading the SCXI signals via the 6259 M seriers DAQ and consequentially have no way to route the signal into the 735X boards for force feedback control. I can use softmotion to control the motors but then I loose the fast PID update rates possible with the 735X boards.
The question:
Is it possible to condition a load cell signal with a 1520 SCXI and then use it as the primary analog feedback for a 735X motion control board?
Thanks
Patrick Aubin
Ph.D Candidate
University of Washington &
VA MedicalCenter of Excellence for
Limb Loss Prevention and Prosthetic EngineeringHi GG,
Thank you for your feedback.
>create your own external circuitry to amplify the signal.>
True a few op-amps could amplify and filter the signal externally but the performance of such an amateur built system will never match the accuracy and functionality of the 1520 SCXI. That’s why we spent the $2500 for the professional version.
>One thing that you could do is to use a UMI with your motion controller and then wire your signal from your SCXI to the UMI.>
As I understand it the UMI is basically a break out connectivity interface for third party drives. After conditioning and amplifying the analog force signal with the SCXI module the analog signal isn’t available to wire into a UMI. To my knowledge the conditioned signal of the SCXI resides only in the PXI backplane (i.e. there is no physical access to the conditioned analog signal). Can you explain how the UMI could be help here.
Again thanks for your input GG.
Patrick -
Question on Measuring Lift Force for MAV Ornithopter for Student Project using Load Cell
Hey everyone!
I am new to these forums so bare with me, please. I am part of a senior design student group working on making a micro aerial vehicle ornithopter (generates lift by flapping its wings) similar to this Design.
We are using this load cell connected to an AD620 Op-Amp circuit that basically has two input wires from the load cell coming into the op-amp with a gain of 100 (there is an Rg resistor with 500 ohms in the circuit). The load cell and op-amp circuit are both powered correctly with 10 V and +-15 V, respectively. There are two output wires coming out of the circuit. One comes out of the 6th terminal of the op-amp, and one is connected to ground. If we turn on everything and test the output of the circuit with a multimeter there is little if no fluctuation in the output voltage, which is about .25 V with zero load. If we add precise weights and form a linear graph of the output voltage vs. weight, we can find that there is about .0045 volts/gram relationship.
Here comes the part we we are having trouble. It seems as though the circuit it working correctly, but when we try and hook it up to our USB-6221 DAQ Board though the ai0 (or any analog input) and confirm a LabVIEW program to read the output, we get a ton of noise along with a weird looking graph.
Here is a picture of the front panel that shows the output we are getting http://img130.imageshack.us/i/frontpanelg.jpg/
Basically, I would have though we could get a straight line that continuely increases or decreases depending on the load on the load cell. Why would it graph a ton of vertical lines? I would think it would be just one data point per time value?
Here is the simpler block diagram just to test the output: http://img26.imageshack.us/i/blockdiagramsmall.jpg/
Here is the main block diagram that we were going to use to convert to force, etc. but its not working (no need for while loop?): http://img15.imageshack.us/i/blockdiagrambig.jpg/
The properties of the DAQ Assistant VI is as follows:
input range: -10 to 10 v
RSE terminal configuration
acquisition mode: n samples and not sure how many samples we want to read or how fast. we had 1k hz and 100 samples and the image above is basically what we got it the program runs continuously.
I don't know what else I can tell you, except that if anyone helps me you would be like a godsend to our group. It would be very much appreciated
Thanks!!!As I am unable to look at youor images (the corporate filter here is blocking the url) I can't see what you are describing. I will say that a multimeter will not show fast transitions that will show up in a LabVIEW/DAQ application, so using a meter usually doesn't tell you that much about signal "cleanness". How long are the wires from the op amp/load cell to the DAQ? How long are the wires, and what type (shielded, twisted pairs, untwisted pairs, etc.) from the load cell to the op amp. The output levels of the load cell are usually quite low, so the possibility of also picking up "environmental" electrical noise is very high, and this will be amplified as well. Since the output of the op amp is higher, the noise introduced between it and the input to the DAQ is less of an issue, but there as well. So making sure that signal wires are properly shielded and grounded is important, and there are long papers describing this for low level analog signals. Since the load cells desired output will probably vary relatively slowly (a few Hz) it may also be helpful to put a simple low pass filter before the DAQ.
You should insert the images into your post, as jpg, or png (you have jpg images) Not bmp! (this is for others that might read your post, yours are jpg which should be ok). Generally most of us won't or can't go to links, corporate network filters and corporate policies frown on it, too much maleware lurking at the end of unknown URL's
Putnam
Certified LabVIEW Developer
Senior Test Engineer
Currently using LV 6.1-LabVIEW 2012, RT8.5
LabVIEW Champion -
Closed loop velocity control based on load cell force
Hello,
My application is for a drill, that drills into rocks of various densities for the purpose of collecting rock core samples.
My setup has 2 motors which get controlled, one spins the drill bit at a constant velocity, the other moves the drill mechanism along a Z axis.
For efficient cutting, it is desired to apply a constant force between the drill bit and the rock. I have a load cell which measures the force being exerted by the drill bit on the rock surface, and this force can be adjusted by changing the velocity of the Z axis. So I would like to employ closed loop control to adjust the Z axis velocity to maintain a constant force on the rock.
Platform: cRIO 9073, with NI 9505 & 9215 Modules, Labview 2010 Full with RT and FPGA modules.
The load cell is by Transducer Techniques, and I use their TMO-1 module to condition the signal, the output of which is attached to an input of the 9215 module, where 0-100 lbs equates to 0-8VDC.
The motors and encoders for the Drill and Z axis are connected directly to the 9505 modules.
Right now I am using a modified version the example found in ...\examples\CompactRIO\Module Specific\NI 9505\Velocity Control (closed loop)\Velocity Control (closed loop) - NI 9505.lvproj to accomplish velocity control of the motors.
My questions are:
1) Do I have the appropriate NI hardware/software for this task?
2) With my current hardware setup, what would be an appropriate way to control my Z axis velocity rate based on Analog feedback from the load cell?
3) Development time is a critical factor, so are there any toolkits etc that are easy to get started with that would drastically decrease my development time, or do I already have everything I need?
Thank you for your time
-MK Hokie1. Your hardware and software look appropriate assuming the motors are compatible with the 9505s. You didn't mention the NI SoftMotion module in your software list which is something you will need.
2. There are a few ways of doing this. One method would be to have a force PID loop that would attempt to maintain a force setpoint by directly outputting values to your torque loop. In this case, the drill would essentially move as fast as it could while maintaining the force setpoint. Another option is to have the force loop output a velocity setpoint. You would then have a velocity PID loop that outputs torque values to the torque loop. By adding this additional velocity loop you could have control over your maximum and minimum velocities. There are likely other alternatives as well, but these are the first two that come to mind.
3. Unfortunately there are no shipping examples that close the loop on force feedback. My advice would be to start with the NI 9505 shipping example and adapt it to your needs. There are quite a few things you will want to change though. Do you know if you will need to use the trajectory generator to move the drill into position before starting the force control?
Assuming you don't need any trajectory generation, you can scrap the entire RT portion of the NI 9505 example and just create the necessary FPGA code. On the FPGA, you won't need the Spline or Synchronization code either because this information would no longer be coming from RT. You could take these out and replace the position loop with a force loop and possibly a velocity loop and your FPGA program would basically be finished. In fact the only real motion IP that you will need is for the encoders (assuming you want velocity control) and PID. Then you would need to create an RT VI that allows you to send down enable, disable, PID gains, and setpoints.
If you do need trajectory generation, you would want to keep most of the example code the way that it is, but then program in a 'Force Mode' that utilizes the force and velocity controly as described above. You could think of it as having two different routines programmed side by side.
Regards,
Burt S -
I need to be able to control a linear actuator from labview. Can someone show me an example of how I might do this? Also, I have no idea how I should wire the actuall motor up so that it can go forwards and reverse.
thanksHi Eileen,
I'm not sure how exactly the Firgelli actuator would be wired, but according to their datasheet it can be controlled by "simply applying a DC voltage to extend the actuator, and reversing the polarity to retract it."
I would recommend starting with using the DAQ Assistant Express VI to output a DC voltage from the PCI-6024E. There is a tutorial on Getting Started with the DAQ Assistant that should be very helpful. You will want to check out the "Configuring DAQmx Express VI using the DAQ Assistant (Analog Output)" section to set up a DC voltage output. Then whatever Analog Output channel you have configured your DAQ task for can be wired to the voltage input of the actuator.
I hope that information is helpful!
Matt
Product Owner - NI Community
National Instruments -
Create Table Control using Dynamic Internal Table.
Hi,
I have requirement in which I will create a Dynamic Internal Table and then I need to create a Table Control Using that Internal Table. Now this can't be done using Screen Editor as it requires a pre-defined internal table or a DDIC Object.
Please Help.This should be correct answer(I am not author of code below):
REPORT ztablemaintace NO STANDARD PAGE HEADING.
TYPE-POOLS: rsds.
DATA: is_x030l TYPE x030l,
it_dfies TYPE TABLE OF dfies,
is_dfies TYPE dfies,
it_fdiff TYPE TABLE OF field_dif,
is_fdiff TYPE field_dif.
DATA: w_selid TYPE rsdynsel-selid,
it_tables TYPE TABLE OF rsdstabs,
is_tables TYPE rsdstabs,
it_fields TYPE TABLE OF rsdsfields,
it_expr TYPE rsds_texpr,
it_ranges TYPE rsds_trange,
it_where TYPE rsds_twhere,
is_where TYPE rsds_where,
w_active TYPE i.
DATA: it_content TYPE REF TO data,
it_modif TYPE REF TO data,
it_fcat TYPE lvc_t_fcat.
DATA: w_okcode TYPE sy-ucomm.
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE,
<ntab> TYPE STANDARD TABLE.
* Macros
DEFINE table_error.
message e398(00) with 'Table' p_table &1.
END-OF-DEFINITION.
DEFINE fixed_val.
is_fdiff-fieldname = is_dfies-fieldname.
is_fdiff-fixed_val = &1.
is_fdiff-no_input = 'X'.
append is_fdiff to it_fdiff.
END-OF-DEFINITION.
* Selection screen
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME.
PARAMETERS: p_table TYPE tabname OBLIGATORY "table
MEMORY ID dtb
MATCHCODE OBJECT dd_dbtb_16.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 33(20) selopt USER-COMMAND sel,
COMMENT 55(15) selcnt,
END OF LINE.
SELECTION-SCREEN: SKIP.
PARAMETERS: p_rows TYPE i. "rows
SELECTION-SCREEN: END OF BLOCK b01,
SKIP,
BEGIN OF BLOCK b02 WITH FRAME.
PARAMETERS: p_displ TYPE c AS CHECKBOX. "display
SELECTION-SCREEN: END OF BLOCK b02.
* Initialization
INITIALIZATION.
MOVE '@4G@ Filter records' TO selopt.
* PBO
AT SELECTION-SCREEN OUTPUT.
IF w_active IS INITIAL.
CLEAR: selcnt.
ELSE.
WRITE w_active TO selcnt LEFT-JUSTIFIED.
ENDIF.
* PAI
AT SELECTION-SCREEN.
IF p_table NE is_x030l-tabname.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = p_table
IMPORTING
x030l_wa = is_x030l
TABLES
dfies_tab = it_dfies
EXCEPTIONS
OTHERS = 1.
IF is_x030l IS INITIAL.
table_error 'does not exist or is not active'.
ELSEIF is_x030l-tabtype NE 'T'.
table_error 'is not selectable'.
* ELSEIF is_x030l-align NE 0.
* table_error 'has alignment - cannot continue'.
ENDIF.
* Default values for system fields
REFRESH: it_fdiff.
is_fdiff-tabname = p_table.
LOOP AT it_dfies INTO is_dfies.
IF is_dfies-datatype = 'CLNT'.
fixed_val sy-mandt.
ELSEIF is_dfies-rollname = 'ERDAT'
OR is_dfies-rollname = 'ERSDA'
OR is_dfies-rollname = 'AEDAT'
OR is_dfies-rollname = 'LAEDA'.
fixed_val sy-datum.
ELSEIF is_dfies-rollname = 'ERTIM'
OR is_dfies-rollname = 'AETIM'.
fixed_val sy-uzeit.
ELSEIF is_dfies-rollname = 'ERNAM'
OR is_dfies-rollname = 'AENAM'.
fixed_val sy-uname.
ENDIF.
CALL FUNCTION '/SAPDMC/DATAELEMENT_GET_TEXTS'
EXPORTING
name = is_dfies-rollname
IMPORTING
text_middle = is_dfies-reptext
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
MODIFY it_dfies FROM is_dfies.
ENDLOOP.
* Prepare free selection on table
REFRESH it_tables.
is_tables-prim_tab = p_table.
APPEND is_tables TO it_tables.
CLEAR: w_selid.
ENDIF.
IF sy-ucomm = 'SEL'.
IF w_selid IS INITIAL.
* Init free selection dialog
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
expressions = it_expr
IMPORTING
selection_id = w_selid
expressions = it_expr
TABLES
tables_tab = it_tables
EXCEPTIONS
OTHERS = 1.
ENDIF.
* Display free selection dialog
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = w_selid
title = 'Selection'
status = 1
as_window = 'X'
IMPORTING
expressions = it_expr
field_ranges = it_ranges
number_of_active_fields = w_active
TABLES
fields_tab = it_fields
EXCEPTIONS
OTHERS = 1.
ENDIF.
* Start of processing
START-OF-SELECTION.
PERFORM f_create_table USING p_table.
PERFORM f_select_table.
PERFORM f_display_table.
* FORM f_create_table *
FORM f_create_table USING in_tabname.
FIELD-SYMBOLS: <fcat> TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = in_tabname
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
* Complete field catalog
LOOP AT it_fcat ASSIGNING <fcat>.
<fcat>-tabname = in_tabname.
ENDLOOP.
CALL FUNCTION 'LVC_FIELDCAT_COMPLETE'
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
OTHERS = 1.
ELSE.
WRITE: 'Error building field catalog'.
STOP.
ENDIF.
* Create dynamic table for data
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = it_content.
IF sy-subrc = 0.
ASSIGN it_content->* TO <itab>.
ELSE.
WRITE: 'Error creating internal table'.
STOP.
ENDIF.
* Create dynamic table for modif
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = it_modif.
IF sy-subrc = 0.
ASSIGN it_modif->* TO <ntab>.
ELSE.
WRITE: 'Error creating internal table'.
STOP.
ENDIF.
ENDFORM. "f_create_table
* FORM f_select_table *
FORM f_select_table.
IF w_active = 0.
SELECT * FROM (p_table)
INTO CORRESPONDING FIELDS OF TABLE <itab>
UP TO p_rows ROWS.
ELSE.
* Selection with parameters
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_WHERE'
EXPORTING
field_ranges = it_ranges
IMPORTING
where_clauses = it_where.
READ TABLE it_where INTO is_where WITH KEY tablename = p_table.
SELECT * FROM (p_table)
INTO CORRESPONDING FIELDS OF TABLE <itab>
UP TO p_rows ROWS
WHERE (is_where-where_tab).
ENDIF.
IF sy-dbcnt = 0.
WRITE: 'No record selected'.
STOP.
ENDIF.
ENDFORM. "f_select_table
* FORM f_display_table *
FORM f_display_table.
DATA: l_answer TYPE c,
l_eflag TYPE c.
CLEAR: w_okcode.
REFRESH: <ntab>.
* Display table contents
CALL FUNCTION 'STC1_FULLSCREEN_TABLE_CONTROL'
EXPORTING
header = p_table
tabname = p_table
display_only = p_displ
endless = 'X'
no_button = space
IMPORTING
okcode = w_okcode
TABLES
* nametab = it_dfies
table = <itab>
* fielddif = it_fdiff
modif_table = <ntab>
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
IF p_displ IS INITIAL AND w_okcode = 'SAVE'.
* Confirm update
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = p_table
text_question = 'Do you want to update table ?'
default_button = '2'
display_cancel_button = ' '
IMPORTING
answer = l_answer
EXCEPTIONS
OTHERS = 1.
IF l_answer = '1'.
* Apply modifications
IF NOT <ntab>[] IS INITIAL.
PERFORM f_add_system USING space.
MODIFY (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
l_eflag = 'X'.
ENDIF.
ENDIF.
* Apply deletions
IF l_eflag IS INITIAL.
REFRESH: <ntab>.
CALL FUNCTION 'STC1_GET_DATA'
TABLES
deleted_data = <ntab>
EXCEPTIONS
OTHERS = 1.
IF NOT <ntab>[] IS INITIAL.
DELETE (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
ROLLBACK WORK.
l_eflag = 'X'.
ENDIF.
ENDIF.
ENDIF.
* Apply creations
IF l_eflag IS INITIAL.
REFRESH: <ntab>.
CALL FUNCTION 'STC1_GET_DATA'
TABLES
new_data = <ntab>
EXCEPTIONS
OTHERS = 1.
IF NOT <ntab>[] IS INITIAL.
PERFORM f_add_system USING 'X'.
INSERT (p_table) FROM TABLE <ntab>.
IF sy-subrc NE 0.
ROLLBACK WORK.
l_eflag = 'X'.
ENDIF.
ENDIF.
ENDIF.
IF l_eflag IS INITIAL.
COMMIT WORK.
MESSAGE s261(53).
ELSE.
MESSAGE s075(3i).
PERFORM f_select_table.
ENDIF.
ENDIF.
* Display table again
PERFORM f_display_table.
ENDIF.
ENDIF.
ENDFORM. "f_display_table
* FORM f_add_system *
FORM f_add_system USING new TYPE c.
FIELD-SYMBOLS: <irec> TYPE ANY,
<upd> TYPE ANY.
LOOP AT it_fdiff INTO is_fdiff.
READ TABLE it_dfies INTO is_dfies
WITH KEY fieldname = is_fdiff-fieldname.
LOOP AT <ntab> ASSIGNING <irec>.
ASSIGN COMPONENT is_fdiff-fieldname OF STRUCTURE <irec> TO <upd>.
IF is_dfies-datatype = 'CLNT'.
<upd> = sy-mandt.
ELSE.
CASE is_dfies-rollname.
WHEN 'AENAM'.
<upd> = sy-uname.
WHEN 'AEDAT' OR 'LAEDA'.
<upd> = sy-datum.
WHEN 'AETIM'.
<upd> = sy-uzeit.
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. "f_add_system -
RC Servo control using FP-PWM-520?
I was wondering if anyone has any experience using Labview (7.0) to control a Fieldpoint FP-PWM-520 module to drive small RC aircraft servos? I am a chemist and I am very inexperienced in advanced Labview programming but I am trying to make good use of the equipment I have available. I want to use the servos to automate a remote radiochemical synthesis ( as a syringe driver) I have read that I may need a pulse width of up to 2 ms to drive this servo. This may kill the project right away since the output of the FP-PWM-520 seems to only go up to 1ms. Is that so? Anyway I would also very much appreciate any example code with LV 7.0 that may show this type of control. I apologize for my lack of knowledge in coding. I hope I can sort of reverse engineer someone elses code and learn a few things in the process. Thanks very much for any and all help!
Steve ToorongianWe tried to use a cFP PWM module to drive RC servos and it almost worked. My recollection
is that we could move the servo as required but the turn on and turn off issues killed the idea
for our application. There is no way to control when in the PWM cycle the module turns off
it's output, therefore the final position of the servo (after you turn off the pwm output) could
be anywhere. Subsequently, turning on the pwm would cause it to jump from wherever it
stopped after turn off to the new position.
Our solution was to develop a small microcontroller based pwm driver. This gives us complete
control over the pwm output as well as a bunch of remote I/O points. We multiplex up to
64 of these devices onto a serial port on the fp controller.
If the turn on and turn off issues aren't a problem I can dig out some of our testing .vis. They
are not finished applications, just 'move the servo' kind of things.
The microcontroller driver was developed under contract so I can't offer any of that stuff
without permission. Let me know if that would be of interest.
Matt -
Servohydra​ulic control with load cell feedback
Hello,
We are planning to build a tie rod fatigue test system with Labview and NI PCI-7344 4-Axis Motion Control Board. We have two linear servohydraulic actuators for applying linear force to tie rod and a servo motor for steering wheel movement. Tie rod must be vibrated by linear servo hydraulic actuators with constant force (+/- 50N , compression and tension direction) as 20 Hz while the steering turns (this is for road simulation) .
I think we can generate the 20 hz triangle waveform with 7344 motion control board for controlling servo hydraulic. But the main problem is to apply stable force with servo hydraulic actuators while steering wheel is turned by servo motor with constant frequency. There are two load cell as load link in the system so can we solve this problem with connect load cell to 7344 as feedback ?
Could you please share your opinions about hardware and software selection and application? What do you think about onboarb programming for this system?
I have attached two images regarding this systems which was build by some companies.
Best Regards
StewardSteward,
I think you should be able to use the analog feedback feature of the 7344 to accomplish your task. Please refer to this link where you can find an attachment that explains the details of using analog feedback.
I don't think that you will need any onboard programming for the control task but depending on your security needs you might want to use it for emergency stop actions (e. g. when something goes wrong and the speed or the force become too high).
Please note that the 7344 does provide 12 bit ADCs for analog feedback. If the accurracy of these ADCs is not enough for you you should consider to use a 7356 instead which provides 16 bit ADCs.
Please read the document linked above. If you find that for some reason analog feedback is not the solution for your task we can talk about other options.
Best regards,
Jochen Klier
National Instruments Germany
Maybe you are looking for
-
How do I connect my 2011 27 inch iMac to my HDTV
I want to connect my iMac to my HDTV
-
A year ago I bought an Imac to replace my broken Laptop. I have two Ipod touches. They both shared the same Library of CD and Itunes music. Until I synced the Ipod to my Itunes account on my Imac. And it wiped the CD songs from that Ipod, and just up
-
I cannot use China Telecom CDMA SIM card to my IPAD mini
I bought IPAD mini in Hongkong Apple store by website with name carving. The model number is MD544ZP/A. It was can use China Unicom 3G(WCDMA). Now, I want to change China Telecom (CDMA 1x/EVDO). But, It is not work. My friend is uisng same HK ver
-
User to call the name on a linked list from the console
Hello, My program has 9 linked lists and I need to manipulate them depending on which one the user wants to add or remove from. The problem is it's different every time. I need a way to allow the user to input the name of one of the linked lists, and
-
Have I got the right tools?
Hi all, I need to acquire/buy the following tools for a lot of my network related activities. I need: 1) A tool that checks for cable splits/breaks, DHCP functionality and troubleshoot basic network problems and last but not least should be very port