zaber-motion 7.13.0__py3-none-win_amd64.whl → 7.14.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zaber_motion/__init__.py +103 -103
- zaber_motion/ascii/__init__.py +73 -73
- zaber_motion/ascii/all_axes.py +352 -352
- zaber_motion/ascii/axis.py +1673 -1673
- zaber_motion/ascii/axis_group.py +391 -391
- zaber_motion/ascii/axis_settings.py +752 -752
- zaber_motion/ascii/connection.py +1174 -1174
- zaber_motion/ascii/device.py +908 -908
- zaber_motion/ascii/device_io.py +1170 -1170
- zaber_motion/ascii/device_settings.py +735 -735
- zaber_motion/ascii/lockstep.py +1184 -1184
- zaber_motion/ascii/oscilloscope.py +635 -635
- zaber_motion/ascii/oscilloscope_data.py +240 -240
- zaber_motion/ascii/pvt.py +105 -105
- zaber_motion/ascii/pvt_buffer.py +146 -146
- zaber_motion/ascii/pvt_io.py +630 -630
- zaber_motion/ascii/pvt_sequence.py +1530 -1530
- zaber_motion/ascii/servo_tuner.py +637 -637
- zaber_motion/ascii/setting_constants.py +1755 -1755
- zaber_motion/ascii/storage.py +905 -905
- zaber_motion/ascii/stream.py +2182 -2182
- zaber_motion/ascii/stream_buffer.py +101 -101
- zaber_motion/ascii/stream_io.py +700 -700
- zaber_motion/ascii/streams.py +105 -105
- zaber_motion/ascii/transport.py +202 -202
- zaber_motion/ascii/trigger.py +886 -886
- zaber_motion/ascii/triggers.py +241 -241
- zaber_motion/ascii/warning_flags.py +178 -178
- zaber_motion/ascii/warnings.py +152 -152
- zaber_motion/async_utils.py +46 -46
- zaber_motion/binary/__init__.py +14 -14
- zaber_motion/binary/connection.py +648 -648
- zaber_motion/binary/device.py +924 -924
- zaber_motion/binary/device_settings.py +121 -121
- zaber_motion/bindings.py +50 -50
- zaber_motion/call.py +198 -198
- zaber_motion/convert_exception.py +138 -138
- zaber_motion/dto/__init__.py +11 -11
- zaber_motion/dto/ascii/__init__.py +46 -46
- zaber_motion/dto/ascii/alert_event.py +110 -110
- zaber_motion/dto/ascii/axis_identity.py +134 -134
- zaber_motion/dto/ascii/axis_type.py +14 -14
- zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
- zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
- zaber_motion/dto/ascii/conversion_factor.py +81 -81
- zaber_motion/dto/ascii/device_identity.py +136 -136
- zaber_motion/dto/ascii/device_io_info.py +108 -108
- zaber_motion/dto/ascii/digital_output_action.py +13 -13
- zaber_motion/dto/ascii/get_axis_setting.py +64 -64
- zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
- zaber_motion/dto/ascii/get_setting.py +88 -88
- zaber_motion/dto/ascii/get_setting_result.py +87 -87
- zaber_motion/dto/ascii/io_port_label.py +84 -84
- zaber_motion/dto/ascii/io_port_type.py +14 -14
- zaber_motion/dto/ascii/lockstep_axes.py +108 -108
- zaber_motion/dto/ascii/measurement_sequence.py +73 -73
- zaber_motion/dto/ascii/message_type.py +14 -14
- zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
- zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
- zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
- zaber_motion/dto/ascii/paramset_info.py +92 -92
- zaber_motion/dto/ascii/pid_tuning.py +125 -125
- zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
- zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
- zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
- zaber_motion/dto/ascii/pvt_mode.py +12 -12
- zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
- zaber_motion/dto/ascii/response.py +137 -137
- zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
- zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
- zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
- zaber_motion/dto/ascii/set_state_device_response.py +80 -80
- zaber_motion/dto/ascii/simple_tuning.py +118 -118
- zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
- zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
- zaber_motion/dto/ascii/stream_axis_type.py +11 -11
- zaber_motion/dto/ascii/stream_mode.py +13 -13
- zaber_motion/dto/ascii/trigger_action.py +12 -12
- zaber_motion/dto/ascii/trigger_condition.py +15 -15
- zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
- zaber_motion/dto/ascii/trigger_operation.py +12 -12
- zaber_motion/dto/ascii/trigger_state.py +114 -114
- zaber_motion/dto/ascii/unknown_response_event.py +137 -137
- zaber_motion/dto/axis_address.py +74 -74
- zaber_motion/dto/binary/__init__.py +11 -11
- zaber_motion/dto/binary/binary_settings.py +74 -74
- zaber_motion/dto/binary/command_code.py +106 -106
- zaber_motion/dto/binary/device_identity.py +156 -156
- zaber_motion/dto/binary/device_type.py +12 -12
- zaber_motion/dto/binary/error_code.py +101 -101
- zaber_motion/dto/binary/message.py +91 -91
- zaber_motion/dto/binary/reply_code.py +16 -16
- zaber_motion/dto/binary/reply_only_event.py +91 -91
- zaber_motion/dto/binary/unknown_response_event.py +91 -91
- zaber_motion/dto/channel_address.py +74 -74
- zaber_motion/dto/device_db_source.py +66 -66
- zaber_motion/dto/device_db_source_type.py +11 -11
- zaber_motion/dto/exceptions/__init__.py +24 -24
- zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
- zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
- zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
- zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
- zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
- zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
- zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
- zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
- zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
- zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
- zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
- zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
- zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
- zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
- zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
- zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
- zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/firmware_version.py +91 -91
- zaber_motion/dto/gcode/__init__.py +9 -9
- zaber_motion/dto/gcode/axis_definition.py +74 -74
- zaber_motion/dto/gcode/axis_mapping.py +69 -69
- zaber_motion/dto/gcode/axis_transformation.py +79 -79
- zaber_motion/dto/gcode/device_definition.py +99 -99
- zaber_motion/dto/gcode/translate_message.py +87 -87
- zaber_motion/dto/gcode/translate_result.py +79 -79
- zaber_motion/dto/gcode/translator_config.py +84 -84
- zaber_motion/dto/log_output_mode.py +13 -13
- zaber_motion/dto/measurement.py +67 -67
- zaber_motion/dto/microscopy/__init__.py +6 -6
- zaber_motion/dto/microscopy/autofocus_status.py +57 -57
- zaber_motion/dto/microscopy/microscope_config.py +159 -159
- zaber_motion/dto/microscopy/third_party_components.py +55 -55
- zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
- zaber_motion/dto/named_parameter.py +64 -64
- zaber_motion/dto/product/__init__.py +5 -5
- zaber_motion/dto/product/process_controller_mode.py +13 -13
- zaber_motion/dto/product/process_controller_source.py +72 -72
- zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
- zaber_motion/dto/requests/__init__.py +256 -254
- zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
- zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
- zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
- zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
- zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
- zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
- zaber_motion/dto/requests/axes_empty_request.py +95 -95
- zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
- zaber_motion/dto/requests/axes_move_request.py +114 -114
- zaber_motion/dto/requests/axis_empty_request.py +79 -79
- zaber_motion/dto/requests/axis_move_type.py +12 -12
- zaber_motion/dto/requests/axis_to_string_request.py +88 -88
- zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
- zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
- zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
- zaber_motion/dto/requests/binary_device_home_request.py +88 -88
- zaber_motion/dto/requests/binary_device_move_request.py +111 -111
- zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
- zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
- zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
- zaber_motion/dto/requests/binary_message_collection.py +56 -56
- zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
- zaber_motion/dto/requests/bool_response.py +43 -43
- zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
- zaber_motion/dto/requests/can_set_state_request.py +100 -100
- zaber_motion/dto/requests/channel_on.py +84 -84
- zaber_motion/dto/requests/channel_set_intensity.py +90 -90
- zaber_motion/dto/requests/check_version_request.py +54 -54
- zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
- zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
- zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
- zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
- zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
- zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
- zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
- zaber_motion/dto/requests/device_detect_request.py +68 -68
- zaber_motion/dto/requests/device_detect_response.py +57 -57
- zaber_motion/dto/requests/device_empty_request.py +65 -65
- zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
- zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
- zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_setting_request.py +100 -100
- zaber_motion/dto/requests/device_get_storage_request.py +93 -93
- zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
- zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
- zaber_motion/dto/requests/device_home_request.py +84 -84
- zaber_motion/dto/requests/device_identify_request.py +77 -77
- zaber_motion/dto/requests/device_move_request.py +177 -177
- zaber_motion/dto/requests/device_move_sin_request.py +140 -140
- zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
- zaber_motion/dto/requests/device_on_all_request.py +56 -56
- zaber_motion/dto/requests/device_on_all_response.py +57 -57
- zaber_motion/dto/requests/device_restore_request.py +84 -84
- zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
- zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
- zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
- zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
- zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
- zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
- zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
- zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
- zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_request.py +111 -111
- zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
- zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
- zaber_motion/dto/requests/device_set_storage_request.py +102 -102
- zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
- zaber_motion/dto/requests/device_stop_request.py +84 -84
- zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
- zaber_motion/dto/requests/device_storage_request.py +88 -88
- zaber_motion/dto/requests/device_type.py +8 -8
- zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/disconnected_event.py +101 -101
- zaber_motion/dto/requests/double_array_response.py +54 -54
- zaber_motion/dto/requests/double_response.py +48 -48
- zaber_motion/dto/requests/driver_enable_request.py +90 -90
- zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
- zaber_motion/dto/requests/empty_request.py +38 -38
- zaber_motion/dto/requests/errors.py +68 -68
- zaber_motion/dto/requests/find_device_request.py +65 -65
- zaber_motion/dto/requests/find_device_response.py +51 -51
- zaber_motion/dto/requests/forget_devices_request.py +71 -71
- zaber_motion/dto/requests/gateway_event.py +45 -45
- zaber_motion/dto/requests/gateway_request.py +45 -45
- zaber_motion/dto/requests/gateway_response.py +69 -69
- zaber_motion/dto/requests/generic_binary_request.py +107 -107
- zaber_motion/dto/requests/generic_command_request.py +107 -107
- zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
- zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
- zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
- zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
- zaber_motion/dto/requests/get_setting_results.py +56 -56
- zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
- zaber_motion/dto/requests/int_64_response.py +51 -51
- zaber_motion/dto/requests/int_array_response.py +57 -57
- zaber_motion/dto/requests/int_request.py +51 -51
- zaber_motion/dto/requests/int_response.py +51 -51
- zaber_motion/dto/requests/interface_empty_request.py +51 -51
- zaber_motion/dto/requests/interface_type.py +11 -11
- zaber_motion/dto/requests/load_paramset.py +102 -102
- zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
- zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
- zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
- zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
- zaber_motion/dto/requests/lockstep_get_request.py +91 -91
- zaber_motion/dto/requests/lockstep_home_request.py +84 -84
- zaber_motion/dto/requests/lockstep_move_request.py +163 -163
- zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
- zaber_motion/dto/requests/lockstep_set_request.py +116 -116
- zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
- zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/microscope_config_response.py +50 -50
- zaber_motion/dto/requests/microscope_empty_request.py +65 -65
- zaber_motion/dto/requests/microscope_find_request.py +63 -63
- zaber_motion/dto/requests/microscope_init_request.py +70 -70
- zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
- zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
- zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
- zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
- zaber_motion/dto/requests/objective_changer_request.py +93 -93
- zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
- zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
- zaber_motion/dto/requests/open_interface_request.py +159 -159
- zaber_motion/dto/requests/open_interface_response.py +51 -51
- zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
- zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
- zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
- zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
- zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
- zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
- zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
- zaber_motion/dto/requests/oscilloscope_request.py +65 -65
- zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
- zaber_motion/dto/requests/prepare_command_request.py +108 -108
- zaber_motion/dto/requests/process_on.py +107 -107
- zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
- zaber_motion/dto/requests/pvt_csv_request.py +59 -59
- zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
- zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
- zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
- zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
- zaber_motion/dto/requests/pvt_point_request.py +145 -145
- zaber_motion/dto/requests/pvt_points_request.py +147 -147
- zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
- zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
- zaber_motion/dto/requests/renumber_request.py +79 -79
- zaber_motion/dto/requests/response_type.py +8 -8
- zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
- zaber_motion/dto/requests/servo_tuning_request.py +91 -91
- zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
- zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
- zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
- zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
- zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
- zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
- zaber_motion/dto/requests/set_log_output_request.py +57 -57
- zaber_motion/dto/requests/set_process_controller_source.py +93 -93
- zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
- zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
- zaber_motion/dto/requests/set_simple_tuning.py +174 -174
- zaber_motion/dto/requests/set_state_request.py +93 -93
- zaber_motion/dto/requests/stream_arc_request.py +199 -199
- zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
- zaber_motion/dto/requests/stream_buffer_list.py +70 -70
- zaber_motion/dto/requests/stream_call_request.py +112 -112
- zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
- zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
- zaber_motion/dto/requests/stream_circle_request.py +155 -155
- zaber_motion/dto/requests/stream_empty_request.py +84 -84
- zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
- zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
- zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
- zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_line_request.py +135 -135
- zaber_motion/dto/requests/stream_mode_response.py +60 -60
- zaber_motion/dto/requests/stream_segment_type.py +8 -8
- zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
- zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
- zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
- zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
- zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
- zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
- zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
- zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
- zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
- zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
- zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
- zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
- zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
- zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
- zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
- zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
- zaber_motion/dto/requests/stream_wait_request.py +107 -107
- zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
- zaber_motion/dto/requests/string_array_response.py +51 -51
- zaber_motion/dto/requests/string_response.py +45 -45
- zaber_motion/dto/requests/test_event.py +45 -45
- zaber_motion/dto/requests/test_request.py +55 -55
- zaber_motion/dto/requests/test_request_complex.py +57 -0
- zaber_motion/dto/requests/test_response.py +45 -45
- zaber_motion/dto/requests/test_response_long.py +51 -51
- zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
- zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
- zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
- zaber_motion/dto/requests/translator_create_live_request.py +91 -91
- zaber_motion/dto/requests/translator_create_request.py +62 -62
- zaber_motion/dto/requests/translator_create_response.py +51 -51
- zaber_motion/dto/requests/translator_empty_request.py +51 -51
- zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
- zaber_motion/dto/requests/translator_flush_response.py +51 -51
- zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
- zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
- zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
- zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
- zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
- zaber_motion/dto/requests/translator_translate_request.py +60 -60
- zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
- zaber_motion/dto/requests/trigger_empty_request.py +79 -79
- zaber_motion/dto/requests/trigger_enable_request.py +93 -93
- zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
- zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
- zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
- zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
- zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
- zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
- zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
- zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
- zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
- zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
- zaber_motion/dto/requests/trigger_states.py +56 -56
- zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
- zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
- zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
- zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
- zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
- zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
- zaber_motion/dto/requests/wdi_generic_request.py +136 -136
- zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
- zaber_motion/dto/rotation_direction.py +13 -13
- zaber_motion/dto_object.py +18 -18
- zaber_motion/events.py +112 -112
- zaber_motion/exceptions/__init__.py +87 -87
- zaber_motion/exceptions/bad_command_exception.py +10 -10
- zaber_motion/exceptions/bad_data_exception.py +10 -10
- zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_preempted_exception.py +10 -10
- zaber_motion/exceptions/command_too_long_exception.py +27 -27
- zaber_motion/exceptions/connection_closed_exception.py +10 -10
- zaber_motion/exceptions/connection_failed_exception.py +10 -10
- zaber_motion/exceptions/conversion_failed_exception.py +10 -10
- zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
- zaber_motion/exceptions/device_busy_exception.py +10 -10
- zaber_motion/exceptions/device_db_failed_exception.py +27 -27
- zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
- zaber_motion/exceptions/device_failed_exception.py +11 -11
- zaber_motion/exceptions/device_not_identified_exception.py +10 -10
- zaber_motion/exceptions/driver_disabled_exception.py +10 -10
- zaber_motion/exceptions/g_code_execution_exception.py +27 -27
- zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
- zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
- zaber_motion/exceptions/internal_error_exception.py +10 -10
- zaber_motion/exceptions/invalid_argument_exception.py +10 -10
- zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_operation_exception.py +10 -10
- zaber_motion/exceptions/invalid_packet_exception.py +27 -27
- zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
- zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
- zaber_motion/exceptions/invalid_response_exception.py +27 -27
- zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
- zaber_motion/exceptions/io_failed_exception.py +10 -10
- zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
- zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
- zaber_motion/exceptions/motion_lib_exception.py +18 -18
- zaber_motion/exceptions/movement_failed_exception.py +27 -27
- zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/no_device_found_exception.py +10 -10
- zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
- zaber_motion/exceptions/not_supported_exception.py +10 -10
- zaber_motion/exceptions/operation_failed_exception.py +27 -27
- zaber_motion/exceptions/os_failed_exception.py +10 -10
- zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
- zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/pvt_execution_exception.py +27 -27
- zaber_motion/exceptions/pvt_mode_exception.py +10 -10
- zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
- zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/remote_mode_exception.py +11 -11
- zaber_motion/exceptions/request_timeout_exception.py +10 -10
- zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
- zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
- zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
- zaber_motion/exceptions/setting_not_found_exception.py +10 -10
- zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/stream_execution_exception.py +27 -27
- zaber_motion/exceptions/stream_mode_exception.py +10 -10
- zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/timeout_exception.py +10 -10
- zaber_motion/exceptions/transport_already_used_exception.py +10 -10
- zaber_motion/exceptions/unknown_request_exception.py +10 -10
- zaber_motion/gcode/__init__.py +11 -11
- zaber_motion/gcode/offline_translator.py +401 -401
- zaber_motion/gcode/translator.py +424 -424
- zaber_motion/library.py +179 -179
- zaber_motion/microscopy/__init__.py +14 -14
- zaber_motion/microscopy/autofocus.py +645 -645
- zaber_motion/microscopy/camera_trigger.py +108 -108
- zaber_motion/microscopy/filter_changer.py +167 -167
- zaber_motion/microscopy/illuminator.py +139 -139
- zaber_motion/microscopy/illuminator_channel.py +616 -616
- zaber_motion/microscopy/microscope.py +315 -315
- zaber_motion/microscopy/objective_changer.py +403 -403
- zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
- zaber_motion/product/__init__.py +7 -7
- zaber_motion/product/process.py +818 -818
- zaber_motion/product/process_controller.py +134 -134
- zaber_motion/serialization.py +32 -32
- zaber_motion/tools.py +78 -78
- zaber_motion/unit_table.py +86 -86
- zaber_motion/units.py +206 -206
- zaber_motion/version.py +1 -1
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
- zaber_motion-7.14.0.dist-info/RECORD +496 -0
- zaber_motion_bindings/zaber-motion-core-windows-amd64.dll +0 -0
- zaber_motion-7.13.0.dist-info/RECORD +0 -494
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
zaber_motion/ascii/lockstep.py
CHANGED
|
@@ -1,1184 +1,1184 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
from typing import TYPE_CHECKING, List
|
|
4
|
-
from ..dto import requests as dto
|
|
5
|
-
from ..units import Units, LengthUnits, VelocityUnits, AccelerationUnits, TimeUnits
|
|
6
|
-
from ..call import call, call_async, call_sync
|
|
7
|
-
from ..dto.ascii.lockstep_axes import LockstepAxes
|
|
8
|
-
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from .device import Device
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class Lockstep:
|
|
14
|
-
"""
|
|
15
|
-
Represents a lockstep group with this ID on a device.
|
|
16
|
-
A lockstep group is a movement synchronized pair of axes on a device.
|
|
17
|
-
Requires at least Firmware 6.15 or 7.11.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
@property
|
|
21
|
-
def device(self) -> 'Device':
|
|
22
|
-
"""
|
|
23
|
-
Device that controls this lockstep group.
|
|
24
|
-
"""
|
|
25
|
-
return self._device
|
|
26
|
-
|
|
27
|
-
@property
|
|
28
|
-
def lockstep_group_id(self) -> int:
|
|
29
|
-
"""
|
|
30
|
-
The number that identifies the lockstep group on the device.
|
|
31
|
-
"""
|
|
32
|
-
return self._lockstep_group_id
|
|
33
|
-
|
|
34
|
-
def __init__(self, device: 'Device', lockstep_group_id: int):
|
|
35
|
-
self._device: 'Device' = device
|
|
36
|
-
self._lockstep_group_id: int = lockstep_group_id
|
|
37
|
-
|
|
38
|
-
def enable(
|
|
39
|
-
self,
|
|
40
|
-
*axes: int
|
|
41
|
-
) -> None:
|
|
42
|
-
"""
|
|
43
|
-
Activate the lockstep group on the axes specified.
|
|
44
|
-
|
|
45
|
-
Args:
|
|
46
|
-
axes: The numbers of axes in the lockstep group.
|
|
47
|
-
"""
|
|
48
|
-
request = dto.LockstepEnableRequest(
|
|
49
|
-
interface_id=self.device.connection.interface_id,
|
|
50
|
-
device=self.device.device_address,
|
|
51
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
52
|
-
axes=list(axes),
|
|
53
|
-
)
|
|
54
|
-
call("device/lockstep_enable", request)
|
|
55
|
-
|
|
56
|
-
async def enable_async(
|
|
57
|
-
self,
|
|
58
|
-
*axes: int
|
|
59
|
-
) -> None:
|
|
60
|
-
"""
|
|
61
|
-
Activate the lockstep group on the axes specified.
|
|
62
|
-
|
|
63
|
-
Args:
|
|
64
|
-
axes: The numbers of axes in the lockstep group.
|
|
65
|
-
"""
|
|
66
|
-
request = dto.LockstepEnableRequest(
|
|
67
|
-
interface_id=self.device.connection.interface_id,
|
|
68
|
-
device=self.device.device_address,
|
|
69
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
70
|
-
axes=list(axes),
|
|
71
|
-
)
|
|
72
|
-
await call_async("device/lockstep_enable", request)
|
|
73
|
-
|
|
74
|
-
def disable(
|
|
75
|
-
self
|
|
76
|
-
) -> None:
|
|
77
|
-
"""
|
|
78
|
-
Disable the lockstep group.
|
|
79
|
-
"""
|
|
80
|
-
request = dto.LockstepDisableRequest(
|
|
81
|
-
interface_id=self.device.connection.interface_id,
|
|
82
|
-
device=self.device.device_address,
|
|
83
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
84
|
-
)
|
|
85
|
-
call("device/lockstep_disable", request)
|
|
86
|
-
|
|
87
|
-
async def disable_async(
|
|
88
|
-
self
|
|
89
|
-
) -> None:
|
|
90
|
-
"""
|
|
91
|
-
Disable the lockstep group.
|
|
92
|
-
"""
|
|
93
|
-
request = dto.LockstepDisableRequest(
|
|
94
|
-
interface_id=self.device.connection.interface_id,
|
|
95
|
-
device=self.device.device_address,
|
|
96
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
97
|
-
)
|
|
98
|
-
await call_async("device/lockstep_disable", request)
|
|
99
|
-
|
|
100
|
-
def stop(
|
|
101
|
-
self,
|
|
102
|
-
wait_until_idle: bool = True
|
|
103
|
-
) -> None:
|
|
104
|
-
"""
|
|
105
|
-
Stops ongoing lockstep group movement. Decelerates until zero speed.
|
|
106
|
-
|
|
107
|
-
Args:
|
|
108
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
109
|
-
"""
|
|
110
|
-
request = dto.LockstepStopRequest(
|
|
111
|
-
interface_id=self.device.connection.interface_id,
|
|
112
|
-
device=self.device.device_address,
|
|
113
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
114
|
-
wait_until_idle=wait_until_idle,
|
|
115
|
-
)
|
|
116
|
-
call("device/lockstep_stop", request)
|
|
117
|
-
|
|
118
|
-
async def stop_async(
|
|
119
|
-
self,
|
|
120
|
-
wait_until_idle: bool = True
|
|
121
|
-
) -> None:
|
|
122
|
-
"""
|
|
123
|
-
Stops ongoing lockstep group movement. Decelerates until zero speed.
|
|
124
|
-
|
|
125
|
-
Args:
|
|
126
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
127
|
-
"""
|
|
128
|
-
request = dto.LockstepStopRequest(
|
|
129
|
-
interface_id=self.device.connection.interface_id,
|
|
130
|
-
device=self.device.device_address,
|
|
131
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
132
|
-
wait_until_idle=wait_until_idle,
|
|
133
|
-
)
|
|
134
|
-
await call_async("device/lockstep_stop", request)
|
|
135
|
-
|
|
136
|
-
def home(
|
|
137
|
-
self,
|
|
138
|
-
wait_until_idle: bool = True
|
|
139
|
-
) -> None:
|
|
140
|
-
"""
|
|
141
|
-
Retracts the axes of the lockstep group until a home associated with an individual axis is detected.
|
|
142
|
-
|
|
143
|
-
Args:
|
|
144
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
145
|
-
"""
|
|
146
|
-
request = dto.LockstepHomeRequest(
|
|
147
|
-
interface_id=self.device.connection.interface_id,
|
|
148
|
-
device=self.device.device_address,
|
|
149
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
150
|
-
wait_until_idle=wait_until_idle,
|
|
151
|
-
)
|
|
152
|
-
call("device/lockstep_home", request)
|
|
153
|
-
|
|
154
|
-
async def home_async(
|
|
155
|
-
self,
|
|
156
|
-
wait_until_idle: bool = True
|
|
157
|
-
) -> None:
|
|
158
|
-
"""
|
|
159
|
-
Retracts the axes of the lockstep group until a home associated with an individual axis is detected.
|
|
160
|
-
|
|
161
|
-
Args:
|
|
162
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
163
|
-
"""
|
|
164
|
-
request = dto.LockstepHomeRequest(
|
|
165
|
-
interface_id=self.device.connection.interface_id,
|
|
166
|
-
device=self.device.device_address,
|
|
167
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
168
|
-
wait_until_idle=wait_until_idle,
|
|
169
|
-
)
|
|
170
|
-
await call_async("device/lockstep_home", request)
|
|
171
|
-
|
|
172
|
-
def move_absolute(
|
|
173
|
-
self,
|
|
174
|
-
position: float,
|
|
175
|
-
unit: LengthUnits = Units.NATIVE,
|
|
176
|
-
wait_until_idle: bool = True,
|
|
177
|
-
velocity: float = 0,
|
|
178
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
179
|
-
acceleration: float = 0,
|
|
180
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
181
|
-
) -> None:
|
|
182
|
-
"""
|
|
183
|
-
Move the first axis of the lockstep group to an absolute position.
|
|
184
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
185
|
-
|
|
186
|
-
Args:
|
|
187
|
-
position: Absolute position.
|
|
188
|
-
unit: Units of position.
|
|
189
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
190
|
-
velocity: Movement velocity.
|
|
191
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
192
|
-
Requires at least Firmware 7.25.
|
|
193
|
-
velocity_unit: Units of velocity.
|
|
194
|
-
acceleration: Movement acceleration.
|
|
195
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
196
|
-
Requires at least Firmware 7.25.
|
|
197
|
-
acceleration_unit: Units of acceleration.
|
|
198
|
-
"""
|
|
199
|
-
request = dto.LockstepMoveRequest(
|
|
200
|
-
interface_id=self.device.connection.interface_id,
|
|
201
|
-
device=self.device.device_address,
|
|
202
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
203
|
-
type=dto.AxisMoveType.ABS,
|
|
204
|
-
arg=position,
|
|
205
|
-
unit=unit,
|
|
206
|
-
wait_until_idle=wait_until_idle,
|
|
207
|
-
velocity=velocity,
|
|
208
|
-
velocity_unit=velocity_unit,
|
|
209
|
-
acceleration=acceleration,
|
|
210
|
-
acceleration_unit=acceleration_unit,
|
|
211
|
-
)
|
|
212
|
-
call("device/lockstep_move", request)
|
|
213
|
-
|
|
214
|
-
async def move_absolute_async(
|
|
215
|
-
self,
|
|
216
|
-
position: float,
|
|
217
|
-
unit: LengthUnits = Units.NATIVE,
|
|
218
|
-
wait_until_idle: bool = True,
|
|
219
|
-
velocity: float = 0,
|
|
220
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
221
|
-
acceleration: float = 0,
|
|
222
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
223
|
-
) -> None:
|
|
224
|
-
"""
|
|
225
|
-
Move the first axis of the lockstep group to an absolute position.
|
|
226
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
227
|
-
|
|
228
|
-
Args:
|
|
229
|
-
position: Absolute position.
|
|
230
|
-
unit: Units of position.
|
|
231
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
232
|
-
velocity: Movement velocity.
|
|
233
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
234
|
-
Requires at least Firmware 7.25.
|
|
235
|
-
velocity_unit: Units of velocity.
|
|
236
|
-
acceleration: Movement acceleration.
|
|
237
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
238
|
-
Requires at least Firmware 7.25.
|
|
239
|
-
acceleration_unit: Units of acceleration.
|
|
240
|
-
"""
|
|
241
|
-
request = dto.LockstepMoveRequest(
|
|
242
|
-
interface_id=self.device.connection.interface_id,
|
|
243
|
-
device=self.device.device_address,
|
|
244
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
245
|
-
type=dto.AxisMoveType.ABS,
|
|
246
|
-
arg=position,
|
|
247
|
-
unit=unit,
|
|
248
|
-
wait_until_idle=wait_until_idle,
|
|
249
|
-
velocity=velocity,
|
|
250
|
-
velocity_unit=velocity_unit,
|
|
251
|
-
acceleration=acceleration,
|
|
252
|
-
acceleration_unit=acceleration_unit,
|
|
253
|
-
)
|
|
254
|
-
await call_async("device/lockstep_move", request)
|
|
255
|
-
|
|
256
|
-
def move_relative(
|
|
257
|
-
self,
|
|
258
|
-
position: float,
|
|
259
|
-
unit: LengthUnits = Units.NATIVE,
|
|
260
|
-
wait_until_idle: bool = True,
|
|
261
|
-
velocity: float = 0,
|
|
262
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
263
|
-
acceleration: float = 0,
|
|
264
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
265
|
-
) -> None:
|
|
266
|
-
"""
|
|
267
|
-
Move the first axis of the lockstep group to a position relative to its current position.
|
|
268
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
269
|
-
|
|
270
|
-
Args:
|
|
271
|
-
position: Relative position.
|
|
272
|
-
unit: Units of position.
|
|
273
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
274
|
-
velocity: Movement velocity.
|
|
275
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
276
|
-
Requires at least Firmware 7.25.
|
|
277
|
-
velocity_unit: Units of velocity.
|
|
278
|
-
acceleration: Movement acceleration.
|
|
279
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
280
|
-
Requires at least Firmware 7.25.
|
|
281
|
-
acceleration_unit: Units of acceleration.
|
|
282
|
-
"""
|
|
283
|
-
request = dto.LockstepMoveRequest(
|
|
284
|
-
interface_id=self.device.connection.interface_id,
|
|
285
|
-
device=self.device.device_address,
|
|
286
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
287
|
-
type=dto.AxisMoveType.REL,
|
|
288
|
-
arg=position,
|
|
289
|
-
unit=unit,
|
|
290
|
-
wait_until_idle=wait_until_idle,
|
|
291
|
-
velocity=velocity,
|
|
292
|
-
velocity_unit=velocity_unit,
|
|
293
|
-
acceleration=acceleration,
|
|
294
|
-
acceleration_unit=acceleration_unit,
|
|
295
|
-
)
|
|
296
|
-
call("device/lockstep_move", request)
|
|
297
|
-
|
|
298
|
-
async def move_relative_async(
|
|
299
|
-
self,
|
|
300
|
-
position: float,
|
|
301
|
-
unit: LengthUnits = Units.NATIVE,
|
|
302
|
-
wait_until_idle: bool = True,
|
|
303
|
-
velocity: float = 0,
|
|
304
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
305
|
-
acceleration: float = 0,
|
|
306
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
307
|
-
) -> None:
|
|
308
|
-
"""
|
|
309
|
-
Move the first axis of the lockstep group to a position relative to its current position.
|
|
310
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
311
|
-
|
|
312
|
-
Args:
|
|
313
|
-
position: Relative position.
|
|
314
|
-
unit: Units of position.
|
|
315
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
316
|
-
velocity: Movement velocity.
|
|
317
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
318
|
-
Requires at least Firmware 7.25.
|
|
319
|
-
velocity_unit: Units of velocity.
|
|
320
|
-
acceleration: Movement acceleration.
|
|
321
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
322
|
-
Requires at least Firmware 7.25.
|
|
323
|
-
acceleration_unit: Units of acceleration.
|
|
324
|
-
"""
|
|
325
|
-
request = dto.LockstepMoveRequest(
|
|
326
|
-
interface_id=self.device.connection.interface_id,
|
|
327
|
-
device=self.device.device_address,
|
|
328
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
329
|
-
type=dto.AxisMoveType.REL,
|
|
330
|
-
arg=position,
|
|
331
|
-
unit=unit,
|
|
332
|
-
wait_until_idle=wait_until_idle,
|
|
333
|
-
velocity=velocity,
|
|
334
|
-
velocity_unit=velocity_unit,
|
|
335
|
-
acceleration=acceleration,
|
|
336
|
-
acceleration_unit=acceleration_unit,
|
|
337
|
-
)
|
|
338
|
-
await call_async("device/lockstep_move", request)
|
|
339
|
-
|
|
340
|
-
def move_velocity(
|
|
341
|
-
self,
|
|
342
|
-
velocity: float,
|
|
343
|
-
unit: VelocityUnits = Units.NATIVE,
|
|
344
|
-
acceleration: float = 0,
|
|
345
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
346
|
-
) -> None:
|
|
347
|
-
"""
|
|
348
|
-
Moves the first axis of the lockstep group at the specified speed.
|
|
349
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
350
|
-
|
|
351
|
-
Args:
|
|
352
|
-
velocity: Movement velocity.
|
|
353
|
-
unit: Units of velocity.
|
|
354
|
-
acceleration: Movement acceleration.
|
|
355
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
356
|
-
Requires at least Firmware 7.25.
|
|
357
|
-
acceleration_unit: Units of acceleration.
|
|
358
|
-
"""
|
|
359
|
-
request = dto.LockstepMoveRequest(
|
|
360
|
-
interface_id=self.device.connection.interface_id,
|
|
361
|
-
device=self.device.device_address,
|
|
362
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
363
|
-
type=dto.AxisMoveType.VEL,
|
|
364
|
-
arg=velocity,
|
|
365
|
-
unit=unit,
|
|
366
|
-
acceleration=acceleration,
|
|
367
|
-
acceleration_unit=acceleration_unit,
|
|
368
|
-
)
|
|
369
|
-
call("device/lockstep_move", request)
|
|
370
|
-
|
|
371
|
-
async def move_velocity_async(
|
|
372
|
-
self,
|
|
373
|
-
velocity: float,
|
|
374
|
-
unit: VelocityUnits = Units.NATIVE,
|
|
375
|
-
acceleration: float = 0,
|
|
376
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
377
|
-
) -> None:
|
|
378
|
-
"""
|
|
379
|
-
Moves the first axis of the lockstep group at the specified speed.
|
|
380
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
381
|
-
|
|
382
|
-
Args:
|
|
383
|
-
velocity: Movement velocity.
|
|
384
|
-
unit: Units of velocity.
|
|
385
|
-
acceleration: Movement acceleration.
|
|
386
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
387
|
-
Requires at least Firmware 7.25.
|
|
388
|
-
acceleration_unit: Units of acceleration.
|
|
389
|
-
"""
|
|
390
|
-
request = dto.LockstepMoveRequest(
|
|
391
|
-
interface_id=self.device.connection.interface_id,
|
|
392
|
-
device=self.device.device_address,
|
|
393
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
394
|
-
type=dto.AxisMoveType.VEL,
|
|
395
|
-
arg=velocity,
|
|
396
|
-
unit=unit,
|
|
397
|
-
acceleration=acceleration,
|
|
398
|
-
acceleration_unit=acceleration_unit,
|
|
399
|
-
)
|
|
400
|
-
await call_async("device/lockstep_move", request)
|
|
401
|
-
|
|
402
|
-
def move_sin(
|
|
403
|
-
self,
|
|
404
|
-
amplitude: float,
|
|
405
|
-
amplitude_units: LengthUnits,
|
|
406
|
-
period: float,
|
|
407
|
-
period_units: TimeUnits,
|
|
408
|
-
count: float = 0,
|
|
409
|
-
wait_until_idle: bool = True
|
|
410
|
-
) -> None:
|
|
411
|
-
"""
|
|
412
|
-
Moves the first axis of the lockstep group in a sinusoidal trajectory.
|
|
413
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
414
|
-
|
|
415
|
-
Args:
|
|
416
|
-
amplitude: Amplitude of the sinusoidal motion (half of the motion's peak-to-peak range).
|
|
417
|
-
amplitude_units: Units of position.
|
|
418
|
-
period: Period of the sinusoidal motion in milliseconds.
|
|
419
|
-
period_units: Units of time.
|
|
420
|
-
count: Number of sinusoidal cycles to complete.
|
|
421
|
-
Must be a multiple of 0.5
|
|
422
|
-
If count is not specified or set to 0, the axis will move indefinitely.
|
|
423
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
424
|
-
"""
|
|
425
|
-
request = dto.LockstepMoveSinRequest(
|
|
426
|
-
interface_id=self.device.connection.interface_id,
|
|
427
|
-
device=self.device.device_address,
|
|
428
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
429
|
-
amplitude=amplitude,
|
|
430
|
-
amplitude_units=amplitude_units,
|
|
431
|
-
period=period,
|
|
432
|
-
period_units=period_units,
|
|
433
|
-
count=count,
|
|
434
|
-
wait_until_idle=wait_until_idle,
|
|
435
|
-
)
|
|
436
|
-
call("device/lockstep_move_sin", request)
|
|
437
|
-
|
|
438
|
-
async def move_sin_async(
|
|
439
|
-
self,
|
|
440
|
-
amplitude: float,
|
|
441
|
-
amplitude_units: LengthUnits,
|
|
442
|
-
period: float,
|
|
443
|
-
period_units: TimeUnits,
|
|
444
|
-
count: float = 0,
|
|
445
|
-
wait_until_idle: bool = True
|
|
446
|
-
) -> None:
|
|
447
|
-
"""
|
|
448
|
-
Moves the first axis of the lockstep group in a sinusoidal trajectory.
|
|
449
|
-
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
450
|
-
|
|
451
|
-
Args:
|
|
452
|
-
amplitude: Amplitude of the sinusoidal motion (half of the motion's peak-to-peak range).
|
|
453
|
-
amplitude_units: Units of position.
|
|
454
|
-
period: Period of the sinusoidal motion in milliseconds.
|
|
455
|
-
period_units: Units of time.
|
|
456
|
-
count: Number of sinusoidal cycles to complete.
|
|
457
|
-
Must be a multiple of 0.5
|
|
458
|
-
If count is not specified or set to 0, the axis will move indefinitely.
|
|
459
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
460
|
-
"""
|
|
461
|
-
request = dto.LockstepMoveSinRequest(
|
|
462
|
-
interface_id=self.device.connection.interface_id,
|
|
463
|
-
device=self.device.device_address,
|
|
464
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
465
|
-
amplitude=amplitude,
|
|
466
|
-
amplitude_units=amplitude_units,
|
|
467
|
-
period=period,
|
|
468
|
-
period_units=period_units,
|
|
469
|
-
count=count,
|
|
470
|
-
wait_until_idle=wait_until_idle,
|
|
471
|
-
)
|
|
472
|
-
await call_async("device/lockstep_move_sin", request)
|
|
473
|
-
|
|
474
|
-
def move_sin_stop(
|
|
475
|
-
self,
|
|
476
|
-
wait_until_idle: bool = True
|
|
477
|
-
) -> None:
|
|
478
|
-
"""
|
|
479
|
-
Stops the lockstep group at the end of the sinusoidal trajectory for the first axis.
|
|
480
|
-
If the sinusoidal motion was started with an integer-plus-half cycle count,
|
|
481
|
-
the motion ends at the half-way point of the sinusoidal trajectory.
|
|
482
|
-
|
|
483
|
-
Args:
|
|
484
|
-
wait_until_idle: Determines whether function should return after the movement is finished.
|
|
485
|
-
"""
|
|
486
|
-
request = dto.LockstepStopRequest(
|
|
487
|
-
interface_id=self.device.connection.interface_id,
|
|
488
|
-
device=self.device.device_address,
|
|
489
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
490
|
-
wait_until_idle=wait_until_idle,
|
|
491
|
-
)
|
|
492
|
-
call("device/lockstep_move_sin_stop", request)
|
|
493
|
-
|
|
494
|
-
async def move_sin_stop_async(
|
|
495
|
-
self,
|
|
496
|
-
wait_until_idle: bool = True
|
|
497
|
-
) -> None:
|
|
498
|
-
"""
|
|
499
|
-
Stops the lockstep group at the end of the sinusoidal trajectory for the first axis.
|
|
500
|
-
If the sinusoidal motion was started with an integer-plus-half cycle count,
|
|
501
|
-
the motion ends at the half-way point of the sinusoidal trajectory.
|
|
502
|
-
|
|
503
|
-
Args:
|
|
504
|
-
wait_until_idle: Determines whether function should return after the movement is finished.
|
|
505
|
-
"""
|
|
506
|
-
request = dto.LockstepStopRequest(
|
|
507
|
-
interface_id=self.device.connection.interface_id,
|
|
508
|
-
device=self.device.device_address,
|
|
509
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
510
|
-
wait_until_idle=wait_until_idle,
|
|
511
|
-
)
|
|
512
|
-
await call_async("device/lockstep_move_sin_stop", request)
|
|
513
|
-
|
|
514
|
-
def move_max(
|
|
515
|
-
self,
|
|
516
|
-
wait_until_idle: bool = True,
|
|
517
|
-
velocity: float = 0,
|
|
518
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
519
|
-
acceleration: float = 0,
|
|
520
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
521
|
-
) -> None:
|
|
522
|
-
"""
|
|
523
|
-
Moves the axes to the maximum valid position.
|
|
524
|
-
The axes in the lockstep group maintain their offsets throughout movement.
|
|
525
|
-
Respects lim.max for all axes in the group.
|
|
526
|
-
|
|
527
|
-
Args:
|
|
528
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
529
|
-
velocity: Movement velocity.
|
|
530
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
531
|
-
Requires at least Firmware 7.25.
|
|
532
|
-
velocity_unit: Units of velocity.
|
|
533
|
-
acceleration: Movement acceleration.
|
|
534
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
535
|
-
Requires at least Firmware 7.25.
|
|
536
|
-
acceleration_unit: Units of acceleration.
|
|
537
|
-
"""
|
|
538
|
-
request = dto.LockstepMoveRequest(
|
|
539
|
-
interface_id=self.device.connection.interface_id,
|
|
540
|
-
device=self.device.device_address,
|
|
541
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
542
|
-
type=dto.AxisMoveType.MAX,
|
|
543
|
-
wait_until_idle=wait_until_idle,
|
|
544
|
-
velocity=velocity,
|
|
545
|
-
velocity_unit=velocity_unit,
|
|
546
|
-
acceleration=acceleration,
|
|
547
|
-
acceleration_unit=acceleration_unit,
|
|
548
|
-
)
|
|
549
|
-
call("device/lockstep_move", request)
|
|
550
|
-
|
|
551
|
-
async def move_max_async(
|
|
552
|
-
self,
|
|
553
|
-
wait_until_idle: bool = True,
|
|
554
|
-
velocity: float = 0,
|
|
555
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
556
|
-
acceleration: float = 0,
|
|
557
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
558
|
-
) -> None:
|
|
559
|
-
"""
|
|
560
|
-
Moves the axes to the maximum valid position.
|
|
561
|
-
The axes in the lockstep group maintain their offsets throughout movement.
|
|
562
|
-
Respects lim.max for all axes in the group.
|
|
563
|
-
|
|
564
|
-
Args:
|
|
565
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
566
|
-
velocity: Movement velocity.
|
|
567
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
568
|
-
Requires at least Firmware 7.25.
|
|
569
|
-
velocity_unit: Units of velocity.
|
|
570
|
-
acceleration: Movement acceleration.
|
|
571
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
572
|
-
Requires at least Firmware 7.25.
|
|
573
|
-
acceleration_unit: Units of acceleration.
|
|
574
|
-
"""
|
|
575
|
-
request = dto.LockstepMoveRequest(
|
|
576
|
-
interface_id=self.device.connection.interface_id,
|
|
577
|
-
device=self.device.device_address,
|
|
578
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
579
|
-
type=dto.AxisMoveType.MAX,
|
|
580
|
-
wait_until_idle=wait_until_idle,
|
|
581
|
-
velocity=velocity,
|
|
582
|
-
velocity_unit=velocity_unit,
|
|
583
|
-
acceleration=acceleration,
|
|
584
|
-
acceleration_unit=acceleration_unit,
|
|
585
|
-
)
|
|
586
|
-
await call_async("device/lockstep_move", request)
|
|
587
|
-
|
|
588
|
-
def move_min(
|
|
589
|
-
self,
|
|
590
|
-
wait_until_idle: bool = True,
|
|
591
|
-
velocity: float = 0,
|
|
592
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
593
|
-
acceleration: float = 0,
|
|
594
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
595
|
-
) -> None:
|
|
596
|
-
"""
|
|
597
|
-
Moves the axes to the minimum valid position.
|
|
598
|
-
The axes in the lockstep group maintain their offsets throughout movement.
|
|
599
|
-
Respects lim.min for all axes in the group.
|
|
600
|
-
|
|
601
|
-
Args:
|
|
602
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
603
|
-
velocity: Movement velocity.
|
|
604
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
605
|
-
Requires at least Firmware 7.25.
|
|
606
|
-
velocity_unit: Units of velocity.
|
|
607
|
-
acceleration: Movement acceleration.
|
|
608
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
609
|
-
Requires at least Firmware 7.25.
|
|
610
|
-
acceleration_unit: Units of acceleration.
|
|
611
|
-
"""
|
|
612
|
-
request = dto.LockstepMoveRequest(
|
|
613
|
-
interface_id=self.device.connection.interface_id,
|
|
614
|
-
device=self.device.device_address,
|
|
615
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
616
|
-
type=dto.AxisMoveType.MIN,
|
|
617
|
-
wait_until_idle=wait_until_idle,
|
|
618
|
-
velocity=velocity,
|
|
619
|
-
velocity_unit=velocity_unit,
|
|
620
|
-
acceleration=acceleration,
|
|
621
|
-
acceleration_unit=acceleration_unit,
|
|
622
|
-
)
|
|
623
|
-
call("device/lockstep_move", request)
|
|
624
|
-
|
|
625
|
-
async def move_min_async(
|
|
626
|
-
self,
|
|
627
|
-
wait_until_idle: bool = True,
|
|
628
|
-
velocity: float = 0,
|
|
629
|
-
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
630
|
-
acceleration: float = 0,
|
|
631
|
-
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
632
|
-
) -> None:
|
|
633
|
-
"""
|
|
634
|
-
Moves the axes to the minimum valid position.
|
|
635
|
-
The axes in the lockstep group maintain their offsets throughout movement.
|
|
636
|
-
Respects lim.min for all axes in the group.
|
|
637
|
-
|
|
638
|
-
Args:
|
|
639
|
-
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
640
|
-
velocity: Movement velocity.
|
|
641
|
-
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
642
|
-
Requires at least Firmware 7.25.
|
|
643
|
-
velocity_unit: Units of velocity.
|
|
644
|
-
acceleration: Movement acceleration.
|
|
645
|
-
Default value of 0 indicates that the accel setting is used instead.
|
|
646
|
-
Requires at least Firmware 7.25.
|
|
647
|
-
acceleration_unit: Units of acceleration.
|
|
648
|
-
"""
|
|
649
|
-
request = dto.LockstepMoveRequest(
|
|
650
|
-
interface_id=self.device.connection.interface_id,
|
|
651
|
-
device=self.device.device_address,
|
|
652
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
653
|
-
type=dto.AxisMoveType.MIN,
|
|
654
|
-
wait_until_idle=wait_until_idle,
|
|
655
|
-
velocity=velocity,
|
|
656
|
-
velocity_unit=velocity_unit,
|
|
657
|
-
acceleration=acceleration,
|
|
658
|
-
acceleration_unit=acceleration_unit,
|
|
659
|
-
)
|
|
660
|
-
await call_async("device/lockstep_move", request)
|
|
661
|
-
|
|
662
|
-
def wait_until_idle(
|
|
663
|
-
self,
|
|
664
|
-
throw_error_on_fault: bool = True
|
|
665
|
-
) -> None:
|
|
666
|
-
"""
|
|
667
|
-
Waits until the lockstep group stops moving.
|
|
668
|
-
|
|
669
|
-
Args:
|
|
670
|
-
throw_error_on_fault: Determines whether to throw error when fault is observed.
|
|
671
|
-
"""
|
|
672
|
-
request = dto.LockstepWaitUntilIdleRequest(
|
|
673
|
-
interface_id=self.device.connection.interface_id,
|
|
674
|
-
device=self.device.device_address,
|
|
675
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
676
|
-
throw_error_on_fault=throw_error_on_fault,
|
|
677
|
-
)
|
|
678
|
-
call("device/lockstep_wait_until_idle", request)
|
|
679
|
-
|
|
680
|
-
async def wait_until_idle_async(
|
|
681
|
-
self,
|
|
682
|
-
throw_error_on_fault: bool = True
|
|
683
|
-
) -> None:
|
|
684
|
-
"""
|
|
685
|
-
Waits until the lockstep group stops moving.
|
|
686
|
-
|
|
687
|
-
Args:
|
|
688
|
-
throw_error_on_fault: Determines whether to throw error when fault is observed.
|
|
689
|
-
"""
|
|
690
|
-
request = dto.LockstepWaitUntilIdleRequest(
|
|
691
|
-
interface_id=self.device.connection.interface_id,
|
|
692
|
-
device=self.device.device_address,
|
|
693
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
694
|
-
throw_error_on_fault=throw_error_on_fault,
|
|
695
|
-
)
|
|
696
|
-
await call_async("device/lockstep_wait_until_idle", request)
|
|
697
|
-
|
|
698
|
-
def is_busy(
|
|
699
|
-
self
|
|
700
|
-
) -> bool:
|
|
701
|
-
"""
|
|
702
|
-
Returns bool indicating whether the lockstep group is executing a motion command.
|
|
703
|
-
|
|
704
|
-
Returns:
|
|
705
|
-
True if the axes are currently executing a motion command.
|
|
706
|
-
"""
|
|
707
|
-
request = dto.LockstepEmptyRequest(
|
|
708
|
-
interface_id=self.device.connection.interface_id,
|
|
709
|
-
device=self.device.device_address,
|
|
710
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
711
|
-
)
|
|
712
|
-
response = call(
|
|
713
|
-
"device/lockstep_is_busy",
|
|
714
|
-
request,
|
|
715
|
-
dto.BoolResponse.from_binary)
|
|
716
|
-
return response.value
|
|
717
|
-
|
|
718
|
-
async def is_busy_async(
|
|
719
|
-
self
|
|
720
|
-
) -> bool:
|
|
721
|
-
"""
|
|
722
|
-
Returns bool indicating whether the lockstep group is executing a motion command.
|
|
723
|
-
|
|
724
|
-
Returns:
|
|
725
|
-
True if the axes are currently executing a motion command.
|
|
726
|
-
"""
|
|
727
|
-
request = dto.LockstepEmptyRequest(
|
|
728
|
-
interface_id=self.device.connection.interface_id,
|
|
729
|
-
device=self.device.device_address,
|
|
730
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
731
|
-
)
|
|
732
|
-
response = await call_async(
|
|
733
|
-
"device/lockstep_is_busy",
|
|
734
|
-
request,
|
|
735
|
-
dto.BoolResponse.from_binary)
|
|
736
|
-
return response.value
|
|
737
|
-
|
|
738
|
-
def get_axes(
|
|
739
|
-
self
|
|
740
|
-
) -> LockstepAxes:
|
|
741
|
-
"""
|
|
742
|
-
Deprecated: Use GetAxisNumbers instead.
|
|
743
|
-
|
|
744
|
-
Gets the axes of the lockstep group.
|
|
745
|
-
|
|
746
|
-
Returns:
|
|
747
|
-
LockstepAxes instance which contains the axes numbers of the lockstep group.
|
|
748
|
-
"""
|
|
749
|
-
request = dto.LockstepEmptyRequest(
|
|
750
|
-
interface_id=self.device.connection.interface_id,
|
|
751
|
-
device=self.device.device_address,
|
|
752
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
753
|
-
)
|
|
754
|
-
response = call(
|
|
755
|
-
"device/lockstep_get_axes",
|
|
756
|
-
request,
|
|
757
|
-
LockstepAxes.from_binary)
|
|
758
|
-
return response
|
|
759
|
-
|
|
760
|
-
async def get_axes_async(
|
|
761
|
-
self
|
|
762
|
-
) -> LockstepAxes:
|
|
763
|
-
"""
|
|
764
|
-
Deprecated: Use GetAxisNumbers instead.
|
|
765
|
-
|
|
766
|
-
Gets the axes of the lockstep group.
|
|
767
|
-
|
|
768
|
-
Returns:
|
|
769
|
-
LockstepAxes instance which contains the axes numbers of the lockstep group.
|
|
770
|
-
"""
|
|
771
|
-
request = dto.LockstepEmptyRequest(
|
|
772
|
-
interface_id=self.device.connection.interface_id,
|
|
773
|
-
device=self.device.device_address,
|
|
774
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
775
|
-
)
|
|
776
|
-
response = await call_async(
|
|
777
|
-
"device/lockstep_get_axes",
|
|
778
|
-
request,
|
|
779
|
-
LockstepAxes.from_binary)
|
|
780
|
-
return response
|
|
781
|
-
|
|
782
|
-
def get_axis_numbers(
|
|
783
|
-
self
|
|
784
|
-
) -> List[int]:
|
|
785
|
-
"""
|
|
786
|
-
Gets the axis numbers of the lockstep group.
|
|
787
|
-
|
|
788
|
-
Returns:
|
|
789
|
-
Axis numbers in order specified when enabling lockstep.
|
|
790
|
-
"""
|
|
791
|
-
request = dto.LockstepEmptyRequest(
|
|
792
|
-
interface_id=self.device.connection.interface_id,
|
|
793
|
-
device=self.device.device_address,
|
|
794
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
795
|
-
)
|
|
796
|
-
response = call(
|
|
797
|
-
"device/lockstep_get_axis_numbers",
|
|
798
|
-
request,
|
|
799
|
-
dto.LockstepGetAxisNumbersResponse.from_binary)
|
|
800
|
-
return response.axes
|
|
801
|
-
|
|
802
|
-
async def get_axis_numbers_async(
|
|
803
|
-
self
|
|
804
|
-
) -> List[int]:
|
|
805
|
-
"""
|
|
806
|
-
Gets the axis numbers of the lockstep group.
|
|
807
|
-
|
|
808
|
-
Returns:
|
|
809
|
-
Axis numbers in order specified when enabling lockstep.
|
|
810
|
-
"""
|
|
811
|
-
request = dto.LockstepEmptyRequest(
|
|
812
|
-
interface_id=self.device.connection.interface_id,
|
|
813
|
-
device=self.device.device_address,
|
|
814
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
815
|
-
)
|
|
816
|
-
response = await call_async(
|
|
817
|
-
"device/lockstep_get_axis_numbers",
|
|
818
|
-
request,
|
|
819
|
-
dto.LockstepGetAxisNumbersResponse.from_binary)
|
|
820
|
-
return response.axes
|
|
821
|
-
|
|
822
|
-
def get_offsets(
|
|
823
|
-
self,
|
|
824
|
-
unit: LengthUnits = Units.NATIVE
|
|
825
|
-
) -> List[float]:
|
|
826
|
-
"""
|
|
827
|
-
Gets the initial offsets of secondary axes of an enabled lockstep group.
|
|
828
|
-
|
|
829
|
-
Args:
|
|
830
|
-
unit: Units of position.
|
|
831
|
-
Uses primary axis unit conversion.
|
|
832
|
-
|
|
833
|
-
Returns:
|
|
834
|
-
Initial offset for each axis of the lockstep group.
|
|
835
|
-
"""
|
|
836
|
-
request = dto.LockstepGetRequest(
|
|
837
|
-
interface_id=self.device.connection.interface_id,
|
|
838
|
-
device=self.device.device_address,
|
|
839
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
840
|
-
unit=unit,
|
|
841
|
-
)
|
|
842
|
-
response = call(
|
|
843
|
-
"device/lockstep_get_offsets",
|
|
844
|
-
request,
|
|
845
|
-
dto.DoubleArrayResponse.from_binary)
|
|
846
|
-
return response.values
|
|
847
|
-
|
|
848
|
-
async def get_offsets_async(
|
|
849
|
-
self,
|
|
850
|
-
unit: LengthUnits = Units.NATIVE
|
|
851
|
-
) -> List[float]:
|
|
852
|
-
"""
|
|
853
|
-
Gets the initial offsets of secondary axes of an enabled lockstep group.
|
|
854
|
-
|
|
855
|
-
Args:
|
|
856
|
-
unit: Units of position.
|
|
857
|
-
Uses primary axis unit conversion.
|
|
858
|
-
|
|
859
|
-
Returns:
|
|
860
|
-
Initial offset for each axis of the lockstep group.
|
|
861
|
-
"""
|
|
862
|
-
request = dto.LockstepGetRequest(
|
|
863
|
-
interface_id=self.device.connection.interface_id,
|
|
864
|
-
device=self.device.device_address,
|
|
865
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
866
|
-
unit=unit,
|
|
867
|
-
)
|
|
868
|
-
response = await call_async(
|
|
869
|
-
"device/lockstep_get_offsets",
|
|
870
|
-
request,
|
|
871
|
-
dto.DoubleArrayResponse.from_binary)
|
|
872
|
-
return response.values
|
|
873
|
-
|
|
874
|
-
def get_twists(
|
|
875
|
-
self,
|
|
876
|
-
unit: LengthUnits = Units.NATIVE
|
|
877
|
-
) -> List[float]:
|
|
878
|
-
"""
|
|
879
|
-
Gets the twists of secondary axes of an enabled lockstep group.
|
|
880
|
-
|
|
881
|
-
Args:
|
|
882
|
-
unit: Units of position.
|
|
883
|
-
Uses primary axis unit conversion.
|
|
884
|
-
|
|
885
|
-
Returns:
|
|
886
|
-
Difference between the initial offset and the actual offset for each axis of the lockstep group.
|
|
887
|
-
"""
|
|
888
|
-
request = dto.LockstepGetRequest(
|
|
889
|
-
interface_id=self.device.connection.interface_id,
|
|
890
|
-
device=self.device.device_address,
|
|
891
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
892
|
-
unit=unit,
|
|
893
|
-
)
|
|
894
|
-
response = call(
|
|
895
|
-
"device/lockstep_get_twists",
|
|
896
|
-
request,
|
|
897
|
-
dto.DoubleArrayResponse.from_binary)
|
|
898
|
-
return response.values
|
|
899
|
-
|
|
900
|
-
async def get_twists_async(
|
|
901
|
-
self,
|
|
902
|
-
unit: LengthUnits = Units.NATIVE
|
|
903
|
-
) -> List[float]:
|
|
904
|
-
"""
|
|
905
|
-
Gets the twists of secondary axes of an enabled lockstep group.
|
|
906
|
-
|
|
907
|
-
Args:
|
|
908
|
-
unit: Units of position.
|
|
909
|
-
Uses primary axis unit conversion.
|
|
910
|
-
|
|
911
|
-
Returns:
|
|
912
|
-
Difference between the initial offset and the actual offset for each axis of the lockstep group.
|
|
913
|
-
"""
|
|
914
|
-
request = dto.LockstepGetRequest(
|
|
915
|
-
interface_id=self.device.connection.interface_id,
|
|
916
|
-
device=self.device.device_address,
|
|
917
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
918
|
-
unit=unit,
|
|
919
|
-
)
|
|
920
|
-
response = await call_async(
|
|
921
|
-
"device/lockstep_get_twists",
|
|
922
|
-
request,
|
|
923
|
-
dto.DoubleArrayResponse.from_binary)
|
|
924
|
-
return response.values
|
|
925
|
-
|
|
926
|
-
def get_position(
|
|
927
|
-
self,
|
|
928
|
-
unit: LengthUnits = Units.NATIVE
|
|
929
|
-
) -> float:
|
|
930
|
-
"""
|
|
931
|
-
Returns current position of the primary axis.
|
|
932
|
-
|
|
933
|
-
Args:
|
|
934
|
-
unit: Units of the position.
|
|
935
|
-
|
|
936
|
-
Returns:
|
|
937
|
-
Primary axis position.
|
|
938
|
-
"""
|
|
939
|
-
request = dto.LockstepGetRequest(
|
|
940
|
-
interface_id=self.device.connection.interface_id,
|
|
941
|
-
device=self.device.device_address,
|
|
942
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
943
|
-
unit=unit,
|
|
944
|
-
)
|
|
945
|
-
response = call(
|
|
946
|
-
"device/lockstep_get_pos",
|
|
947
|
-
request,
|
|
948
|
-
dto.DoubleResponse.from_binary)
|
|
949
|
-
return response.value
|
|
950
|
-
|
|
951
|
-
async def get_position_async(
|
|
952
|
-
self,
|
|
953
|
-
unit: LengthUnits = Units.NATIVE
|
|
954
|
-
) -> float:
|
|
955
|
-
"""
|
|
956
|
-
Returns current position of the primary axis.
|
|
957
|
-
|
|
958
|
-
Args:
|
|
959
|
-
unit: Units of the position.
|
|
960
|
-
|
|
961
|
-
Returns:
|
|
962
|
-
Primary axis position.
|
|
963
|
-
"""
|
|
964
|
-
request = dto.LockstepGetRequest(
|
|
965
|
-
interface_id=self.device.connection.interface_id,
|
|
966
|
-
device=self.device.device_address,
|
|
967
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
968
|
-
unit=unit,
|
|
969
|
-
)
|
|
970
|
-
response = await call_async(
|
|
971
|
-
"device/lockstep_get_pos",
|
|
972
|
-
request,
|
|
973
|
-
dto.DoubleResponse.from_binary)
|
|
974
|
-
return response.value
|
|
975
|
-
|
|
976
|
-
def set_tolerance(
|
|
977
|
-
self,
|
|
978
|
-
tolerance: float,
|
|
979
|
-
unit: LengthUnits = Units.NATIVE,
|
|
980
|
-
axis_index: int = 0
|
|
981
|
-
) -> None:
|
|
982
|
-
"""
|
|
983
|
-
Sets lockstep twist tolerance.
|
|
984
|
-
Twist tolerances that do not match the system configuration can reduce performance or damage the system.
|
|
985
|
-
|
|
986
|
-
Args:
|
|
987
|
-
tolerance: Twist tolerance.
|
|
988
|
-
unit: Units of the tolerance.
|
|
989
|
-
Uses primary axis unit conversion when setting to all axes,
|
|
990
|
-
otherwise uses specified secondary axis unit conversion.
|
|
991
|
-
axis_index: Optional index of a secondary axis to set the tolerance for.
|
|
992
|
-
If left empty or set to 0, the tolerance is set to all the secondary axes.
|
|
993
|
-
"""
|
|
994
|
-
request = dto.LockstepSetRequest(
|
|
995
|
-
interface_id=self.device.connection.interface_id,
|
|
996
|
-
device=self.device.device_address,
|
|
997
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
998
|
-
value=tolerance,
|
|
999
|
-
unit=unit,
|
|
1000
|
-
axis_index=axis_index,
|
|
1001
|
-
)
|
|
1002
|
-
call("device/lockstep_set_tolerance", request)
|
|
1003
|
-
|
|
1004
|
-
async def set_tolerance_async(
|
|
1005
|
-
self,
|
|
1006
|
-
tolerance: float,
|
|
1007
|
-
unit: LengthUnits = Units.NATIVE,
|
|
1008
|
-
axis_index: int = 0
|
|
1009
|
-
) -> None:
|
|
1010
|
-
"""
|
|
1011
|
-
Sets lockstep twist tolerance.
|
|
1012
|
-
Twist tolerances that do not match the system configuration can reduce performance or damage the system.
|
|
1013
|
-
|
|
1014
|
-
Args:
|
|
1015
|
-
tolerance: Twist tolerance.
|
|
1016
|
-
unit: Units of the tolerance.
|
|
1017
|
-
Uses primary axis unit conversion when setting to all axes,
|
|
1018
|
-
otherwise uses specified secondary axis unit conversion.
|
|
1019
|
-
axis_index: Optional index of a secondary axis to set the tolerance for.
|
|
1020
|
-
If left empty or set to 0, the tolerance is set to all the secondary axes.
|
|
1021
|
-
"""
|
|
1022
|
-
request = dto.LockstepSetRequest(
|
|
1023
|
-
interface_id=self.device.connection.interface_id,
|
|
1024
|
-
device=self.device.device_address,
|
|
1025
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1026
|
-
value=tolerance,
|
|
1027
|
-
unit=unit,
|
|
1028
|
-
axis_index=axis_index,
|
|
1029
|
-
)
|
|
1030
|
-
await call_async("device/lockstep_set_tolerance", request)
|
|
1031
|
-
|
|
1032
|
-
def is_enabled(
|
|
1033
|
-
self
|
|
1034
|
-
) -> bool:
|
|
1035
|
-
"""
|
|
1036
|
-
Checks if the lockstep group is currently enabled on the device.
|
|
1037
|
-
|
|
1038
|
-
Returns:
|
|
1039
|
-
True if a lockstep group with this ID is enabled on the device.
|
|
1040
|
-
"""
|
|
1041
|
-
request = dto.LockstepEmptyRequest(
|
|
1042
|
-
interface_id=self.device.connection.interface_id,
|
|
1043
|
-
device=self.device.device_address,
|
|
1044
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1045
|
-
)
|
|
1046
|
-
response = call(
|
|
1047
|
-
"device/lockstep_is_enabled",
|
|
1048
|
-
request,
|
|
1049
|
-
dto.BoolResponse.from_binary)
|
|
1050
|
-
return response.value
|
|
1051
|
-
|
|
1052
|
-
async def is_enabled_async(
|
|
1053
|
-
self
|
|
1054
|
-
) -> bool:
|
|
1055
|
-
"""
|
|
1056
|
-
Checks if the lockstep group is currently enabled on the device.
|
|
1057
|
-
|
|
1058
|
-
Returns:
|
|
1059
|
-
True if a lockstep group with this ID is enabled on the device.
|
|
1060
|
-
"""
|
|
1061
|
-
request = dto.LockstepEmptyRequest(
|
|
1062
|
-
interface_id=self.device.connection.interface_id,
|
|
1063
|
-
device=self.device.device_address,
|
|
1064
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1065
|
-
)
|
|
1066
|
-
response = await call_async(
|
|
1067
|
-
"device/lockstep_is_enabled",
|
|
1068
|
-
request,
|
|
1069
|
-
dto.BoolResponse.from_binary)
|
|
1070
|
-
return response.value
|
|
1071
|
-
|
|
1072
|
-
def __repr__(
|
|
1073
|
-
self
|
|
1074
|
-
) -> str:
|
|
1075
|
-
"""
|
|
1076
|
-
Returns a string which represents the enabled lockstep group.
|
|
1077
|
-
|
|
1078
|
-
Returns:
|
|
1079
|
-
String which represents the enabled lockstep group.
|
|
1080
|
-
"""
|
|
1081
|
-
request = dto.LockstepEmptyRequest(
|
|
1082
|
-
interface_id=self.device.connection.interface_id,
|
|
1083
|
-
device=self.device.device_address,
|
|
1084
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1085
|
-
)
|
|
1086
|
-
response = call_sync(
|
|
1087
|
-
"device/lockstep_to_string",
|
|
1088
|
-
request,
|
|
1089
|
-
dto.StringResponse.from_binary)
|
|
1090
|
-
return response.value
|
|
1091
|
-
|
|
1092
|
-
def park(
|
|
1093
|
-
self
|
|
1094
|
-
) -> None:
|
|
1095
|
-
"""
|
|
1096
|
-
Parks lockstep group in anticipation of turning the power off.
|
|
1097
|
-
It can later be powered on, unparked, and moved without first having to home it.
|
|
1098
|
-
"""
|
|
1099
|
-
request = dto.LockstepEmptyRequest(
|
|
1100
|
-
interface_id=self.device.connection.interface_id,
|
|
1101
|
-
device=self.device.device_address,
|
|
1102
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1103
|
-
)
|
|
1104
|
-
call("device/lockstep_park", request)
|
|
1105
|
-
|
|
1106
|
-
async def park_async(
|
|
1107
|
-
self
|
|
1108
|
-
) -> None:
|
|
1109
|
-
"""
|
|
1110
|
-
Parks lockstep group in anticipation of turning the power off.
|
|
1111
|
-
It can later be powered on, unparked, and moved without first having to home it.
|
|
1112
|
-
"""
|
|
1113
|
-
request = dto.LockstepEmptyRequest(
|
|
1114
|
-
interface_id=self.device.connection.interface_id,
|
|
1115
|
-
device=self.device.device_address,
|
|
1116
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1117
|
-
)
|
|
1118
|
-
await call_async("device/lockstep_park", request)
|
|
1119
|
-
|
|
1120
|
-
def unpark(
|
|
1121
|
-
self
|
|
1122
|
-
) -> None:
|
|
1123
|
-
"""
|
|
1124
|
-
Unparks lockstep group. Lockstep group will now be able to move.
|
|
1125
|
-
"""
|
|
1126
|
-
request = dto.LockstepEmptyRequest(
|
|
1127
|
-
interface_id=self.device.connection.interface_id,
|
|
1128
|
-
device=self.device.device_address,
|
|
1129
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1130
|
-
)
|
|
1131
|
-
call("device/lockstep_unpark", request)
|
|
1132
|
-
|
|
1133
|
-
async def unpark_async(
|
|
1134
|
-
self
|
|
1135
|
-
) -> None:
|
|
1136
|
-
"""
|
|
1137
|
-
Unparks lockstep group. Lockstep group will now be able to move.
|
|
1138
|
-
"""
|
|
1139
|
-
request = dto.LockstepEmptyRequest(
|
|
1140
|
-
interface_id=self.device.connection.interface_id,
|
|
1141
|
-
device=self.device.device_address,
|
|
1142
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1143
|
-
)
|
|
1144
|
-
await call_async("device/lockstep_unpark", request)
|
|
1145
|
-
|
|
1146
|
-
def is_parked(
|
|
1147
|
-
self
|
|
1148
|
-
) -> bool:
|
|
1149
|
-
"""
|
|
1150
|
-
Returns bool indicating whether the axis is parked or not.
|
|
1151
|
-
|
|
1152
|
-
Returns:
|
|
1153
|
-
True if lockstep group is parked.
|
|
1154
|
-
"""
|
|
1155
|
-
request = dto.LockstepEmptyRequest(
|
|
1156
|
-
interface_id=self.device.connection.interface_id,
|
|
1157
|
-
device=self.device.device_address,
|
|
1158
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1159
|
-
)
|
|
1160
|
-
response = call(
|
|
1161
|
-
"device/lockstep_is_parked",
|
|
1162
|
-
request,
|
|
1163
|
-
dto.BoolResponse.from_binary)
|
|
1164
|
-
return response.value
|
|
1165
|
-
|
|
1166
|
-
async def is_parked_async(
|
|
1167
|
-
self
|
|
1168
|
-
) -> bool:
|
|
1169
|
-
"""
|
|
1170
|
-
Returns bool indicating whether the axis is parked or not.
|
|
1171
|
-
|
|
1172
|
-
Returns:
|
|
1173
|
-
True if lockstep group is parked.
|
|
1174
|
-
"""
|
|
1175
|
-
request = dto.LockstepEmptyRequest(
|
|
1176
|
-
interface_id=self.device.connection.interface_id,
|
|
1177
|
-
device=self.device.device_address,
|
|
1178
|
-
lockstep_group_id=self.lockstep_group_id,
|
|
1179
|
-
)
|
|
1180
|
-
response = await call_async(
|
|
1181
|
-
"device/lockstep_is_parked",
|
|
1182
|
-
request,
|
|
1183
|
-
dto.BoolResponse.from_binary)
|
|
1184
|
-
return response.value
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
from typing import TYPE_CHECKING, List
|
|
4
|
+
from ..dto import requests as dto
|
|
5
|
+
from ..units import Units, LengthUnits, VelocityUnits, AccelerationUnits, TimeUnits
|
|
6
|
+
from ..call import call, call_async, call_sync
|
|
7
|
+
from ..dto.ascii.lockstep_axes import LockstepAxes
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from .device import Device
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Lockstep:
|
|
14
|
+
"""
|
|
15
|
+
Represents a lockstep group with this ID on a device.
|
|
16
|
+
A lockstep group is a movement synchronized pair of axes on a device.
|
|
17
|
+
Requires at least Firmware 6.15 or 7.11.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def device(self) -> 'Device':
|
|
22
|
+
"""
|
|
23
|
+
Device that controls this lockstep group.
|
|
24
|
+
"""
|
|
25
|
+
return self._device
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def lockstep_group_id(self) -> int:
|
|
29
|
+
"""
|
|
30
|
+
The number that identifies the lockstep group on the device.
|
|
31
|
+
"""
|
|
32
|
+
return self._lockstep_group_id
|
|
33
|
+
|
|
34
|
+
def __init__(self, device: 'Device', lockstep_group_id: int):
|
|
35
|
+
self._device: 'Device' = device
|
|
36
|
+
self._lockstep_group_id: int = lockstep_group_id
|
|
37
|
+
|
|
38
|
+
def enable(
|
|
39
|
+
self,
|
|
40
|
+
*axes: int
|
|
41
|
+
) -> None:
|
|
42
|
+
"""
|
|
43
|
+
Activate the lockstep group on the axes specified.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
axes: The numbers of axes in the lockstep group.
|
|
47
|
+
"""
|
|
48
|
+
request = dto.LockstepEnableRequest(
|
|
49
|
+
interface_id=self.device.connection.interface_id,
|
|
50
|
+
device=self.device.device_address,
|
|
51
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
52
|
+
axes=list(axes),
|
|
53
|
+
)
|
|
54
|
+
call("device/lockstep_enable", request)
|
|
55
|
+
|
|
56
|
+
async def enable_async(
|
|
57
|
+
self,
|
|
58
|
+
*axes: int
|
|
59
|
+
) -> None:
|
|
60
|
+
"""
|
|
61
|
+
Activate the lockstep group on the axes specified.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
axes: The numbers of axes in the lockstep group.
|
|
65
|
+
"""
|
|
66
|
+
request = dto.LockstepEnableRequest(
|
|
67
|
+
interface_id=self.device.connection.interface_id,
|
|
68
|
+
device=self.device.device_address,
|
|
69
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
70
|
+
axes=list(axes),
|
|
71
|
+
)
|
|
72
|
+
await call_async("device/lockstep_enable", request)
|
|
73
|
+
|
|
74
|
+
def disable(
|
|
75
|
+
self
|
|
76
|
+
) -> None:
|
|
77
|
+
"""
|
|
78
|
+
Disable the lockstep group.
|
|
79
|
+
"""
|
|
80
|
+
request = dto.LockstepDisableRequest(
|
|
81
|
+
interface_id=self.device.connection.interface_id,
|
|
82
|
+
device=self.device.device_address,
|
|
83
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
84
|
+
)
|
|
85
|
+
call("device/lockstep_disable", request)
|
|
86
|
+
|
|
87
|
+
async def disable_async(
|
|
88
|
+
self
|
|
89
|
+
) -> None:
|
|
90
|
+
"""
|
|
91
|
+
Disable the lockstep group.
|
|
92
|
+
"""
|
|
93
|
+
request = dto.LockstepDisableRequest(
|
|
94
|
+
interface_id=self.device.connection.interface_id,
|
|
95
|
+
device=self.device.device_address,
|
|
96
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
97
|
+
)
|
|
98
|
+
await call_async("device/lockstep_disable", request)
|
|
99
|
+
|
|
100
|
+
def stop(
|
|
101
|
+
self,
|
|
102
|
+
wait_until_idle: bool = True
|
|
103
|
+
) -> None:
|
|
104
|
+
"""
|
|
105
|
+
Stops ongoing lockstep group movement. Decelerates until zero speed.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
109
|
+
"""
|
|
110
|
+
request = dto.LockstepStopRequest(
|
|
111
|
+
interface_id=self.device.connection.interface_id,
|
|
112
|
+
device=self.device.device_address,
|
|
113
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
114
|
+
wait_until_idle=wait_until_idle,
|
|
115
|
+
)
|
|
116
|
+
call("device/lockstep_stop", request)
|
|
117
|
+
|
|
118
|
+
async def stop_async(
|
|
119
|
+
self,
|
|
120
|
+
wait_until_idle: bool = True
|
|
121
|
+
) -> None:
|
|
122
|
+
"""
|
|
123
|
+
Stops ongoing lockstep group movement. Decelerates until zero speed.
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
127
|
+
"""
|
|
128
|
+
request = dto.LockstepStopRequest(
|
|
129
|
+
interface_id=self.device.connection.interface_id,
|
|
130
|
+
device=self.device.device_address,
|
|
131
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
132
|
+
wait_until_idle=wait_until_idle,
|
|
133
|
+
)
|
|
134
|
+
await call_async("device/lockstep_stop", request)
|
|
135
|
+
|
|
136
|
+
def home(
|
|
137
|
+
self,
|
|
138
|
+
wait_until_idle: bool = True
|
|
139
|
+
) -> None:
|
|
140
|
+
"""
|
|
141
|
+
Retracts the axes of the lockstep group until a home associated with an individual axis is detected.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
145
|
+
"""
|
|
146
|
+
request = dto.LockstepHomeRequest(
|
|
147
|
+
interface_id=self.device.connection.interface_id,
|
|
148
|
+
device=self.device.device_address,
|
|
149
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
150
|
+
wait_until_idle=wait_until_idle,
|
|
151
|
+
)
|
|
152
|
+
call("device/lockstep_home", request)
|
|
153
|
+
|
|
154
|
+
async def home_async(
|
|
155
|
+
self,
|
|
156
|
+
wait_until_idle: bool = True
|
|
157
|
+
) -> None:
|
|
158
|
+
"""
|
|
159
|
+
Retracts the axes of the lockstep group until a home associated with an individual axis is detected.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
163
|
+
"""
|
|
164
|
+
request = dto.LockstepHomeRequest(
|
|
165
|
+
interface_id=self.device.connection.interface_id,
|
|
166
|
+
device=self.device.device_address,
|
|
167
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
168
|
+
wait_until_idle=wait_until_idle,
|
|
169
|
+
)
|
|
170
|
+
await call_async("device/lockstep_home", request)
|
|
171
|
+
|
|
172
|
+
def move_absolute(
|
|
173
|
+
self,
|
|
174
|
+
position: float,
|
|
175
|
+
unit: LengthUnits = Units.NATIVE,
|
|
176
|
+
wait_until_idle: bool = True,
|
|
177
|
+
velocity: float = 0,
|
|
178
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
179
|
+
acceleration: float = 0,
|
|
180
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
181
|
+
) -> None:
|
|
182
|
+
"""
|
|
183
|
+
Move the first axis of the lockstep group to an absolute position.
|
|
184
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
185
|
+
|
|
186
|
+
Args:
|
|
187
|
+
position: Absolute position.
|
|
188
|
+
unit: Units of position.
|
|
189
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
190
|
+
velocity: Movement velocity.
|
|
191
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
192
|
+
Requires at least Firmware 7.25.
|
|
193
|
+
velocity_unit: Units of velocity.
|
|
194
|
+
acceleration: Movement acceleration.
|
|
195
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
196
|
+
Requires at least Firmware 7.25.
|
|
197
|
+
acceleration_unit: Units of acceleration.
|
|
198
|
+
"""
|
|
199
|
+
request = dto.LockstepMoveRequest(
|
|
200
|
+
interface_id=self.device.connection.interface_id,
|
|
201
|
+
device=self.device.device_address,
|
|
202
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
203
|
+
type=dto.AxisMoveType.ABS,
|
|
204
|
+
arg=position,
|
|
205
|
+
unit=unit,
|
|
206
|
+
wait_until_idle=wait_until_idle,
|
|
207
|
+
velocity=velocity,
|
|
208
|
+
velocity_unit=velocity_unit,
|
|
209
|
+
acceleration=acceleration,
|
|
210
|
+
acceleration_unit=acceleration_unit,
|
|
211
|
+
)
|
|
212
|
+
call("device/lockstep_move", request)
|
|
213
|
+
|
|
214
|
+
async def move_absolute_async(
|
|
215
|
+
self,
|
|
216
|
+
position: float,
|
|
217
|
+
unit: LengthUnits = Units.NATIVE,
|
|
218
|
+
wait_until_idle: bool = True,
|
|
219
|
+
velocity: float = 0,
|
|
220
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
221
|
+
acceleration: float = 0,
|
|
222
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
223
|
+
) -> None:
|
|
224
|
+
"""
|
|
225
|
+
Move the first axis of the lockstep group to an absolute position.
|
|
226
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
227
|
+
|
|
228
|
+
Args:
|
|
229
|
+
position: Absolute position.
|
|
230
|
+
unit: Units of position.
|
|
231
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
232
|
+
velocity: Movement velocity.
|
|
233
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
234
|
+
Requires at least Firmware 7.25.
|
|
235
|
+
velocity_unit: Units of velocity.
|
|
236
|
+
acceleration: Movement acceleration.
|
|
237
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
238
|
+
Requires at least Firmware 7.25.
|
|
239
|
+
acceleration_unit: Units of acceleration.
|
|
240
|
+
"""
|
|
241
|
+
request = dto.LockstepMoveRequest(
|
|
242
|
+
interface_id=self.device.connection.interface_id,
|
|
243
|
+
device=self.device.device_address,
|
|
244
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
245
|
+
type=dto.AxisMoveType.ABS,
|
|
246
|
+
arg=position,
|
|
247
|
+
unit=unit,
|
|
248
|
+
wait_until_idle=wait_until_idle,
|
|
249
|
+
velocity=velocity,
|
|
250
|
+
velocity_unit=velocity_unit,
|
|
251
|
+
acceleration=acceleration,
|
|
252
|
+
acceleration_unit=acceleration_unit,
|
|
253
|
+
)
|
|
254
|
+
await call_async("device/lockstep_move", request)
|
|
255
|
+
|
|
256
|
+
def move_relative(
|
|
257
|
+
self,
|
|
258
|
+
position: float,
|
|
259
|
+
unit: LengthUnits = Units.NATIVE,
|
|
260
|
+
wait_until_idle: bool = True,
|
|
261
|
+
velocity: float = 0,
|
|
262
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
263
|
+
acceleration: float = 0,
|
|
264
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
265
|
+
) -> None:
|
|
266
|
+
"""
|
|
267
|
+
Move the first axis of the lockstep group to a position relative to its current position.
|
|
268
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
269
|
+
|
|
270
|
+
Args:
|
|
271
|
+
position: Relative position.
|
|
272
|
+
unit: Units of position.
|
|
273
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
274
|
+
velocity: Movement velocity.
|
|
275
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
276
|
+
Requires at least Firmware 7.25.
|
|
277
|
+
velocity_unit: Units of velocity.
|
|
278
|
+
acceleration: Movement acceleration.
|
|
279
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
280
|
+
Requires at least Firmware 7.25.
|
|
281
|
+
acceleration_unit: Units of acceleration.
|
|
282
|
+
"""
|
|
283
|
+
request = dto.LockstepMoveRequest(
|
|
284
|
+
interface_id=self.device.connection.interface_id,
|
|
285
|
+
device=self.device.device_address,
|
|
286
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
287
|
+
type=dto.AxisMoveType.REL,
|
|
288
|
+
arg=position,
|
|
289
|
+
unit=unit,
|
|
290
|
+
wait_until_idle=wait_until_idle,
|
|
291
|
+
velocity=velocity,
|
|
292
|
+
velocity_unit=velocity_unit,
|
|
293
|
+
acceleration=acceleration,
|
|
294
|
+
acceleration_unit=acceleration_unit,
|
|
295
|
+
)
|
|
296
|
+
call("device/lockstep_move", request)
|
|
297
|
+
|
|
298
|
+
async def move_relative_async(
|
|
299
|
+
self,
|
|
300
|
+
position: float,
|
|
301
|
+
unit: LengthUnits = Units.NATIVE,
|
|
302
|
+
wait_until_idle: bool = True,
|
|
303
|
+
velocity: float = 0,
|
|
304
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
305
|
+
acceleration: float = 0,
|
|
306
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
307
|
+
) -> None:
|
|
308
|
+
"""
|
|
309
|
+
Move the first axis of the lockstep group to a position relative to its current position.
|
|
310
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
311
|
+
|
|
312
|
+
Args:
|
|
313
|
+
position: Relative position.
|
|
314
|
+
unit: Units of position.
|
|
315
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
316
|
+
velocity: Movement velocity.
|
|
317
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
318
|
+
Requires at least Firmware 7.25.
|
|
319
|
+
velocity_unit: Units of velocity.
|
|
320
|
+
acceleration: Movement acceleration.
|
|
321
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
322
|
+
Requires at least Firmware 7.25.
|
|
323
|
+
acceleration_unit: Units of acceleration.
|
|
324
|
+
"""
|
|
325
|
+
request = dto.LockstepMoveRequest(
|
|
326
|
+
interface_id=self.device.connection.interface_id,
|
|
327
|
+
device=self.device.device_address,
|
|
328
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
329
|
+
type=dto.AxisMoveType.REL,
|
|
330
|
+
arg=position,
|
|
331
|
+
unit=unit,
|
|
332
|
+
wait_until_idle=wait_until_idle,
|
|
333
|
+
velocity=velocity,
|
|
334
|
+
velocity_unit=velocity_unit,
|
|
335
|
+
acceleration=acceleration,
|
|
336
|
+
acceleration_unit=acceleration_unit,
|
|
337
|
+
)
|
|
338
|
+
await call_async("device/lockstep_move", request)
|
|
339
|
+
|
|
340
|
+
def move_velocity(
|
|
341
|
+
self,
|
|
342
|
+
velocity: float,
|
|
343
|
+
unit: VelocityUnits = Units.NATIVE,
|
|
344
|
+
acceleration: float = 0,
|
|
345
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
346
|
+
) -> None:
|
|
347
|
+
"""
|
|
348
|
+
Moves the first axis of the lockstep group at the specified speed.
|
|
349
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
350
|
+
|
|
351
|
+
Args:
|
|
352
|
+
velocity: Movement velocity.
|
|
353
|
+
unit: Units of velocity.
|
|
354
|
+
acceleration: Movement acceleration.
|
|
355
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
356
|
+
Requires at least Firmware 7.25.
|
|
357
|
+
acceleration_unit: Units of acceleration.
|
|
358
|
+
"""
|
|
359
|
+
request = dto.LockstepMoveRequest(
|
|
360
|
+
interface_id=self.device.connection.interface_id,
|
|
361
|
+
device=self.device.device_address,
|
|
362
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
363
|
+
type=dto.AxisMoveType.VEL,
|
|
364
|
+
arg=velocity,
|
|
365
|
+
unit=unit,
|
|
366
|
+
acceleration=acceleration,
|
|
367
|
+
acceleration_unit=acceleration_unit,
|
|
368
|
+
)
|
|
369
|
+
call("device/lockstep_move", request)
|
|
370
|
+
|
|
371
|
+
async def move_velocity_async(
|
|
372
|
+
self,
|
|
373
|
+
velocity: float,
|
|
374
|
+
unit: VelocityUnits = Units.NATIVE,
|
|
375
|
+
acceleration: float = 0,
|
|
376
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
377
|
+
) -> None:
|
|
378
|
+
"""
|
|
379
|
+
Moves the first axis of the lockstep group at the specified speed.
|
|
380
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
velocity: Movement velocity.
|
|
384
|
+
unit: Units of velocity.
|
|
385
|
+
acceleration: Movement acceleration.
|
|
386
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
387
|
+
Requires at least Firmware 7.25.
|
|
388
|
+
acceleration_unit: Units of acceleration.
|
|
389
|
+
"""
|
|
390
|
+
request = dto.LockstepMoveRequest(
|
|
391
|
+
interface_id=self.device.connection.interface_id,
|
|
392
|
+
device=self.device.device_address,
|
|
393
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
394
|
+
type=dto.AxisMoveType.VEL,
|
|
395
|
+
arg=velocity,
|
|
396
|
+
unit=unit,
|
|
397
|
+
acceleration=acceleration,
|
|
398
|
+
acceleration_unit=acceleration_unit,
|
|
399
|
+
)
|
|
400
|
+
await call_async("device/lockstep_move", request)
|
|
401
|
+
|
|
402
|
+
def move_sin(
|
|
403
|
+
self,
|
|
404
|
+
amplitude: float,
|
|
405
|
+
amplitude_units: LengthUnits,
|
|
406
|
+
period: float,
|
|
407
|
+
period_units: TimeUnits,
|
|
408
|
+
count: float = 0,
|
|
409
|
+
wait_until_idle: bool = True
|
|
410
|
+
) -> None:
|
|
411
|
+
"""
|
|
412
|
+
Moves the first axis of the lockstep group in a sinusoidal trajectory.
|
|
413
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
414
|
+
|
|
415
|
+
Args:
|
|
416
|
+
amplitude: Amplitude of the sinusoidal motion (half of the motion's peak-to-peak range).
|
|
417
|
+
amplitude_units: Units of position.
|
|
418
|
+
period: Period of the sinusoidal motion in milliseconds.
|
|
419
|
+
period_units: Units of time.
|
|
420
|
+
count: Number of sinusoidal cycles to complete.
|
|
421
|
+
Must be a multiple of 0.5
|
|
422
|
+
If count is not specified or set to 0, the axis will move indefinitely.
|
|
423
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
424
|
+
"""
|
|
425
|
+
request = dto.LockstepMoveSinRequest(
|
|
426
|
+
interface_id=self.device.connection.interface_id,
|
|
427
|
+
device=self.device.device_address,
|
|
428
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
429
|
+
amplitude=amplitude,
|
|
430
|
+
amplitude_units=amplitude_units,
|
|
431
|
+
period=period,
|
|
432
|
+
period_units=period_units,
|
|
433
|
+
count=count,
|
|
434
|
+
wait_until_idle=wait_until_idle,
|
|
435
|
+
)
|
|
436
|
+
call("device/lockstep_move_sin", request)
|
|
437
|
+
|
|
438
|
+
async def move_sin_async(
|
|
439
|
+
self,
|
|
440
|
+
amplitude: float,
|
|
441
|
+
amplitude_units: LengthUnits,
|
|
442
|
+
period: float,
|
|
443
|
+
period_units: TimeUnits,
|
|
444
|
+
count: float = 0,
|
|
445
|
+
wait_until_idle: bool = True
|
|
446
|
+
) -> None:
|
|
447
|
+
"""
|
|
448
|
+
Moves the first axis of the lockstep group in a sinusoidal trajectory.
|
|
449
|
+
The other axes in the lockstep group maintain their offsets throughout movement.
|
|
450
|
+
|
|
451
|
+
Args:
|
|
452
|
+
amplitude: Amplitude of the sinusoidal motion (half of the motion's peak-to-peak range).
|
|
453
|
+
amplitude_units: Units of position.
|
|
454
|
+
period: Period of the sinusoidal motion in milliseconds.
|
|
455
|
+
period_units: Units of time.
|
|
456
|
+
count: Number of sinusoidal cycles to complete.
|
|
457
|
+
Must be a multiple of 0.5
|
|
458
|
+
If count is not specified or set to 0, the axis will move indefinitely.
|
|
459
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
460
|
+
"""
|
|
461
|
+
request = dto.LockstepMoveSinRequest(
|
|
462
|
+
interface_id=self.device.connection.interface_id,
|
|
463
|
+
device=self.device.device_address,
|
|
464
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
465
|
+
amplitude=amplitude,
|
|
466
|
+
amplitude_units=amplitude_units,
|
|
467
|
+
period=period,
|
|
468
|
+
period_units=period_units,
|
|
469
|
+
count=count,
|
|
470
|
+
wait_until_idle=wait_until_idle,
|
|
471
|
+
)
|
|
472
|
+
await call_async("device/lockstep_move_sin", request)
|
|
473
|
+
|
|
474
|
+
def move_sin_stop(
|
|
475
|
+
self,
|
|
476
|
+
wait_until_idle: bool = True
|
|
477
|
+
) -> None:
|
|
478
|
+
"""
|
|
479
|
+
Stops the lockstep group at the end of the sinusoidal trajectory for the first axis.
|
|
480
|
+
If the sinusoidal motion was started with an integer-plus-half cycle count,
|
|
481
|
+
the motion ends at the half-way point of the sinusoidal trajectory.
|
|
482
|
+
|
|
483
|
+
Args:
|
|
484
|
+
wait_until_idle: Determines whether function should return after the movement is finished.
|
|
485
|
+
"""
|
|
486
|
+
request = dto.LockstepStopRequest(
|
|
487
|
+
interface_id=self.device.connection.interface_id,
|
|
488
|
+
device=self.device.device_address,
|
|
489
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
490
|
+
wait_until_idle=wait_until_idle,
|
|
491
|
+
)
|
|
492
|
+
call("device/lockstep_move_sin_stop", request)
|
|
493
|
+
|
|
494
|
+
async def move_sin_stop_async(
|
|
495
|
+
self,
|
|
496
|
+
wait_until_idle: bool = True
|
|
497
|
+
) -> None:
|
|
498
|
+
"""
|
|
499
|
+
Stops the lockstep group at the end of the sinusoidal trajectory for the first axis.
|
|
500
|
+
If the sinusoidal motion was started with an integer-plus-half cycle count,
|
|
501
|
+
the motion ends at the half-way point of the sinusoidal trajectory.
|
|
502
|
+
|
|
503
|
+
Args:
|
|
504
|
+
wait_until_idle: Determines whether function should return after the movement is finished.
|
|
505
|
+
"""
|
|
506
|
+
request = dto.LockstepStopRequest(
|
|
507
|
+
interface_id=self.device.connection.interface_id,
|
|
508
|
+
device=self.device.device_address,
|
|
509
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
510
|
+
wait_until_idle=wait_until_idle,
|
|
511
|
+
)
|
|
512
|
+
await call_async("device/lockstep_move_sin_stop", request)
|
|
513
|
+
|
|
514
|
+
def move_max(
|
|
515
|
+
self,
|
|
516
|
+
wait_until_idle: bool = True,
|
|
517
|
+
velocity: float = 0,
|
|
518
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
519
|
+
acceleration: float = 0,
|
|
520
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
521
|
+
) -> None:
|
|
522
|
+
"""
|
|
523
|
+
Moves the axes to the maximum valid position.
|
|
524
|
+
The axes in the lockstep group maintain their offsets throughout movement.
|
|
525
|
+
Respects lim.max for all axes in the group.
|
|
526
|
+
|
|
527
|
+
Args:
|
|
528
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
529
|
+
velocity: Movement velocity.
|
|
530
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
531
|
+
Requires at least Firmware 7.25.
|
|
532
|
+
velocity_unit: Units of velocity.
|
|
533
|
+
acceleration: Movement acceleration.
|
|
534
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
535
|
+
Requires at least Firmware 7.25.
|
|
536
|
+
acceleration_unit: Units of acceleration.
|
|
537
|
+
"""
|
|
538
|
+
request = dto.LockstepMoveRequest(
|
|
539
|
+
interface_id=self.device.connection.interface_id,
|
|
540
|
+
device=self.device.device_address,
|
|
541
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
542
|
+
type=dto.AxisMoveType.MAX,
|
|
543
|
+
wait_until_idle=wait_until_idle,
|
|
544
|
+
velocity=velocity,
|
|
545
|
+
velocity_unit=velocity_unit,
|
|
546
|
+
acceleration=acceleration,
|
|
547
|
+
acceleration_unit=acceleration_unit,
|
|
548
|
+
)
|
|
549
|
+
call("device/lockstep_move", request)
|
|
550
|
+
|
|
551
|
+
async def move_max_async(
|
|
552
|
+
self,
|
|
553
|
+
wait_until_idle: bool = True,
|
|
554
|
+
velocity: float = 0,
|
|
555
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
556
|
+
acceleration: float = 0,
|
|
557
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
558
|
+
) -> None:
|
|
559
|
+
"""
|
|
560
|
+
Moves the axes to the maximum valid position.
|
|
561
|
+
The axes in the lockstep group maintain their offsets throughout movement.
|
|
562
|
+
Respects lim.max for all axes in the group.
|
|
563
|
+
|
|
564
|
+
Args:
|
|
565
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
566
|
+
velocity: Movement velocity.
|
|
567
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
568
|
+
Requires at least Firmware 7.25.
|
|
569
|
+
velocity_unit: Units of velocity.
|
|
570
|
+
acceleration: Movement acceleration.
|
|
571
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
572
|
+
Requires at least Firmware 7.25.
|
|
573
|
+
acceleration_unit: Units of acceleration.
|
|
574
|
+
"""
|
|
575
|
+
request = dto.LockstepMoveRequest(
|
|
576
|
+
interface_id=self.device.connection.interface_id,
|
|
577
|
+
device=self.device.device_address,
|
|
578
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
579
|
+
type=dto.AxisMoveType.MAX,
|
|
580
|
+
wait_until_idle=wait_until_idle,
|
|
581
|
+
velocity=velocity,
|
|
582
|
+
velocity_unit=velocity_unit,
|
|
583
|
+
acceleration=acceleration,
|
|
584
|
+
acceleration_unit=acceleration_unit,
|
|
585
|
+
)
|
|
586
|
+
await call_async("device/lockstep_move", request)
|
|
587
|
+
|
|
588
|
+
def move_min(
|
|
589
|
+
self,
|
|
590
|
+
wait_until_idle: bool = True,
|
|
591
|
+
velocity: float = 0,
|
|
592
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
593
|
+
acceleration: float = 0,
|
|
594
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
595
|
+
) -> None:
|
|
596
|
+
"""
|
|
597
|
+
Moves the axes to the minimum valid position.
|
|
598
|
+
The axes in the lockstep group maintain their offsets throughout movement.
|
|
599
|
+
Respects lim.min for all axes in the group.
|
|
600
|
+
|
|
601
|
+
Args:
|
|
602
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
603
|
+
velocity: Movement velocity.
|
|
604
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
605
|
+
Requires at least Firmware 7.25.
|
|
606
|
+
velocity_unit: Units of velocity.
|
|
607
|
+
acceleration: Movement acceleration.
|
|
608
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
609
|
+
Requires at least Firmware 7.25.
|
|
610
|
+
acceleration_unit: Units of acceleration.
|
|
611
|
+
"""
|
|
612
|
+
request = dto.LockstepMoveRequest(
|
|
613
|
+
interface_id=self.device.connection.interface_id,
|
|
614
|
+
device=self.device.device_address,
|
|
615
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
616
|
+
type=dto.AxisMoveType.MIN,
|
|
617
|
+
wait_until_idle=wait_until_idle,
|
|
618
|
+
velocity=velocity,
|
|
619
|
+
velocity_unit=velocity_unit,
|
|
620
|
+
acceleration=acceleration,
|
|
621
|
+
acceleration_unit=acceleration_unit,
|
|
622
|
+
)
|
|
623
|
+
call("device/lockstep_move", request)
|
|
624
|
+
|
|
625
|
+
async def move_min_async(
|
|
626
|
+
self,
|
|
627
|
+
wait_until_idle: bool = True,
|
|
628
|
+
velocity: float = 0,
|
|
629
|
+
velocity_unit: VelocityUnits = Units.NATIVE,
|
|
630
|
+
acceleration: float = 0,
|
|
631
|
+
acceleration_unit: AccelerationUnits = Units.NATIVE
|
|
632
|
+
) -> None:
|
|
633
|
+
"""
|
|
634
|
+
Moves the axes to the minimum valid position.
|
|
635
|
+
The axes in the lockstep group maintain their offsets throughout movement.
|
|
636
|
+
Respects lim.min for all axes in the group.
|
|
637
|
+
|
|
638
|
+
Args:
|
|
639
|
+
wait_until_idle: Determines whether function should return after the movement is finished or just started.
|
|
640
|
+
velocity: Movement velocity.
|
|
641
|
+
Default value of 0 indicates that the maxspeed setting is used instead.
|
|
642
|
+
Requires at least Firmware 7.25.
|
|
643
|
+
velocity_unit: Units of velocity.
|
|
644
|
+
acceleration: Movement acceleration.
|
|
645
|
+
Default value of 0 indicates that the accel setting is used instead.
|
|
646
|
+
Requires at least Firmware 7.25.
|
|
647
|
+
acceleration_unit: Units of acceleration.
|
|
648
|
+
"""
|
|
649
|
+
request = dto.LockstepMoveRequest(
|
|
650
|
+
interface_id=self.device.connection.interface_id,
|
|
651
|
+
device=self.device.device_address,
|
|
652
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
653
|
+
type=dto.AxisMoveType.MIN,
|
|
654
|
+
wait_until_idle=wait_until_idle,
|
|
655
|
+
velocity=velocity,
|
|
656
|
+
velocity_unit=velocity_unit,
|
|
657
|
+
acceleration=acceleration,
|
|
658
|
+
acceleration_unit=acceleration_unit,
|
|
659
|
+
)
|
|
660
|
+
await call_async("device/lockstep_move", request)
|
|
661
|
+
|
|
662
|
+
def wait_until_idle(
|
|
663
|
+
self,
|
|
664
|
+
throw_error_on_fault: bool = True
|
|
665
|
+
) -> None:
|
|
666
|
+
"""
|
|
667
|
+
Waits until the lockstep group stops moving.
|
|
668
|
+
|
|
669
|
+
Args:
|
|
670
|
+
throw_error_on_fault: Determines whether to throw error when fault is observed.
|
|
671
|
+
"""
|
|
672
|
+
request = dto.LockstepWaitUntilIdleRequest(
|
|
673
|
+
interface_id=self.device.connection.interface_id,
|
|
674
|
+
device=self.device.device_address,
|
|
675
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
676
|
+
throw_error_on_fault=throw_error_on_fault,
|
|
677
|
+
)
|
|
678
|
+
call("device/lockstep_wait_until_idle", request)
|
|
679
|
+
|
|
680
|
+
async def wait_until_idle_async(
|
|
681
|
+
self,
|
|
682
|
+
throw_error_on_fault: bool = True
|
|
683
|
+
) -> None:
|
|
684
|
+
"""
|
|
685
|
+
Waits until the lockstep group stops moving.
|
|
686
|
+
|
|
687
|
+
Args:
|
|
688
|
+
throw_error_on_fault: Determines whether to throw error when fault is observed.
|
|
689
|
+
"""
|
|
690
|
+
request = dto.LockstepWaitUntilIdleRequest(
|
|
691
|
+
interface_id=self.device.connection.interface_id,
|
|
692
|
+
device=self.device.device_address,
|
|
693
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
694
|
+
throw_error_on_fault=throw_error_on_fault,
|
|
695
|
+
)
|
|
696
|
+
await call_async("device/lockstep_wait_until_idle", request)
|
|
697
|
+
|
|
698
|
+
def is_busy(
|
|
699
|
+
self
|
|
700
|
+
) -> bool:
|
|
701
|
+
"""
|
|
702
|
+
Returns bool indicating whether the lockstep group is executing a motion command.
|
|
703
|
+
|
|
704
|
+
Returns:
|
|
705
|
+
True if the axes are currently executing a motion command.
|
|
706
|
+
"""
|
|
707
|
+
request = dto.LockstepEmptyRequest(
|
|
708
|
+
interface_id=self.device.connection.interface_id,
|
|
709
|
+
device=self.device.device_address,
|
|
710
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
711
|
+
)
|
|
712
|
+
response = call(
|
|
713
|
+
"device/lockstep_is_busy",
|
|
714
|
+
request,
|
|
715
|
+
dto.BoolResponse.from_binary)
|
|
716
|
+
return response.value
|
|
717
|
+
|
|
718
|
+
async def is_busy_async(
|
|
719
|
+
self
|
|
720
|
+
) -> bool:
|
|
721
|
+
"""
|
|
722
|
+
Returns bool indicating whether the lockstep group is executing a motion command.
|
|
723
|
+
|
|
724
|
+
Returns:
|
|
725
|
+
True if the axes are currently executing a motion command.
|
|
726
|
+
"""
|
|
727
|
+
request = dto.LockstepEmptyRequest(
|
|
728
|
+
interface_id=self.device.connection.interface_id,
|
|
729
|
+
device=self.device.device_address,
|
|
730
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
731
|
+
)
|
|
732
|
+
response = await call_async(
|
|
733
|
+
"device/lockstep_is_busy",
|
|
734
|
+
request,
|
|
735
|
+
dto.BoolResponse.from_binary)
|
|
736
|
+
return response.value
|
|
737
|
+
|
|
738
|
+
def get_axes(
|
|
739
|
+
self
|
|
740
|
+
) -> LockstepAxes:
|
|
741
|
+
"""
|
|
742
|
+
Deprecated: Use GetAxisNumbers instead.
|
|
743
|
+
|
|
744
|
+
Gets the axes of the lockstep group.
|
|
745
|
+
|
|
746
|
+
Returns:
|
|
747
|
+
LockstepAxes instance which contains the axes numbers of the lockstep group.
|
|
748
|
+
"""
|
|
749
|
+
request = dto.LockstepEmptyRequest(
|
|
750
|
+
interface_id=self.device.connection.interface_id,
|
|
751
|
+
device=self.device.device_address,
|
|
752
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
753
|
+
)
|
|
754
|
+
response = call(
|
|
755
|
+
"device/lockstep_get_axes",
|
|
756
|
+
request,
|
|
757
|
+
LockstepAxes.from_binary)
|
|
758
|
+
return response
|
|
759
|
+
|
|
760
|
+
async def get_axes_async(
|
|
761
|
+
self
|
|
762
|
+
) -> LockstepAxes:
|
|
763
|
+
"""
|
|
764
|
+
Deprecated: Use GetAxisNumbers instead.
|
|
765
|
+
|
|
766
|
+
Gets the axes of the lockstep group.
|
|
767
|
+
|
|
768
|
+
Returns:
|
|
769
|
+
LockstepAxes instance which contains the axes numbers of the lockstep group.
|
|
770
|
+
"""
|
|
771
|
+
request = dto.LockstepEmptyRequest(
|
|
772
|
+
interface_id=self.device.connection.interface_id,
|
|
773
|
+
device=self.device.device_address,
|
|
774
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
775
|
+
)
|
|
776
|
+
response = await call_async(
|
|
777
|
+
"device/lockstep_get_axes",
|
|
778
|
+
request,
|
|
779
|
+
LockstepAxes.from_binary)
|
|
780
|
+
return response
|
|
781
|
+
|
|
782
|
+
def get_axis_numbers(
|
|
783
|
+
self
|
|
784
|
+
) -> List[int]:
|
|
785
|
+
"""
|
|
786
|
+
Gets the axis numbers of the lockstep group.
|
|
787
|
+
|
|
788
|
+
Returns:
|
|
789
|
+
Axis numbers in order specified when enabling lockstep.
|
|
790
|
+
"""
|
|
791
|
+
request = dto.LockstepEmptyRequest(
|
|
792
|
+
interface_id=self.device.connection.interface_id,
|
|
793
|
+
device=self.device.device_address,
|
|
794
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
795
|
+
)
|
|
796
|
+
response = call(
|
|
797
|
+
"device/lockstep_get_axis_numbers",
|
|
798
|
+
request,
|
|
799
|
+
dto.LockstepGetAxisNumbersResponse.from_binary)
|
|
800
|
+
return response.axes
|
|
801
|
+
|
|
802
|
+
async def get_axis_numbers_async(
|
|
803
|
+
self
|
|
804
|
+
) -> List[int]:
|
|
805
|
+
"""
|
|
806
|
+
Gets the axis numbers of the lockstep group.
|
|
807
|
+
|
|
808
|
+
Returns:
|
|
809
|
+
Axis numbers in order specified when enabling lockstep.
|
|
810
|
+
"""
|
|
811
|
+
request = dto.LockstepEmptyRequest(
|
|
812
|
+
interface_id=self.device.connection.interface_id,
|
|
813
|
+
device=self.device.device_address,
|
|
814
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
815
|
+
)
|
|
816
|
+
response = await call_async(
|
|
817
|
+
"device/lockstep_get_axis_numbers",
|
|
818
|
+
request,
|
|
819
|
+
dto.LockstepGetAxisNumbersResponse.from_binary)
|
|
820
|
+
return response.axes
|
|
821
|
+
|
|
822
|
+
def get_offsets(
|
|
823
|
+
self,
|
|
824
|
+
unit: LengthUnits = Units.NATIVE
|
|
825
|
+
) -> List[float]:
|
|
826
|
+
"""
|
|
827
|
+
Gets the initial offsets of secondary axes of an enabled lockstep group.
|
|
828
|
+
|
|
829
|
+
Args:
|
|
830
|
+
unit: Units of position.
|
|
831
|
+
Uses primary axis unit conversion.
|
|
832
|
+
|
|
833
|
+
Returns:
|
|
834
|
+
Initial offset for each axis of the lockstep group.
|
|
835
|
+
"""
|
|
836
|
+
request = dto.LockstepGetRequest(
|
|
837
|
+
interface_id=self.device.connection.interface_id,
|
|
838
|
+
device=self.device.device_address,
|
|
839
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
840
|
+
unit=unit,
|
|
841
|
+
)
|
|
842
|
+
response = call(
|
|
843
|
+
"device/lockstep_get_offsets",
|
|
844
|
+
request,
|
|
845
|
+
dto.DoubleArrayResponse.from_binary)
|
|
846
|
+
return response.values
|
|
847
|
+
|
|
848
|
+
async def get_offsets_async(
|
|
849
|
+
self,
|
|
850
|
+
unit: LengthUnits = Units.NATIVE
|
|
851
|
+
) -> List[float]:
|
|
852
|
+
"""
|
|
853
|
+
Gets the initial offsets of secondary axes of an enabled lockstep group.
|
|
854
|
+
|
|
855
|
+
Args:
|
|
856
|
+
unit: Units of position.
|
|
857
|
+
Uses primary axis unit conversion.
|
|
858
|
+
|
|
859
|
+
Returns:
|
|
860
|
+
Initial offset for each axis of the lockstep group.
|
|
861
|
+
"""
|
|
862
|
+
request = dto.LockstepGetRequest(
|
|
863
|
+
interface_id=self.device.connection.interface_id,
|
|
864
|
+
device=self.device.device_address,
|
|
865
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
866
|
+
unit=unit,
|
|
867
|
+
)
|
|
868
|
+
response = await call_async(
|
|
869
|
+
"device/lockstep_get_offsets",
|
|
870
|
+
request,
|
|
871
|
+
dto.DoubleArrayResponse.from_binary)
|
|
872
|
+
return response.values
|
|
873
|
+
|
|
874
|
+
def get_twists(
|
|
875
|
+
self,
|
|
876
|
+
unit: LengthUnits = Units.NATIVE
|
|
877
|
+
) -> List[float]:
|
|
878
|
+
"""
|
|
879
|
+
Gets the twists of secondary axes of an enabled lockstep group.
|
|
880
|
+
|
|
881
|
+
Args:
|
|
882
|
+
unit: Units of position.
|
|
883
|
+
Uses primary axis unit conversion.
|
|
884
|
+
|
|
885
|
+
Returns:
|
|
886
|
+
Difference between the initial offset and the actual offset for each axis of the lockstep group.
|
|
887
|
+
"""
|
|
888
|
+
request = dto.LockstepGetRequest(
|
|
889
|
+
interface_id=self.device.connection.interface_id,
|
|
890
|
+
device=self.device.device_address,
|
|
891
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
892
|
+
unit=unit,
|
|
893
|
+
)
|
|
894
|
+
response = call(
|
|
895
|
+
"device/lockstep_get_twists",
|
|
896
|
+
request,
|
|
897
|
+
dto.DoubleArrayResponse.from_binary)
|
|
898
|
+
return response.values
|
|
899
|
+
|
|
900
|
+
async def get_twists_async(
|
|
901
|
+
self,
|
|
902
|
+
unit: LengthUnits = Units.NATIVE
|
|
903
|
+
) -> List[float]:
|
|
904
|
+
"""
|
|
905
|
+
Gets the twists of secondary axes of an enabled lockstep group.
|
|
906
|
+
|
|
907
|
+
Args:
|
|
908
|
+
unit: Units of position.
|
|
909
|
+
Uses primary axis unit conversion.
|
|
910
|
+
|
|
911
|
+
Returns:
|
|
912
|
+
Difference between the initial offset and the actual offset for each axis of the lockstep group.
|
|
913
|
+
"""
|
|
914
|
+
request = dto.LockstepGetRequest(
|
|
915
|
+
interface_id=self.device.connection.interface_id,
|
|
916
|
+
device=self.device.device_address,
|
|
917
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
918
|
+
unit=unit,
|
|
919
|
+
)
|
|
920
|
+
response = await call_async(
|
|
921
|
+
"device/lockstep_get_twists",
|
|
922
|
+
request,
|
|
923
|
+
dto.DoubleArrayResponse.from_binary)
|
|
924
|
+
return response.values
|
|
925
|
+
|
|
926
|
+
def get_position(
|
|
927
|
+
self,
|
|
928
|
+
unit: LengthUnits = Units.NATIVE
|
|
929
|
+
) -> float:
|
|
930
|
+
"""
|
|
931
|
+
Returns current position of the primary axis.
|
|
932
|
+
|
|
933
|
+
Args:
|
|
934
|
+
unit: Units of the position.
|
|
935
|
+
|
|
936
|
+
Returns:
|
|
937
|
+
Primary axis position.
|
|
938
|
+
"""
|
|
939
|
+
request = dto.LockstepGetRequest(
|
|
940
|
+
interface_id=self.device.connection.interface_id,
|
|
941
|
+
device=self.device.device_address,
|
|
942
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
943
|
+
unit=unit,
|
|
944
|
+
)
|
|
945
|
+
response = call(
|
|
946
|
+
"device/lockstep_get_pos",
|
|
947
|
+
request,
|
|
948
|
+
dto.DoubleResponse.from_binary)
|
|
949
|
+
return response.value
|
|
950
|
+
|
|
951
|
+
async def get_position_async(
|
|
952
|
+
self,
|
|
953
|
+
unit: LengthUnits = Units.NATIVE
|
|
954
|
+
) -> float:
|
|
955
|
+
"""
|
|
956
|
+
Returns current position of the primary axis.
|
|
957
|
+
|
|
958
|
+
Args:
|
|
959
|
+
unit: Units of the position.
|
|
960
|
+
|
|
961
|
+
Returns:
|
|
962
|
+
Primary axis position.
|
|
963
|
+
"""
|
|
964
|
+
request = dto.LockstepGetRequest(
|
|
965
|
+
interface_id=self.device.connection.interface_id,
|
|
966
|
+
device=self.device.device_address,
|
|
967
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
968
|
+
unit=unit,
|
|
969
|
+
)
|
|
970
|
+
response = await call_async(
|
|
971
|
+
"device/lockstep_get_pos",
|
|
972
|
+
request,
|
|
973
|
+
dto.DoubleResponse.from_binary)
|
|
974
|
+
return response.value
|
|
975
|
+
|
|
976
|
+
def set_tolerance(
|
|
977
|
+
self,
|
|
978
|
+
tolerance: float,
|
|
979
|
+
unit: LengthUnits = Units.NATIVE,
|
|
980
|
+
axis_index: int = 0
|
|
981
|
+
) -> None:
|
|
982
|
+
"""
|
|
983
|
+
Sets lockstep twist tolerance.
|
|
984
|
+
Twist tolerances that do not match the system configuration can reduce performance or damage the system.
|
|
985
|
+
|
|
986
|
+
Args:
|
|
987
|
+
tolerance: Twist tolerance.
|
|
988
|
+
unit: Units of the tolerance.
|
|
989
|
+
Uses primary axis unit conversion when setting to all axes,
|
|
990
|
+
otherwise uses specified secondary axis unit conversion.
|
|
991
|
+
axis_index: Optional index of a secondary axis to set the tolerance for.
|
|
992
|
+
If left empty or set to 0, the tolerance is set to all the secondary axes.
|
|
993
|
+
"""
|
|
994
|
+
request = dto.LockstepSetRequest(
|
|
995
|
+
interface_id=self.device.connection.interface_id,
|
|
996
|
+
device=self.device.device_address,
|
|
997
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
998
|
+
value=tolerance,
|
|
999
|
+
unit=unit,
|
|
1000
|
+
axis_index=axis_index,
|
|
1001
|
+
)
|
|
1002
|
+
call("device/lockstep_set_tolerance", request)
|
|
1003
|
+
|
|
1004
|
+
async def set_tolerance_async(
|
|
1005
|
+
self,
|
|
1006
|
+
tolerance: float,
|
|
1007
|
+
unit: LengthUnits = Units.NATIVE,
|
|
1008
|
+
axis_index: int = 0
|
|
1009
|
+
) -> None:
|
|
1010
|
+
"""
|
|
1011
|
+
Sets lockstep twist tolerance.
|
|
1012
|
+
Twist tolerances that do not match the system configuration can reduce performance or damage the system.
|
|
1013
|
+
|
|
1014
|
+
Args:
|
|
1015
|
+
tolerance: Twist tolerance.
|
|
1016
|
+
unit: Units of the tolerance.
|
|
1017
|
+
Uses primary axis unit conversion when setting to all axes,
|
|
1018
|
+
otherwise uses specified secondary axis unit conversion.
|
|
1019
|
+
axis_index: Optional index of a secondary axis to set the tolerance for.
|
|
1020
|
+
If left empty or set to 0, the tolerance is set to all the secondary axes.
|
|
1021
|
+
"""
|
|
1022
|
+
request = dto.LockstepSetRequest(
|
|
1023
|
+
interface_id=self.device.connection.interface_id,
|
|
1024
|
+
device=self.device.device_address,
|
|
1025
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1026
|
+
value=tolerance,
|
|
1027
|
+
unit=unit,
|
|
1028
|
+
axis_index=axis_index,
|
|
1029
|
+
)
|
|
1030
|
+
await call_async("device/lockstep_set_tolerance", request)
|
|
1031
|
+
|
|
1032
|
+
def is_enabled(
|
|
1033
|
+
self
|
|
1034
|
+
) -> bool:
|
|
1035
|
+
"""
|
|
1036
|
+
Checks if the lockstep group is currently enabled on the device.
|
|
1037
|
+
|
|
1038
|
+
Returns:
|
|
1039
|
+
True if a lockstep group with this ID is enabled on the device.
|
|
1040
|
+
"""
|
|
1041
|
+
request = dto.LockstepEmptyRequest(
|
|
1042
|
+
interface_id=self.device.connection.interface_id,
|
|
1043
|
+
device=self.device.device_address,
|
|
1044
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1045
|
+
)
|
|
1046
|
+
response = call(
|
|
1047
|
+
"device/lockstep_is_enabled",
|
|
1048
|
+
request,
|
|
1049
|
+
dto.BoolResponse.from_binary)
|
|
1050
|
+
return response.value
|
|
1051
|
+
|
|
1052
|
+
async def is_enabled_async(
|
|
1053
|
+
self
|
|
1054
|
+
) -> bool:
|
|
1055
|
+
"""
|
|
1056
|
+
Checks if the lockstep group is currently enabled on the device.
|
|
1057
|
+
|
|
1058
|
+
Returns:
|
|
1059
|
+
True if a lockstep group with this ID is enabled on the device.
|
|
1060
|
+
"""
|
|
1061
|
+
request = dto.LockstepEmptyRequest(
|
|
1062
|
+
interface_id=self.device.connection.interface_id,
|
|
1063
|
+
device=self.device.device_address,
|
|
1064
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1065
|
+
)
|
|
1066
|
+
response = await call_async(
|
|
1067
|
+
"device/lockstep_is_enabled",
|
|
1068
|
+
request,
|
|
1069
|
+
dto.BoolResponse.from_binary)
|
|
1070
|
+
return response.value
|
|
1071
|
+
|
|
1072
|
+
def __repr__(
|
|
1073
|
+
self
|
|
1074
|
+
) -> str:
|
|
1075
|
+
"""
|
|
1076
|
+
Returns a string which represents the enabled lockstep group.
|
|
1077
|
+
|
|
1078
|
+
Returns:
|
|
1079
|
+
String which represents the enabled lockstep group.
|
|
1080
|
+
"""
|
|
1081
|
+
request = dto.LockstepEmptyRequest(
|
|
1082
|
+
interface_id=self.device.connection.interface_id,
|
|
1083
|
+
device=self.device.device_address,
|
|
1084
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1085
|
+
)
|
|
1086
|
+
response = call_sync(
|
|
1087
|
+
"device/lockstep_to_string",
|
|
1088
|
+
request,
|
|
1089
|
+
dto.StringResponse.from_binary)
|
|
1090
|
+
return response.value
|
|
1091
|
+
|
|
1092
|
+
def park(
|
|
1093
|
+
self
|
|
1094
|
+
) -> None:
|
|
1095
|
+
"""
|
|
1096
|
+
Parks lockstep group in anticipation of turning the power off.
|
|
1097
|
+
It can later be powered on, unparked, and moved without first having to home it.
|
|
1098
|
+
"""
|
|
1099
|
+
request = dto.LockstepEmptyRequest(
|
|
1100
|
+
interface_id=self.device.connection.interface_id,
|
|
1101
|
+
device=self.device.device_address,
|
|
1102
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1103
|
+
)
|
|
1104
|
+
call("device/lockstep_park", request)
|
|
1105
|
+
|
|
1106
|
+
async def park_async(
|
|
1107
|
+
self
|
|
1108
|
+
) -> None:
|
|
1109
|
+
"""
|
|
1110
|
+
Parks lockstep group in anticipation of turning the power off.
|
|
1111
|
+
It can later be powered on, unparked, and moved without first having to home it.
|
|
1112
|
+
"""
|
|
1113
|
+
request = dto.LockstepEmptyRequest(
|
|
1114
|
+
interface_id=self.device.connection.interface_id,
|
|
1115
|
+
device=self.device.device_address,
|
|
1116
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1117
|
+
)
|
|
1118
|
+
await call_async("device/lockstep_park", request)
|
|
1119
|
+
|
|
1120
|
+
def unpark(
|
|
1121
|
+
self
|
|
1122
|
+
) -> None:
|
|
1123
|
+
"""
|
|
1124
|
+
Unparks lockstep group. Lockstep group will now be able to move.
|
|
1125
|
+
"""
|
|
1126
|
+
request = dto.LockstepEmptyRequest(
|
|
1127
|
+
interface_id=self.device.connection.interface_id,
|
|
1128
|
+
device=self.device.device_address,
|
|
1129
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1130
|
+
)
|
|
1131
|
+
call("device/lockstep_unpark", request)
|
|
1132
|
+
|
|
1133
|
+
async def unpark_async(
|
|
1134
|
+
self
|
|
1135
|
+
) -> None:
|
|
1136
|
+
"""
|
|
1137
|
+
Unparks lockstep group. Lockstep group will now be able to move.
|
|
1138
|
+
"""
|
|
1139
|
+
request = dto.LockstepEmptyRequest(
|
|
1140
|
+
interface_id=self.device.connection.interface_id,
|
|
1141
|
+
device=self.device.device_address,
|
|
1142
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1143
|
+
)
|
|
1144
|
+
await call_async("device/lockstep_unpark", request)
|
|
1145
|
+
|
|
1146
|
+
def is_parked(
|
|
1147
|
+
self
|
|
1148
|
+
) -> bool:
|
|
1149
|
+
"""
|
|
1150
|
+
Returns bool indicating whether the axis is parked or not.
|
|
1151
|
+
|
|
1152
|
+
Returns:
|
|
1153
|
+
True if lockstep group is parked.
|
|
1154
|
+
"""
|
|
1155
|
+
request = dto.LockstepEmptyRequest(
|
|
1156
|
+
interface_id=self.device.connection.interface_id,
|
|
1157
|
+
device=self.device.device_address,
|
|
1158
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1159
|
+
)
|
|
1160
|
+
response = call(
|
|
1161
|
+
"device/lockstep_is_parked",
|
|
1162
|
+
request,
|
|
1163
|
+
dto.BoolResponse.from_binary)
|
|
1164
|
+
return response.value
|
|
1165
|
+
|
|
1166
|
+
async def is_parked_async(
|
|
1167
|
+
self
|
|
1168
|
+
) -> bool:
|
|
1169
|
+
"""
|
|
1170
|
+
Returns bool indicating whether the axis is parked or not.
|
|
1171
|
+
|
|
1172
|
+
Returns:
|
|
1173
|
+
True if lockstep group is parked.
|
|
1174
|
+
"""
|
|
1175
|
+
request = dto.LockstepEmptyRequest(
|
|
1176
|
+
interface_id=self.device.connection.interface_id,
|
|
1177
|
+
device=self.device.device_address,
|
|
1178
|
+
lockstep_group_id=self.lockstep_group_id,
|
|
1179
|
+
)
|
|
1180
|
+
response = await call_async(
|
|
1181
|
+
"device/lockstep_is_parked",
|
|
1182
|
+
request,
|
|
1183
|
+
dto.BoolResponse.from_binary)
|
|
1184
|
+
return response.value
|