Create a controller in Python.
Learn how to create a controller in Python.
""" Sample application that creates an RMP Motion Controller object and prints its information.
"""
from _imports import RapidCode, helpers
def print_topology(controller:RapidCode.MotionController):
stringBuilder = []
overview = "EtherCAT: {} Nodes, {} {}".format(controller.NetworkNodeCountGet(), controller.NetworkTypeGet(), controller.NetworkStateGet())
stringBuilder.append(overview)
Nodes = []
for i in range(controller.NetworkNodeCountGet()):
io = controller.IOGet(i)
helpers.check_errors(io)
if(io.NetworkNode.Exists()):
Nodes.append(io.NetworkNode)
for node in Nodes:
stringBuilder.append("")
stringBuilder.append("Node[{}] - {} ______________________________________________".format(node.NumberGet(), node.NameGet()))
stringBuilder.append(" Vendor: {} ".format(node.VendorNameGet() + "Product: {}".format(node.ProductNameGet())))
stringBuilder.append(" VendorID: 0x{:08X} ProductCode: 0x{:08X}".format(node.VendorIdGet(), node.ProductCodeGet()))
stringBuilder.append(" HardwareRev: 0x{:08X} SerialNumber: {}".format(node.RevisionGet(), node.SerialNumberGet()))
stringBuilder.append(" StationAlias: 0x{:08X} AxisCount: {}".format(node.StationAliasGet(), node.AxisCountGet()))
stringBuilder.append(" SegmentCount: {}".format(node.SegmentCountGet()))
stringBuilder.append(" DI: {} DO: {} AI: {} AO: {}".format(node.DigitalInCountGet(), node.DigitalOutCountGet(), node.AnalogInCountGet(), node.AnalogOutCountGet()))
stringBuilder.append("")
pdoInputs = controller.NetworkInputCountGet()
stringBuilder.append("NetworkInputs count: {} _________________________________".format(pdoInputs))
for i in range(pdoInputs):
stringBuilder.append(" [{}] - {} Bits: {}".format(i, controller.NetworkInputNameGet(i).ljust(70), controller.NetworkInputBitSizeGet(i)))
pdoOutputs = controller.NetworkOutputCountGet()
stringBuilder.append("NetworkOutputs count: {} _________________________________".format(pdoOutputs))
for i in range(pdoOutputs):
stringBuilder.append(" [{}] - {} Bits: {}".format(i, controller.NetworkOutputNameGet(i).ljust(70), controller.NetworkOutputBitSizeGet(i)))
print("\n".join(stringBuilder))
print("⬤ Controller Create")
creation_params: RapidCode.CreationParameters = helpers.get_creation_parameters()
controller: RapidCode.MotionController = RapidCode.MotionController.Create(creation_params)
helpers.check_errors(controller)
print(f"This object is a {type(controller)}")
print(f"RapidCode Version: {controller.VersionGet()}")
print(f"Serial Number: {controller.SerialNumberGet()}")
print(f"Axis Count: {controller.AxisCountGet()}")
if controller.NetworkStateGet() == RapidCode.RSINetworkState_RSINetworkStateOPERATIONAL:
print_topology(controller)
controller.Delete()