Motion Assistant Contour Array Points - Optimal Array Size?

I am working with the NI Motion Assistant API and plyaing around with the Contour Move generation where I feed a set of X, Y target points to the Set Contour Move Properties.
One of the inputs is Profile Calculation Constraint - Array Size, Constraint Value (which would be the array size to use).
I am wondering if there is a way to calculate the "optimal" array size for any particular move?  I know I can have too few - can I have too many points in an array (being reasonable here and not planning to use the whole 2^32 size allowed).
Thanks.
Ryan Vallieu
Automation System Architect

Hi Ryan,
Unfortunately, I'm not so sure I have a good answer for you. I'll evaluate some of the pros and cons below and then ultimately make a recommendation:
Constraint Type: Array Size
Pros
You always have a fixed sized array of setpoints. If you are using a 73xx card, this simplifies setting up your contour buffer. It also avoids using a lot of memory.
Cons
For long moves, you could have a long time and large distance between position setpoints. The motion card will do a spline interpolation to smooth the move, but the splining algorithm is only so good.
If you are sending the contour setpoints to a motion card, you don't know the interval between setpoints (although this isn't difficult to obtain).
Constraint Type: Sampling Time
Pros
Regardless of the move, you always have a fixed time between setpoints. As long as your sampling time isn't too large, even fast moves should execute accurately.
Cons
For a long move, you could generate a lot of setpoints that consume a lot of memory.
Setting up contouring buffers can be trickier.
Conclusion
It depends on what you expect the end customer to be doing. I prefer using the sampling time constraint since it is more robust for fast, long moves (and still good for slow, short moves). It will make creating contour buffers more difficult, but there is an example (Two-Axis Smart Contouring.vi) that shows how to dynamically update the buffer. Ultimately, I think it is better to focus on accurate moves than minimizing memory consumption.
If you decide to go with the sampling time method, I would start with a constraint value of .01, since 10msec is the shortest interval when configuring a contour buffer. Try and generate some position profiles to see how big the arrays are. For optimizing, it is just a tradeoff between array size and the accuracy of the generated motion profile.
Thanks,
Paul B.
Motion Control R&D

