Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

using model 8752 to move one axis picomotor actuator

Hello, 

My research group has assigned me the task to move this actuator using the controller 8752 in conjunction with the 8753 ethernet controller.

I am using LABview to communicate with the actuator and have had no luck. I have read previous posts on this matter however no one has really given a clear solution.

I only require one axis translation, basically as a stepper stage. I can't find the drivers needed for the controller to start off, it mentions in the manual I need to upgrade the firmware. 

Secondly is there any example VI that will run simply? 

0 Kudos
Message 1 of 21
(10,393 Views)

It looks like the LabVIEW drivers and example VI's are availabe on Newport's website at http://www.newport.com/LabVIEW-Support/997359/1033/content.aspx.  There are also instructions for interfacing with the controller via LabVIEW in the control module user's guide available at http://assets.newport.com/webDocuments-EN/images/15239.PDF.  These are the best resources I was able to find for interfacing LabVIEW and these particular controllers.  Once you have the drivers installed, you should be able to begin communicating with the controller through LabVIEW. 

Regards,

Chris L
Applications Engineer
National Instruments

Certified LabVIEW Associate Developer
0 Kudos
Message 2 of 21
(10,377 Views)

No,DLL utilities do not work with the Model 8750 network controller or Model 8752 Ethernet controller,so the example VI can not communicate with the controller through LabVIEW. The solution is not use Module 8752 in DCN.

 

By the way, I have a question,I want to use Labview to drive two Picomotor actuators successively through Model 8753 iPico driver. And  the example VI's(Application.vi) from Newport's website just control one actuator at one time, so I copy the example code, thus there are two repetitive sections (see the attachment) in the while loop structure.

But the test result was that two Picomotor actuators belonging to the same Model 8753 iPico driver moved to respective target position circularly. And I found the test was correct when two Picomotor actuators had the same addr. Can anyone tell why ,what should I do? Any assistance with this matter is greatly appreciated.

 

 

0 Kudos
Message 3 of 21
(10,257 Views)

I'm not 100% sure what you mean by "they move to their position circularly", but if you mean that they move sequentially instead of simultaneously, it is because of the way you have your error wires connected.  In LabVIEW, an execution structure does not execute until all inputs are received.  In your code, the error wire has to pass through the first while loop and then through all of the initialization VI's before passing into the second while loop.  This means the second while loop will not execute until it receives the input from that error wire.  If you want these two loops to run in parallel, then you need to re-route the error wire and branch it off to pass through both loops at once.

 

On a separate note, using nested while loops is not the best programming practice.  It can often lead to unwanted behavior and can also prevent your program from closing properly.  I would recommend updating your code and removing the two nested while loops.  Depending on the functionality you are wanting, there should be other ways of achieving it besides using nested while loops.  From what I see, I would suggest implementing a case structure and wire the T/F Boolean from your equal to 1? VI as the input to the selector terminal.  This will give you the same functionality, but without having to use nested while loops.  I would also recommend placing the initialization VI's outside of the while loop, unless you want the ability to update them while the program is running.  Placing them outside the loop would increase the iteration speed of the loop and will improve the program's performance.

Regards,

Chris L
Applications Engineer
National Instruments

Certified LabVIEW Associate Developer
0 Kudos
Message 4 of 21
(10,236 Views)

You are right. I want two Picomotor actuators to move to their respective target positions successively, but the result is as follow: 

1. At first,two Picomotor actuators move to their respective target positions successively.

2. Then the first motor move from the target position of second motor to its target position, and the second motor move from the target position of first motor to its target position.

3. course 2  loops.

 

Two motors link to the same driver. Test is right if Two motors link to different drivers. I do not know what wrong is. 

0 Kudos
Message 5 of 21
(10,208 Views)

The fact that this works if the motors are connected to separate drives makes me think this has something to do with how the VI's send the commands to the drives.  It sounds like when only one drive is connected, the VI's overwrite the previous set's commands.  I would try and simplify the code down to figure out where the problem is occurring.  Start with one motor and program it to move and get it working.  I would recommend keeping all of the configuration VI's outside of the while loop.  Once you get this move working, add in commands for the second motor (still leaving the configuration VI's outside of the while loop) and see if you can achieve the results you are wanting.  

Regards,

Chris L
Applications Engineer
National Instruments

Certified LabVIEW Associate Developer
0 Kudos
Message 6 of 21
(10,198 Views)

Keeping all of the configuration VI's outside of the while can lead to that actuator does not respond to configuration information (like target position) after initial configuration is sent to the driver, it is because configuration VI's outside of the while do not circulate. The results are ok if the while loop is removed, but I want actuators to be on standby for commands.

0 Kudos
Message 7 of 21
(10,182 Views)

Double check that you are using the correct address for each set of commands.  I noticed in your VI that both addresses are set to 1 as the default.  So if you don't update the control on the front panel before running, you would see the exact behavior you are describing.  If this is the case, you can go to Edit»Make Current Values Default and set different values for Address 1 and 2.  As far as leaving the VI's in the while loop, you are correct, if you want to be able to update the settings and have the motors on standby then you would want to leave these VI's inside the while loop.  I looked a little closer at these VI's, and you should be fine leaving them inside the while loop.  It will slow down the speed of the loop, but it is the only way to achieve the functionality you are wanting.

Regards,

Chris L
Applications Engineer
National Instruments

Certified LabVIEW Associate Developer
0 Kudos
Message 8 of 21
(10,163 Views)

I cann't set different values for Address 1 and 2, because different Addresses mean different drivers. I want motors connected to the same drive to move successively. The current problem is that one motor treats last target position of another motor instead of its own as its starting position after first loop. In a word, logic error.

0 Kudos
Message 9 of 21
(10,155 Views)

For example VI, similar logic error occurs after changing channel(motor) .

0 Kudos
Message 10 of 21
(10,152 Views)