steppermotor

I am supposed to write an XOP to control the stepper motor using igor. After searching over the net,I found an XOP written in C++ which controls the movement of stepper motor. How do I use it now, should I write another XOP to make igor understand what is written in C++ if yes how do I do it and can be written in a single day?(as I have to get the readings from the stepper motor by dayafter). I am very new to this, please pls.. help me as I have to get the readings from the stepper motor by dayafter. Thanks a lot. I am attaching the C++ program... Test.pdf (145.45 KB)
How do you communicate with the stepper motors?
With a library of the manufacturer, or a standard digital I/O (National Intstruments maybe) card?

And from my experience, it is not a questions of days, more a questions of weeks to get something like this properly working.

Thomas

You say you found an XOP for controlling a stepper motor. Is it really an XOP? That would imply someone already wrote something specifically for Igor. Also, is it written to work with your stepper motor and motor controller? If it is really and Igor XOP, and it is compatible with your hardware, and you can download the XOP, then do this:

In Igor, choose Help->Show Igor Pro User Files Folder. That will open an Explorer window showing that folder.

Put the XOP file into the Igor Extensions folder, which will see in the Explorer window.

Re-start Igor.

In the Help Browser, Commands tab, you should now see new functions or operations added by the XOP that will control your stepper motor.


If what you found is not compatible with your motor controller, then you will need to write your own. I agree with the previous poster- that is a matter of weeks, not days. You will need a copy of the XOP Toolkit, which you can purchase from us if you don't already have it. You also need a C/C++ compiler- on Windows use Visual Studio. You will also need to learn how to use the XOP Toolkit.

Whoever gave you this task with a deadline like that was not being realistic.

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
Hi,

I was looking for support when I came across this post. I am currently using IGOR to control my stepper motors. At my work we use EPICS and there is an XOP called "IGOR2EPICS" at http://igor2epics.sourceforge.net/ with pretty good instructions for installation.

Anyways, I would like to submit my question.

There are 4 motors. I can control each individually, and I am attaching a screen shot of the GUI so you can see what can be done. Using the IGOR2Epics XOP I can get, monitor and push variables to process variables from the Epics program.

My problem is a programming one. I want to move each motor in sequence, so that they can move to pre-set positions one after the other. This means that I need a procedure that tells the motors: " Motor 1 go here. Motor 2, wait until Motor 1 is done moving. Motor 2 go here. Motor 3, wait until Motor 2 is done moving. Motor 3 go here etc." For machine safety I need to be able to stop the motors with a push of a button at any time, and this must be easy because other people will be using the motors. I have a "STOP" button that works well for this.

My problem is this: When I tell the motors to wait, either using a for loop or a do-while loop it takes over IGOR so that I can no longer use my "STOP" button. I have tried making the "move-wait-move" procedure a background function, but then I get no updates on the main interface and my "STOP" button will still not work. I must abort the procedure before doing anything else.

Do you have any suggestions on how to put in a waiting period coupled with a "PVGet" command that will still enable me to use the GUI in the meantime?

Isabelle
GUIscreenshot.png (43.2 KB)
In the past, I have built metrology tools that incorporated stepper motors / linear actuators and have just needed to use VDT2 to communicate over serial via a USB convertor. I used brands Zaber and MDrive from Schneider. Pretty straight forward with the need to create an XOP.

Andy
I see you posted as a separate thread- that's good. I've moved my answer to that thread.