Configuration Examples

Brake configuration example

import logging
import argparse
from ingeniamotion import MotionController


def setup_command():
    parser = argparse.ArgumentParser(description='Run feedback test')
    parser.add_argument('override', help='brake override',
                        choices=['disabled', 'release', 'enable'])
    parser.add_argument('dictionary_path', help='path to drive dictionary')
    parser.add_argument('-ip', default="192.168.2.22", help='drive ip address')
    parser.add_argument('--axis', default=1, help='drive axis')
    return parser.parse_args()


def main(args):
    # Create MotionController instance
    mc = MotionController()
    # Connect Servo with MotionController instance
    mc.communication.connect_servo_eoe(args.ip, args.dictionary_path)
    if args.override == "disabled":
        # Disable brake override
        mc.configuration.disable_brake_override(axis=args.axis)
    if args.override == "release":
        # Release brake
        mc.configuration.release_brake(axis=args.axis)
    if args.override == "enable":
        # Enable brake
        mc.configuration.enable_brake(axis=args.axis)
    mc.communication.disconnect()


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    args = setup_command()
    main(args)

Load and Save configuration example

from ingeniamotion import MotionController


def main() -> None:
    mc = MotionController()
    # Modify these parameters to connect a drive
    interface_index = 3
    slave_id = 1
    dictionary_path = "parent_directory/dictionary_file.xdf"
    mc.communication.connect_servo_ethercat_interface_index(
        interface_index, slave_id, dictionary_path
    )
    # Save the configuration of your drive in a file
    config_path = "configuration.xcf"
    mc.configuration.save_configuration(config_path)
    print("The configuration is saved.")

    # Load the configuration file made previously
    mc.configuration.load_configuration(config_path)

    mc.communication.disconnect()


if __name__ == "__main__":
    main()

Load and Save configuration with register changes example

from ingeniamotion import MotionController


def main() -> None:
    mc = MotionController()
    # Modify these parameters to connect a drive
    interface_index = 3
    slave_id = 1
    dictionary_path = "parent_directory/dictionary_file.xdf"
    mc.communication.connect_servo_ethercat_interface_index(
        interface_index, slave_id, dictionary_path
    )
    # Save the initial configuration of your drive in a file
    initial_config_path = "initial_configuration.xcf"
    mc.configuration.save_configuration(initial_config_path)
    print("The initial configuration is saved.")

    # Get the initial max. velocity and set it with a new value
    new_max_velocity = 20.0
    initial_max_velocity = mc.configuration.get_max_velocity()
    if new_max_velocity == initial_max_velocity:
        print("This max. velocity value is already set.")
        mc.communication.disconnect()
        return
    mc.configuration.set_max_velocity(new_max_velocity)

    # Save the configuration with changes in a file
    modified_config_path = "configuration_example.xcf"
    mc.configuration.save_configuration(modified_config_path)
    print("The configuration file is saved with the modification.")

    # Load the initial configuration and check the max. velocity register has its initial value
    mc.configuration.load_configuration(initial_config_path)
    print(
        f"Max. velocity register should be set to its initial value ({initial_max_velocity}). "
        f"Current value: {mc.configuration.get_max_velocity()}"
    )

    # Load the modified configuration and check the max. velocity value is changed again
    mc.configuration.load_configuration(modified_config_path)
    print(
        f"Max. velocity register should now be set to the new value ({new_max_velocity}). "
        f"Current value: {mc.configuration.get_max_velocity()}"
    )

    mc.communication.disconnect()


if __name__ == "__main__":
    main()