Similar Messages

  • Array pointer in array

    Can anybody tell me how to create pointers in an array pointing to other arrays?

    RichL wrote:
    Hi tbob,
    thanks for your suggestion! I did build it up with three arrays and a numeric control to select one of the arrays, which works fine. However, there are the following effects which I don't understand yet.
    1. The RefArray can only be defined as Variant, showing a violet colour instead of a green/blue as in your example; I could not find a refnumber without giving me an error.
    2. By changing the array selector, following array elements are being written into: 1,1 of array0; 0,0 of array1 and 1,0 of array2. I don't see why it is different for each array. Is there a possibility to select the array element being written into?
    My VI is attached, LV7.1
    Kind regards
    Richard
    Strange, when I created my vi, the RefArray was blue-green, not a Variant.  On the front panel I placed a blank array.  Then I placed a Control Refnum into the array.  Now the array is defined as a Control Refnum Array, not a Variant.
    Attached is a vi similar to the picture I had previously attached.  In your case, you would need a slightly different method because of your unknown quantities of channels for each source.  The use would select a source, and then you would have to retrieve an array of channels for that source.  The user then selects a channel, and you would have to retrieve the data for that channel.
    Post what you have so far so that we can look at it.
    - tbob
    Inventor of the WORM Global
    Attachments:
    RefArray.vi ‏50 KB

  • Motion Assistant

    Hi,
    What is the defined behavior for Motion Assistant API contour mode
    (NIMASetMoveParams) when it receives duplicated XY points?
    For example, if I pass coordinates that define a square
    0,0
    10,0
    10,10
    0,10
    0,0
    this isn’t result in square because of the cubic spline. To force a discontinuity
    (C2 and C1) I can replicate two times each point.  For example:
    0,0
    10,0
    10,0
    10,0
    10,10
    10,10
    10,10
    This is valid in spline theory. What the API will do in this case?
    Thanks.

    Hi David,
    I tried to feed Motion Assistant with replicated data. Neither Motion Assistant
    application nor the API generates any kind of error. Based on the resulting
    shape (not a square, but something that resembles a drop) I think that the
    redundant data is being ignored.
    You said
    that after the acceleration, M.A. will keep the velocity constant. This is not
    always the case as I discussed in e-mail support “(Reference#7107453) Motion
    Assistant contouring behavior”. There are situations that the algorithm of the
    contour mode (or smart contouring feature) implemented in M.A. changes the
    velocity during the motion.
    Another different
    behavior is the M.A contour mode and the contour mode implemented in the PCI
    7344 is that the board doesn’t ignore redundant data as is stated by S. Arves
    S. in my post http://forums.ni.com/ni/board/message?board.id=240&message.id=3443#M3443
    It will be
    very helpful a detailed specification about the rules for the smart contouring implemented
    in M.A. and the contoured mode implemented in PCI 7344. I’m sure that this will
    help everyone do a better use of these products.
    Thanks.

  • Pointer of Array in die Middel of an Array

    i have a 30mb large Array of Byte A, i need 10Mb from this Array in an new one B.
    But a dont want to copy the Data.
    I want that in my prog: Array B is 10MB and start at Index x of array A.
    Is this possiple? or i have to copy it?
    thaks for help.
    CU
    Christian

    im sure that this works for me:
    i need it for:
    byte[] audioBytes;  //myArray
    line.write(audioBytes, b, byteCount); //SourceDataLine line = (SourceDataLine)AudioSystem.getLine(info);line.write want an Array no "virtual Array" ;-(
    Any idee?

  • Motion Assistant and PXI-7354 PWM output

    Hello,
    I have a PXI-7354 Motion Controller in a PXI-1033 rack and I'm trying to prototype a product which has a digital motor controller IC, A3906 by Allegro. The IC is controlled with PWM signals by varying the duty cycle. Now, in the NI 7350 User Manual on page 5-17, it says that "These signals (PWM) are configured in software and are in no way associated with the PID servo control loop." My question is, can I programmatically associate the output of the control loop with a PWM output duty cycle?
    I'm new to Motion Assistant and PXI motion controllers and I appreciate any input.
    Regards,
    Miika Lönnqvist
    Electronics designer, CLAD
    Biohit Oyj R&D

    Miika,
    thank you for the information, but there is no way for the 7354 to drive control signals directly in this fashion. So here are some alternative approaches that could help:
    The 7354 outputs a +/- 10 V control signal. You could build your own circuitry to adapt this signal to the control input requirements of your drive (two voltage to PWM converters; one driven by positive voltage values, the other one driven by negative voltage values).
    Replace the 7354 with an R-Series board. The FPGA on these devices can be programmed graphically with LabVIEW FPGA and it provides both, real-time control and complete flexibility in terms of I/O mapping and control algorithms. Motion control with special requirements is a typcial usecase for these devices.
    You can select from a variety of R-Series boards with different FPGA sizes and I/O setups. If you don't need any analog inputs or outputs, the reasonable lowest cost entry point for your application is probably a PXI-7811R
    Both approaches add some complexity to your current setup. While the first approach is hardware centric, the second approach adds some complexity on the software side. My personal preference is option two, as this provides the highest level of flexibility, which is typically very desirable for a prototyping system.
    In any case I recommend to contact your local NI contact for a more detailed consulting.
    Kind regards,
    Jochen

  • Motion Assistant - Generating Sinusoidal Velocity Profile

    Hi,
    I am currently working on a project where I need to create a sinusoidal velocity program for the pump that I am controlling. It is believed that the person previously working on the project used a LabVIEW VI to generate an XML file to control the pump's velocity. Do you have any idea what VI in the motion suite would be able to do this?
    Alternatively, is there an easy way to create the sinusoidal velocity profile using an EXCEL spreadsheet? And would it be better to use a position profile or a position-velocity-time profile in Motion Assistant?
    Thanks!

    Hi UW-AC-1,
    There is no VI in our Motion drivers that will allow you to do this. However, it sounds like the previous person may have generated an array and then used a Write to XML File.VI (this can be found under Programming->File I/O->XML->LabVIEW Schema). 
    From your post, it sounds like you may want to use a position-velocity-time profile in Motion Assistant. We have some examples of how to do this as well as a Discussion Forum here that discusses where these profiles are located. Hope this helps!
    Mychal F
    Applications Engineer
    National Instruments

  • Motion Assistant - Generating Sinusoidal Velocity Profile Options

    Hi,
    I am currently working on a project where I need to create a sinusoidal velocity program for the pump that I am controlling. It is believed that the person previously working on the project used a LabVIEW VI to generate an XML file to control the pump's velocity. Do you have any idea what VI in the motion suite would be able to do this?
    Alternatively, is there an easy way to create the sinusoidal velocity profile using an EXCEL spreadsheet? And would it be better to use a position profile or a position-velocity-time profile in Motion Assistant?
    Thanks!

    Hi UW-AC-1,
    There is no VI in our Motion drivers that will allow you to do this. However, it sounds like the previous person may have generated an array and then used a Write to XML File.VI (this can be found under Programming->File I/O->XML->LabVIEW Schema). 
    From your post, it sounds like you may want to use a position-velocity-time profile in Motion Assistant. We have some examples of how to do this as well as a Discussion Forum here that discusses where these profiles are located. Hope this helps!
    Mychal F
    Applications Engineer
    National Instruments

  • Motion Assistant 1.2 move constraints issue

    Hello,
    I have a contoured motion profile that I want to run using Motion Assistant 1.2 but I don't want to apply move constraints. So I have loaded my data points into a contoured move step and checked "Do not apply move constraints to the curve" option. But even with option enabled, Motion Assistant is applying the values of the Move Constraint tab.
    I'm used to this on a previous version of Motion Assistant.
    Is there an additional step in this version or is bug ?
    Thanks.

    Hello,
    I have a contoured motion profile that I want to run using Motion Assistant 1.2 but I don't want to apply move constraints. So I have loaded my data points into a contoured move step and checked "Do not apply move constraints to the curve" option. But even with option enabled, Motion Assistant is applying the values of the Move Constraint tab.
    I'm used to this on a previous version of Motion Assistant.
    Is there an additional step in this version or is bug ?
    Thanks.

  • Motion Assistant 1.3

    Hello,
    Recently I
    upgraded to NI-Motion 7.4 and Motion Assistant 1.3. After that I recompiled my
    Visual C++ application. My application uses Motion Assistant API to interpolate
    the coordinates for contour mode. After the upgrade, the Windows process of my
    application is no longer terminated after I close the application. This happens
    in release and debug versions and even while debugging the application using Visual
    C++. And it only happens if my application initializes the Motion Assistant API
    (NIMAOpenMoveHandle function). I’m calling NIMACloseMoveHandle at
    application exit.
     Thanks.

    Hi Optimist251,
    Trying your moveset in Motion Assistant 2013 I get an error stating that the maximum travel time for the given move has been exceeded. The only way to increase the amount of points is to increase the velocity as this will reduce the travel time of the move. If this is not feasible for your application, you may need to make discrete steps for your CNC machine.
    Paolo F.
    National Instruments
    Applications Engineer

  • Motion assistant msvcr90.dl​l

    I was trying to run an EXE that I built that uses Motion Assistant to build contour profiles.  I was able to run this last week without this problem occuring:
    I am getting an access violation from LV 11.0 when it is trying to use MSVCR90.dll
    I have never seen this issue whent using NI Motion or boards before.  When I went to reboot Windows 7 (64) wanted to do an update install.
    I am running LabVIEW 2011 SP1 I believe.
    Anyone know what could be causing this?
    Upon reboot I will try again and see what the Windows update installed.
    Ryan Vallieu
    Automation System Architect

    Hi Ryan,
    I'm not sure what might be causing this, but here are a few steps we can take to identify the underlying issue:
    1) Is LabVIEW generating a crash log file when the access violation occurs? If so can you post it here?
    2) What version of NI-Motion is referenced by the EXE?
    3) MSVCR90.dll does not appear to be related to NI-Motion. Is the EXE performing any other notable functions? Particularly in calling external code?
    4) Was the EXE built on a 64 bit system? Does the same error occur on the development (or any other system)?
    Sorry for the long list of questions, but hopefully they will help us narrow down the cause of the crash.

  • Motion assistant labview

    hi
    I have to control a motor speed using the PcI 7342 controller.
    I have MID 7654/7652 servo motor drive and NI motion assistant.
    MY hardware connections are proper.
    I am using motion assistant to generate a arc move and then generating labview code .
    I have inserted just a knob in the front panel to control the speed and made a slight modification in the block diagram to insert the knob in the place of velocity.
    Now i am not able to stop the motor .
    Can anyone help me to insert a stop button in the labview diagram.
    Should i use configure inhibit output flex or just use the stop button in flex motion.?
    i have attached the labview diagram....
    Pls help me.
    thanking you
    sumitha ravindran
    Attachments:
    labvie diagram.vi ‏49 KB

    Hello Sumitha,
    The code generated by Motion Assistant is designed to run the arc move once and stop at the end of the move. The Arc Move step of the LabVIEW diagram is setup to wait until the move completes before stopping. There should be no need to add a stop button (or the Stop Motion VI) if the motor is configured properly. If this is the case, you should see the VI hanging in the Arc Move step. Is this what you see? Can you perform a straight line (point-to-point) move?
    I noticed that you have another similar discussion forum post here. You most likely will need to solve the motor configuration issue first (which may also solve this issue).
    Best Regards,
    Jesse D.
    Applications Engineering
    National Instruments

  • Array of String Arrays

    How do I make an array of String Arrays, not knowing how big the array will be
    or how big any of the arrays it contains will be at the time I create it?

    The size of an array is not dynamic, i.e. if you use an array, you must know its size at the time you create it.
    Use one of the collection classes (like java.util.Vector or one of the implementation classes of java.util.List).
    regards
    Jesper

  • Loop in motion assistant specified number of times?

    I was wondering if in motion assistant I can do a loop in my script so that each movement can be repeated many, many times without having to create a new 'step' for each movement? Any help is appreciated.
    Thanks,
    Nichole

    Nichole,
    Motion Assistant does not currently support loops in its environment. What I recommend is that you create your steps with just one pass and then add the loop in the code Motion Assistant generates.
    Rodger S.

  • Motion assistant: Cannot convert to Labview diagram

    Hello,
    I would like to ask for help on problem:  the file generation from Motion assistant to Labview
    Background:
    1.  Use Motion assistant to generate 2 or 3 steps of motion.
    2.  Inside Motion assistant, Use Tools>>Generate Code>>LabView Diagram.
    Result:
    After I doing this, the LabView file is generated.  But, it is a file containing a few control switch (without any other key components to produce the motion control function).
    Thus, what is the problem behind?   
    Thanks
    James

    Good morning James,
    This post appears to be a duplicate of the following thread:
    http://forums.ni.com/ni/board/message?board.id=240&message.id=3878
    Please refer to this thread for the solution.  If am incorrect, please post back and I will do my best to answer your questions.
    Respectfully,
    Jeffrey P.
    LabVIEW Product Management
    National Instruments

  • Motion assistant: Cannot convert to LabView file

    Hello,
    I would like to ask for help on problem:  the file generation from Motion assistant to Labview
    Background:
    1.  Use Motion assistant to generate 2 or 3 steps of motion.
    2.  Save it.
    3.  Inside Motion assistant, Use Tools>>Generate Code>>LabView Diagram.
    Result:
    After I doing this, the LabView file is generated.  But, it is a file containing a few control switch (without any other key components to produce the motion control function).
    Thus, what is the problem behind?   
    Thanks
    James

    Dear Jochen,
    I had tried what you said.
    1.
    Treat read-only VI as locked              :  uncheck
    Enable window explorer for LLB file  :  check 
    Note: basically, I have reset the machine after set the options
    2.
    Uninstall Ni-motion ->  no-reboot -> install again
    After I have do this steps individually,  Nothing has corrected.
    What is the problem then?
    Regards,
    James 
    Note:
    Attached please find the Motion assistant source file for your reference
    Attachments:
    Motion-Part2b.vi ‏9 KB

