LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。

在Youtube上看到了一位国外老兄做的,很不错。

https://www.youtube.com/watch?v=JU2lFg1rwgg

然后,找到了他的HAL和xml文件,如下。

EtherCAT部分的xml文件:















































上述参数是从TwinCAT中的xml文件中get。

可以参考最后的文档。

其 HAL文件如下。

# Erstellt von stepconf am Tue Jul 16 23:06:39 2013
# Änderungen an dieser Datei werden beim nächsten
# Aufruf von stepconf überschrieben.
loadusr -W lcec_conf /root/linuxcnc/configs/roschi_cnc/ethercat_config_estun.xml
loadrt lcec
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt classicladder_rt
loadusr classicladder --nogui custom.clp


addf lcec.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf lcec.write-all servo-thread
addf classicladder.0.refresh servo-thread


setp lcec.0.0.drivecontrol-1 1
setp lcec.0.0.drivecontrol-2 1


net Xachse_fb lcec.0.0.pos => axis.0.motor-pos-fb
net Xachse_cmd axis.0.motor-pos-cmd => lcec.0.0.poscommand
net Xachse_speed_cmd axis.0.joint-vel-cmd => lcec.0.0.speedcommand



net Xachse_AF axis.0.amp-enable-out => lcec.0.0.drivecontrol-3 
net Xachse_torque lcec.0.0.torque

对于上述的解释。

  1. 实时模块加载:loadrt、非实时模块加载:loadusr。使用格式为:loadrt trivkins count=1 param=value。loadrt 命令将运动轨迹规划模块 trivkins 加载于实时空间运行,加载数目为 1,引入参数为 value。
  2. 添加线程:addf,使用格式为:addf ethercat.read servo-thread。addf 命令将 ethercat驱动模块主函数添加至线程池中运行,servo-thread 按预定周期性调用该函数。
  3. 参数设置:setp,设置模块中某个引脚或参数为指定值,在模块使用前或在运行过程中均可使用,其使用格式为:setp motion.0.pin-08-out TRUE
  4. 引脚连接:net、linksp,用于将模块的引脚与引脚或信号与引脚间互连。
  5. 信号新建:newsig,建立一个指定数据类型的中间连接信号。数据类型包括 bit、s32、u32 以及 float。使用格式为:newsig OutputIO bit

LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第1张图片

LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第2张图片

LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第3张图片

LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第4张图片LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第5张图片

LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。_第6张图片



对于本例子。。。。

net命令,

net Xachse_fb lcec.0.0.pos => axis.0.motor-pos-fb

Xache_fb为信号名字,axis.0.motor-pos-fb为IN管脚,前面为Out管脚,=>前后必须要有空格。

setp命令,例如

setp lcec.0.0.drivecontrol-1 1

将lcec.0.0.drivecontrol-1初值为1




你可能感兴趣的:(linux,杂,EtherCAT)