多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Ubuntu下IGH与TwinCAT3双主站调试零差云控EtherCAT电机实战

Ubuntu下IGH与TwinCAT3双主站调试零差云控EtherCAT电机实战 先把结论放在前面我这套流程跑通的最终形态是让一台装了Ubuntu 22.04的工控机作为IGH主站去识别、扫描、控制零差云控的EtherCAT驱控一体电机同时保留一台Windows机器上的TwinCAT3作为另一套主站方案两套方案共用同一台电机、同一根网线在需要的时候随时切换。很多人一听EtherCAT调试就默认必须用Windows加TwinCAT3实际上在Linux下用IGHEtherLab开源主站做从站扫描、PDO映射、状态机控制是成本最低、最方便自动化脚本化的路线而TwinCAT3的图形化界面和伺服整定工具又是IGH替代不了的。这篇记录就是围绕这个真实场景展开的适合正在做机器人关节调试、自动化设备轴控、或者想把Linux接入EtherCAT体系的朋友参考。零差云控的电机尤其是eRob系列关节模组和驱控一体机目前在国内机器人项目里出现频率很高它本身支持标准CiA402协议EtherCAT从站做得也比较规整这意味着它和IGH、TwinCAT3之间的对接不需要什么私有协议认准对象字典、PDO映射就能玩转。但也正因为中间隔了一层开源主站网卡、实时性、ESI文件、状态机这些坑一个都不会少。这篇文章我会把从环境准备到IGH跑通、再到TwinCAT3对接、最后两套主站如何和平共处的完整过程都写出来末尾附上我踩过的问题清单照着抄能省不少时间。1. 先理清为什么在Ubuntu 22.04下调EtherCAT会同时用到两个主站1.1 IGH和TwinCAT3不是竞品是互补工具很多人一开始会问既然IGH能控制电机为什么还要折腾TwinCAT3反过来也一样既然TwinCAT3那么成熟为什么还要在Ubuntu下编译IGH我自己的体会是这两个东西根本不是一个赛道上的工具。IGH是运行在Linux内核空间的EtherCAT主站它最擅长的是被脚本调用、被ROS集成、被塞进自动化产线做长时间稳定性测试。一旦你掌握了ethercat命令行和它的用户态接口写一个自动压测脚本、记录从站状态变化、循环启停电机都是几分钟的事。而TwinCAT3是倍福的工业自动化平台它的价值在工程化图形化扫描设备、自动加载ESI、NC轴配置、波形分析、伺服参数整定再加上PLC编程生态确实适合做项目交付和设备联调。实际项目里最常见的情况是研发阶段用IGH快速验证电机好不好使、链路稳不稳定、PDO映射有没有问题到了现场联调或者给客户做培训的时候又得把TwinCAT3搬出来按行业习惯完成伺服配置。两台设备、两套主站对应同一个电机这就逼着你把两条路都趟一遍。1.2 零差云控电机为什么适合做这类调试的样板零差云控的电机在国产机器人供应链里算是很典型的EtherCAT从站设备。它内部集成了驱动器支持位置模式、速度模式、力矩模式协议上走标准CiA402输出的是位置反馈、速度反馈这些常规对象字典。这个东西的好处在于它的从站信息SII/ESI不是随便糊弄的你扫描进IGH或者TwinCAT3以后看到的信息和你拿到的设备手册能对上这一点对调试来说极其重要。我手里这台是零差云控的EtherCAT驱控一体机支持24V/48V供电带增量式编码器接口控制板上有标准的RJ45 EtherCAT IN/OUT口出线定义相对清晰。用IGH扫描时能识别到厂商ID、产品码、版本号后续配置PDO的时候也能按照它的XML描述文件去勾选对象。如果你用其他品牌的国产伺服流程基本一样但零差云控这个型号是我实际验证过的写起来也更有底气。1.3 我采用的调试拓扑调试环境分为两条链路链路一Ubuntu 22.04工控机板载Intel网卡运行IGH主站网线直连零差云控电机的EtherCAT IN口。链路二Windows笔记本或虚拟机安装TwinCAT3通过同一根网线直连同一台电机。为什么不加交换机EtherCAT虽然物理上是以太网但它不是普通TCP/IP它的报文转发依赖从站的硬件处理普通交换机无法识别EtherCAT帧甚至可能直接丢包。现场调试最简单可靠的方式就是主站网卡到从站IN口直连如果从站有OUT口可以继续串联下一台但第一台必须接主站。所以我的拓扑里没有任何交换机的存在两台电脑只是物理上轮流插网线没有同时连接。这里多提一句如果你确实需要多主站切换建议在从站网口前做一个手动切换开关或者干脆像我一样断电后换线。EtherCAT线缆不支持热插拔主站和从站上下电顺序错了轻则状态机报错重则SII读不出来后面我会专门聊这个问题。2. 环境搭建从裸机Ubuntu 22.04到IGH主站跑起来2.1 系统准备与编译依赖IGH本身编译不会太苛刻但Ubuntu 22.04默认内核是5.15需要先装好Linux头文件和编译工具链。新系统装完第一步是换源不然从官方源拉包能等到怀疑人生。我一般习惯把源换成国内镜像然后做一次全量升级避免后面装依赖时出现源缓存不一致的问题。sudo apt update sudo apt upgrade -y sudo apt install -y git build-essential autoconf automake libtool pkg-config sudo apt install -y linux-headers-$(uname -r)这里有个容易忽略的细节linux-headers版本必须和当前内核版本完全一致。如果你先升级了内核但没重启或者源里匹配不到对应版本后面make的时候会因为缺少内核头文件报一堆莫名其妙的错误。稳妥起见装完依赖后先重启一次再用uname -r确认内核版本再去装headers。如果你是带桌面环境的Ubuntu这个步骤尤其重要因为桌面环境重启后可能还会触发网络服务占用网卡的问题这个坑后面单独说。2.2 编译安装IGH主站IGH源码可以直接从EtherLab的官方Git仓库拉取常见做法是拉取master分支。严格来说IGH没有所谓“最新版”的长期维护周期我用的是当前master分支编译过程比较顺利git clone https://gitlab.com/etherlab.org/ethercat.git cd ethercat ./bootstrap ./configure --prefix/opt/etherlab --enable-generic --disable-8139too make sudo make modules_install install sudo depmodconfigure阶段有几点要理解清楚。--prefix指定安装目录我这里选/opt/etherlab后面启动脚本、工具链都在这个目录里。--enable-generic是启用通用网卡驱动这个非常重要IGH虽然自带e1000e、8139too等专用驱动但新内核配新网卡最省事的方式就是让IGH用generic模式去绑定网卡通用模式牺牲一点实时性但兼容性好太多。--disable-8139too是因为老式8139网卡驱动我已经不需要了如果你用的是RTL8139网卡保留这个选项反而更好。装完之后IGH不会自动创建服务需要手动把启动脚本和配置文件放到系统对应位置sudo ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d/ethercat sudo mkdir -p /etc/sysconfig sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat然后编辑/etc/sysconfig/ethercat最核心的是两个内容主站对应的网卡MAC地址以及要加载的网卡驱动模块。如果你有多个网卡务必用明确的MAC地址去指定MASTER0_DEVICE防止系统启动时网卡顺序变化导致IGH绑错设备。MASTER0_DEVICE00:11:22:33:44:55 DEVICE_MODULESgeneric改完之后启动sudo /etc/init.d/ethercat start sudo dmesg | grep -i ethercat看到没有报错、主站注册成功的日志IGH环境这块就算跑通了。2.3 实时性配置RT内核、CPU隔离和NetworkManagerIGH在普通内核下也能跑起来但EtherCAT运动控制对周期抖动是有要求的。我一开始在Ubuntu默认内核下跑2ms周期位置模式下电机能转但用示波器看直流母线电压和电流波形同步性能很差调到1ms周期以后直接出现偶发抖动。最终解决方案是安装低延迟内核并在GRUB里做CPU隔离。Ubuntu 22.04的仓库里有linux-lowlatency内核包安装后重启选择低延迟内核。它虽然不是完整意义的PREEMPT_RT但对IGH这种依赖内核高精度定时器的应用来说提升是立竿见影的。sudo apt install -y linux-lowlatency另外在/etc/default/grub的GRUB_CMDLINE_LINUX里我加了这么几个参数isolcpus2,3 nohz_full2,3 rcu_nocbs2,3意思很简单把CPU 2和3从常规调度中隔离出来专门给IGH的实时线程用。用户态控制程序再用pthread_setaffinity_np绑到2或3号核上中断和时间戳回调的抖动会明显下降。当然这个配置不是必须的单轴调试、周期要求不高的情况下不隔离也能用但如果你后面要跑多轴同步或者DC模式这步不能省。2.4 网卡选型与驱动绑定IGH对网卡的要求比普通以太网苛刻。我踩过的第一个坑就是拿了一个USB转RJ45网卡去试结果驱动加载失败后来换了板载Intel网卡才顺利。IGH主站在Linux下最稳妥的网卡是Intel 82574L、I210、I211这些笔记本上常见的Realtek网卡偶尔也能用但需要额外处理。建议先用lspci确认一下型号lspci | grep -i ethernet如果你手头只有Realtek或者其它非主流网卡也不要急着放弃IGH的generic驱动可以覆盖很大一部分设备关键在于驱动绑定成功后这个网卡就不能再被NetworkManager和普通IP协议栈占用否则IGH拿不到网卡的所有权。我实际的做法是先记下网卡名称比如enp3s0然后用nmcli把该网卡设为unmanaged再确认系统里没有其他进程在监听这个接口。加载IGH模块后用ethercat命令能看到主站状态基本就说明网卡绑定成功了。3. 零差云控电机接入IGH从扫描到OP状态机3.1 用ethercat命令行让从站现身IGH环境起来之后第一件事就是扫描总线确认能看到从站。这里推荐先用-v参数看详细信息ethercat slaves -v正常会输出从站的0号位置地址、厂商ID、产品码、版本号、从站名字以及SII里的信息。这里有个细节如果你扫描结果为空先别急着重试检查从站供电是否正常、网线是否插在IN口。零差云控驱控一体机的IN和OUT口很容易插反插反之后主站这边什么设备都扫不到但普通网卡上的指示灯看着又是亮的这个假象非常骗人。如果扫描正常你会看到类似这样的一行信息具体值以你的实际设备为准0 0:0 PREOP ZeroErr COE Drive ...PREOP说明从站已经进入预运行状态SII信息读取成功。这时候可以进一步查看从站支持的对象字典和PDO映射ethercat pdos -v这一步能看到从站从0x1600开始的一系列RxPDO、TxPDO定义这些映射后面在IGH主站XML里需要保持一致。3.2 准备主站XML与PDO映射IGH不像TwinCAT3那样图形化扫描就完事了它需要写一个主站XML文件告诉IGH有哪些从站、每个从站用哪个PDO、周期多少、DC同步是否启用。我用的方式是把零差云控的ESI文件转换成IGH需要的信息重点配置域Domain和同步管理器。这里贴一段我实际用的XML核心片段Master SlaveInfo NameZeroErr Drive VendorId0x000004ec ProductId0x00000001 RevisionNumber0x00010000 SynchronizationInfo SyncSettings Sync1 CycleTime1000 .../ Sync2 CycleTime1000 .../ /SyncSettings SyncManagers SyncManager Index0 .../ SyncManager Index1 .../ SyncManager Index2 .../ /SyncManagers /SynchronizationInfo Pdos RxPdo Index0x1600 Entry Index0x6040 SubIndex0x00/ Entry Index0x607A SubIndex0x00/ Entry Index0x60FF SubIndex0x00/ /RxPdo TxPdo Index0x1A00 Entry Index0x6041 SubIndex0x00/ Entry Index0x6064 SubIndex0x00/ Entry Index0x606C SubIndex0x00/ /TxPdo /Pdos /SlaveInfo /Master这个XML把RxPDO里的0x6040控制字、0x607A目标位置、0x60FF目标速度以及TxPDO里的0x6041状态字、0x6064实际位置、0x606C实际速度都映射了出来。这一步是整个IGH调试里最依赖经验的地方映射太少了覆盖不了控制需求映射太多又增加总线负载。单轴位置控制我一般就映射上面这几个对象简单够用。PDO映射完成后还需要在IGH里把主站设为OP状态让周期数据跑起来ethercat state -Op ethercat slaves如果从站能进入OP说明PDO映射、SyncManager配置都没问题电机虽然没有转动但总线通信已经建立了。3.3 配置CiA402控制字并让电机真正转起来总线通了不代表电机能转CiA402状态机还拦着一道。零差云控电机遵循标准CiA402状态机要经过“未就绪→禁止使能→就绪→已使能→运行”的迁移。我在IGH下用的是ethercat sdo命令直接写对象字典# 设运行模式为位置模式 ethercat sdo -p 0x00 -i 0x6060 0x00 1 # 先切到Ready to switch on ethercat sdo -p 0x00 -i 0x6040 0x00 0x0006 # 切换到Switched on ethercat sdo -p 0x00 -i 0x6040 0x00 0x0007 # 使能运行 ethercat sdo -p 0x00 -i 0x6040 0x00 0x000F这几条命令的0x00是位置地址因为我只有一个从站用0即可。如果电机配置了别名地址要改成对应的从站地址。写0x6040控制字是EtherCAT伺服调试的基础操作关键在于每一步之间稍微等几十毫秒让状态机有时间切换。控制字序列不对的话从站的状态字0x6041会停留在某个状态不变这时候通过ethercat sdo读取0x6041就能判断卡在哪一步。位置模式下真正让电机动起来我写了个简单的用户态程序走IGH的rtdm接口周期任务里更新0x607A目标位置。第一个目标位置我设得很保守比如5000个脉冲速度限制在额定速度的10%以内。没想到一次就转了熟悉了流程之后后续调速度模式、力矩模式都只是换对象字典的事。4. 换一边用TwinCAT3对接同一台电机4.1 为什么正式调伺服时TwinCAT3更顺手IGH能跑通说明从站、PDO、CiA402这些基础都没问题但真到了要精细调伺服的阶段IGH的文本操作效率就不够看了。TwinCAT3的图形化环境里扫描从站、加载ESI、配置NC轴、绑定PDO都是点几下鼠标的事ScopeView还能实时看位置、速度、电流曲线这对整定PID参数、观察跟随误差帮助巨大。所以我的实际流程是IGH负责验证链路和脚本化测试TwinCAT3负责伺服轴正式交付。两套方案并不冲突反而是我把EtherCAT协议栈吃透以后最自然的组合。4.2 在Windows/虚拟机上让TwinCAT3找到网卡TwinCAT3官方运行在Windows上。如果你有一台物理Windows工控机安装就很简单把网卡驱动换乘TwinCAT的实时网卡驱动扫描就能用。但如果你像我一样只有Ubuntu工控机临时用Windows虚拟机顶上就要多花点功夫。VMware虚拟机里默认的e1000虚拟网卡TwinCAT3经常识别不了表现为实时网卡安装时报错、或者I/O设备扫描不到。我试下来比较稳的方案是在VMware的虚拟机设置里把网卡类型改成Intel PRO/1000 MT DesktopVMXNET3在TwinCAT3下兼容性反而不好然后手动桥接到物理网卡。如果VMware无法满足还有一个更粗暴的办法就是给虚拟机直通一块USB千兆网卡TwinCAT3能直接认到物理网卡的芯片型号不会报错。步骤上打开TwinCAT XAE后先点“安装实时驱动”把对应网卡绑定到TwinCAT。这里有个关键操作必须用管理员身份运行Visual Studio和TwinCAT环境否则驱动绑定会静默失败。绑定成功后再扫描设备就能看到EtherCAT总线上挂着零差云控从站。4.3 扫描从站、加载ESI、配置轴并点动TwinCAT3扫描从站时第一次接入陌生设备会提示找不到设备描述文件也就是ESI文件。这时候需要手动把零差云控的XML文件复制到C:\TwinCAT\3.1\Config\Io\EtherCAT\目录下再重新扫描就能正确识别设备类型和PDO对象。识别成功以后I/O设备树下会出现设备展开可以看到Sync Manager和PDO映射。TwinCAT3默认可能只映射了一部分对象但因为它有图形化勾选我习惯按照IGH里验证过的PDO列表手动勾选一遍保持两套主站的配置一致。NC轴配置里选择轴类型为EtherCAT勾选CSP周期同步位置模式把0x6060设为8也就是CSP模式代码之后在Motion里添加轴启用并点动电机就能动起来。到这里零差云控电机在IGH和TwinCAT3两套主站下都已经跑通。5. 两套主站配合的工程经验5.1 切换主站的安全流程两套主站共用一台电机时最忌讳的就是“热切换”。EtherCAT总线上一旦主站掉线从站会检测到看门狗超时立刻进入安全状态。如果在电机运行状态强行拔线轻则驱动器报错重则导致抱闸逻辑异常甚至让电机自由滑行。我的切换流程是先通过主站命令让电机停止确认转速为0。把从站状态降到INIT让总线完全释放。断开当前主站与电机之间的网线。关闭电机驱动器供电这一步很关键确保SII重新加载环境干净。连接另一台主站。给驱动器重新上电等待几秒让从站初始化。扫描、使能、继续调试。这套流程看起来繁琐但能避免90%以上的“莫名其妙问题”。很多人图省事电机不断电直接换线很容易遇到从站掉线、SII读不出来、状态机卡死等状况。5.2 把IGH下的配置平移给TwinCAT3IGHz里验证出来的参数在TwinCAT3里不是白调的。下面这张表我实际记录了两边需要保持一致的参数参数项目IGH配置位置TwinCAT3配置位置通信周期主站XML CycleTimeEtherCAT设备同步周期PDO映射主站XML RxPdo/TxPdo设备下PDO Assignment从站地址ethercat命令行位置地址EtherCAT扫描后的从站拓扑运行模式0x6060对象NC轴轴类型CSP/CSV控制字0x6040对象NC轴状态控制自动生成速度限制0x6081对象NC轴速度规划参数我最常遇到的问题是PDO映射不一致IGH里映射了0x607A目标位置但TwinCAT3默认可能映射了0x60FF目标速度二者混用会让控制指令完全乱套。解决办法是以IGH里验证过的PDO列表为准TwinCAT3侧手动改成一致的映射然后对比两边的实际位置反馈和速度反馈是否吻合。5.3 实际项目中怎么分工经过几次项目打磨我现在对IGH和TwinCAT3的分工已经形成习惯IGH用在需要自动化、批量、回归测试的场合。比如让电机反复跑同一个轨迹跑一晚上看有没有报错或者在产线上做从站老化测试用脚本记录从站状态又或者接入ROS之后做机器人关节测试IGH天然就有Linux生态优势。TwinCAT3则用在需要人机交互、PLC逻辑、项目交付的场合。比如最终设备上电后要跟气缸、传感器、视觉系统联动这时候PLC程序的可靠性和现场可维护性比IGH强太多另外伺服参数整定和振动分析TwinCAT3的ScopeView比IGH加Python画图方便得多。两边配合前者帮我快速定位协议和链路的问题后者帮我完成真正的设备功能确实比单用任何一套更高效。6. 避坑清单与问题排查实录6.1 主站启动失败的几个常见原因IGH启动失败是我遇到次数最多的问题。第一个原因就是NetworkManager抢占网卡。Ubuntu桌面版开机之后NetworkManager会自动接管所有有线网卡IGH加载模块时拿不到网卡控制权报“Address already in use”之类的错误。在/etc/network/interfaces或者用nmcli把网卡设为unmanaged能解决大部分这类情况。第二个原因是MAC地址配置错误。确认一下/sys/class/net/enpXsY/address里读到的MAC和/etc/sysconfig/ethercat里MASTER0_DEVICE写的是不是完全一致这个字段不支持大小写混乱。第三个原因是内核模块没加载make modules_install以后有时候depmod和modprobe的顺序不对导致eth驱动没挂上这时重新执行一次depmod -a、再重启IGH服务就好。6.2 扫描不出从站的排查路径扫描不到从站我在第3.1节已经提到过IN/OUT口插反的问题这是踩得最实在的一个坑。零差云控驱控一体机的RJ45口旁边会印有IN和OUT标识但有些设备丝印不明显如果两个口都插过还是扫不到就用网线连接器的金属弹片方向来对比IN口和OUT口的引脚方向往往不同仔细看能分辨出来。另一个常见原因是从站供电不足。驱控一体机需要外部24V给控制板供电很多人在Ubuntu工控机上调试时只接了网线忘了给驱动器接供电自然什么都扫不到。EtherCAT从站在INIT阶段就要做SII读取这需要从站自身有电否则Link灯都可能不亮。如果前面都正常可以试着手动让主站进入INIT再重置ethercat state -I INIT ethercat state -P PREOP有时候从站卡在某个异常状态重置一遍就能恢复正常。如果在IGH里偶尔扫到但SII信息乱码大概率是从站和主站之间地电位不一致这在电机驱动器接了大功率电源时更容易出现处理方法是把驱动器、工控机的GND连到一起共地。6.3 同步和抖动问题IGH在OP状态跑起来但位置模式里电流和速度波形明显毛糙多半是周期抖动问题。排查方向我按优先级排序先看用的什么内核普通内核换低延迟内核再看有没有做CPU隔离IGH实时线程所在CPU别让其他进程抢然后检查网卡的电源管理让ethtool把节能以太网关掉最后确认驱动器的DC同步是否开启。ethtool -s enp3s0 wol d ethtool -s enp3s0 autoneg off speed 100 duplex full这里有个细节强制网卡百兆全双工有时候反而比千兆更稳定EtherCAT的帧长度和普通IP流不同百兆下IGH处理起来更容易。当然这不是绝对视网卡和IGH版本而定我手头这块Intel I210在千兆下也稳定但如果你用通用驱动试试百兆全双工也无妨。6.4 TwinCAT3扫描不到设备虚拟机里的TwinCAT3扫描不到设备90%是网卡驱动问题。TwinCAT3的实时网卡驱动只认特定芯片VMware虚拟网卡要么换e1000e要么直通USB网卡否则就算扫描也看不到总线。物理机上也偶尔出现“设备可见但网卡绑定不成功”这多半是杀毒软件或Windows防火墙拦截了TwinCAT实时驱动把相关目录加入白名单用管理员身份重装实时驱动即可。TwinCAT3能扫到设备但提示Unknown Device那是ESI文件没装。把零差云控提供的XML文件放到对应目录后需要在设备管理器里对未知设备右键更新设备描述或者直接在TwinCAT的扫描过程中选择“安装设备描述”。这个动作容易被忽略因为TwinCAT不会自动读取目录下的新XML。6.5 零差云控电机使能不上的排查清单IGH下用SDO命令使能状态字永远停在Switched On进不了Operation Enabled最常见的原因是控制字跳变太快。CiA402状态机对状态切换是有时序要求的0x0006、0x0007、0x000F之间至少要等几十毫秒有些驱动器要求上百毫秒我一开始就是三条命令无间隔执行结果一直卡住。另一个容易忽略的是急停和抱闸信号。零差云控这类驱控一体机硬件上通常有抱闸控制和急停输入如果急停信号被拉低或者抱闸没有打开使能指令会一直被驱动器拒绝状态字里会提示对应故障码。这时候不要反复使能先读0x603F错误码再对照手册找具体原因。很多时候不是EtherCAT的问题而是外围信号没满足。速度限制和扭矩限制也是必查项。有些驱动器默认峰值扭矩限制为0或者速度限制为0导致使能后一给指令就报跟踪误差超限。建议在使能前把0x607F最大扭矩、0x6081轮廓速度、0x6083轮廓加速度设置成合理的非零值能省不少排查时间。6.6 避坑速查表现象可能原因处理建议IGH启动报Address already in useNetworkManager占用网卡将该网卡设为unmanagedethercat slaves无输出网口插反、从站没供电检查IN口、确认驱动板供电SII信息乱码从站与主站地电位不一致统一共地检查电源纹波从站状态一直PREOP不进OPPDO映射不一致或FMMU配置错误核对主站XML与ESI的PDO电机使能失败控制字跳变太快、急停触发逐步写控制字读取错误码0x603F波形毛糙抖动大内核非实时、CPU未隔离换低延迟内核isolcpus隔离TC3扫描不到网卡虚拟机网卡不受支持换e1000e或直通USB网卡TC3扫到Unknown DeviceESI文件缺失复制XML到EtherCAT目录并更新描述电机一转立即报跟随误差速度/扭矩限制为0预置0x607F、0x6081等对象最后再说一点个人体会。IGH和TwinCAT3两边来回切表面上多了一套工具的学习成本实际上当你把从站扫描、PDO映射、CiA402状态机这些底层逻辑搞清楚以后两套主站就是两个壳子里面的东西是一模一样的。IGH帮你把协议细节逼着你看了个明白TwinCAT3又帮你在工程效率上补了一大截。如果你卡在“IGH能扫描但电机不动”或者“TwinCAT3扫描不到设备”这种问题上别急着怀疑设备和网卡先回看一遍状态机和网卡绑定这两块是绝大多数故障的真正源头。
返回列表