Servo¶
-
class
ingenialink.canopen.servo.CanopenServo(target: int, node: canopen.node.remote.RemoteNode, dictionary_path: str, servo_status_listener: bool = False)[source]¶ CANopen Servo instance.
- Parameters
target – Node ID to be connected.
node – Remote Node of the drive.
dictionary_path – Path to the dictionary.
servo_status_listener – Toggle the listener of the servo for its status, errors, faults, etc.
-
check_configuration(config_file: str, subnode: Optional[int] = None) → None¶ Check if the drive is configured in the same way as the given configuration file. Compares the value of each register in the given file with the corresponding value in the drive.
- Parameters
config_file – the configuration to check
subnode – Subnode of the axis. Defaults to None.
- 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.
ILConfigurationError – If the configuration file differs from the drive state.
-
disable(subnode: int = 1, timeout: int = 1000) → None¶ 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_disable() → None¶ Disable disturbance process.
-
disturbance_enable() → None¶ Enable disturbance process.
-
disturbance_get_num_mapped_registers() → int¶ Obtain the number of disturbance mapped registers.
- Returns
Actual number of mapped registers.
-
disturbance_remove_all_mapped_registers() → None¶ Remove all disturbance mapped registers.
-
disturbance_remove_data() → None¶ Remove disturbance data.
-
disturbance_set_mapped_register(channel: int, address: int, subnode: int, dtype: int, size: int) → None¶ 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¶ Write disturbance data.
- Parameters
channels – Channel identifier.
dtypes – Data type.
data_arr – Data array.
-
emcy_subscribe(cb: Callable[[…], Any]) → int[source]¶ Subscribe to emergency messages.
- Parameters
cb – Callback
- Returns
Assigned slot.
-
emcy_unsubscribe(slot: int) → None[source]¶ Unsubscribe from emergency messages.
- Parameters
slot – Assigned slot when subscribed.
-
enable(subnode: int = 1, timeout: int = 1000) → None¶ 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¶ 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.
-
get_state(subnode: int = 1) → ingenialink.enums.servo.SERVO_STATE¶ Current drive state.
-
is_alive() → bool¶ Checks if the servo responds to a reading a register.
- Returns
Return code with the result of the read.
-
is_listener_started() → bool¶ Check if servo listener is started
- Returns
True if listener is started, else False
-
load_configuration(config_file: str, subnode: Optional[int] = None) → None¶ 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_actual_number_bytes() → int¶ Get the number of monitoring bytes left to be read.
-
monitoring_channel_data(channel: int, dtype: Optional[ingenialink.enums.register.REG_DTYPE] = None) → List[float]¶ 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_disable() → None¶ Disable monitoring process.
-
monitoring_enable() → None¶ Enable monitoring process.
-
monitoring_get_bytes_per_block() → int¶ Obtain Bytes x Block configured.
- Returns
Actual number of Bytes x Block configured.
-
monitoring_get_num_mapped_registers() → int¶ Obtain the number of monitoring mapped registers.
- Returns
Actual number of mapped registers.
-
monitoring_read_data() → None¶ Obtain processed monitoring data.
- Returns
Actual processed monitoring data.
-
monitoring_remove_all_mapped_registers() → None¶ Remove all monitoring mapped registers.
-
monitoring_remove_data() → None¶ Remove monitoring data.
-
monitoring_set_mapped_register(channel: int, address: int, subnode: int, dtype: int, size: int) → None¶ 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, **kwargs: Any) → Union[int, float, str, bytes][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.
ILTimeoutError – Read timeout.
-
reload_errors(dictionary: str) → None¶ Force to reload all dictionary errors.
- Parameters
Dictionary. –
-
replace_dictionary(dictionary: str) → None¶ Deletes and creates a new instance of the dictionary.
- Parameters
dictionary – Path to the dictionary.
-
restore_parameters(subnode: Optional[int] = None) → None¶ 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 all the parameters.
- Raises
ILError – Invalid subnode.
ILObjectNotExist – Failed to write to the registers.
-
save_configuration(config_file: str, subnode: Optional[int] = None) → None¶ 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.
-
start_status_listener() → None¶ Start listening for servo status events (SERVO_STATE).
-
state_wait_change(state: ingenialink.enums.servo.SERVO_STATE, timeout: int, subnode: int = 1) → ingenialink.enums.servo.SERVO_STATE¶ 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¶ 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¶ 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.
-
stop_status_listener() → None¶ Stop listening for servo status events (SERVO_STATE).
-
store_parameters(subnode: Optional[int] = None, sdo_timeout: int = 3) → None[source]¶ Store all the current parameters of the target subnode.
- Parameters
subnode – Subnode of the axis. None by default which stores all the parameters.
sdo_timeout – Timeout value for each SDO response.
- 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¶ 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¶ 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¶ 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.
ILTimeoutError – Write timeout.
-
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¶ Drive 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
node¶ Remote node of the servo.
-
property
status¶ Servo status.
-
property
subnodes¶ Dictionary of subnode ids and their type
-
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