Positioning a linear stage incrementally

I found a driver that runs my ESP300 stages from Position 1 to Position 2. However, I need to move them incrementally in steps and have a time base for these movements. Is there a way I could use most of the same code from the driver but change the positioning method?
Attachments:
Drivers_ESP300.zip ‏1277 KB

I have made a handler that deals with this Newport controller and I run the motors from one position to the next and back to start again in several steps, and I didn't have to use too many commands to make this work. My program run the motors by absolute values (i.e. by first finding the home position and then moving to an absolute position) or by relative values.
I ended up with using only these commands to control the axes:
Read Actual Position
Get Axis Motion Status
Get Motor Status
Motors On
      Write to motor controllers (using compact command structure):
      Axis 1=1OL0.01;1OH0.05
      Axis 2=2OL0.01;2OH0.05
Move Home (Either by "Find Negative Limit Signal" or "Find +0 Position Count")
      Move Absolute
Move Relative
Motors Off
The Axis setup above shows only an example of what I needed to set. The manual explains the exact syntax to be used.
The difficult part of my program was not to control the motors, but to keep track of my desired end-positions and when to move back and stop.  Anyway, it seems you will come best out by using only relative movements in a loop.
There is one thing I discovered when investigating the controller and its software: You can program the controller to do most of the stepping and have LabVIEW to only start, monitor and maybe stop the motors. Maybe that would be an easier solution?
In any case it could be helpful to intall the ESP-Util program that's part of the software that ships with the controller. Along with the installation I think will also come the default setup-files for the controller axes in text-format. If not, you can use the ESP-Util to generate the text files containing the current setup for the axes. By reading the various settings in the files along with the commands in the manual you may get an idea of how the axes are currently configured and what parameters to maybe change.

