I have a 7333 stepper card and Labview 7.1. I am running a simple linear movement based on measurements on a linear position sensor. I am calculating # of steps based on that. The system is working, but I have a few remaining issues that I can’t seem to resolve.
In a start-up section I use Clear_Powerup_Status, then Initialize_Controller VI’s. The various stepper-card settings are loaded at this point. These settings include open-loop operation, and various limit-switch settings. There is no encoder, but I am measuring travel via an analog channel and ‘closing the loop” elsewhere in the program. Strictly-speaking the stepper card is running in open-loop mode.
Later, when the entire program is running, I calculate steps to move a specific distance and send commands to the stepper card. Given the gearing and stepper settings it takes 20000 steps to move one inch. Once the calculations are made I am using 4 VI’s in sequence to configure, load and execute the move.
In order these are:
1- set_operation_mode.flx
2- load_target_position.flx
3- start_motion.flx
4- wait_for_move_complete.flx
(this was copied from sample-code)
The last one “wait for move complete” is supposed to force the system to wait until the system stops moving before calculating again and moving again.
The system currently moves about 80% of the calculated distance. It then stops, recalculates and moves the rest of the distance, again moving about 80% of the calculated steps. This repeats until it arrives, usually in about 3 cycles.
The “measure current position”, “calculate steps” and “move-stepper commands” are in three separate frames of a sequence structure.
If I had to guess I would say that the stepper-card is buffering the command (# of steps) and then the move_complete_fcn releases the sequence frame as complete. The system then loops back to the measurement frame, calculates and loads a new move-command before the previous command has really stopped.
I have tried a variety of additional VIs including config_move_complete_criteria, read_move_complete_status, read_per_axis_status but none have changed the behavior. I have also tried a number of wait-state command to various parts of the sequence. The only change I have seen is a very long pause while re-calculating the remaining motions; but no improvement in actually arriving in one move-command cycle.
Any suggestions for understanding the motion-complete VI’s??