Maybe you are looking for

  • How to write messages into system log(sm21) using c_write_syslog_entry

    Hi, May i know how to write my application messages into system log(sm21) using "c_write_syslog_entry". Any explanation regarding the Type. ID, Data will be useful with examples. Incase of any other FM's or C functions does the same Please let me kno

  • Squish effect question

    I have a squish effect on my site. Is it possible to make the effect while I load a site, so that the box is getting visible when the site load? I know I can do this: <body onClick="Spry.Effect.Squish('product_box');"> But then the box disapear when

  • Reading a GPG keyring using BouncyCastle OpenPGP

    Has anyone successfully used the BouncyCastle OpenPGP library to read a public keyring? Here's my attempt:     File publicKeyFile = new File(System.getProperty("user.home"), ".gnupg/pubring.gpg");     Security.addProvider(new BouncyCastleProvider());

  • Safari crashes on opening as does Firefox and others

    Can't get any programs online, here's the message from Safari: Date/Time: 2007-01-04 12:11:53.546 -0400 OS Version: 10.4.5 (Build 8H14) Report Version: 4 Command: Safari Path: /Applications/Safari.app/Contents/MacOS/Safari Parent: WindowServer [67] V

  • CreateChildSymbol in a Symbol

    Hello, ive just stareted learning edge animate. i want to do a simple thing ( which would be for me in actionscript ) but in edge animate seems not. I just want to create a childsymbol dynamically and put it into a symbol which already exists in a sy