Servo¶
-
class
ingenialink.servo.
Servo
(target: Union[int, str], dictionary_path: str, servo_status_listener: bool = False)[source]¶ Declaration of a general Servo object.
- Parameters
target – Target ID of the servo.
dictionary_path – Path to the dictionary file.
servo_status_listener – Toggle the listener of the servo for its status, errors, faults, etc.
- Raises
ILCreationError – If the servo cannot be created.
-
DICTIONARY_CLASS
¶ alias of
ingenialink.dictionary.Dictionary
-
disable
(subnode: int = 1, timeout: int = 1000) → None[source]¶ Disable PDS.
- Parameters
subnode – Subnode of the drive.
timeout – Timeout in milliseconds.
- Raises
ILTimeoutError – The servo could not be disabled due to timeout.
ILError – Failed to disable PDS.
-
disturbance_get_num_mapped_registers
() → int[source]¶ Obtain the number of disturbance mapped registers.
- Returns
Actual number of mapped registers.
-
disturbance_set_mapped_register
(channel: int, address: int, subnode: int, dtype: int, size: int) → None[source]¶ Set monitoring mapped register.
- Parameters
channel – Identity channel number.
address – Register address to map.
subnode – Subnode to be targeted.
dtype – Register data type.
size – Size of data in bytes.
-
disturbance_write_data
(channels: Union[int, List[int]], dtypes: Union[ingenialink.enums.register.REG_DTYPE, List[ingenialink.enums.register.REG_DTYPE]], data_arr: Union[List[Union[int, float]], List[List[Union[int, float]]]]) → None[source]¶ Write disturbance data.
- Parameters
channels – Channel identifier.
dtypes – Data type.
data_arr – Data array.
-
enable
(subnode: int = 1, timeout: int = 1000) → None[source]¶ Enable PDS.
- Args:
subnode: Subnode of the drive. timeout: Timeout in milliseconds.
- Raises
ILTimeoutError – The servo could not be enabled due to timeout.
ILError – Failed to enable PDS.
-
fault_reset
(subnode: int = 1, timeout: int = 1000) → None[source]¶ Executes a fault reset on the drive.
- Parameters
subnode – Subnode of the drive.
timeout – Timeout in milliseconds.
- Raises
ILTimeoutError – If fault reset spend too much time.
ILError – Failed to fault reset.
-
is_alive
() → bool[source]¶ Checks if the servo responds to a reading a register.
- Returns
Return code with the result of the read.
-
is_listener_started
() → bool[source]¶ Check if servo listener is started
- Returns
True if listener is started, else False
-
load_configuration
(config_file: str, subnode: Optional[int] = None) → None[source]¶ Write current dictionary storage to the servo drive.
- Parameters
config_file – Path to the dictionary.
subnode – Subnode of the axis.
- Raises
FileNotFoundError – If the configuration file cannot be found.
ValueError – If a configuration file from a subnode different from 0
is attempted to be loaded to subnode 0. –
ValueError – If an invalid subnode is provided.
-
monitoring_channel_data
(channel: int, dtype: Optional[ingenialink.enums.register.REG_DTYPE] = None) → List[float][source]¶ Obtain processed monitoring data of a channel.
- Parameters
channel – Identity channel number.
dtype – Data type of the register to map.
Note
The dtype argument is not necessary for this function, it was added to maintain compatibility with IPB’s implementation of monitoring.
- Returns
Monitoring data.
-
monitoring_get_bytes_per_block
() → int[source]¶ Obtain Bytes x Block configured.
- Returns
Actual number of Bytes x Block configured.
-
monitoring_get_num_mapped_registers
() → int[source]¶ Obtain the number of monitoring mapped registers.
- Returns
Actual number of mapped registers.
-
monitoring_read_data
() → None[source]¶ Obtain processed monitoring data.
- Returns
Actual processed monitoring data.
-
monitoring_set_mapped_register
(channel: int, address: int, subnode: int, dtype: int, size: int) → None[source]¶ Set monitoring mapped register.
- Parameters
channel – Identity channel number.
address – Register address to map.
subnode – Subnode to be targeted.
dtype – Register data type.
size – Size of data in bytes.
-
read
(reg: Union[str, ingenialink.register.Register], subnode: int = 1) → Union[int, float, str][source]¶ Read a register value from servo.
- Parameters
reg – Register.
subnode – Target axis of the drive.
- Returns
int, float or Value stored in the register.
- Raises
ILAccessError – Wrong access to the register.
ILIOError – Error reading the register.
-
reload_errors
(dictionary: str) → None[source]¶ Force to reload all dictionary errors.
- Parameters
Dictionary. –
-
replace_dictionary
(dictionary: str) → None[source]¶ Deletes and creates a new instance of the dictionary.
- Parameters
dictionary – Path to the dictionary.
-
restore_parameters
(subnode: Optional[int] = None) → None[source]¶ Restore all the current parameters of all the slave to default.
Note
The drive needs a power cycle after this in order for the changes to be properly applied.
- Parameters
subnode – Subnode of the axis. None by default which restores
the parameters. (all) –
- Raises
ILError – Invalid subnode.
ILObjectNotExist – Failed to write to the registers.
-
save_configuration
(config_file: str, subnode: Optional[int] = None) → None[source]¶ Read all dictionary registers content and put it to the dictionary storage.
- Parameters
config_file – Destination path for the configuration file.
subnode – Subnode of the axis.
-
state_wait_change
(state: ingenialink.enums.servo.SERVO_STATE, timeout: int, subnode: int = 1) → ingenialink.enums.servo.SERVO_STATE[source]¶ Waits for a state change.
- Parameters
state – Servo state before calling this function.
timeout – Maximum value to wait for the change.
subnode – Subnode of the drive.
- Returns
The last read state.
- Raises
ILTimeoutError – If state does not change in the given time.
-
static
status_word_decode
(status_word: int) → ingenialink.enums.servo.SERVO_STATE[source]¶ Decodes the status word to a known value.
- Parameters
status_word – Read value for the status word.
- Returns
Status word value.
-
status_word_wait_change
(status_word: int, timeout: int, subnode: int = 1) → None[source]¶ Waits for a status word change.
- Parameters
status_word – Status word to wait for.
timeout – Maximum value to wait for the change.
subnode – Subnode of the drive.
- Raises
ILTimeoutError – If status word does not change in the given time.
-
store_parameters
(subnode: Optional[int] = None) → None[source]¶ Store all the current parameters of the target subnode.
- Parameters
subnode – Subnode of the axis. None by default which stores
the parameters. (all) –
- Raises
ILError – Invalid subnode.
ILObjectNotExist – Failed to write to the registers.
-
subscribe_to_status
(callback: Callable[[ingenialink.enums.servo.SERVO_STATE, None, int], Any]) → None[source]¶ Subscribe to state changes.
- Parameters
callback – Callback function.
- Returns
Assigned slot.
-
unsubscribe_from_status
(callback: Callable[[ingenialink.enums.servo.SERVO_STATE, None, int], Any]) → None[source]¶ Unsubscribe from state changes.
- Parameters
function. (Callback) –
-
write
(reg: Union[str, ingenialink.register.Register], data: Union[int, float, str, bytes], subnode: int = 1, **kwargs: Any) → None[source]¶ Writes a data to a target register.
- Parameters
reg – Target register to be written.
data – Data to be written.
subnode – Target axis of the drive.
- Raises
ILAccessError – Wrong access to the register.
ILIOError – Error writing the register.
-
property
dictionary
¶ Returns dictionary object
-
property
disturbance_data
¶ Obtain disturbance data.
- Returns
Current disturbance data.
-
property
disturbance_data_size
¶ Obtain disturbance data size.
- Returns
Current disturbance data size.
-
property
disturbance_number_mapped_registers
¶ Get the number of mapped disturbance registers.
-
property
errors
¶ Errors.
-
property
full_name
¶ Obtains the servo full name.
-
property
info
¶ Servo information.
-
property
monitoring_data_size
¶ Obtain monitoring data size.
- Returns
Current monitoring data size in bytes.
-
property
monitoring_number_mapped_registers
¶ Get the number of mapped monitoring registers.
-
property
status
¶ Servo status.
-
property
subnodes
¶ Number of subnodes.
-
units_acc
¶ Acceleration units.
- Type
SERVO_UNITS_ACC
-
units_pos
¶ Position units.
- Type
SERVO_UNITS_POS
-
units_torque
¶ Torque units.
- Type
SERVO_UNITS_TORQUE
-
units_vel
¶ Velocity units.
- Type
SERVO_UNITS_VEL
-
class
ingenialink.servo.
ServoStatusListener
(servo: ingenialink.servo.Servo)[source]¶ Reads the status word to check if the drive is alive.
- Parameters
servo – Servo instance of the drive.