Load and Save configuration Examples
Load firmware through CANopen Example
import argparse
from ingenialink.canopen.network import CAN_BAUDRATE, CAN_DEVICE, CanopenNetwork
from ingenialink.canopen.servo import CanopenServo
def connect_slave(args: argparse.Namespace) -> tuple[CanopenServo, CanopenNetwork]:
can_device = CAN_DEVICE(args.transceiver)
can_baudrate = CAN_BAUDRATE(args.baudrate)
net = CanopenNetwork(device=can_device, channel=args.channel, baudrate=can_baudrate)
servo = net.connect_to_slave(target=args.node_id, dictionary=args.dictionary_path)
return servo, net
def load_config_example(args: argparse.Namespace) -> None:
"""Loads a given configuration file into the drive."""
servo, net = connect_slave(args)
servo.load_configuration("can_config.xcf")
servo.load_configuration("can_config_0.xcf", subnode=0)
servo.load_configuration("can_config_1.xcf", subnode=1)
net.disconnect_from_slave(servo)
def save_config_example(args: argparse.Namespace) -> None:
"""Saves the drive configuration into a file."""
servo, net = connect_slave(args)
servo.save_configuration("can_config.xcf")
servo.save_configuration("can_config_0.xcf", subnode=0)
servo.save_configuration("can_config_1.xcf", subnode=1)
net.disconnect_from_slave(servo)
def setup_command() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Canopen example")
parser.add_argument("-d", "--dictionary_path", help="Path to drive dictionary", required=True)
parser.add_argument("-n", "--node_id", default=32, type=int, help="Node ID")
parser.add_argument(
"-t",
"--transceiver",
default="ixxat",
choices=["pcan", "kvaser", "ixxat"],
help="CAN transceiver",
)
parser.add_argument(
"-b",
"--baudrate",
default=1000000,
type=int,
choices=[50000, 100000, 125000, 250000, 500000, 1000000],
help="CAN baudrate",
)
parser.add_argument("-c", "--channel", default=0, type=int, help="CAN transceiver channel")
return parser.parse_args()
if __name__ == "__main__":
args = setup_command()
save_config_example(args)
load_config_example(args)
Load firmware through Ethernet Example
import argparse
from ingenialink.ethernet.network import EthernetNetwork
from ingenialink.ethernet.servo import EthernetServo
def connect_slave(args: argparse.Namespace) -> tuple[EthernetServo, EthernetNetwork]:
net = EthernetNetwork()
servo = net.connect_to_slave(args.ip_address, args.dictionary_path, args.port)
return servo, net
def load_config_example(args: argparse.Namespace) -> None:
"""Loads a given configuration file into the drive."""
servo, net = connect_slave(args)
servo.load_configuration("eth_config.xcf")
servo.load_configuration("eth_config_0.xcf", subnode=0)
servo.load_configuration("eth_config_1.xcf", subnode=1)
net.disconnect_from_slave(servo)
def save_config_example(args: argparse.Namespace) -> None:
"""Saves the drive configuration into a file."""
servo, net = connect_slave(args)
servo.save_configuration("eth_config.xcf")
servo.save_configuration("eth_config_0.xcf", subnode=0)
servo.save_configuration("eth_config_1.xcf", subnode=1)
net.disconnect_from_slave(servo)
def setup_command() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Ethernet connection example")
parser.add_argument("-d", "--dictionary_path", help="Path to drive dictionary", required=True)
parser.add_argument("-ip", "--ip_address", help="IP address", type=str, required=True)
parser.add_argument("-p", "--port", help="TCP port", type=int, default=1061)
return parser.parse_args()
if __name__ == "__main__":
args = setup_command()
save_config_example(args)
load_config_example(args)