Current limit output to DC motor

Hello,
I am a student and I have to install a simple motion system (1 axis) for my current project.
Before I start programming I would like to limit the current output to the DC motor from the drive to <1 amps to avoid any fast motion.
It there a way to set a limit through LabVIEW and the motion controller? Or do I have to find a hardware limit on the drive?
The system:
LabVIEW 7.1
PCI 7344 Motion Controller
UMI 7764 Interface
Emerson LX 700 brushless servo drive
Emerson DXM 208 servo motor
Thanks a lot!
Malte

Malte,
the option that you are looking for is a bit hidden, but it's available in NI-Motion. I don't know your drive, but typically the drive's output current is proportional to the input voltage. This is true, if the drive is configured in current mode or torque mode, which is the recommended mode if you are using a 73xx motion control board.
In MAX there is an option to limit the output voltage of the 7344, which also limits the output current of your drive:
So e. g. if your drive outputs 3,78 V when the input voltage is + 10 V and you want to limit the output current of your drive to +/- 1 A, you should set the torque limits in MAX to +/- 2,65 V.
As I have said, current mode is the recommended mode for your drive. But even if your drive has to be configured in velocity mode for some reason, limiting the output voltage of your 7344 will help, as this would limit directly the velocity of your motor.
I hope this helps,
Jochen Klier
National Instruments
Message Edited by Jochen on 08-01-2008 10:35 AM
Attachments:
torque limits.jpg ‏98 KB

