linuxCNC(六)配置LinuxCNC完成伺服控制

news2025/1/8 15:02:33

在这里插入图片描述

这里写目录标题

  • 1、 cia402安装
  • 2、找伺服描述文件(xml)
  • 3、配置ethercat-config.xml
    • 3.1、打开hal-cia402/example/ethercat-conf.xml
    • 3.2、修改 ethercat-conf.xml文件中vid="0x000116c7" pid="0x003e0402"
    • 3.3、其他参数,根据伺服厂家提供的xml,修改对应参数
    • 4、配置hal文件

1、 cia402安装

sudo apt -y install git build-essential libtool automake
git clone https://github.com/dbraun1981/hal-cia402.git
cd hal-cia402
sudo halcompile --install cia402.comp
//提示找不到halcompile ,执行如下命令
sudo apt install linuxcnc-uspace-dev

2、找伺服描述文件(xml)

博主使用禾川 SV-X3EB020A-A2,在伺服官网下载https://www.hcfa.cn/content/details57_544.html

3、配置ethercat-config.xml

3.1、打开hal-cia402/example/ethercat-conf.xml

<masters>
  <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
    <slave idx="0" type="generic" vid="0000026C" pid="0000003C" configPdos="true">
      <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
      <syncManager idx="2" dir="out">
        <pdo idx="1600">
          <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
          <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
          <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
          <pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
        </pdo>
      </syncManager>
      <syncManager idx="3" dir="in">
        <pdo idx="1a00">
          <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
          <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
          <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
          <pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
          <pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
        </pdo>
      </syncManager>
    </slave>
  </master>
</masters>

3.2、修改 ethercat-conf.xml文件中vid=“0x000116c7” pid=“0x003e0402”

  1. 伺服通电,连上电脑
  2. 使用 ethercat cstruct
/* Master 0, Slave 0, "HCFA X3E Servo Driver"
 * `Vendor ID:       0x000116c7`
 * `Product code:    0x003e0402`
 * Revision number: 0x00000001
 */

ec_pdo_entry_info_t slave_0_pdo_entries[] = {
    {0x6040, 0x00, 16}, /* Control Word */
    {0x6060, 0x00, 8}, /* Modes of operation  */
    {0x607a, 0x00, 32}, /* Target position */
    {0x60b8, 0x00, 16}, /* Touch Probe Function */
    {0x603f, 0x00, 16}, /* Error Code */
    {0x6041, 0x00, 16}, /* Status Word */
    {0x6064, 0x00, 32}, /* Position actual value */
    {0x6061, 0x00, 8}, /* Modes of operation display  */
    {0x60b9, 0x00, 16}, /* Touch Probe Status */
    {0x60ba, 0x00, 32}, /* Touch Probe1 Pos1 Pos Value */
    {0x60f4, 0x00, 32}, /* Following error actual value */
    {0x60fd, 0x00, 32}, /* Digital inputs */
    {0x213f, 0x00, 16}, /* Servo Error Code */
};

ec_pdo_info_t slave_0_pdos[] = {
    {0x1600, 4, slave_0_pdo_entries + 0}, /* 1st RxPDO-Mapping */
    {0x1a00, 9, slave_0_pdo_entries + 4}, /* 1st TxPDO-Mapping */
};

ec_sync_info_t slave_0_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, slave_0_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, slave_0_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

3.3、其他参数,根据伺服厂家提供的xml,修改对应参数

4、配置hal文件

  • linuxcnc/configs/创建test文件夹
mkdir -p test
  • 复制一份gmoccapy.ini文件放入test文件夹,改名test.ini
[EMC]
 VERSION = 1.1
 MACHINE = Test
   DEBUG = 0

[DISPLAY]
              DISPLAY = gmoccapy
           CYCLE_TIME = 0.100
      POSITION_OFFSET = RELATIVE
    POSITION_FEEDBACK = ACTUAL
    MAX_FEED_OVERRIDE = 1.0
 MAX_SPINDLE_OVERRIDE = 1.0
       PROGRAM_PREFIX = ../../nc_files/
        INTRO_GRAPHIC = linuxcnc.gif
           INTRO_TIME = 1
           INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
           

