Communication Examples

Set and Get Registers Example

import argparse

from ingeniamotion import MotionController


def main(args):
    mc = MotionController()
    mc.communication.connect_servo_eoe(args.ip, args.dictionary_path)
    mc.communication.set_register("DRV_PROT_USER_OVER_VOLT", 60)
    volt = mc.communication.get_register("DRV_PROT_VBUS_VALUE")
    print("Current voltage is", volt)
    mc.communication.disconnect()


def setup_command():
    parser = argparse.ArgumentParser(description='Disturbance example')
    parser.add_argument('--dictionary_path', help='Path to drive dictionary', required=True)
    parser.add_argument('--ip', help='Drive IP address', required=True)
    return parser.parse_args()


if __name__ == '__main__':
    args = setup_command()
    main(args)

Connect CANopen drive

import argparse

from ingeniamotion import MotionController
from ingeniamotion.enums import CAN_BAUDRATE, CAN_DEVICE


def main(args):
    # Create MotionController instance
    mc = MotionController()

    # Get list of all node id available
    can_device = CAN_DEVICE(args.can_transceiver)
    can_baudrate = CAN_BAUDRATE(args.can_baudrate)
    can_channel = args.can_channel
    node_id_list = mc.communication.scan_servos_canopen(
        can_device, can_baudrate, can_channel)

    if len(node_id_list) > 0:
        # Connect to servo with CANOpen
        mc.communication.connect_servo_canopen(
            can_device,
            args.dictionary_path,
            args.node_id,
            can_baudrate,
            can_channel
        )
        print("Servo connected!")
        # Disconnect servo, this lines is mandatory
        mc.communication.disconnect()
    else:
        print("No node id available")


def setup_command():
    parser = argparse.ArgumentParser(description='Canopen example')
    parser.add_argument('--dictionary_path', help='Path to drive dictionary', required=True)
    parser.add_argument('--node_id', default=32, type=int,
                        help='Node ID')
    parser.add_argument('--can_transceiver', default='ixxat',
                        choices=['pcan', 'kvaser', 'ixxat'],
                        help='CAN transceiver')
    parser.add_argument('--can_baudrate', default=1000000, type=int,
                        choices=[50000, 100000, 125000, 250000,
                                 500000, 1000000],
                        help='CAN baudrate')
    parser.add_argument('--can_channel', default=0, type=int,
                        help='CAN transceiver channel')
    return parser.parse_args()


if __name__ == '__main__':
    args = setup_command()
    main(args)

Load Firmware ECAT

import argparse

import ingeniamotion


def main(args):
    # Create MotionController instance
    mc = ingeniamotion.MotionController()

    # Print infame list to get ifname index
    print(mc.communication.get_interface_name_list())

    # Load firmware
    mc.communication.load_firmware_ecat_interface_index(
        args.interface_index,  # ifname index
        args.firmware_file,  # FW file
        args.slave_id)  # Slave index


def setup_command():
    parser = argparse.ArgumentParser(description='Disturbance example')
    parser.add_argument('--interface_index', help='Network adapter inteface index', required=True)
    parser.add_argument('--slave_id', help='Drive slave ID', required=True)
    parser.add_argument('--firmware_file', help='Firmware file to be loaded', required=True)
    return parser.parse_args()


if __name__ == '__main__':
    args = setup_command()
    main(args)

Load Firmware FTP

import argparse

import ingeniamotion


def main(args):
    # Create MotionController instance
    mc = ingeniamotion.MotionController()

    # Connect drive
    mc.communication.connect_servo_ethernet(args.ip, args.dictionary_path)

    # Load firmware
    mc.communication.boot_mode_and_load_firmware_ethernet(args.firmware_file)


def setup_command():
    parser = argparse.ArgumentParser(description='Disturbance example')
    parser.add_argument('--dictionary_path', help='Path to drive dictionary', required=True)
    parser.add_argument('--ip', help='Drive IP address', required=True)
    parser.add_argument('--firmware_file', help='Firmware file to be loaded', required=True)
    return parser.parse_args()


if __name__ == '__main__':
    args = setup_command()
    main(args)