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.
Files changed (213) hide show
  1. underautomation_abb-1.0.2.0/MANIFEST.in +4 -0
  2. underautomation_abb-1.0.2.0/PKG-INFO +583 -0
  3. underautomation_abb-1.0.2.0/README.md +550 -0
  4. underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/PKG-INFO +583 -0
  5. underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/SOURCES.txt +211 -0
  6. underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/dependency_links.txt +1 -0
  7. underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/requires.txt +1 -0
  8. underautomation_abb-1.0.2.0/UnderAutomation.ABB.egg-info/top_level.txt +1 -0
  9. underautomation_abb-1.0.2.0/setup.cfg +4 -0
  10. underautomation_abb-1.0.2.0/setup.py +48 -0
  11. underautomation_abb-1.0.2.0/underautomation/__init__.py +0 -0
  12. underautomation_abb-1.0.2.0/underautomation/abb/__init__.py +7 -0
  13. underautomation_abb-1.0.2.0/underautomation/abb/abb_controller.py +81 -0
  14. underautomation_abb-1.0.2.0/underautomation/abb/common/__init__.py +0 -0
  15. underautomation_abb-1.0.2.0/underautomation/abb/common/external_joints.py +91 -0
  16. underautomation_abb-1.0.2.0/underautomation/abb/common/joint_target.py +50 -0
  17. underautomation_abb-1.0.2.0/underautomation/abb/common/pose.py +46 -0
  18. underautomation_abb-1.0.2.0/underautomation/abb/common/position.py +58 -0
  19. underautomation_abb-1.0.2.0/underautomation/abb/common/quaternion.py +68 -0
  20. underautomation_abb-1.0.2.0/underautomation/abb/common/rob_target.py +56 -0
  21. underautomation_abb-1.0.2.0/underautomation/abb/common/robot_configuration.py +68 -0
  22. underautomation_abb-1.0.2.0/underautomation/abb/common/robot_joints.py +88 -0
  23. underautomation_abb-1.0.2.0/underautomation/abb/connection_parameters.py +57 -0
  24. underautomation_abb-1.0.2.0/underautomation/abb/discovery/__init__.py +0 -0
  25. underautomation_abb-1.0.2.0/underautomation/abb/discovery/discovered_controller.py +85 -0
  26. underautomation_abb-1.0.2.0/underautomation/abb/lib/UnderAutomation.Abb.dll +0 -0
  27. underautomation_abb-1.0.2.0/underautomation/abb/lib/version.txt +1 -0
  28. underautomation_abb-1.0.2.0/underautomation/abb/license/__init__.py +0 -0
  29. underautomation_abb-1.0.2.0/underautomation/abb/license/invalid_license_exception.py +31 -0
  30. underautomation_abb-1.0.2.0/underautomation/abb/license/license_info.py +93 -0
  31. underautomation_abb-1.0.2.0/underautomation/abb/license/license_state.py +11 -0
  32. underautomation_abb-1.0.2.0/underautomation/abb/rws/__init__.py +0 -0
  33. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/__init__.py +0 -0
  34. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/axis_info.py +55 -0
  35. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_restore_ignore.py +8 -0
  36. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_restore_include.py +7 -0
  37. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_state.py +11 -0
  38. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/backup_system_info.py +76 -0
  39. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/base_frame.py +36 -0
  40. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/calibration_info.py +77 -0
  41. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/calibration_joint_info.py +62 -0
  42. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/check_restore_result.py +51 -0
  43. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/check_restore_status.py +10 -0
  44. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/collision_detection_state.py +9 -0
  45. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_identity.py +75 -0
  46. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_info.py +76 -0
  47. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_level.py +7 -0
  48. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_restart_mode.py +10 -0
  49. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_state.py +12 -0
  50. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/controller_type.py +7 -0
  51. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/coordinate_system.py +9 -0
  52. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_state.py +8 -0
  53. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_status.py +66 -0
  54. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/cyclic_brake_check_test_status.py +9 -0
  55. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/device_item.py +74 -0
  56. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/device_type.py +9 -0
  57. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/directory_item.py +36 -0
  58. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/directory_listing.py +81 -0
  59. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_domain.py +62 -0
  60. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message.py +143 -0
  61. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_argument.py +53 -0
  62. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_order.py +6 -0
  63. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/elog_message_type.py +8 -0
  64. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/file_item.py +45 -0
  65. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/file_system_item.py +53 -0
  66. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_client_action.py +8 -0
  67. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_configuration.py +125 -0
  68. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_item.py +129 -0
  69. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_logical_state.py +7 -0
  70. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_physical_state.py +13 -0
  71. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_device_upgrade_info.py +63 -0
  72. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_module_info.py +93 -0
  73. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_upgrade_state.py +19 -0
  74. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_firmware_upgrade_status.py +9 -0
  75. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_configuration.py +53 -0
  76. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_configuration_type.py +9 -0
  77. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_item.py +66 -0
  78. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_logical_state.py +7 -0
  79. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_network_physical_state.py +10 -0
  80. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_configuration.py +98 -0
  81. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_item.py +176 -0
  82. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_logical_state.py +7 -0
  83. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_physical_state.py +7 -0
  84. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_search_criteria.py +100 -0
  85. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/io_signal_type.py +11 -0
  86. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/jog_increment_mode.py +9 -0
  87. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/jog_mode.py +11 -0
  88. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/joint_solution.py +37 -0
  89. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/lead_through_status.py +7 -0
  90. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_domain.py +8 -0
  91. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_holder.py +9 -0
  92. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mastership_info.py +93 -0
  93. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_info.py +171 -0
  94. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_item.py +64 -0
  95. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_mode.py +7 -0
  96. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_status.py +14 -0
  97. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/mechanical_unit_type.py +10 -0
  98. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_error_state.py +13 -0
  99. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_supervision.py +44 -0
  100. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_system_error_state.py +55 -0
  101. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motion_system_info.py +71 -0
  102. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/motor_calibration_name.py +53 -0
  103. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/network_configuration_method.py +7 -0
  104. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/network_interface_item.py +107 -0
  105. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode.py +12 -0
  106. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode_acknowledgement.py +7 -0
  107. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/operation_mode_lock_state.py +10 -0
  108. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/path_supervision.py +44 -0
  109. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_activation_record.py +91 -0
  110. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_alias_io_item.py +55 -0
  111. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_breakpoint.py +71 -0
  112. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_build_error.py +71 -0
  113. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_cycle.py +9 -0
  114. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_info.py +48 -0
  115. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_level.py +9 -0
  116. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_mode.py +11 -0
  117. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_state.py +7 -0
  118. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_execution_type.py +11 -0
  119. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_external_joint_states.py +82 -0
  120. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_hold_to_run_state.py +7 -0
  121. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_instruction_template.py +81 -0
  122. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_instruction_template_argument.py +116 -0
  123. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_joint_state.py +9 -0
  124. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_mechanical_unit_item.py +57 -0
  125. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_modifiable_position_item.py +80 -0
  126. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_modifiable_positions.py +71 -0
  127. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_attribute.py +11 -0
  128. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_extension.py +53 -0
  129. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_info.py +52 -0
  130. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_item.py +46 -0
  131. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_symbol.py +136 -0
  132. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_text.py +53 -0
  133. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_module_type.py +7 -0
  134. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_child.py +59 -0
  135. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_child_range.py +50 -0
  136. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_list_extension.py +54 -0
  137. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_object_list_type.py +13 -0
  138. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pallet_head_item.py +44 -0
  139. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pallet_item.py +71 -0
  140. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointer_position.py +109 -0
  141. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointer_sync_state.py +7 -0
  142. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_pointers.py +45 -0
  143. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_preferred_data_type_item.py +44 -0
  144. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_counter_position.py +80 -0
  145. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_info.py +44 -0
  146. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_program_load_mode.py +6 -0
  147. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_regain_mode.py +8 -0
  148. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_routine_argument.py +116 -0
  149. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_routine_info.py +82 -0
  150. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_service_routine_item.py +53 -0
  151. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_set_text_range_result.py +53 -0
  152. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_spy_status.py +7 -0
  153. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_start_condition.py +6 -0
  154. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_stop_mode.py +8 -0
  155. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_structural_change_count.py +44 -0
  156. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_properties.py +154 -0
  157. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_search_criteria.py +140 -0
  158. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_search_view.py +8 -0
  159. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_type.py +22 -0
  160. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_value.py +54 -0
  161. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_symbol_variable_type.py +9 -0
  162. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_execution_mode.py +12 -0
  163. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_execution_state.py +9 -0
  164. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_info.py +118 -0
  165. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_item.py +86 -0
  166. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_scope.py +6 -0
  167. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_selection_item.py +62 -0
  168. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_state.py +10 -0
  169. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_trust_level.py +9 -0
  170. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_task_type.py +8 -0
  171. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_position.py +49 -0
  172. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_query_mode.py +6 -0
  173. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_range.py +62 -0
  174. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_text_replace_mode.py +7 -0
  175. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction.py +75 -0
  176. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction_event.py +8 -0
  177. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/rapid_ui_instruction_parameter.py +44 -0
  178. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_configuration.py +126 -0
  179. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_load_operation_status.py +11 -0
  180. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_mode.py +9 -0
  181. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_mode_status.py +46 -0
  182. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_violation_info.py +154 -0
  183. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/safety_violation_type.py +19 -0
  184. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data.py +181 -0
  185. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_memory.py +6 -0
  186. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_status.py +9 -0
  187. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/smb_data_transfer.py +6 -0
  188. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy.py +121 -0
  189. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_axis.py +44 -0
  190. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_mechanical_unit.py +50 -0
  191. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_energy_state.py +12 -0
  192. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_info.py +203 -0
  193. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/system_product.py +53 -0
  194. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/time_server_info.py +45 -0
  195. underautomation_abb-1.0.2.0/underautomation/abb/rws/data/virtual_time_state.py +9 -0
  196. underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/__init__.py +0 -0
  197. underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_client_base.py +115 -0
  198. underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_client_internal.py +26 -0
  199. underautomation_abb-1.0.2.0/underautomation/abb/rws/internal/rws_connect_parameters_base.py +81 -0
  200. underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_client.py +42 -0
  201. underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_connect_parameters.py +47 -0
  202. underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_exception.py +51 -0
  203. underautomation_abb-1.0.2.0/underautomation/abb/rws/rws_version.py +6 -0
  204. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/__init__.py +0 -0
  205. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/controller_service.py +355 -0
  206. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/elog_service.py +88 -0
  207. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/file_service.py +124 -0
  208. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/io_service.py +260 -0
  209. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/mastership_service.py +57 -0
  210. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/motion_system_service.py +438 -0
  211. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/panel_service.py +124 -0
  212. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/rapid_service.py +770 -0
  213. underautomation_abb-1.0.2.0/underautomation/abb/rws/services/system_service.py +82 -0
@@ -0,0 +1,4 @@
1
+ include README.md
2
+ recursive-include underautomation/abb/lib *.dll *.txt
3
+ prune tests
4
+ prune examples
@@ -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
+ [![PyPI](https://img.shields.io/pypi/v/UnderAutomation.ABB?label=PyPI&logo=pypi)](https://pypi.org/project/UnderAutomation.ABB/)
37
+ [![Python](https://img.shields.io/badge/Python-3.7_|_3.8_|_3.9_|_3.10_|_3.11_|_3.12_|_3.13-blue?logo=python)](#-compatibility)
38
+ [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-blue)](#-compatibility)
39
+ [![License](https://img.shields.io/badge/License-Commercial-red)](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)