02-01-2006 11:21 AM
I have an 8 axis stepper / encoder motion system. I am using the PXI7358 as the indexer and two MID7604 motor drives to interface the motors & encoders. I am using VB6 and NIMotion to create the control application.
I want to be able to energise and deenergise the motors under program control but I am having difficulty correctly controlling the inhibit outputs. Can anyone put me right on how to initialise and control these lines.
Status = flex_initialize_controller(Board, Chr$(0))
'After this step all inhibit lights are on and all motors disabled.
for each axis in turn:
Status = flex_config_axis used to set encoder feedback and stepper output resources
Status = flex_configure_stepper_output used to set step/dir, active low, open collector
Status = flex_load_counts_steps_rev used to set 200*256 step/rev
Status = flex_load_counts_steps_rev used to set 800 encoder counts/rev
Status = flex_configure_encoder_filter used to set 25kHz filter
Status = flex_set_stepper_loop_mode used to set closed loop mode
Status = flex_load_follow_err set following error to 32767
Status = flex_load_acceleration set to both,4000000
Status = flex_config_inhibit_output set inhibit output disabled(0), active high(0), open collector(0)
'After this step the corresponding inhibit light goes out and the corresponding motor is enabled.
next axis
Status = flex_set_limit_input_polarity(Board, 0, 0) sets all limits to active high
Status = flex_enable_axis_limit(Board,0,510,510) enable forward & reverse limits, axes 1-8
Status = flex_enable_axis(Board,0,3,510) enable axes 1-8, PIDRate=3 (250usec)
for each axis in turn:
MustOff = 2 ^ Axis
Status = flex_set_inhibit_momo(Board, 0, MustOff)
'First time round, channels 1-7 are disabled!
remaining times round, no change
next axis
'After this channels 1-7 are disabled and channel 8 is enabled
I have since found out that any value of MustOff (including &H0) disables channels 1-7. Channel 8 cannot be disabled.
Any thoughts please?
02-22-2006 06:13 AM