Similar Messages

  • PXI-4110 current limit

    I am programming a PXI-4110 with LabWindows. I am trying out the current limiting. I have an output set to 5V with a 1K load resistor; this makes the current 5mA. I set the current limit to 2mA to see it work. When I read the voltage and current it is still 5V and 5mA. Here is my code:
    g_voltageLevel_ch0 = 5.0;
    g_currenLimit_ch0= 2.0e-3;
     status = niDCPower_ConfigureOutputFunction(vi_4110_0, channel0Name, NIDCPOWER_VAL_DC_VOLTAGE);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureSense(vi_4110_0, channel0Name, NIDCPOWER_VAL_LOCAL);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureVoltageLevel(vi_4110_0, channel0Name, g_voltageLevel_ch0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureCurrentLimit(vi_4110_0, channel0Name, NIDCPOWER_VAL_CURRENT_REGULATE, g_currenLimit_ch0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
    Solved!
    Go to Solution.

    I'm getting an error now. I have a 1K resistor on each of the outputs so I will see some current.
    Look for these lines
    to see comments I am sending you about the code.
    When I start my program I call a function PXI4110_HardwareInit() to get things set up. This part seems to look OK.
    /************************************** PXI-4110 ****************************************/
    // PXI-4110 hardware definitions for initialization
    static ViSession vi_4110_0 = VI_NULL, vi_4110_1 = VI_NULL, vi_4110_2 = VI_NULL;
    /* The channel names are length 2 because the maximum size of the strings
    from the each textbox on the UI is 1. */
    static ViChar channel0Name[2] = "0";  // 0V to 6V channel
    static ViChar channel1Name[2] = "1";  // 0V to 20V channel
    static ViChar channel2Name[2] = "2";  // 0V to -20V channel
    // inputs
    ViReal64 g_voltageLevel_ch0 = 5.0;
    ViReal64 g_voltageLevel_ch1 = +13.0;
    ViReal64 g_voltageLevel_ch2 = -13.0;
    ViReal64 g_currenLimit_ch0 = 500.0e-3;
    ViReal64 g_currenLimit_ch1 = 500.0e-3;
    ViReal64 g_currenLimit_ch2 = 500.0e-3;
    void PXI4110_HardwareInit(void)
     ViStatus status;
     ViChar errorMessage[256];
        ViChar resourceDCSupplyName[256] = "PXI-4110";
     // set channel 0 to +5.0V
     status = niDCPower_InitializeWithChannels(resourceDCSupplyName,channel0Name,VI_TRUE,VI_NULL,&vi_4110_0);
     if(status < 0)
      niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureOutputFunction(vi_4110_0, channel0Name, NIDCPOWER_VAL_DC_VOLTAGE);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureSense(vi_4110_0, channel0Name, NIDCPOWER_VAL_LOCAL);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureCurrentLimitRange(vi_4110_0,channel0Name,  1.0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     Set_PXI_4110_Outputs();
     status = niDCPower_ConfigureOutputEnabled(vi_4110_0, channel0Name, VI_FALSE);
     status = niDCPower_Initiate(vi_4110_0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
    static void Set_PXI_4110_Outputs(void)
     ViStatus status;
     ViChar errorMessage[256];
     // channel 0
     status = niDCPower_ConfigureVoltageLevel(vi_4110_0, channel0Name, g_voltageLevel_ch0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
     status = niDCPower_ConfigureCurrentLimit(vi_4110_0, channel0Name, NIDCPOWER_VAL_CURRENT_REGULATE, g_currenLimit_ch0);
     niDCPower_error_message(vi_4110_0, status, errorMessage);
    Then I send a message on ethernet to enable the outputs: When I enable the outputs this function reads the voltage and current outputs and sends this information to a application on my host computer. This information corresponds to what I set it to and what I see with a volt meter.  
    void PXI_4110_enable_outputs(void)
     ViStatus status;
        ViReal64 measuredVoltage, measuredCurrent;
        ViBoolean inCompliance;
     ViChar errorMessage[256];
     // set the outputs
    // Set_PXI_4110_Outputs();
     status = niDCPower_ConfigureOutputEnabled(vi_4110_0, channel0Name, VI_TRUE);
          /* Wait for the outputs to settle. */
         Delay(50e-3);
      // check channel 0
      status = niDCPower_MeasureMultiple(vi_4110_0, channel0Name, &measuredVoltage, &measuredCurrent);
      niDCPower_error_message(vi_4110_0, status, errorMessage);
      niDCPower_QueryInCompliance(vi_4110_0, channel0Name, &inCompliance);
      niDCPower_error_message(vi_4110_0, status, errorMessage);
    Now I send a message to change the current limit. This is where I have trouble. I try and limit the current on Channel 0 to 2mA. Since the output voltage is 5Volt and the resistor is 1K the current will exceed the current limit which is what I am trying to test. I get an error in this function>
       g_currenLimit_ch0 = CommandData->data; 
       status = niDCPower_ConfigureCurrentLimit(vi_4110_0, channel0Name, NIDCPOWER_VAL_CURRENT_REGULATE, g_currenLimit_ch0);
       niDCPower_error_message(vi_4110_0, status, errorMessage);
    I see g_currentLimit_ch0 = 2e-3 whic is whatI sent. but my status is a negative number. The message is "Invalid value for parameter or property"
    vi_4110_0 is the handle I got earlier.
    channel0Name ="0"
    and g_currentLimit_ch0 = 2e-3
    I do not understand why I am seeing and error here?????????????????????
    thanks in advance for your help,
    Don

  • Don't know how to set current limit for servomotor​s in MID

    My application is to control a servo motor. I�m using PXI-7350, driving a motor (Pittman GM8712F434) with MID-7654. The motor is connected to mechanic parts and mechanic parts are connected to a potentiometer as a feedback. Now, according to the spec of the motor, it said reference voltage 19.1V, inductance 5.4 mH, peak current 1.76 A. So, I set dip switch of MID to 0.85 A for continuous current, 1.70 A for peak current and standard inductance. The motor didn�t move and fault LED lighted. Then I set both continuous and peak current to around 1.7A. The motor still didn�t move and fault LED still lighted. I kept increasing the current until the current hit 3A. It started moving slowly but fault LED still lighted. Final
    ly I set the peak current to 3.5A, the motor ran normally. Come to the questions.
    1. Is the peak current in the spec same as peak current limit in MID? How to determine peak current limit? Because I�m afraid that my little motor is going to burn out.
    2. How to set the continuous current; is it suppose to be half of peak current?
    3. If +10/-10V command voltage(torque limit) gets map to peak current (let say 1.7 A), will +5/-5V be mapped to 0.85? And what happen after 2.7 sec if I set continuous current to 0.85A? Will +5/-5V be mapped to half of 0.85?
    4. How does �2.7 sec� thing works? When I set peak and continuous current to 3.5A and 1.7A, after 2.7 sec motor should run slower or even stop (in my case), but it went nut like it ran at maximum current.
    I set Kp 20 and others zero, everything else is same as default. Thank you, I appreciate your answer.

    infoiupui,
    There are several DIP switches on the front of the MID 7654 that can be toggled to vary the continuous and peak current values for the MID. There is a small panel that can be removed from the lower left corner of the MID. You can look in the manual for the 7654, linked below, to determine the particular settings that you should use to achieve given continuous and peak current values.
    MID-7654/7652 Servo Power Motor Drive User Guide
    http://digital.ni.com/manuals.nsf/webAdvsearch/E38​2785B7D67553E86256A5D0072BBE1?OpenDocument&vid=niw​c&node=132100_US
    Take a look at pages 10 through 13 of this document for information on how to modify those DIP switches to achieve current values that will work with the motor that you are using.
    I am not clear on w
    hat you are referring to when you referred to 2.7 seconds. Could you clarify that for me?
    I hope that helps! Let me know if you have any additional questions on this issue.
    Regards,
    Scott R.
    Applications Engineer
    National Instruments

  • How to check current input/output rate on router subintenterface via SNMP?

    How to check current input/output rate on router (2821, etc..) subintenterface via SNMP, like cacti monitoring system.
    I cant find OID to make this with snmpwalk.
    Or there is no way to check current load by this way? Only polling?
    P.S. Ethernet subinterface, of course.
    With great respect, S.A.

    Hi,
    Try to use:
    1.3.6.1.4.1.9.2.2.1.1.6 - InBitRate
    1.3.6.1.4.1.9.2.2.1.1.8 - OutBitRate
    1.3.6.1.4.1.9.2.2.1.1.28 - ifDescription

  • Firewire (400) Current limit

    I want to connect an external 2.5" drive to my firewire port, and would love if I don't have to use a power supply. Does anybody know what the current limit of the Powerbook's firewire 400 port is? I know that it's 500 mA for USB, but I can't find any info on firewire.

    7 Watts, according to the developer notes. That's at 12.8V (no load), so that's 540mA.
    About the same as USB 2.0 then.

  • Keithely 6487 showing output current limit reached even without any voltage applied ...

    I am using two keithley 6487 through labview to scan the voltage for an
    ion beam deflector. recently one of them started showing cmpl on the
    front panel ocomp also flashes. all the probes i opened and run it
    through frontpanel. still the problem persists. tried to update the
    firmware and it failed to complete updating .
    can any one give any clue why this happens. the interlock connector is proper.
    this
    is not a question directly linked with labview but i could not find any
    other active forum to post the problem. i apologise.
    pls help me to recover it.
    thanking you
    ranjini

    Hi ranjini,
    If your device failed during a firmware update, it probably is not in a operable state. I recommend contacting the manufacture to see if they have methods of recovering from a failed firmware update.
    Did you receive an error when the upgrade failed?
    Here is some information from the manufacturer website:
    Known Issues:
    When using RS-232 interface, The user may get a timeout error
    at 99% (after instrument resets):
    "Timeout Error: Error In Programming Model mmmm!".
    This error can be safely ignored.
    http://www.keithley.com/support/data?asset=13399
    Sappster

  • Report Painter question (FGI1) How to limit output up to a specified period

    Hello
    I have a report painter question.
    I am trying to create a BS report using tcode FGI1 (FALGFLEXT), that lists out the BS values by month (Jan - Dec).
    But the problem I am coming across is, if I specify selection parameter 01 2008, the report also populates the same values into the unposted months ahead (Feb/Mar/April)
    Something is wrong with my parameters.
    Is there a way I can limit the report output up to the specified period/month?
    I thought I might be able to work around this by creating a formula/variable (like in GL-SL), but it doesnt seem to be the case.
    Any thoughts appreciated
    regards
    Ken

    Period shall be included in the column characteristics. Check the variables or Values in column definition for the characteristic period.
    You could either give the values of period 1 for col 1, 2  for col 2, etc
    or you may use variables for period. The variables can be a formula variable with conditions.
    You make the user to enter a value for the 'To period'  (ZTOPRD)
    The value for the variable for column 2 (Feb) shall be  = 2, if ZTOPRD > or equal to  2  else, give some 17 .
    This way when the user enters a value of 1in the to period, the system would default 17, for which there won't be any values.
    You may extrapolate the above formula for various remaining columns of period.

  • Limit switch to reverse motor movement problem

    Hi guys, recently i am trying to create a robot that uses RF controller, arduino and labview. The issue i facing now is i am unable to trigger my limit switch to make my motor movement reverse when it hits on it. For normal motor trigger from lab view, it is working perfectly. But when comes to limit switch, it has no response. The following files is my VI and arduino coding. For the arduino coding, lets just focus on case '1' since the triggering is not yet complete. The motor i use is only a normal DC motor without encoder and connected to a L298 board. Is it my VI problem?
    Attachments:
    Movement Control Key control5.vi ‏70 KB

    1. Basically, i just remove it?
    2. The limit switch is wired like a (pull up resistor concept) and connected to other digital port in arduino. It sends signal into interupt the motor movement.
    case '1': //if the controller type f
    Serial.println("forward");
    if (switch1 == HIGH)
    digitalWrite(en1,HIGH);
    digitalWrite(en2,HIGH);
    digitalWrite(en1o2,HIGH);
    digitalWrite(en2o2,HIGH);
    digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
    digitalWrite(in3,LOW);
    digitalWrite(in4,LOW);
    digitalWrite(in1o2,LOW);
    digitalWrite(in2o2,LOW);
    digitalWrite(in3o2,LOW);
    digitalWrite(in4o2,LOW);
    //delay (500);
    3. The motor is control via wireless; controlled from labview which i assign the key 1,2,3,4

  • How to realize More channels 4-20mA current loop output

    Dear Sirs,
    I have a question,we have a 4-20mA input,4-20mA out,24V power product,but my client need two 4-20ma output at the same time ,and on a broad.pls someone tell me the circuit.Thanks.
    Cheers!
    Candy
    Solved!
    Go to Solution.

    Hi,
       With an analogue data transmitter module from TURCK you can solve your application.
       Take two IM31-11-i modules from TURCK. Connect the 4-20mA output of the 1st module,
    to the 2nd module, so you feed the current trough both modules. Then your original 4-20mA
    is found at the output of both module 1 and 2.
       Here is the TURCK Website:  http://www.turck.de/en/
    http://www.industrial-automation-hands-on.com/
    Message Edited by frank_h on 10-29-2008 07:49 AM
    http://www.industrial-automation-hands-on.com/

  • NI USB 6216 max current in output

    Hello everybody,
    Please someone could tell me what is the maximum current the NI USB-6216 can supply in output. I found a value of +/- 2 mA for current drive in the datasheet, is this value correspond to the data I'm looking for ?
    Thank you in advance

    Yes, the 6216 can source up to 2mA max per channel, and up to a total of 4mA for all channels.
    Dan

  • How do I read the current digital output?

    Im using LV 7.1 to control a stepper motor (direction only) using user defined set points that are measured by a linear encoder.
    Basically I want to make it bounce between two set points by switching the motor direction. I can do the outer bounds fine, but to tell LV which direction it should go in between I want to just have it look at the digital output that I am sending to the motor and just continue to send that same signal. I know that it is on port 7 line 0 of my card, I just haven't figured out yet how to grab that information. Any ideas?
    Thanks.

    What boards are you using for this?

  • Limit output max and min highlights and shadows via curves or levels or?

    Would like to be able to set a max and min output, say 252 RGB / 2 RGB so
    that no value outputs outside that range no matter what. Can do this in ACR
    with adjusting the endpoints of the curves, but this isn't available in LR.
    Using recovery to really pull down the highlights helps, but doesn't
    guarantee no clipping and affects a wider range of tones than just the
    endpoints.

    That sounds like the cpu overheat alarm. Your cpu may be overheating.  Clean all dirt/dust from the cpu heatsinf using canned air.  Also clean out the power supply with the canned air.  Reseat the hsf after cleaning all of the old thermal grease off it and the cpu.  Reapply a thin coating of new grease on the die of the cpu and then reseat the has, making certain to put it back on the correct way.

  • Help wanting to limit output to 2 decimal places :O

    im trying to make it so i only output over 2 decimal places.
    here is my code. can someone tell me what to add? thank you mucho
    package javaapplication2;
    import java.util.*;
    import cs1.Keyboard;
    public class Main {
    public static void main(String[] args) {
    double Hours_Worked,
    Hourly_Wage,
    Total_Money;
    final double COMMISSION = 3.59 * .1;
    int noSoldFish;
    String UserName;
    System.out.println("Please enter the employee's name: ");
    UserName = Keyboard.readString();
    System.out.println("Please enter hours worked by employee: ");
    Hours_Worked = Keyboard.readDouble();
    System.out.println("Enter employee's hourly wage: $");
    Hourly_Wage = Keyboard.readDouble();
    System.out.println("Enter the number of fish sold by employee:");
    noSoldFish = Keyboard.readInt();
    Total_Money = Hours_Worked * Hourly_Wage + noSoldFish * COMMISSION;
    System.out.println("\n===========================================" +
    "\n Employee's Information" +
    "\n===========================================" +
    "\n" + UserName + " worked " + Hours_Worked + " hours this week" +
    "\n" + UserName + " makes $" + Hourly_Wage + " per hour." +
    "\nThe total salary and commission for "
    + UserName + " is $" + Total_Money);
    System.exit(0);
    }

    read up on, or search the forum on NumberFormat and in particular the factory method NumberFormat.getCurrencyInstance(); This is what you need here.

  • Strange USB Current Limit/Port Shutoffs With New Mini

    I just upgraded to a new Mini and put 2gig of RAM in it. Everything is great except.....I'm getting these bizarre "USB Over Current Notice" popups when trying to put a sixth plug into the USB tree. I've been through my equipment, it's not bad hardware(at least not a USB peripheral). I've tried eliminating one device after another, but I only seem to get the warning when plugging in a sixth plug(even just an iPod Shuffle dock). So it's as if my new Mini won't accept a sixth USB device. I would appreciate any help that folks have to offer.

    Plugged directly into the Mini are an iPod cable, a Miglia TVMax, and the cord for the powered USB Hub. Plugged into the hub(which is new and bought in response to the main issue here) is my keyboard(happy hacking lite 2), a logitech marbleman trackball and a creative xmod.
    I ran my mini only briefly before the RAM upgrade, and I had no issues at that time. Can RAM cause this kind of an issue with USB?

  • Run Button without execute the program

    Hi,
    Normally, when I am pressing the "run button", it will run the program. How do I prevent from executing the program until I want to enable? For example, I have 3 power supplies on my pxi box, and I don't want to run the program until I have all my value set: voltage, current limit, output function and etc...Then, I will press the button like (enable or set) to set a certain voltage at certain power supply. I am using Labview 8.6. Thank you.
    Solved!
    Go to Solution.

    Move the Set button outside that inner loop.  It should be inside the True case but not inside the inner loop.
    To run it again for another power supply, you need to control the outer loop with a separate stop button.  Remove the boolean constants from the True and False cases that are wired to the stop sign.  Wire the new stop button to the stop sign.  When you are done setting all power supplies, press the new stop button.
    If you know you will only be using two power supplies, you could replace the outer while loop with a For loop with a constant value of 2 wired to the N.  Then the loop will execute for the first power supply setting and then repeat for the next.
    - tbob
    Inventor of the WORM Global

Maybe you are looking for