UnderAutomation.ABB 1.0.2.0__tar.gz
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.
- underautomation_abb-1.0.2.0/MANIFEST.in +4 -0
- underautomation_abb-1.0.2.0/PKG-INFO +583 -0
- underautomation_abb-1.0.2.0/README.md +550 -0
- underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/PKG-INFO +583 -0
- underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/SOURCES.txt +211 -0
- underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/dependency_links.txt +1 -0
- underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/requires.txt +1 -0
- underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/top_level.txt +1 -0
- underautomation_abb-1.0.2.0/setup.cfg +4 -0
- underautomation_abb-1.0.2.0/setup.py +48 -0
- underautomation_abb-1.0.2.0/underautomation/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/__init__.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/abb_controller.py +81 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/external_joints.py +91 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/joint_target.py +50 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/pose.py +46 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/position.py +58 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/quaternion.py +68 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/rob_target.py +56 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/robot_configuration.py +68 -0
- underautomation_abb-1.0.2.0/underautomation/abb/common/robot_joints.py +88 -0
- underautomation_abb-1.0.2.0/underautomation/abb/connection_parameters.py +57 -0
- underautomation_abb-1.0.2.0/underautomation/abb/discovery/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/discovery/discovered_controller.py +85 -0
- underautomation_abb-1.0.2.0/underautomation/abb/lib/UnderAutomation.Abb.dll +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/lib/version.txt +1 -0
- underautomation_abb-1.0.2.0/underautomation/abb/license/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/license/invalid_license_exception.py +31 -0
- underautomation_abb-1.0.2.0/underautomation/abb/license/license_info.py +93 -0
- underautomation_abb-1.0.2.0/underautomation/abb/license/license_state.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/axis_info.py +55 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_restore_ignore.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_restore_include.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_state.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_system_info.py +76 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/base_frame.py +36 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/calibration_info.py +77 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/calibration_joint_info.py +62 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/check_restore_result.py +51 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/check_restore_status.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/collision_detection_state.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_identity.py +75 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_info.py +76 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_level.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_restart_mode.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_state.py +12 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_type.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/coordinate_system.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_state.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_status.py +66 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_test_status.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/device_item.py +74 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/device_type.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/directory_item.py +36 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/directory_listing.py +81 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_domain.py +62 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message.py +143 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_argument.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_order.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_type.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/file_item.py +45 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/file_system_item.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_client_action.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_configuration.py +125 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_item.py +129 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_logical_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_physical_state.py +13 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_upgrade_info.py +63 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_module_info.py +93 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_upgrade_state.py +19 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_upgrade_status.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_configuration.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_configuration_type.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_item.py +66 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_logical_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_physical_state.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_configuration.py +98 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_item.py +176 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_logical_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_physical_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_search_criteria.py +100 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_type.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/jog_increment_mode.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/jog_mode.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/joint_solution.py +37 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/lead_through_status.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_domain.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_holder.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_info.py +93 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_info.py +171 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_item.py +64 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_mode.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_status.py +14 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_type.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_error_state.py +13 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_supervision.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_system_error_state.py +55 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_system_info.py +71 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motor_calibration_name.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/network_configuration_method.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/network_interface_item.py +107 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode.py +12 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode_acknowledgement.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode_lock_state.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/path_supervision.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_activation_record.py +91 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_alias_io_item.py +55 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_breakpoint.py +71 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_build_error.py +71 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_cycle.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_info.py +48 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_level.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_mode.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_type.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_external_joint_states.py +82 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_hold_to_run_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_instruction_template.py +81 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_instruction_template_argument.py +116 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_joint_state.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_mechanical_unit_item.py +57 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_modifiable_position_item.py +80 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_modifiable_positions.py +71 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_attribute.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_extension.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_info.py +52 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_item.py +46 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_symbol.py +136 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_text.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_type.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_child.py +59 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_child_range.py +50 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_list_extension.py +54 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_list_type.py +13 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pallet_head_item.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pallet_item.py +71 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointer_position.py +109 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointer_sync_state.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointers.py +45 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_preferred_data_type_item.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_counter_position.py +80 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_info.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_load_mode.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_regain_mode.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_routine_argument.py +116 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_routine_info.py +82 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_service_routine_item.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_set_text_range_result.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_spy_status.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_start_condition.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_stop_mode.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_structural_change_count.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_properties.py +154 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_search_criteria.py +140 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_search_view.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_type.py +22 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_value.py +54 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_variable_type.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_execution_mode.py +12 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_execution_state.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_info.py +118 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_item.py +86 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_scope.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_selection_item.py +62 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_state.py +10 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_trust_level.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_type.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_position.py +49 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_query_mode.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_range.py +62 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_replace_mode.py +7 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction.py +75 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction_event.py +8 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction_parameter.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_configuration.py +126 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_load_operation_status.py +11 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_mode.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_mode_status.py +46 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_violation_info.py +154 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_violation_type.py +19 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data.py +181 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_memory.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_status.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_transfer.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy.py +121 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_axis.py +44 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_mechanical_unit.py +50 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_state.py +12 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_info.py +203 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_product.py +53 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/time_server_info.py +45 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/data/virtual_time_state.py +9 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_client_base.py +115 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_client_internal.py +26 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_connect_parameters_base.py +81 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_client.py +42 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_connect_parameters.py +47 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_exception.py +51 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_version.py +6 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/__init__.py +0 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/controller_service.py +355 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/elog_service.py +88 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/file_service.py +124 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/io_service.py +260 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/mastership_service.py +57 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/motion_system_service.py +438 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/panel_service.py +124 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/rapid_service.py +770 -0
- underautomation_abb-1.0.2.0/underautomation/abb/rws/services/system_service.py +82 -0
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: UnderAutomation.ABB
|
|
3
|
+
Version: 1.0.2.0
|
|
4
|
+
Summary: Quickly create applications that communicate with your ABB robots over Robot Web Services (RWS)
|
|
5
|
+
Home-page: https://underautomation.com/abb
|
|
6
|
+
Author: UnderAutomation
|
|
7
|
+
Author-email: support@underautomation.com
|
|
8
|
+
License: Commercial
|
|
9
|
+
Project-URL: Documentation, https://underautomation.com/abb/documentation/get-started-python
|
|
10
|
+
Project-URL: Source, https://github.com/underautomation/ABB.py
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Manufacturing
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Requires-Python: <3.14,>=3.7
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: pythonnet==3.0.5
|
|
22
|
+
Dynamic: author
|
|
23
|
+
Dynamic: author-email
|
|
24
|
+
Dynamic: classifier
|
|
25
|
+
Dynamic: description
|
|
26
|
+
Dynamic: description-content-type
|
|
27
|
+
Dynamic: home-page
|
|
28
|
+
Dynamic: license
|
|
29
|
+
Dynamic: project-url
|
|
30
|
+
Dynamic: requires-dist
|
|
31
|
+
Dynamic: requires-python
|
|
32
|
+
Dynamic: summary
|
|
33
|
+
|
|
34
|
+
# ABB Robot Communication SDK for Python
|
|
35
|
+
|
|
36
|
+
[](https://pypi.org/project/UnderAutomation.ABB/)
|
|
37
|
+
[](#-compatibility)
|
|
38
|
+
[](#-compatibility)
|
|
39
|
+
[](https://underautomation.com/abb/eula)
|
|
40
|
+
|
|
41
|
+
### ๐ค Talk to ABB robots from Python
|
|
42
|
+
|
|
43
|
+
**UnderAutomation.ABB** is a fully managed SDK that talks to ABB industrial robot controllers over
|
|
44
|
+
**Robot Web Services (RWS)**. The same code runs on **IRC5** (RobotWare 6) and on **OmniCore**
|
|
45
|
+
(RobotWare 7). Nothing is installed on the controller. No RobotStudio, no PC SDK, no ABB runtime.
|
|
46
|
+
|
|
47
|
+
Use it to read and write RAPID variables, control I/O, read positions, jog the robot, manage programs,
|
|
48
|
+
files and backups, and follow the state of the controller, from a normal Python application.
|
|
49
|
+
|
|
50
|
+
It works with **real controllers** and with the **virtual controllers** of RobotStudio.
|
|
51
|
+
|
|
52
|
+
๐ **More information:** [https://underautomation.com/abb](https://underautomation.com/abb)
|
|
53
|
+
|
|
54
|
+
๐ Also available in **[๐ฆ .NET](https://github.com/underautomation/ABB.NET)**
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
[โญ Star this repo if it is useful to you](https://github.com/underautomation/ABB.py/stargazers)
|
|
59
|
+
[๐๏ธ Watch it to follow new releases](https://github.com/underautomation/ABB.py/watchers)
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## ๐ TL;DR
|
|
64
|
+
|
|
65
|
+
- โ๏ธ **No RobotStudio, no PC SDK** - RWS is part of a standard controller system
|
|
66
|
+
- ๐งพ **RAPID variables and programs** - read and write variables, persistents and constants, start and stop tasks, move the program pointer, load and save modules
|
|
67
|
+
- โก **Inputs / Outputs** - list, read and write digital, analog and group signals, pulse, invert or simulate a signal, browse I/O devices and networks
|
|
68
|
+
- ๐ **Position and kinematics** - read the current `robtarget` and `jointtarget`, convert between Cartesian pose and joint values, jog the robot
|
|
69
|
+
- ๐๏ธ **Controller and state** - identity, options, operation mode, controller state, speed ratio, clock, language and network
|
|
70
|
+
- ๐พ **Backup and restore** - create a full backup, check it, restore it
|
|
71
|
+
- ๐ **File system** - browse the controller file system, download and upload files, create, copy, rename and delete files and directories
|
|
72
|
+
- ๐ **Event log** - read the event log by domain, in the language you ask, and clear it
|
|
73
|
+
- ๐ **System and energy** - system product list, options and energy counters
|
|
74
|
+
- ๐ **Mastership** - request and release the edit and motion mastership
|
|
75
|
+
- ๐ **Discovery** - find the ABB controllers of the local network and the virtual controllers of this machine, no license or known address needed
|
|
76
|
+
- ๐ **One API for both controller generations** - IRC5 (RWS 1.0) and OmniCore (RWS 2.0), only one connection parameter changes
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ๐ Installation & Getting Started
|
|
81
|
+
|
|
82
|
+
### Prerequisites
|
|
83
|
+
|
|
84
|
+
- **Python 3.7** or higher
|
|
85
|
+
- An ABB robot controller, or a virtual controller in RobotStudio
|
|
86
|
+
|
|
87
|
+
### Step 1 - Create a virtual environment
|
|
88
|
+
|
|
89
|
+
We recommend a virtual environment to keep your project dependencies isolated.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Create a project folder
|
|
93
|
+
mkdir my-abb-project
|
|
94
|
+
cd my-abb-project
|
|
95
|
+
|
|
96
|
+
# Create a virtual environment
|
|
97
|
+
python -m venv venv
|
|
98
|
+
|
|
99
|
+
# Activate it
|
|
100
|
+
# On Windows:
|
|
101
|
+
venv\Scripts\activate
|
|
102
|
+
# On macOS/Linux:
|
|
103
|
+
source venv/bin/activate
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
You should see `(venv)` in your terminal prompt.
|
|
107
|
+
|
|
108
|
+
### Step 2 - Install the SDK
|
|
109
|
+
|
|
110
|
+
The SDK is published on PyPI:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pip install UnderAutomation.ABB
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
All dependencies (including `pythonnet`) are installed automatically.
|
|
117
|
+
|
|
118
|
+
On **Linux**, also install the .NET runtime and set `PYTHONNET_RUNTIME` to `coreclr`:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
sudo apt-get install -y dotnet-runtime-8.0
|
|
122
|
+
export PYTHONNET_RUNTIME=coreclr
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
> **Alternative: install from source**
|
|
126
|
+
>
|
|
127
|
+
> ```bash
|
|
128
|
+
> git clone https://github.com/underautomation/ABB.py.git
|
|
129
|
+
> cd ABB.py
|
|
130
|
+
> pip install -e .
|
|
131
|
+
> ```
|
|
132
|
+
|
|
133
|
+
### Step 3 - Connect to your controller
|
|
134
|
+
|
|
135
|
+
Create a Python file (for example `main.py`):
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from underautomation.abb.abb_controller import AbbController
|
|
139
|
+
|
|
140
|
+
# The SDK runs in trial mode for 30 days. Register your key to remove the trial limit.
|
|
141
|
+
# If you get a license exception, ask a trial key at https://underautomation.com/license
|
|
142
|
+
# AbbController.register_license("Your Company", "your-license-key")
|
|
143
|
+
|
|
144
|
+
robot = AbbController()
|
|
145
|
+
|
|
146
|
+
# Connect (replace with your controller IP address)
|
|
147
|
+
robot.connect("192.168.125.1")
|
|
148
|
+
|
|
149
|
+
identity = robot.rws.controller.get_identity()
|
|
150
|
+
print(identity.name)
|
|
151
|
+
|
|
152
|
+
robot.disconnect()
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Run it:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python main.py
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Choose the controller generation
|
|
162
|
+
|
|
163
|
+
The default is OmniCore (RWS 2.0). For an IRC5 controller, set the version to `RwsVersion.Irc5_V1_0`.
|
|
164
|
+
The rest of your code does not change.
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from underautomation.abb.abb_controller import AbbController
|
|
168
|
+
from underautomation.abb.connection_parameters import ConnectionParameters
|
|
169
|
+
from underautomation.abb.rws.rws_version import RwsVersion
|
|
170
|
+
|
|
171
|
+
params = ConnectionParameters("192.168.125.1")
|
|
172
|
+
params.rws.username = "Default User"
|
|
173
|
+
params.rws.password = "robotics"
|
|
174
|
+
params.rws.use_https = True # OmniCore is reached over HTTPS
|
|
175
|
+
params.rws.version = RwsVersion.OmniCore_V2_0 # or RwsVersion.Irc5_V1_0 for IRC5
|
|
176
|
+
|
|
177
|
+
robot = AbbController()
|
|
178
|
+
robot.connect(params)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
> **Without the licensed controller class**
|
|
182
|
+
>
|
|
183
|
+
> `RwsClient` is a standalone RWS client you can use without the `AbbController` licensing layer:
|
|
184
|
+
>
|
|
185
|
+
> ```python
|
|
186
|
+
> from underautomation.abb.rws.rws_client import RwsClient
|
|
187
|
+
> from underautomation.abb.rws.rws_version import RwsVersion
|
|
188
|
+
>
|
|
189
|
+
> client = RwsClient()
|
|
190
|
+
> client.connect("192.168.125.1", useHttps=True, version=RwsVersion.OmniCore_V2_0)
|
|
191
|
+
> print(client.controller.get_identity().name)
|
|
192
|
+
> ```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## ๐ Licensing
|
|
197
|
+
|
|
198
|
+
The SDK works out of the box for **30 days** (trial period), no registration needed.
|
|
199
|
+
|
|
200
|
+
After the trial, you can:
|
|
201
|
+
|
|
202
|
+
- **Buy a license** at [underautomation.com/order](https://underautomation.com/order?sdk=abb)
|
|
203
|
+
- **Get a new trial period immediately by email** at [underautomation.com/license](https://underautomation.com/license?sdk=abb)
|
|
204
|
+
|
|
205
|
+
To register a license in code:
|
|
206
|
+
|
|
207
|
+
```python
|
|
208
|
+
from underautomation.abb.abb_controller import AbbController
|
|
209
|
+
|
|
210
|
+
license_info = AbbController.register_license("your-licensee", "your-license-key")
|
|
211
|
+
print(license_info)
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## ๐ Features
|
|
217
|
+
|
|
218
|
+
Everything is reached through `robot.rws`, grouped by service:
|
|
219
|
+
`controller`, `io`, `rapid`, `motion_system`, `panel`, `system`, `file`, `elog`, `mastership`.
|
|
220
|
+
|
|
221
|
+
### ๐งพ RAPID variables and programs
|
|
222
|
+
|
|
223
|
+
```python
|
|
224
|
+
from underautomation.abb.rws.data.mastership_domain import MastershipDomain
|
|
225
|
+
|
|
226
|
+
# Read a RAPID symbol, the value comes back the way RAPID writes it
|
|
227
|
+
reg1 = robot.rws.rapid.get_symbol_value("RAPID/T_ROB1/user/reg1")
|
|
228
|
+
print(reg1.value)
|
|
229
|
+
|
|
230
|
+
# Write a symbol (needs the edit mastership in automatic mode)
|
|
231
|
+
robot.rws.mastership.request(MastershipDomain.Edit)
|
|
232
|
+
robot.rws.rapid.set_symbol_value("RAPID/T_ROB1/user/reg1", "42")
|
|
233
|
+
robot.rws.mastership.release(MastershipDomain.Edit)
|
|
234
|
+
|
|
235
|
+
# Start and stop the program
|
|
236
|
+
robot.rws.rapid.start()
|
|
237
|
+
robot.rws.rapid.stop()
|
|
238
|
+
|
|
239
|
+
# Load a program, list tasks, follow the execution state
|
|
240
|
+
robot.rws.rapid.load_program("T_ROB1", "HOME:/myprogram.pgf")
|
|
241
|
+
tasks = robot.rws.rapid.get_tasks()
|
|
242
|
+
state = robot.rws.rapid.get_execution_state()
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### โก Inputs / Outputs
|
|
246
|
+
|
|
247
|
+
```python
|
|
248
|
+
# List every signal
|
|
249
|
+
signals = robot.rws.io.get_signals()
|
|
250
|
+
|
|
251
|
+
# Read one signal
|
|
252
|
+
di1 = robot.rws.io.get_signal("EtherNetIP", "d652", "DI_01")
|
|
253
|
+
print(di1.logical_value)
|
|
254
|
+
|
|
255
|
+
# Write, pulse or invert an output
|
|
256
|
+
robot.rws.io.set_signal_value("EtherNetIP", "d652", "DO_01", 1)
|
|
257
|
+
robot.rws.io.pulse_signal("EtherNetIP", "d652", "DO_01", 1, pulses=3)
|
|
258
|
+
robot.rws.io.invert_signal("EtherNetIP", "d652", "DO_01", 1)
|
|
259
|
+
|
|
260
|
+
# Simulate a signal so a value can be forced without hardware
|
|
261
|
+
robot.rws.io.set_signal_state("EtherNetIP", "d652", "DI_01", simulated=True)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### ๐ Position and kinematics
|
|
265
|
+
|
|
266
|
+
```python
|
|
267
|
+
from underautomation.abb.common.robot_joints import RobotJoints
|
|
268
|
+
|
|
269
|
+
# Current Cartesian and joint position of a task
|
|
270
|
+
rob_target = robot.rws.rapid.get_rob_target("T_ROB1")
|
|
271
|
+
joint_target = robot.rws.rapid.get_joint_target("T_ROB1")
|
|
272
|
+
|
|
273
|
+
print(f"X={rob_target.x} Y={rob_target.y} Z={rob_target.z}")
|
|
274
|
+
print(f"J1={joint_target.robot_axes.axis1} J2={joint_target.robot_axes.axis2}")
|
|
275
|
+
|
|
276
|
+
# Jog the robot
|
|
277
|
+
robot.rws.motion_system.set_jogging_mechanical_unit("ROB_1")
|
|
278
|
+
robot.rws.motion_system.jog(RobotJoints(5, 0, 0, 0, 0, 0), 0)
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### ๐ Discover controllers
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
# Finds the controllers of the local network and the virtual controllers of this machine.
|
|
285
|
+
# No connection is opened and no license is needed.
|
|
286
|
+
found = AbbController.discover()
|
|
287
|
+
|
|
288
|
+
for controller in found:
|
|
289
|
+
print(f"{controller.system_name} at {controller.address}:{controller.port}")
|
|
290
|
+
|
|
291
|
+
# to_connection_parameters carries the address, the port, the scheme and the RWS version found
|
|
292
|
+
robot = AbbController()
|
|
293
|
+
robot.connect(found[0].to_connection_parameters())
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### ๐๏ธ Controller and state
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
from datetime import datetime
|
|
300
|
+
|
|
301
|
+
identity = robot.rws.controller.get_identity()
|
|
302
|
+
info = robot.rws.controller.get_info()
|
|
303
|
+
|
|
304
|
+
mode = robot.rws.panel.get_operation_mode()
|
|
305
|
+
state = robot.rws.panel.get_controller_state()
|
|
306
|
+
speed_ratio = robot.rws.panel.get_speed_ratio()
|
|
307
|
+
|
|
308
|
+
robot.rws.panel.set_speed_ratio(50)
|
|
309
|
+
robot.rws.controller.set_clock(datetime.now())
|
|
310
|
+
|
|
311
|
+
has_option = robot.rws.controller.has_option("RobotWare-OS")
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### ๐พ Backup and restore
|
|
315
|
+
|
|
316
|
+
```python
|
|
317
|
+
robot.rws.controller.create_backup("HOME:/backups/2026-01-15")
|
|
318
|
+
|
|
319
|
+
check = robot.rws.controller.check_restore("HOME:/backups/2026-01-15")
|
|
320
|
+
if check.is_accepted:
|
|
321
|
+
robot.rws.controller.restore_backup("HOME:/backups/2026-01-15")
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### ๐ File system
|
|
325
|
+
|
|
326
|
+
```python
|
|
327
|
+
listing = robot.rws.file.list_directory("HOME:/")
|
|
328
|
+
for d in listing.directories:
|
|
329
|
+
print(d.name)
|
|
330
|
+
for f in listing.files:
|
|
331
|
+
print(f"{f.name} ({f.size} bytes)")
|
|
332
|
+
|
|
333
|
+
robot.rws.file.upload_file_from_path("HOME:/myprogram.mod", r"C:\rapid\myprogram.mod")
|
|
334
|
+
robot.rws.file.get_file_to_destination("HOME:/myprogram.mod", r"C:\backup\myprogram.mod")
|
|
335
|
+
robot.rws.file.delete_file("HOME:/old.mod")
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### ๐ Event log
|
|
339
|
+
|
|
340
|
+
```python
|
|
341
|
+
messages = robot.rws.elog.get_messages(domain=0, language="en")
|
|
342
|
+
for m in messages:
|
|
343
|
+
print(f"{m.timestamp} {m.title}")
|
|
344
|
+
|
|
345
|
+
robot.rws.elog.clear_all_messages()
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### ๐ Mastership
|
|
349
|
+
|
|
350
|
+
```python
|
|
351
|
+
from underautomation.abb.rws.data.mastership_domain import MastershipDomain
|
|
352
|
+
|
|
353
|
+
robot.rws.mastership.request(MastershipDomain.Motion)
|
|
354
|
+
# ... jog or move the robot ...
|
|
355
|
+
robot.rws.mastership.release(MastershipDomain.Motion)
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## ๐ Examples
|
|
361
|
+
|
|
362
|
+
The repository ships a set of ready to run examples in the [`examples/`](https://github.com/underautomation/ABB.py/tree/main/examples) folder, one subfolder per RWS service.
|
|
363
|
+
|
|
364
|
+
### How the Examples Work
|
|
365
|
+
|
|
366
|
+
| File | Role |
|
|
367
|
+
| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
368
|
+
| [`examples/launcher.py`](https://github.com/underautomation/ABB.py/blob/main/examples/launcher.py) | **Interactive menu** - browse and run any example from a single launcher |
|
|
369
|
+
| [`examples/__init__.py`](https://github.com/underautomation/ABB.py/blob/main/examples/__init__.py) | **Shared helpers** - sets up the Python path, manages the connection settings and handles the license registration |
|
|
370
|
+
| `examples/robot_config.json` | **Saved settings** (git-ignored) - remembers the controller address, the credentials and the license key |
|
|
371
|
+
|
|
372
|
+
**Run an example directly**
|
|
373
|
+
|
|
374
|
+
> The first time you run an example, it asks for the controller address, the RWS credentials and the protocol version. The answers are saved in `robot_config.json`, so they are only typed once. Press Enter to accept the value between brackets.
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
python examples/system/system_info.py
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**Or browse the examples with the launcher**
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
python examples/launcher.py
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The launcher discovers the examples on its own and runs the one you pick in the same process, so a breakpoint set in an example file is hit:
|
|
387
|
+
|
|
388
|
+
```
|
|
389
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
390
|
+
โ โ
|
|
391
|
+
โ โโโโโโ โโโโโโโ โโโโโโโ โ
|
|
392
|
+
โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
393
|
+
โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
394
|
+
โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
395
|
+
โ โโโ โโโโโโโโโโโโโโโโโโโ โ
|
|
396
|
+
โ โโโ โโโโโโโโโโ โโโโโโโ โ
|
|
397
|
+
โ โ
|
|
398
|
+
โ Python SDK - Interactive Example Launcher โ
|
|
399
|
+
โ โ
|
|
400
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
401
|
+
|
|
402
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
403
|
+
โ SELECT A CATEGORY โ
|
|
404
|
+
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
|
|
405
|
+
โ โ
|
|
406
|
+
โ ๐ค 1. CONTROLLER (3 examples) โ
|
|
407
|
+
โ Controller - identity, clock, options, backups โ
|
|
408
|
+
โ โ
|
|
409
|
+
โ ๐ 2. ELOG (1 example) โ
|
|
410
|
+
โ Event log - read and filter controller messages โ
|
|
411
|
+
โ โ
|
|
412
|
+
โ ๐ 3. FILE (2 examples) โ
|
|
413
|
+
โ File system - browse, download and upload files โ
|
|
414
|
+
โ โ
|
|
415
|
+
โ โก 4. IO (4 examples) โ
|
|
416
|
+
โ I/O system - networks, devices, read and write signals โ
|
|
417
|
+
โ โ
|
|
418
|
+
โ ๐ 5. LICENSE (1 example) โ
|
|
419
|
+
โ License management - activation & status โ
|
|
420
|
+
โ โ
|
|
421
|
+
โ ๐ 6. MASTERSHIP (1 example) โ
|
|
422
|
+
โ Mastership - request and release the write access โ
|
|
423
|
+
โ โ
|
|
424
|
+
โ ๐ฆพ 7. MOTION (3 examples) โ
|
|
425
|
+
โ Motion system - mechanical units, positions, kinematics โ
|
|
426
|
+
โ โ
|
|
427
|
+
โ ๐ฆ 8. PANEL (2 examples) โ
|
|
428
|
+
โ Control panel - controller state, operation mode, speed ratio โ
|
|
429
|
+
โ โ
|
|
430
|
+
โ ๐งพ 9. RAPID (5 examples) โ
|
|
431
|
+
โ RAPID - tasks, modules, symbols, program execution โ
|
|
432
|
+
โ โ
|
|
433
|
+
โ ๐งฉ 10. SYSTEM (1 example) โ
|
|
434
|
+
โ System - RobotWare version, options, products, energy โ
|
|
435
|
+
โ โ
|
|
436
|
+
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
|
|
437
|
+
โ 0. Exit โ
|
|
438
|
+
โ โ
|
|
439
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
440
|
+
|
|
441
|
+
Enter category number [0-10]:
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
### ๐ Complete Example List
|
|
447
|
+
|
|
448
|
+
#### ๐ License
|
|
449
|
+
|
|
450
|
+
| # | Example | Description |
|
|
451
|
+
| --- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
|
452
|
+
| 1 | [license_info.py](https://github.com/underautomation/ABB.py/blob/main/examples/license/license_info.py) | Show the license state and every license property, no connection needed |
|
|
453
|
+
|
|
454
|
+
#### ๐ค Controller
|
|
455
|
+
|
|
456
|
+
| # | Example | Description |
|
|
457
|
+
| --- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
458
|
+
| 2 | [controller_identity.py](https://github.com/underautomation/ABB.py/blob/main/examples/controller/controller_identity.py) | Name, serial id, type, MAC address, installed systems, options and network interfaces |
|
|
459
|
+
| 3 | [controller_clock.py](https://github.com/underautomation/ABB.py/blob/main/examples/controller/controller_clock.py) | Read the controller clock, its time zone and its time server, and set the clock |
|
|
460
|
+
| 4 | [controller_backup.py](https://github.com/underautomation/ABB.py/blob/main/examples/controller/controller_backup.py) | Read the backup state and the content of a backup, and create a new one under `$temp` |
|
|
461
|
+
|
|
462
|
+
#### ๐งฉ System
|
|
463
|
+
|
|
464
|
+
| # | Example | Description |
|
|
465
|
+
| --- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
466
|
+
| 5 | [system_info.py](https://github.com/underautomation/ABB.py/blob/main/examples/system/system_info.py) | RobotWare version, options, robot types, installed products and energy counters |
|
|
467
|
+
|
|
468
|
+
#### ๐ฆ Panel
|
|
469
|
+
|
|
470
|
+
| # | Example | Description |
|
|
471
|
+
| --- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
472
|
+
| 6 | [panel_state.py](https://github.com/underautomation/ABB.py/blob/main/examples/panel/panel_state.py) | Controller state, operation mode, mode selector lock and collision detection |
|
|
473
|
+
| 7 | [panel_speed_ratio.py](https://github.com/underautomation/ABB.py/blob/main/examples/panel/panel_speed_ratio.py) | Read and write the speed ratio, switch the motors on and off |
|
|
474
|
+
|
|
475
|
+
#### โก I/O
|
|
476
|
+
|
|
477
|
+
| # | Example | Description |
|
|
478
|
+
| --- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
479
|
+
| 8 | [io_list_signals.py](https://github.com/underautomation/ABB.py/blob/main/examples/io/io_list_signals.py) | List every signal with its value and its state, and search signals by name |
|
|
480
|
+
| 9 | [io_read_signal.py](https://github.com/underautomation/ABB.py/blob/main/examples/io/io_read_signal.py) | Read one signal in detail: values, states, quality, timestamps, configuration |
|
|
481
|
+
| 10 | [io_write_signal.py](https://github.com/underautomation/ABB.py/blob/main/examples/io/io_write_signal.py) | Write, invert, pulse and simulate an output signal, then restore it |
|
|
482
|
+
| 11 | [io_networks_devices.py](https://github.com/underautomation/ABB.py/blob/main/examples/io/io_networks_devices.py) | Browse the I/O topology: fieldbus networks, devices and their signals |
|
|
483
|
+
|
|
484
|
+
#### ๐งพ RAPID
|
|
485
|
+
|
|
486
|
+
| # | Example | Description |
|
|
487
|
+
| --- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
488
|
+
| 12 | [rapid_tasks.py](https://github.com/underautomation/ABB.py/blob/main/examples/rapid/rapid_tasks.py) | List the tasks, read one in detail, its program, its pointers and the execution state |
|
|
489
|
+
| 13 | [rapid_read_symbol.py](https://github.com/underautomation/ABB.py/blob/main/examples/rapid/rapid_read_symbol.py) | Search the RAPID symbols of a task and read the value and properties of one |
|
|
490
|
+
| 14 | [rapid_write_symbol.py](https://github.com/underautomation/ABB.py/blob/main/examples/rapid/rapid_write_symbol.py) | Take the edit mastership, write a variable, restore it and release the mastership |
|
|
491
|
+
| 15 | [rapid_modules.py](https://github.com/underautomation/ABB.py/blob/main/examples/rapid/rapid_modules.py) | List the modules of a task, print the source code and search a text in it |
|
|
492
|
+
| 16 | [rapid_start_stop.py](https://github.com/underautomation/ABB.py/blob/main/examples/rapid/rapid_start_stop.py) | Reset the program pointer, start the execution, follow its state and stop it |
|
|
493
|
+
|
|
494
|
+
#### ๐ฆพ Motion
|
|
495
|
+
|
|
496
|
+
| # | Example | Description |
|
|
497
|
+
| --- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
498
|
+
| 17 | [motion_mechanical_units.py](https://github.com/underautomation/ABB.py/blob/main/examples/motion/motion_mechanical_units.py) | List the mechanical units, their axes, their base frame and their calibration |
|
|
499
|
+
| 18 | [motion_current_position.py](https://github.com/underautomation/ABB.py/blob/main/examples/motion/motion_current_position.py) | Read the current `robtarget` in each coordinate system, the `jointtarget` and the axes |
|
|
500
|
+
| 19 | [motion_kinematics.py](https://github.com/underautomation/ABB.py/blob/main/examples/motion/motion_kinematics.py) | Forward and inverse kinematics on the controller, and every joint solution of a pose |
|
|
501
|
+
|
|
502
|
+
#### ๐ File
|
|
503
|
+
|
|
504
|
+
| # | Example | Description |
|
|
505
|
+
| --- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
506
|
+
| 20 | [file_browse.py](https://github.com/underautomation/ABB.py/blob/main/examples/file/file_browse.py) | Walk the controller file system, enter directories and read a file content |
|
|
507
|
+
| 21 | [file_transfer.py](https://github.com/underautomation/ABB.py/blob/main/examples/file/file_transfer.py) | Upload a local file under `$temp`, download it back and delete it |
|
|
508
|
+
|
|
509
|
+
#### ๐ Event Log
|
|
510
|
+
|
|
511
|
+
| # | Example | Description |
|
|
512
|
+
| --- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
513
|
+
| 22 | [elog_messages.py](https://github.com/underautomation/ABB.py/blob/main/examples/elog/elog_messages.py) | List the event log domains and read their messages with causes and actions |
|
|
514
|
+
|
|
515
|
+
#### ๐ Mastership
|
|
516
|
+
|
|
517
|
+
| # | Example | Description |
|
|
518
|
+
| --- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
519
|
+
| 23 | [mastership_info.py](https://github.com/underautomation/ABB.py/blob/main/examples/mastership/mastership_info.py) | List the mastership domains, see who holds them, take one and release it |
|
|
520
|
+
|
|
521
|
+
### Notes on the examples
|
|
522
|
+
|
|
523
|
+
- An example that only reads is safe on any controller. The ones that write ask before each change and put the original value back.
|
|
524
|
+
- A virtual controller does not implement every resource of a real one. When it answers 404, the example prints the reason and carries on.
|
|
525
|
+
- A controller refuses a write when the mode selector is on manual and the FlexPendant keeps the ownership. The example prints the 403 answer instead of stopping.
|
|
526
|
+
- On an OmniCore controller the certificate is signed by the controller itself. `examples/__init__.py` relaxes the .NET runtime for it before connecting, see `allow_self_signed_certificates()`.
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## ๐ IRC5 and OmniCore, one API
|
|
531
|
+
|
|
532
|
+
ABB controllers expose Robot Web Services in two versions. This SDK covers both. The same code runs on
|
|
533
|
+
an old IRC5 and on a new OmniCore. Only the connection parameters change.
|
|
534
|
+
|
|
535
|
+
| Controller | RobotWare | Robot Web Services | `RwsVersion` value |
|
|
536
|
+
| ---------- | ----------------------- | ------------------ | -------------------------- |
|
|
537
|
+
| IRC5 | RobotWare 6 and earlier | RWS 1.0 | `RwsVersion.Irc5_V1_0` |
|
|
538
|
+
| OmniCore | RobotWare 7 and later | RWS 2.0 | `RwsVersion.OmniCore_V2_0` |
|
|
539
|
+
|
|
540
|
+
HTTP or HTTPS is a separate setting (`use_https`), independent of the controller generation.
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## ๐ Compatibility
|
|
545
|
+
|
|
546
|
+
| | Supported |
|
|
547
|
+
| --------------------- | --------------------------------------------- |
|
|
548
|
+
| **Robot Controllers** | IRC5, OmniCore, and their virtual controllers |
|
|
549
|
+
| **OS** | Windows, Linux, macOS |
|
|
550
|
+
| **Python** | 3.7+ |
|
|
551
|
+
| **Dependency** | `pythonnet 3.0.5` (installed automatically) |
|
|
552
|
+
|
|
553
|
+
The controller needs no ABB option. Robot Web Services is part of a standard system.
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## ๐ข Contributing
|
|
558
|
+
|
|
559
|
+
We welcome your feedback and contributions.
|
|
560
|
+
|
|
561
|
+
- Report issues via [GitHub Issues](https://github.com/underautomation/ABB.py/issues)
|
|
562
|
+
- Submit pull requests with enhancements
|
|
563
|
+
- Suggest features and improvements
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## ๐ License
|
|
568
|
+
|
|
569
|
+
**โ ๏ธ This SDK requires a commercial license.**
|
|
570
|
+
|
|
571
|
+
- ๐ **30-day free trial** included out of the box
|
|
572
|
+
- ๐ **Get a new trial immediately** at [underautomation.com/license](https://underautomation.com/license?sdk=abb)
|
|
573
|
+
- ๐ **Buy a license** at [underautomation.com/abb](https://underautomation.com/abb)
|
|
574
|
+
- ๐ **EULA**: [underautomation.com/abb/eula](https://underautomation.com/abb/eula)
|
|
575
|
+
|
|
576
|
+
---
|
|
577
|
+
|
|
578
|
+
## ๐ฌ Need Help?
|
|
579
|
+
|
|
580
|
+
- ๐ **Documentation**: [underautomation.com/abb/documentation](https://underautomation.com/abb/documentation)
|
|
581
|
+
- ๐ **Python Get Started Guide**: [underautomation.com/abb/documentation/get-started-python](https://underautomation.com/abb/documentation/get-started-python)
|
|
582
|
+
- ๐ฆ **PyPI Package**: [pypi.org/project/UnderAutomation.ABB](https://pypi.org/project/UnderAutomation.ABB/)
|
|
583
|
+
- ๐ฉ **Contact Us**: [underautomation.com/contact](https://underautomation.com/contact)
|