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)