PWM PID loop on 7344 motion controller

I need to control motion by PWM, with the help of 7344 motion controller.Please verify if it possible or not, and how can I do it.Please provide me(if it possible)any example of solution of this problem.

Hello,
The onboard PID circuitry can only be utilized with servos and closed loop steppers. You can write your own PID loop in software using the PWM functions and the Read Encoder Position.flx. This should work pretty well for low loop rates (since it's implemented in sw). I don't think there are any examples of it available but it should be pretty straight forward.
Regards,
Yusuf C.
Applications Engineering
National Instruments

Similar Messages

  • Problems with a PCI-7344 motion controller

    Hi all,
    I've run into a weird problem with a NI PCI-7344 motion controller, where I
    have a program that provides the motion control for my program that works
    reasonably well, but when I make minor changes gets motion errors. The changes
    are not specifically to the motion parts, just changing a couple of globals
    that provide communication with another part of the program (and another piece
    of hardware). The errors I get indicate that I am trying to enable limits
    switches at the wrong time in my program. I will add that I do not get any
    errors when I go through the program in debug mode
    Tnx,
    P.W.Monroe

    The portion of my program that gets the errors uses the "Flexmotion" Find Home
    and Find Index routines, which are built into the 7344 controller. In the
    exampes for using these VIs, they are followed by a loop that has a VI that
    monitors the status of these VIs for completion, both move complete and Home or
    Index Found. The globals that I mentioned are being used to terminate the loops
    if an error condition occurs elsewhere, and do not cause the program to do
    anything other than terminate looking at the status and then go into a wait
    loop. It crashes when it goes into the loop when I substitute a different
    global, which is baffling to me, as they aren't triggering something that would
    result in a race condition.

  • PCI-7344 motion controller encoder reset problem

    I'm using a PCI-7344 motion controller for my application. I'm currently working on simple display of position and velocity using an encoder. I am able to read the encoder pulser, but I am unable to reset it. I want the encoder pulses to be display continously till I press a reset button on the screen. After pressing the reset button on the front panel, the encoder count should become zero and start counting again till I press stop button. Kindly give me a simple example of encoder reset using push button. Thanks.
    Regards,
    Giridhar Rajan
    Cruiser Controls
    Mumbai, India

    This should do what you are looking for.  I am not at the computer that has a motion controller card in it, so I have not tested it. 
    It resets the encoders for Axis 1 and Axis 2.  Unless you have a different configuration for encoders and axes, it should work.
    Hope that this helps,
    Bob
    Bob Young - Test Engineer - Lapsed Certified LabVIEW Developer
    DISTek Integration, Inc. - NI Alliance Member
    mailto:[email protected]
    Attachments:
    Reset encoders.vi ‏66 KB

  • PXI 7344 motion controller as a DAQ device for ELVIS

    Hi,
    Is there a way to reconfigure a PXI-7344 motion controller with its two 68-pin connectors so as to use it as a DAQ device that would receive the signals from a NI ELVIS workstation. The 7344 has a "motion I/O connector" and a "digital I/O connector". Analog outputs are even possible if I remember well, as well as digital.
    Thanks

    Hello,
    The card does has some analog input and outputs. I would check the manual here: http://www.ni.com/pdf/manuals/370838b.pdf. The DAQmx API with a DAQ card is going to be much better than interfacing with a motion card, but you should be able to read off it at the least.
    Rahul B.
    Applications Engineer
    National Instruments

  • I want to use the Function Generator VI to send command signals through the NI 7344 motion controller. This will be a closed loop servo valve system. I want to be able to change from say a square wave to a sine wave on the fly. Idea's?

    I am going to run tests that require an actuator to move using various types of arbitrary waveforms such as sine or square. The NI 7344 is hooked to the UMI that is going through a driver for a servo valve. The loop is analog and it is closed. I have played with some of the examples but can't get it to work. I have used the function generator VI to generate a signal but I think I am using the wrong input VI to the motion control board. When I use what I have it moves the servo and then stops. It doesn't continually generate the signal.
    I would love to use the controls on the function generator vi to control frequency and amplitude ect. Any help or pointer would be helpful. Thank you in advance.

    Hello,
    I'm not clear on exactly how you want to use the generated data but I'm assuming they will be used as your target points.
    There's a built-in example for motion called 'One-Axis Contour Move.vi'. This example demonstrates how to provide your target points as 1-D array. All you need to do is to replace the input array with the output of the function generator. In order to have it run continuously, use a while loop. You can further program your application so that it'll change the waveform on the fly by monitoring the user interface but this might be little little tricky as you will need to reset the move and load the new generated points while keeping track of your current position.
    I hope this helps. Let me know if you have further questions regarding this
    application.
    Best regards,
    Yusuf C.
    Applications Engineering
    National Instruments

  • Id like to be able to initialize my 7344 Motion Controller card from within Labview and not through motion and automation explorer

    Every time I boot my PC , I have to reinitialize my 7344 through Motion and Automation Explorer  in order for it to work. Does anyone have any suggestions as to how to initialize it from within labview itself?
    thanks

    Hi,
    I am sending you a Vi for initializing the controller.The only thing you have to do is that you need to use sequence structure. In the first sequence you need to use the VI which is attached i.e 0 (default). Then the next sequence will be the program itself.
    So that as soon as you run your vi the first thing done will be initialising controller using LabVIEW. Then your program will run.
    Here the led in the front panel will glow green only the first time you are initializing.The next time it will be dim but no doubt your initializing will be taking place.Hope this vi solves your problem.
    Thxs
    Manish Karnik
    Application Engineer
    Cruiser Controls
    Mumbai, India. 
    Attachments:
    Initializing controller.vi ‏42 KB

  • Motion controller card need to program PWM or not?

    I just want to know about motion controller card (coz may be i will use it)
    First, Motion controller card need to program PWM for drive DC motor or not? (If I want to control the dc motor by PWM signals!)
    Second, If my motor have encoder (increment) the motion controller card can be read the position or speed directly or not?
    Third, Normally motion controller card need Labview for programming or not?
    Lastly, Please, could someone give me some example programming or .vi for basic closed-loop dc servo motor ?

    bkk,
    here are the answers you are looking for
    Motion Control boards like the PCI-7344 generate a +/-10 V signal to control DC axes. As they can't provide enough power to drive a motor directly an external power amplifier like the MID-7654 or a 3rd party drive with a +/- 10 V command input is necessary. Typically these power drives generate  PWM power signals for the motors.
    All NI motion control boards provide inputs for quadrature encoder feedback (position and velocity).
    The NI-Motion driver provides a well documented API for LabVIEW, C and other programming languages.
    After installing the NI-Motion driver you will find lots of example programs for LabVIEW and C that demonstrate every aspect of the boards' functionality. NI motion controllers run the control loop in hardware so the examples will work for both, closed loop and open loop (stepper motor) applications.
    I hope that helps,
    Jochen Klier
    National Instruments Germany

  • Dual loop operation using PCI7344 motion controller

    I am using PCI7344 to control servo motor. Primary feedback to the controller comes from the motor encoder. Secondary feedback from the torque transducer is given to the ADC input. The motion controller is set to operate in absolute position mode with velocity, acceleration, Deceleration, target position values appropriately set. I expect the trajectory position to change automatically based on the torque feedback from the torque transducer. Is my assumption correct? I have referred the NI-Motion user manual, 7344 hardware manuals with out success. Any suggesions? Thanks in advance.

    In order to perform torque control using the NI-Motion Controller, you need to use the torque sensor feedback as the primary feedback. So in the axis configuration, the ADC where your sensor is configured must be set to primary feedback. You can then use the encoder feedback to work as a secondary (velocity feedback) device. Because torque does not behave in a linear fashion like position does, you will need to have several tuning schemes and apply a gain scheduling algorithm in order to properly tune the motor to maintain torque at any point of the trajectory. You can then use the read encoder function to read the ecoder position at any torque during the movement. Your setpoint and target position in the 1-d interactive will now be in ADC bit values. The 7344 contr
    oller has 12 bit ADC's which means that for a sensor with a +/- 10 volt range, you will have 20/2^12 = 4096 bit counts of movement range. This means that + 10 volts will be represented as ~ 2048 and -10 volts will be ~ -2048 and so on. Keep in mind that the ADC's on the 7344 are not calibrated so you might have a little bit of discrepancy with these numbers though youn will always get the full range of the ADC.

  • Has anyone modeled the RABBIT SE3MICONDU​CTOR RCM3200 PID loop in labview ?

    I am considering buying labview for data aquisition and servomotor tuning. In order to use the tuning functionality of Labview, I believe I need a "VI" model of my motion controller PID loop. We are currently using the RABBIT SEMICONDUCTOR RCM3200 for this task in our OEM industrial equipment. Does anyone have any experience with this product and/or modeled it in Labview?

    Hi Ted,
    Thanks for using our discussion forums. What you are trying to do is probably something you can accomplish with our hardware and software. What you might try, first of all, is a servo motor board like the PCI-7344. When you install the drivers with this board, there will be a tuning utility automatically installed into the Measurement and Automation Explorer utility. This will allow you to "auto tune" with our built in algorithm or also manually tune the PID parameters.
    We also have built in VIs for servo driving as well. If you need to use a custom algorithm, however, other than PID, you may consider looking into our SoftMotion development module for LabVIEW. Let us know a little more about what exactly it is you are trying to do and we should better be able to suit your needs.
    Happy Holidays!
    Dan Q
    Applications Engineer
    National Instruments

  • Optimum servo pid loop rate

    Hi,
    I want some confirmation on the optimum pid loop rate and the fastest servo motor operation that we can acheive with Pxi-7352 running on Window.
    The manual of 7352 says "62 μs PID loop update rate for up to 2 axes". The requirment is to acheive periodic equi sized straight line and rotary motion ( using yaskawa servo motors in torque mode and 7352 to close position loop ) Both motion are independant and not operating simultaneous i.e rotary completes one full rotation in small steps and then linear moves by one small step then rotary completes next rotation in small steps and again linear motor moves this continues till end of test.
    you can observe here that both rotary and liner motion are periodic and move equi spaced distance for each step with small stoppage/dwell time of 500 u sec , The catch is in addition to positional accuracy in terms of 50 -100 microns the time for complete each step is also very crucial and very small (many peridoc steps together consitute complete linear and rotary motion). Find expected velocity profile attached for more details on desired timing.
    As the motors have simple and periodic straight line and rotary motion i suppose buffered contour moves are not needed which have limitation of 10 msec between two points, then can the time to acheive each step be as low as 2.5 to 5 msec considering best loop rate of 62.5 u sec and highest/worst pid loop rate of 500 usec.
    1. Is the expected timing of 2.5 - 5 m sec feasible assuming that the motor is capable of reaching 5000 rpm which is well above desired speed.
    2. 735x series being high performance motion controller what is the order of closed loop timing that we can expect for simple and periodic moves (say in order of 1000 usec or 10 msec)
    3. Can i interface one stepper motor and another servo motor where both the motors and drives are in position mode on single 7352 and UMI 7772.
    4. Are there any limitation if NI motion is not used for code development and NI motion Assistant along with LabVIEW is used instead.
    This is precision application and the component is very small ,the weight of the component would be less than 400 grams so i hope we do not have to consider inertial affect on motion significantly.
    Appriciate if some one with similar experience can provide more details.
    Regards,
    Bipin
    Solved!
    Go to Solution.
    Attachments:
    Velocity Profile.png ‏21 KB

    Hi Bipin,
    thank you for your comprehensive post. I had a close look at your timing specs and I strongly doubt, that these specs can be met with a 7352 board. Even though the PID loop rate of 62.5µs might be enough, both trajectory generator and the supervisory control (host communication, move command sequencing,...) are too slow to meet your requirements. Please note, that the trajectory generator always works with a timing interval of 10 ms, regardless of the operation mode (linear move, contouring, blending,...), so there is no way to reach your timing specs with this product. In general contouring is the fastest way to run a quick succession of moves, as it doesn't require host communication (by the way: onboard programs don't execute much faster, than programs that are running on the host).
    I don't want to make negative mareketing for our 735x boards, but your timing requirements are just way beyond the requirements of typical motion control applications and it's probably quite hard to find any COTS product in the market, that can meet these specs. 
    With this said, I would like to offer you an alternative solution, that is based on NI's FPGA technology. Additionally to a faster trajectory generator a faster control loop is probably also very desireable for your application. Even with the lowest price Virtex-II based R-Series multifunction board (PCI-7830R) you can run PID loops with 5µs cycle time and the trajectory generator at the same rate. You even can use a different type of control algorithm if required. This technology is leveraged very successfull in a lot of applications with very high performance and accuracy requirements (here are some examples).
    So these are the pros, but where are the cons? Well, the R-Series boards are general purpose FPGA boards and not ready to run motion control boards, so you need to develop the low-level control application by yourself. The good news here is, that it can all be done graphically in LabVIEW and that there are many ready to run examples for motion control, that can be used as a base for your development. Additionally you may want to have a look at the NI SoftMotion Development Module for LabVIEW, that simplifies the development of motion control applications, but it is not a mandatory tool and the benefits of this module might not be as high for your application, as ithey are for more standard motion control applications.
    I hope that helps.
    Kind regards,
    Jochen Klier
    National Instruments

  • How many PID loops could I run on cRIO RT?

    Hi,
    I am trying to create a temperature process controller. I have 3 RS232-enabled OMEGA mass flow controllers, 12 thermocouples, 6 heaters (that will be connected in sets of two), and 3 PWM-enabled fan banks.
    My thinking is that I would connect the heaters in parallel to a phase-angle-fired SSR (http://www.chromalox.com/catalog/resources/PDS-PK308-SSR.pdf). That way, I could use a 0-20 mA output signal from the cRIO to control the power appplied to the heaters. I would use PID, and scale the output of the PID to a 0-20 mA signal to control the process temperature. I also want cascade control - I want to have 2 additional thermocouples that are connected to the PID loop acting as limit sensors. If the temperature limit is exceeded in either thermocouple, the PID loop is "turned off" until reset by a user. I would want three of these configurations (2 heaters, 3 thermocouples, 1 SSR - x3, so 6 heaters, 9 thermocouples, 3 SSRs).
    Rather than control the PWM fans with a PWM output directly from the cRIO (which I heard can be painful) I found a PWM controller that is controlled by a 0-5VDC signal. I wanted to use a thermocouple as a process value, and the 0-5VDC signal would scale to control the fans to achieve the desired temperature. I would want three of these configurations (1 fan bank, 1 thermocouple - x3, so 3 fan banks, 3 thermocouples).
    So now, my REAL question - Would one cRIO chassis be able to control these 6 PID loops AND my OMEGA mass flow controllers? I'm just unsure of the processing power that is required of PID/limit control.
    I appreciate any help I get - If need any more specifics, please let me know!
    Thanks!

    Just to follow up - I have no problem using FPGA as well, if leveraging both the RT and FPGA systems will allow me to achieve my goal. I have heard, though, that FPGA is only good if you are only maintaining one set point for the PID loops. My fan bank PID loops will keep a constant set-point, however my heater bank PID loops will require constant changing (the heaters will be used to create a cycle that maintains one temperature for 60 mins, than goes to a different temperature for another 60 minutes, and repeats).

  • PID loop rate with counters

    I'm trying to use a PXI-8106 RT and LabviewRT 8.5 as a PID controller to control 3 motors.  I'm measuring the speed of the motors by measuring the frequency of the encoder with a 6608.
    This article http://zone.ni.com/devzone/cda/tut/p/id/5423 claims a speed up to 107.5 khz.  I've set ethernet to polling and usb off, I didn't turn off  the CPU display, but I'll try that as soon as I can. However, I'm not anywhere close to 107khz, best I can get is about 10khz with one channel and about 2 khz with 3 channels.  I realize the tests were done with analog inputs, but I was hoping that  I'd get at least somewhere close using counters. With the 2Khz rate I really can't do what I need to do.
    Does anyone know what a realistic rate would be with this setup?
    I'm new at Labview so I may be doing something wrong, although I can't see what it could be. I've done quite a bit of research on the forums before I started to learn from other's examples.
    Here's a couple of things I've learned  trying to optimize my loops.
    Seems like Daqmx has some issues with applying a scale.  I have 2 scales, one is just a scale factor, 0.166, the other is .0002.  When applying the .0002 factor in Daqmx my performance takes  a huge hit, something like 10%!  If I just leave it at hz, and do the scaling myself I see no performance penalty.
    There is something strange about the timed loop % display in RT8.5, I wrote my own routine using expected end, actual end time, and the period to give me a % loop useage and it matches very well to the RT8.5 display for most of the time, however, when the loop starts missing iterations because I've gone over 100% the RT display drops down to about 50% which pretty much makes it useless.
    I've attached a couple of shots of my test loop. I can get this one to almost hit 10 khz. the other screen shots are of how I set up the counter, and how I read the counter. the read counter has the error trap to restart itself.  Also I set it to use DMA explicitly somewhere else in the program.
    Thanks for any help.
    Henri
    Attachments:
    Main Loop.JPG ‏55 KB
    Setup Counter.JPG ‏72 KB
    Read Counter.JPG ‏67 KB

    Devin,
    Thanks for the suggestions.
    A couple of related questions for you.
    The 200 uSec is leftover from my attempts at getting the 3 PID loops to work within the loop availability.  I can run  about 70 uSec i.e about 14khz  with only  a single counter.
    I've tried changing the buffers value and it has barely any effect on the speed of the loop. Right now I have 3 counters running with 200uSec timing and I get about 69% loop utilization. With a few missed iterations every once in a while. This is using 10000 samples, if I drop down to 100 samples utilization actually goes up to 70%!?  Doesn't make sense to me either, but this is using both my VI and the on screen Timed Structures % of LV8.5RT so I'm trusting it as real,
    In theory if I can get my loop rate up to 10 khz I'll only need 10 for the buffers since my top frequency to be measured is 100 kHz.
    Funny thing on the RT fifo variable... I turned on FIFO and it actually decreased performance by about 1%, both Total load and Time structures went up... so I turned it off for stop-RT, and got a 3% improvement! Down to 66% time structures.
    You mentioned the hardware timing to get a hardware timed single point. Unless I misunderstood the counters, this isn't possible since the sample rate is implicit in the frequency measured? i.e. it latches the count every rising edge.. so I'm my case I'd get a 100 khz sample rate (although obviouslyl that would be the max) Can you let me know if I've missed something there.
    I bought this system explicitly based on its dual core and its high speed so I could close my PID loops quickly enough with one CPU and still have processing time left over to log data, etc.  And the 6608 card is there so I can get high accuracy for my frequency measurements.   However, I'm really struggling to get this thing going.
    Any help would be greatly appreciated.
    Thanks
    Henri

  • MS Office report for servo motion controller

    Dear all,
    Good day,
    My application is servo motion controller where I will choose profile from tab deliminated text file.
    Attached VI working fine and I would like to add more features like MS office report where report will be generate after completion of all cycles automatically with data points and graphs. For that I am not sure where to add this function "MS Office report".
    Please help me on this. If you need any further information I'll provide.
    Attachments:
    1-Axis Motion controler_M1.vi ‏151 KB
    5steps test.txt ‏2 KB

    Tried with while loop, and "REPORT" button in front panel as loop condition but not working out well required..

  • Digital PID Loop Output from MV?

    I'm setting up a PID loop with a digital output. It's a heating pad (which heats up pretty quickly). I've been looking for a good example of PID loops with digital outputs and haven't really found much. It seems like I just need to find a way to turn a 0-100% value into a binary value which turns on and off rapidly.
    I made a simple little VI which I would attach to the output (MV) of the PID loops (standard). I just wondered if anyone could let me know if this is good enough? Is there a level of complexity I haven't thought of yet?
    Attachments:
    Digital PID Output.png ‏21 KB

    Are you looking for a PWM digital output?  If so, this thread might be useful.  It uses a USB-6008 for the digital ouput so it should work with any NI-DAQ device with a digtial output.  There are better ways of doing PWM with more capable devices but it's a start.
    ~Simon

  • Gain scheduling using motion controller

    I have a motor controlled by motion controller.
    The control gains should be different depending on the range of operation, so I want to make a gain scheduling program. I just wonder whether there is any example or idea that I can refer to. I found PID toolset document in NI website. However, it seems like I have to buy if I want to "gain scheduling.vi" in the document. If I know how the vi created, it will help me a lot. If any other method that I can look at, please let me know. Thank you.

    All you have to do to perform gain scheduling in the motion controller is to select at which position you want your gains to change, and download the new gains on the fly when tha positionn is reached.I am attaching the following example vi that should help you achieve this.
    Attachments:
    PID_Control_Loop_Change[1].vi ‏72 KB

Maybe you are looking for