[FILTER]
 PROGRAM_EXTENSION = .png,.gif,.jpg,.txt,.TXT Grayscale Depth Image
 PROGRAM_EXTENSION = .py Python Script
               png = image-to-gcode
               gif = image-to-gcode
               jpg = image-to-gcode
                py = python

[RS274NGC]
 PARAMETER_FILE = test.var

[EMCMOT]
       EMCMOT = motmod
 COMM_TIMEOUT = 1.0
  BASE_PERIOD = 100000
 SERVO_PERIOD = 1000000

[TASK]
       TASK = milltask
 CYCLE_TIME = 0.001

[HAL]
          HALUI = halui
        HALFILE = test.hal

[HALUI]
  MDI_COMMAND=(debug,macro0)

[TRAJ]
                                        SPINDLES = 1
                                 COORDINATES = X Y Z
                                LINEAR_UNITS = mm
                           ANGULAR_UNITS = degree
         DEFAULT_LINEAR_VELOCITY = 100
                 MAX_LINEAR_VELOCITY = 200.0
 DEFAULT_LINEAR_ACCELERATION = 100.0
         MAX_LINEAR_ACCELERATION = 100.0
                         NO_FORCE_HOMING = 1

[KINS]
                KINEMATICS = trivkins coordinates=XYZ
            JOINTS = 3

[AXIS_X]
      MAX_VELOCITY = 200
  MAX_ACCELERATION = 100.0
         MIN_LIMIT = -50.0
         MAX_LIMIT = 50.0

[JOINT_0]
                                  TYPE = LINEAR
                          BACKLASH = 0.0000
                         MIN_LIMIT = -50.0
                         MAX_LIMIT = 50.0
                        MIN_FERROR = 0.254
                                FERROR = 1.27
           HOME_SEARCH_VEL = 0.0
                HOME_LATCH_VEL = 0.0
                HOME_FINAL_VEL = 1
        HOME_IGNORE_LIMITS = NO
                HOME_USE_INDEX = NO
                   HOME_OFFSET = 0
 HOME_ABSOLUTE_ENCODER = 1
                 HOME_SEQUENCE = 0

[AXIS_Y]
      MAX_VELOCITY = 200
  MAX_ACCELERATION = 100.0
         MIN_LIMIT = -200.0
         MAX_LIMIT = 200.0

[JOINT_1]
                                  TYPE = LINEAR
                          BACKLASH = 0.0000
                         MIN_LIMIT = -200.0
                         MAX_LIMIT = 200.0
                        MIN_FERROR = 0.254
                                FERROR = 1.27
           HOME_SEARCH_VEL = 0.0
                HOME_LATCH_VEL = 0.0
                HOME_FINAL_VEL = 1
        HOME_IGNORE_LIMITS = NO
                HOME_USE_INDEX = NO
                   HOME_OFFSET = 0
                                  HOME = 0
 HOME_ABSOLUTE_ENCODER = 1
                 HOME_SEQUENCE = 0
    
[AXIS_Z]
      MAX_VELOCITY = 200
  MAX_ACCELERATION = 100.0
         MIN_LIMIT = -200.0
         MAX_LIMIT = 200.0

[JOINT_2]
                                  TYPE = LINEAR
                          BACKLASH = 0.0000
                         MIN_LIMIT = -200.0
                         MAX_LIMIT = 200.0
                        MIN_FERROR = 0.254
                                FERROR = 1.27
           HOME_SEARCH_VEL = 0.0
                HOME_LATCH_VEL = 0.0
                HOME_FINAL_VEL = 1
        HOME_IGNORE_LIMITS = NO
                HOME_USE_INDEX = NO
                   HOME_OFFSET = 0
                                  HOME = 0
 HOME_ABSOLUTE_ENCODER = 1
                 HOME_SEQUENCE = 0

