Communication Examples

Set and Get Registers Example

from ingeniamotion import MotionController

mc = MotionController()
mc.communication.connect_servo_eoe("192.168.2.22", "cap-net_0.5.0.xdf")
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()

Connect CANopen drive

from ingeniamotion import MotionController
from ingenialink.canopen import CAN_BAUDRATE, CAN_DEVICE

# Create MotionController instance
mc = MotionController()

# Get list of all node id available
node_id_list = mc.communication.scan_servos_canopen(
    CAN_DEVICE.PCAN, CAN_BAUDRATE.Baudrate_1M, channel=0)

dict_path = "./eve-net-c_can_1.8.1.xdf"
eds_path = "./eve-net-c_1.8.1.eds"

if len(node_id_list) > 0:
    # Connect to servo with CANOpen
    mc.communication.connect_servo_canopen(
        CAN_DEVICE.PCAN,  # Peak as a CANOpen device
        # CAN_DEVICE.KVASER and CAN_DEVICE.IXXAT are available too
        dict_path,  # Drive dictionary
        eds_path,  # Drive EDS file
        node_id_list[0],  # First node id found
        CAN_BAUDRATE.Baudrate_1M,  # 1Mbit/s as a baudrate
        # More baudrates are available: Baudrate_500K, Baudrate_250K, etc...
        channel=0  # First CANOpen device channel selected.
    )
    print("Servo connected!")
    # Disconnect servo, this lines is mandatory
    mc.communication.disconnect()
else:
    print("No node id available")

Load Firmware ECAT

import ingeniamotion

# 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(
    2,  # ifname index
    "./cap-xcr-e_0.7.1.lfu",  # FW file
    1,  # Slave index
    boot_in_app=False)  # True if Everest, False if Capitan, else contact manufacturer

Load Firmware FTP

import ingeniamotion

# Create MotionController instance
mc = ingeniamotion.MotionController()

# Connect drive
mc.communication.connect_servo_ethernet("192.168.2.22", "eve-net-c_eth_1.8.1.xdf")

# Load firmware
mc.communication.boot_mode_and_load_firmware_ethernet("eve-net-c_1.8.1.sfu")