Skip to content

release-v1.0

Latest

Choose a tag to compare

@ouranar ouranar released this 21 Jan 14:01
· 7 commits to main since this release

第一版:目前设定框架:

  1. BaseModbusClient:基础的modbus使用,无ROS

    • 从pymodbus模块中取出需要的方法:定义为初始化、连接、关闭、读、写;

    • 在_writeRegisters保留了控制器扩展多个数字I/O从机的接口slave;其默认值为0;

  2. D12_modbus_client:控制器功能,根据控制器手册设定需要的同步相关方法(函数)。

    • 需要功能:

      1. 读保持寄存器
      2. 急停
      3. 停止
      4. 多轴相对移动
      5. 多轴绝对移动
      6. 带速度的相对移动
      7. 带速度的绝对移动
      8. 所有轴回原点:
      9. 指定多轴回原点:
    • 功能设置:

      1. 原有功能:读或写;

      2. 检查:检查是否完成;check_complete(i,value)

  3. ROS_Modbus:

    • 两部分内容:

      • 对传入的value的包装 Split_command()类:三个函数:

        1. 无速度消息的分割包装;
        2. 有速度消息的分割包装;
        3. 是否是X的判断:分割传入的消息:
          • 判断是否分割消息:

          • 将3个轴的操作分开:

          • 检测针对几个通道(chx);

          • 生成相应的参数:起始地址、值、寄存器数量;

      • 操作命令的中转传递:

        1. 原因:因为电源功耗问题,目前做不到四轴同步移动;同时为了更方便的操作;

        2. 根据上面类的分割包装后的value,依次将XYZ的移动命令传递给下一功能包;

        3. 基本可分为两种:

          • 读/停止: 和value基本无关,判断的是是否要读/停止:读:1代表读;停止:0代表停止;

          • 绝对移动/带速度的绝对移动/指定速度回零:

            依次传递命令;判断是否上一条命令完成;

            用ROS的参数服务器相关功能;

  4. node节点:导入包,使用生成的订阅器,订阅并针对任务进行处理;

    • 启动客户端;

    • 检查 X轴 初始化的速度和微步细分设定值是否一致,不一致提出警告;

    • 设定订阅器,回调函数

      回调函数中以序号对应各个功能:

      #ROS_Modbus: 操作映射表
      oper_map = {
          1:"multiAxisStateRead",             # 读保持寄存器状态
          2:"multiAxisStop",                  # 停止
          3:"multiAxisRelativeMove",          # 相对移动 
          4:"multiAxisAbsoluteMove",          # 绝对移动
          5:"multiAxisRelativeSpeedMove",     # 相对移动 + 指定速度
          6:"multiAxisAbsoluteSpeedMove",     # 绝对移动 + 指定速度
          7:"multiAxisHoming",                # 回零点 
      }
  5. d12_controller_mapping: 控制器的参数集

  6. msg设定:将所有滑台操作融合为一个操作指令消息

  7. 主轴电机需要的数字IO控制代码(简版)