[EMCIO]
                                 EMCIO = io
                        CYCLE_TIME = 0.100
            TOOL_TABLE = tool.tbl

[SPINDLE_0]
    MAX_FORWARD_VELOCITY = 1000
    MIN_FORWARD_VELOCITY = 100
    MAX_REVERSE_VELOCITY = 1000
        MIN_REVERSE_VELOCITY = 100
                           INCREMENT = 100
  • 复制一份修改后的ethercat-conf.xml,放入test文件夹
  • test文件夹中分别有ethercat-conf.xml、test.ini、test.hal

https://www.bilibili.com/video/BV1YMYvecER5/?spm_id_from=333.788.videopod.sections&vd_source=2ab693954765c32e59d2e4b3a8e560ed

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】链表(2):双向链表和双向循环链表

双向链表&#xff08;Doubly Linked List&#xff09; 定义&#xff1a; 每个节点包含三个部分&#xff1a; 数据域。前驱指针域&#xff08;指向前一个节点&#xff09;。后继指针域&#xff08;指向下一个节点&#xff09;。 支持从任意节点向前或向后遍历。 #define dat…

指针 const 的组合

1、首先来了解一下常量 const int num 5&#xff1b; 那么num的值是5&#xff0c; num的值不可修改 2、来了解一下指针 int value 5; int* p &value; 我喜欢吧指针和类型放一起&#xff0c;来强调p是一个指针类型&#xff0c; 而赋值的时候就得赋值一个int类型的地址…

Tableau数据可视化与仪表盘搭建-数据可视化原理

目录 内容 做个小实验 数据如何变成图表 1 2 维度和度量定义 3 度量映射图形&#xff0c;维度负责区分 1 可映射的数据类型 2 可视化字典 3 使用Tableau将数据变成图表(Tableau可视化原理) 1 2 拖拽 3 具体操作 4 总结 内容 点击左下角的工作表 tableau可以自动…

【WRF数据准备】气象驱动数据-ERA5是否需要单层位势数据?