Similar Messages

  • Stepper Motor with Linear Stage (Position Control and Data Acquisition)

    Hey All,
    So.. I've attached a stepper motor to a linear stage and so far it's working pretty well.  Using a stepper motor driver from Pololu, I've simplified the control of the motor by just using output pulses from the counter output of a PXI-6143.  I've tested the motor using the Pulse Train examples in LabVIEW and all is working well.  
    My goal now is to allow the user to collect data from a pressure sensor, attached to the linear stage, every X number of steps.  From what I can tell so far, and please correct me if I'm wrong, the motor step movement is synchronised with the pulse train input.  That is to say, if I give the motor a 200 step pulse train, the pulse train ouput is completed at the exact time the motor has moved 200 steps.  From this, I've created a VI that moves the motor X steps, aquires the data point, and then repeats this process for the required amount of data points.  The problem with this is that the motor movement is not continuous; it stops for a split second to take the data point.
    How can I have labview ouput a pulse train of say 1000 steps and record a data point every 50 steps?
    Two ideas that came to mind were:
    1. Use the counter input port on the card to count the pulses being sent to the motor.  
    2. Use an encoder connected to the motor shaft.
    I wanted to stay away from theses ideas though since they require resources from the DAQ card.  
    Thanks,
    Ryan

    Hi Ryan,
    Just to cover all the bases, what version of LabVIEW are you using and can you attach your VI? Initially your ideas sound like they should work, do you expect to be nearly maxing out the DAQ?
    Thank you,
    Deborah Y.
    LabVIEW Real-Time Product Marketing Manager
    Certified LabVIEW Architect
    National Instruments

  • Minimize the chattering of a linear stage driven by a voice coil actuator(V​CA)

    I have a linear stage driven by a voice coil actuator (VCA), a capacitive probe is used to measure the movement of the stage. A picture is attached to show the basic mechanical design of the stage. Even though the resolution of the VCA is 0.5 um, the overall resolution of the stage is not that good. When I use controllers to achieve position controller of the stage, the stage is always chattering around the set value. It can only achieve 5 um in open loop and around 10 um in PID control. Is there any method to improve the performance by modifying the controlling VI? 
    I am using NI 6363 to give voltage signal to a LAA amplifier and the amplifier will convert the voltage signal to current signal and drive the VCA. It seems that the output of the LAA amplifier is not constant and it is the LAA amplifier that generate those chattering. The command voltage given to the amplifier is extremely constant with error less than 2mv, which will cause only 0.5 um displacement of the stage by theory. Such kind of motion is similar to the resolution of the sensor but it is only 1/10 of the actual motion noise which is on the scale of 5 um.
    The stage has a natural frequency of 30 Hz, which is determined by the stiffness of the springs and the mass of the moving stage. When I use FFT to analysis the movement of the stage, I found that the main noise comes from 30 Hz and 50 Hz (both for open lood and close loop PID). I also use FFT to analysis the command voltage given to the VCA in close loop PID control, the peak frequencies are 10 Hz, 30 Hz, 40 Hz, 50 Hz, 70Hz, 90Hz....
    Do I need to use some filter between the amplifier and VCA so that it can reduce the noise without influence the accuracy? Or I can reduce such noise just by using some noise block in the VI program?
    Thanks
    best
    Attachments:
    VCA stage.png ‏160 KB
    FFT of Error motion with constant voltage_f1.jpg ‏1782 KB
    FFT_command voltage_PID_f1.jpg ‏444 KB

    Hi Paolo,
    It seem the influence from the magnetic field is not a big issue in the position control of a voice coil stage(VCS). I attached some picture of the commecial design of similar VCS and all these stages do not shield the cable connecting the VCA and controller. Anyway, I will try this method to see if it can make the result better.
    BTW, for the filter, could you please recommend some model for me? As the current noise is just around the level of 1 mA, I think I may need a very precise filter.
    Thanks
    best
    Attachments:
    vcs 1.jpg ‏49 KB
    vcs 2.jpg ‏54 KB
    vcs 3.jpg ‏22 KB

  • Looking for a motorized linear stage actuator to travel 4cm.

    Hello.  I am looking for a motoized linear stage or actuator and I want to use Labview to control the motion since I am comfortable with it, so I thought what better place to ask for help!
    I will need everything (motor, drive, cables, etc) since I have never done this before.  I am currently trying to find a motorized solution that will move horizontally 4cm, and will quickly stop and start ~50 times during the motion.  I have looked at several linear stages and actuators, and it looks like a stepper motor with open loop feedback will be best fit my needs since the position accuracy isn't much of concern.  Let me breifly describe some of the requirements: It needs to complete a 4cm total distance in only a few seconds (at least less than 5s but less is better), the position accuracy/resolution only needs to be 0.1mm, I would like to use  Labview to easily programically control the entire motion, the total cost (drive, motor, cables, etc.) should be low, the total load is only a few pounds, and it should have a small footprint.
    So far the best solution I have found is the Zaber motorized linear stage part number KT-L-SQ75D for $2,025.00  http://www.zaber.com/products/product_group.php?gr​oup=T-LSQ  An engineer from Zaber performed the following test: Each move distance was set at 0.8mm (total of 4cm). Using the fastest speed setting (595mm/s), the stage was able to complete the entire move sequence in about 2.75s.  So far this is the best I have been able to come up with by myself and I would greatly appreciate anyones advice on a better solution or their own experience with this product/company.  Thanks for your input.
    Kevin

    Hello again everyone.  I just wanted to provide an additional update to my last post.  I have also been talking with someone who suggested a Parker stepper driven lead screw stage, model:  Promech LP28 with 50mm travel with limit switches http://divapps.parker.com/divapps/emn/pdf/PROmech.​pdf.  The suggested that I could use the IMS MForce Microstepping Drive as the most economical drive solution http://www.imshome.com/products/mforce_microdrive_​mfi.html, or a galil driver.  It seems that the IMS doesn't have as much labview support (only a few VI's) http://www.imshome.com/support/mdrive/programs/MCo​de_LV_86.zip, but the Galil drivers seem to be very easy to use with labview http://www.galilmc.com/support/appnotes/software/n​ote4414.pdf.  I don't know how much the Parker Promech stage was quoted at $600, the IMS drive at $250, and I don't know what the Galil driver cost but I was told it is more, and ~350 for cables and a power supply.  
    The reason why I hesitate to use this is because it seems to not be in a single package like the Zaber product I mentioned in my last post, and I don't know if it will be as quick.  The engineer that is trying to sell the Parker stage said that it should be able to move 0.8mm in 0.08s, but how long would it take to make 50 consecutive 0.8mm movments?  Would it be 0.08s*50=4s?  Also even then it takes longer than the 2.75s than the Zaber product, so I wonder if it could move faster?  Anyone use this product to know the fastest it should be able to make this motion.  Also I am not very concerned with the stability when it is stopped and started, because even if it vibrates a few microns it shouldn't be a problem since my resolution/accuracy concerns are on the order of 0.1mm not microns.
    Thanks again for any other suggestions that would also work, or any first hand knowledge of any of these products would be greatly appreciated so I can decide which to purchase.
    Kevin 

  • Labview inconsistently crashes, Zaber T-LSM linear stages

    Hello All,
    I am trying to run 2 Zaber linear stages for a 24 hour period using the attached VI (relevant portion is the second while loop), but the VI has failed at various times after initiating the program. The longest they're run without interruption is 6.5 hours, but it often fails anywhere between less than 1 minute to over an hour. I've also gotten a blue screen immediately after clicking run on one occasion. When the VI fails, the run arrow at the top left of the screen is solid black, but whenever I click on pause or abort the program doesn't respond. The only way to get Labview running again is to close the program using task manager and restart the computer.  I'm thinking it might be an issue with the computer I'm using, but I'm not sure. Any advice would be greatly appreciated.
    Sincerely,
    Tom
    Attachments:
    cycle3.vi ‏40 KB

    Hi tseykora,
    Thanks for posting. I'm running a test here with your code on some Zaber devices to see if I can reproduce the issue. 
    A note on the other comments, for this application there is a purpose for the two-way 'Request' vi followed by a 'Read' vi. For Zaber devices, Device 0 is used to send the same command to all connected devices. The Request vi waits for the first response (after one axis completes it's movement) and the Read waits for the second response. An alternate way of handling it is to change the final '1' in the input clusters of the Requests to '2'. This input indicates how many responses are expected. 
    Waiting for these responses that come at the end of a movement allows the loop to pace itself; the commands are not being sent as quickly as possible in the main loop of your VI.
    The initial loop is not set up optimally though. As gregoyj noted the initialize should come before the loop, and the Move Absolute command only needs to be sent once.
    I've attached the slightly modified VI. These differences shouldn't have caused a crash as you were seeing though. I'll post again some time between 6 minutes and 24 hours from now.
    Mike McDonald
    [email protected]
    Applications Engineer
    Zaber Technologies 
    Attachments:
    cycle3.vi ‏38 KB

  • Linear stage and Labview SmartMotor driver

    I am seeking a solution of controlling a linera stage with Labview:
    Stroke ~ 18 inch
    Resolution ~ 0.1 mm
    Low price.
    Do you have any recommendation on HW and SW? We are evaluating Animatics SmartMotor. Do you have a Labview for it? How EASY to program it for a simple scan motion? Thanks.

    You are trying to complete a force feedback application in a non-deterministic system (Windows) which may or may not work well depending on your control timing requirements. 
    You will need to use the DAQmx driver to acquire signals from your X Series device continuously at a set sample rate. See the LabVIEW example finder for a ready made example of how to do this.
    The values you read will have to be compared to your desired setpoint like you mentioned.
    The output of this comparison should be used to control the movement of the actuator. The actuator you are using looks like it has a LabVIEW driver.
    You can set up the motion of the system in a few different ways. One way (probably better with a windows system)
    perform a small incremental move with the stage
    measure the load and compare to desired value
    perform another small incremental move, or hold current position depending on the feedback
    Another way:
    perform a slow continuous move while continuously monitoring your feedback signal (loadcell)
    When the loadcell reaches a certain value, stop the move and hold current position
    The recommended way to do this as accurately and with as much flexibilty as possible would be with a deterministic real-time system where you are using the load cell as the primary feedback device to the motion control system. This is called a force feedback application. With this type of setup, you can actually define your setpoint in terms of force instead of position. This lets you do things like define a force profile to follow, and other more advanced concepts. All your sampling rates are higher, and the system must be deterministic to properly maintain a stable motion torque control loop.
    My recommendation would be to start with the DAQmx example, add in the comparison code, and then add in the commands to the actuator based on your logic. 
    Good Luck!
    ~Nate

  • Can I position an Edge stage into background using z-index(css)?

    I have an edge composition that I require to be in the background.
    I have tried adding a new rule to the edge div
    .edgeLoad-EDGE-57204389 { z-index:-100; }
    and adding this to the div that I want to be on top of the stage:
    #menu { z-index:100; }
    but the stage is still on top...
    Any Ideas?

    I dont know how to incorporate it into edge:
    test this code.
    <style>
            .block-menu {
                                  display: block;
                                  background: #000;
                        .block-menu li {
                                  display: inline-block;
                        .block-menu li a {
                                  color: #fff;
                                  display: block;
                                  text-decoration: none;
                                  font-family: 'Passion One',Arial,sans-serif;
                                  -webkit-font-smoothing: antialiased;
                                  -moz-font-smoothing: antialiased;
                                  font-smoothing: antialiased;
                                  text-transform: uppercase;
                                  overflow: visible;
                                  line-height: 20px;
                                  font-size: 24px;
                                  padding: 15px 10px;
                        /* animation domination */
                        .three-d {
                                  -webkit-perspective: 200px;
                                  -moz-perspective: 200px;
                                  perspective: 200px;
                                  -webkit-transition: all .07s linear;
                                  -moz-transition: all .07s linear;
                                  transition: all .07s linear;
                                  position: relative;
                                  .three-d:not(.active):hover {
                                            cursor: pointer;
                                  .three-d:not(.active):hover .three-d-box,
                                  .three-d:not(.active):focus .three-d-box {
                                            -moz-transform: translateZ(-25px) rotateX(90deg);
                                            -webkit-transform: translateZ(-25px) rotateX(90deg);
                                            -o-transform: translateZ(-25px) rotateX(90deg);
                                            transform: translateZ(-25px) rotateX(90deg);
                        .three-d-box {
                                  -webkit-transition: all .3s ease-out;
                                  -moz-transition: all .3s ease-out;
                                  -ms-transition: all .3s ease-out;
                                  -o-transition: all .3s ease-out;
                                  transition: all .3s ease-out;
                                  -webkit-transform: translatez(-25px);
                                  -moz-transform: translatez(-25px);
                                  -o-transform: translatez(-25px);
                                  transform: translatez(-25px);
                                  -webkit-transform-style: preserve-3d;
                                  -moz-transform-style: preserve-3d;
                                  -ms-transform-style: preserve-3d;
                                  -o-transform-style: preserve-3d;
                                  transform-style: preserve-3d;
                                  pointer-events: none;
                                  position: absolute;
                                  top: 0;
                                  left: 0;
                                  display: block;
                                  width: 100%;
                                  height: 100%;
                        .front {
                                  -webkit-transform: rotatex(0deg) translatez(25px);
                                  -moz-transform: rotatex(0deg) translatez(25px);
                                  -o-transform: rotatex(0deg) translatez(25px);
                                  transform: rotatex(0deg) translatez(25px);
                        .back {
                                  -webkit-transform: rotatex(-90deg) translatez(25px);
                                  -moz-transform: rotatex(-90deg) translatez(25px);
                                  -o-transform: rotatex(-90deg) translatez(25px);
                                  transform: rotatex(-90deg) translatez(25px);
                                  color: #FFE7C4;
                        .front, .back {
                                  display: block;
                                  width: 100%;
                                  height: 100%;
                                  position: absolute;
                                  top: 0;
                                  left: 0;
                                  background: black;
                                  padding: 15px 10px;
                                  color: white;
                                  pointer-events: none;
                                  -moz-box-sizing: border-box;
                                  box-sizing: border-box;
                  #menu {
                                  z-index:100;
                                  margin-bottom:-100px;
        </style>
    <div id="menu"><ul class="block-menu">
                        <li><a href="javascript: goHome();" class="three-d">
                                  Dynamic
                                  <span class="three-d-box"><span class="front">Dynamic</span><span class="back">Artisans</span></span>
                        </a></li>
                        <li><a href="/demos" class="three-d">
                                  Work
                                  <span class="three-d-box"><span class="front">Work</span><span class="back">Work</span></span>
                        </a></li>
                        <li><a href="/deals" class="three-d">
                                  Blog
                                  <span class="three-d-box"><span class="front">Blog</span><span class="back">Blog</span></span>
                        </a></li>
                        <li><a href="/about" class="three-d">
                                  Profile
                                  <span class="three-d-box"><span class="front">Profile</span><span class="back">Profile</span></span>
                        </a></li>
            <li><a href="/about" class="three-d">
                                  Contact
                                  <span class="three-d-box"><span class="front">Contact</span><span class="back">Contact</span></span>
                        </a></li>
              </ul>
    <span class="block-menu"></span></div>
    I did figure out the answer to my question though.

  • Reset position for linear movement

    Hi All,
    I am using PCI 7344 and UMI7774.I am using three of its Axis.The first two axis are just used as a DRO ( DIgital Read Out) and the third axis is used to control servomotor.
    Now at a instant of time, I require to Reset all the axis position to zero.Now the third axis can be reseted by using the Reset Position Vi. But since the first two axis are manual, I have used scales which are used for linear movement measurement( The scales are same as encoders, but can be used for linear measurement.It also has A, B & Z). How can I reset the position for this 2 axis.
    Regards
    Manish Karnik

    Hey I missed some point.
    Hi All,
    I am using PCI 7344 and UMI7774.I am using three of its Axis.The first two axis are just used as a DRO ( DIgital Read Out) and the third axis is used to control servomotor.
    Now at a instant of time, I require to Reset all the axis position to zero.Now the third axis can be reseted by using the Reset Position Vi. But since the first two axis are manual, I have used scales which are used for linear movement measurement( The scales are same as encoders, but can be used for linear measurement.It also has A, B & Z). How can I reset the position for this 2 axis.
    Now after reseting the position the axis should be able to read the counts from zero for all the axis. ( For axis 3 it is possible)
    Regards
    Manish Karnik

  • Is LW7 linear stage motor connectabl​e to PCI-7344 controller​?

    I am new in motion control. I am planning to build an inspection system in which the linear motor can find the address of the regular dent, located on a specific bar. The linear motor has to be connected to 7344 series, and the software is made with LabVIEW.
    As NI introduced many motor brands, I am wondering if the LW7(Anorad) is connectable to PCI-7344 series motion controller. LW7 motor is shown in:
    http://www.anorad.com/onlineCatalog/linear.htm
    http://www.anorad.com/onlineCatalog/electrical.htm

    As long as the drive that you are looking at runs in torque mode, has only a current feedback (ie does not conflict with the position feedback of the 7344), and can output a regular encoder signal, you should be fine.

  • HARD Question : Z position impact on stage position

    I have a sprite that I zoom out using the sprite.z property. Once the z property has been modified the sprite x and Y values do not match the stage x and y real value. So far so good and what I was expecting!
    What I want to accomplish is that when the user clicks the stage the sprite tweens to where the mouse was clicked but I don't know what x and y position to send to the sprite. ( since stage 200,200 is something like 400,400 for the sprite depending on z value)
    I tried Utils3D.projectVector using Matrix3D of the perspectiveProjection of the stage without success. (i.e. I get Vector3D(Infinity, Infinity, NaN))
    Any pointers?
    I could fallback to scalex/scaley but sprites.z gives me the correct scale, perspective projection, paralax scrolling since I have sprites on different z level all for free. I would have to recode all that.

    This is an interesting one
    The formula to obtain the x coordinate on the screen from a point in 3D space is:
    screen x = point x * (distance to screen / distance to point z) 
    So, to obtain the 3D point x from the screen x, you'd do:
    point x = (screen x * distance to point z) / distance to screen
    Translating this to AS3, you'd get:
           private function moveObjectTo3DFrom2D(object:DisplayObject, vX:int, vY:int):void {
                var cX:Number = root.transform.perspectiveProjection.projectionCenter.x;
                var cY:Number = root.transform.perspectiveProjection.projectionCenter.y;
                var f:Number = root.transform.perspectiveProjection.focalLength;
                with(object){
                    x = cX + ((f + object.z)*(vX - cX))/f;
                    y = cY + ((f + object.z)*(vY - cY))/f;

  • IPCC Script Position in Queue not incrementing

    Working on a position in queue script, I can't seem to get the position in queue variable to move beyond 1 no matter how many people are in the queue.  Has anyone got any hints / tips?  I'm using the Get Reporting Statistic, Position in Queue from CSQ IPCC Express.

    You shouldn't have to use that as a work around.  Open a TAC case, you may have a defect, and Cisco owes it to you, as a paying customer to deliver a working product.
    Here is video proof that the PIQ value dynamically updates during script execution.
    http://www.youtube.com/watch?v=6VNd5pMgygo

  • How can I change the position of the stage from relative to fixed?

    I followed a tutorial and managed to integrate multiple edge animations to reveal.js. The problem is that when i refresh the page the animation doesn't load at the center of reveal.js "presentatio area". When I change slide and return to the one with the problem the animation loads correctly.
    Any ideas why when I refresh the page (or when I visit the page for the first time) the animation isn't at the center??
    Thanks

    Hi, antyfas-
    Can you post your entire project (including the reveal.js portion) either live for us to check out or as a project ZIP so that we can try to troubleshoot?  As far as I know, there should be no change in the CSS between the first and second display.
    Thanks,
    -Elaine

  • Edit stage size without effecting elements position.

    Question.  Can you change the size of your stage, say smaller than what you started with, so that when you move your elements to the new position of the stage the motion paths do get messed up because you moved everything?
    I have a "full" page layout that I would like to cut in half but the stage jumps to a "middle" point and when I try to move all my elements, some with motion paths, it increases the distance of the path and destroys it.  I don't see any way of locking the paths to move an element and I have 23 elements with paths to move so moving each would suck.
    I know Edge is basically in Beta 24, 7 because it's still not flushed out anywhere near where it could be.  If they just allowed you to adjust the stage size by locking a region kinda like page size in Photoshop or adjusting the page like in Illustrator with cropping.
    Any suggestions or help would be greatly appreciated.
    Thanks,
    Ryan.

    Hi Colin,
    Thanks for the fast reply.
    I guess I checked fullscreen when creating the project, however, when setting fullScreen to false (and uncommenting the still commented node?!) in de descriptor file I get the following compile error:
    Error occurred while packaging the application:
    /private/var/folders/gv/gv-j1H1UFJ4olvFpGwVTVk+++TI/-Tmp-/AOT1309729499262/Box2DiPad-app.x ml(109): error 103: application.initialWindow.fullScreen is an unexpected element/attribute
    User error somewhat or bug?
    ... Rats! In case anyone messes up like me: The fullscreen node gets rewritten all the way at the bottom of the initialWindow section. So it needs to be changed there....
    Is there anyone who can shed some light on AIR 2.7 update progress?
    Thanks,
    Manno

  • NI Motion with incremental encoder and precise position

    I am currently working on a project that requires me to get the precise position (mesure) with an incremental encoder with 2 channels A and B. I am Using NI Motion, NI UMI-7774,NI PCI 7550, and Labview 10 

    That should work!

  • NI Motion witth incremental encoder and precise position

    I am currently working on a project that requires me to get the precise position (mesure) with an incremental encoder with 2 channels A and B. I am Using NI Motion, NI UMI-7774,NI PCI 7550, and Labview 10

    Hey that's great!
    I think you're in the wrong forum: http://forums.ni.com/t5/Motion-Control-and-Motor-Drives/bd-p/240
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

Maybe you are looking for