7.00node.py文档

概述

这个代码文件包含了一个 ROS 节点ROS节点的介绍,用于订阅名为 “sub_param” 的主题,并根据接收到的消息执行相应的操作。节点通过 Modbus Modbus的介绍与设备通信。

导入的模块

  • rospy:ROS Python 客户端库。
  • ros_modbus_msg.msg:用于导入自定义消息。
  • wrapper_modbus.d12_modbus_client:自定义的 D12 Modbus 客户端。
  • wrapper_modbus.d12_controller_mapping:包含设备控制映射。
  • wrapper_modbus.ROS_Modbus:自定义的 ROS Modbus 包。

主要函数和方法

  • speed_ms(ch_x:list) -> tuple

    获取速度和微步参数。

    参数:

    • ch_x (list):通道参数列表,包括寄存器地址等。

    返回值:

    • tmp_speedtmp_ms (类型:tuple):包含速度和微步参数。
  • callback_sub_param(msg)

    这是一个回调函数回调函数的介绍,用于处理从名为 “sub_param” 的 ROS 主题接收到的消息。在此函数中,根据接收到的消息执行相应的操作。具体而言,该函数执行以下步骤:

    1. 参数
      • msg:接收到的消息对象,类型为 operationoperation的介绍。消息对象包含了一系列操作和参数值,需要根据实际情况解析。
    2. 解析消息
      • 从消息对象中提取出各个操作所需的参数值,包括操作类型 (oper)、各轴的位置 (A_xA_yA_z),以及各轴的速度 (x_speedy_speedz_speed)。
      • 如果速度为零,记录日志指示接收到了没有速度参数的消息。
    3. 根据操作类型执行相应操作
      • 如果操作类型为 0,执行多轴急停操作,调用 client.multiAxis_EMERGENCYSTOP() 方法。
      • 如果操作类型为 1,执行多轴状态读取操作,调用 opc.ROS_multiAxis_StateRead() 方法。
      • 如果操作类型为 2,执行多轴停止操作,调用 opc.ROS_multiAxis_Stop() 方法。
      • 如果操作类型为 3,执行多轴相对运动操作,调用 opc.ROS_multiAxis_RelativeMove() 方法。
      • 如果操作类型为 4,执行多轴绝对运动操作,调用 opc.ROS_multiAxis_AbsoluteMove() 方法。
      • 如果操作类型为 5,执行多轴相对运动速度操作,调用 opc.ROS_multiAxis_RelMoveSpeed() 方法。
      • 如果操作类型为 6,执行多轴绝对运动速度操作,调用 opc.ROS_multiAxis_AbsMoveSpeed() 方法。
      • 如果操作类型为 7,执行指定轴以指定速度回原点操作,调用 opc.ROS_multiAxis_Origin() 方法。
      • 如果操作类型为 9,目前不支持的操作。
    4. 参数传递
      • 根据不同操作类型,将提取出的参数值传递给相应的操作方法。
    5. 日志记录
      • 在执行操作前后,记录日志以指示收到的消息内容和执行的操作。

    这个函数是整个 ROS 节点中最核心的部分之一,负责根据接收到的消息确定执行的操作,并将参数传递给相应的操作方法。

  • 主程序:__main__ 部分

    • 初始化 ROS 节点,命名为 “modbus_subscriber_client“。
    • 创建 Modbus 客户端Modbus客户端的介绍
    • 订阅 “sub_param” 话题,并指定回调函数为 callback_sub_param。
    • 进入 ROS 主循环,等待消息。

常量和变量

  • host (str):Modbus 设备的 IP 地址。
  • ch0, ch1 (list):通道参数列表,包括通道名称、寄存器地址等。
  • multiAxis_EMERGENCYSTOP_data, multiAxis_OriginAll_data (list):多轴急停和原点初始化数据。
  • client (D12ModbusClient):Modbus客户端对象,用于与设备通信。
  • opc (OperCommand):OperCommand 对象,包含执行命令的方法。
  • sub_param (rospy.Subscriber):订阅 “sub_param” 主题的订阅者对象。

注意事项

  • 在运行之前,请确保正确配置了相关参数,包括 Modbus 设备的 IP 地址和通道参数。
  • 某些操作可能受到设备状态的影响,需要确保设备处于正确的状态下执行操作。
  • 特定功能可能受到设备支持情况的限制,如多轴原点初始化功能