目录 气象驱动数据-ERA5是否需要单层位势(Geopotential)数据?位势(Geopotential)输入的重要性Vtable的管理参考气象驱动数据-ERA5是否需要单层位势(Geopotential)数据? 本博客参考WRF论坛中讨论内容-How to use ERA5 Data From Copernicus Database,总结位势(Geopot…

用ResNet50+Qwen2-VL-2B-Instruct+LoRA模仿Diffusion-VLA的论文思路,在3090显卡上训练和测试成功

想一步步的实现Diffusion VLA论文的思路&#xff0c;不过论文的图像的输入用DINOv2进行特征提取的&#xff0c;我先把这个部分换成ResNet50。 老铁们&#xff0c;直接上代码&#xff1a; from PIL import Image import torch import torchvision.models as models from torch…

常见中间件漏洞(tomcat,weblogic,jboss,apache)

先准备好今天要使用的木马文件 使用哥斯拉生成木马 压缩成zip文件 改名为war后缀 一&#xff1a;Tomcat 1.1CVE-2017-12615 环境搭建 cd vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d 1.首页抓包&#xff0c;修改为 PUT 方式提交 发送shell.jsp 和木马内容 …

嵌入式科普(26)为什么heap通常8字节对齐

目录 一、概述 二、newlibc heap 2.1 stm32cubeide .ld heap 2.2 e2studio .ld heap 三、glibc源码 3.1 Ubuntu c heap 四、总结 一、概述 结论&#xff1a;在嵌入式c语言中&#xff0c;heap通常8字节对齐 本文主要分析这个问题的分析过程 二、newlibc heap newlibc…

大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

CTF杂项——[NSSRound#4 SWPU]Pixel_Signin

得到一个像素点 提取像素点 脚本 from PIL import Image result open(1.txt,w) img Image.open("Pixel_Signin.png") img img.convert(RGB) for i in range(31):for j in range(31):r,g,b img.getpixel((j,i))print(r,g,b,end ,fileresult) 运行之后得到 把它…

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时&#xff0c;发现返回obj的code为“-1”&#xff0c;非常不解&#xff0c;利用console.log测试&#xff0c;更加不解&#xff0c;可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时&#xff0c;它并没有体现为空&#xff0c;…

springCloudGateWay使用总结

1、什么是网关 功能: ①身份认证、权限验证 ②服务器路由、负载均衡 ③请求限流 2、gateway搭建 2.1、创建一个空项目 2.2、引入依赖 2.3、加配置 3、断言工厂 4、过滤工厂 5、全局过滤器 6、跨域问题

韩国机场WebGIS可视化集合Google遥感影像分析

目录 前言 一、相关基础数据介绍 1、韩国的机场信息 2、空间数据准备 二、Leaflet叠加Google地图 1、叠加google地图 2、空间点的标记及展示 3、韩国机场空间分布 三、相关成果展示 1、务安国际机场 2、有同类问题的机场 四、总结 前言 12月29日8时57分左右务安国际机…

电子电气架构 --- 设计车载充电机的关键考虑因素

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

python进阶06:MySQL

课后大总结 Day1 一、数据库命令总结 1.连接数据库 连接数据库进入mysql安装目录打开bin文件夹&#xff0c;输入cmd(此命令后无分号)mysql.exe -u root -ppassword命令后输入密码:root 设置密码set passwordpassword("root123"); 查看所有数据库show databases; …

php反序列化原生态 ctfshow练习 字符串逃逸

web262 拿着题审计一下 <?php error_reporting(0); class message{public $from;public $msg;public $to;public $tokenuser;public function __construct($f,$m,$t){$this->from $f;$this->msg $m;$this->to $t;} }$f $_GET[f]; $m $_GET[m]; $t $_GET[t…

探秘前沿科技:RFID 与 NFC,开启智能识别新篇

RFID&#xff08;射频识别&#xff09;与NFC&#xff08;近场通信&#xff09;作为两种基于射频技术的无线通信方式&#xff0c;在现代社会中发挥着越来越重要的作用。尽管它们都具备非接触式识别和通信的能力&#xff0c;但在工作原理、应用场景、技术细节等方面存在着显著的差…

【04】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第四篇安卓APP上架之vivo商店-小米商店,oppo商店,应用宝

【04】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第四篇安卓APP上架之vivo商店-小米商店&#xff0c;oppo商店&#xff0c;应用宝 背景介绍 接第三篇上架华为&#xff0c;由于华为商店较为细致&#xff0c;本篇幅介绍其他4类商店相对简要一点&#xff0c;剩下其他更…

OpenCV计算机视觉 06 图像轮廓检测(轮廓的查找、绘制、特征、近似及轮廓的最小外接圆外接矩形)

目录 图像轮廓检测 轮廓的查找 轮廓的绘制 轮廓的特征 面积 周长 根据面积显示特定轮廓 轮廓的近似 给定轮廓的最小外接圆、外接矩形 外接圆 外接矩形 图像轮廓检测 轮廓的查找 API函数 image, contours, hierarchy cv2.findContours(img, mode, method) 代入参…

ROS2 跨机话题通信问题(同一个校园网账号)

文章目录 写在前面的话校园网模式&#xff08;失败&#xff09;手机热点模式&#xff08;成功&#xff09; 我的实验细节实验验证1、ssh 用户名IP地址 终端控制2、互相 ping 通 IP3、ros2 run turtlesim turtlesim_node/turtle_teleop_key4、ros2 multicast send/receive5、从机…

web3与AI结合-Sahara AI 项目介绍

背景介绍 Sahara AI 于 2023 年创立&#xff0c;是一个 "区块链AI" 领域的项目。其项目愿景是&#xff0c;利用区块链和隐私技术将现有的 AI 商业模式去中心化&#xff0c;打造公平、透明、低门槛的 “协作 AI 经济” 体系&#xff0c;旨在重构新的利益分配机制以及…