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 KB

    Hi 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 KB

    Hello 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

  • Load Cell Input UMI 7764

    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 .
    -Manasa

    Hi 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

  • 9237 + full-bridge load cell: load cell_null_off_shuntcal.vi - error 200077

    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

  • 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?

    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 Engineering  

    Hi 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 Hokie

    1. 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

  • Control a linear actuator

    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.
    thanks

    Hi 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 Toorongian

    We 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
    Steward

    Steward,
    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