LinuxCNC+EtherCAT(7)一个歪果仁做的例子的解释。。。。。
2015-10-25 10:34
1766 查看
在Youtube上看到了一位国外老兄做的,很不错。
https://www.youtube.com/watch?v=JU2lFg1rwgg
然后,找到了他的HAL和xml文件,如下。
EtherCAT部分的xml文件:
上述参数是从TwinCAT中的xml文件中get。
可以参考最后的文档。
其HAL文件如下。
对于上述的解释。
实时模块加载:loadrt、非实时模块加载:loadusr。使用格式为:loadrt trivkins count=1 param=value。loadrt 命令将运动轨迹规划模块 trivkins 加载于实时空间运行,加载数目为 1,引入参数为 value。
添加线程:addf,使用格式为:addf ethercat.read servo-thread。addf 命令将 ethercat驱动模块主函数添加至线程池中运行,servo-thread 按预定周期性调用该函数。
参数设置:setp,设置模块中某个引脚或参数为指定值,在模块使用前或在运行过程中均可使用,其使用格式为:setp motion.0.pin-08-out TRUE
引脚连接:net、linksp,用于将模块的引脚与引脚或信号与引脚间互连。
信号新建:newsig,建立一个指定数据类型的中间连接信号。数据类型包括 bit、s32、u32 以及 float。使用格式为:newsig OutputIO bit
对于本例子。。。。
net命令,
Xache_fb为信号名字,axis.0.motor-pos-fb为IN管脚,前面为Out管脚,=>前后必须要有空格。
setp命令,例如
setp lcec.0.0.drivecontrol-1 1
将lcec.0.0.drivecontrol-1初值为1
https://www.youtube.com/watch?v=JU2lFg1rwgg
然后,找到了他的HAL和xml文件,如下。
EtherCAT部分的xml文件:
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5"> <slave idx="0" type="generic" vid="0000060A" pid="00000001" configPdos="true"> <sdoConfig idx="6098" subIdx="0"> <sdoDataRaw data="12"/> </sdoConfig> <sdoConfig idx="6099" subIdx="1"> <sdoDataRaw data="E8 03 00 00"/> </sdoConfig> <sdoConfig idx="6099" subIdx="2"> <sdoDataRaw data="64 00 00 00"/> </sdoConfig> <sdoConfig idx="6093" subIdx="1"> <sdoDataRaw data="00 08 00 00"/> </sdoConfig> <sdoConfig idx="6093" subIdx="2"> <sdoDataRaw data="F9 15 00 00"/> </sdoConfig> <sdoConfig idx="6094" subIdx="1"> <sdoDataRaw data="01 00 00 00"/> </sdoConfig> <sdoConfig idx="6094" subIdx="2"> <sdoDataRaw data="58 02 00 00"/> </sdoConfig> <syncManager idx="0" dir="out"></syncManager> <syncManager idx="1" dir="in"></syncManager> <syncManager idx="2" dir="out"> <pdo idx="1602"> <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="drivecontrol" halType="bit"/> <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="poscommand" halType="special32" scale="1000"/> <pdoEntry idx="60b1" subIdx="00" bitLen="32" halPin="speedcommand" halType="special32" scale="10"/> <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="bit"/> </pdo> </syncManager> <syncManager idx="3" dir="in"> <pdo idx="1A02"> <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="drivestatus" halType="bit"/> <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos" halType="special32" scale="1000"/> <pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="torque" halType="special32" scale="10"/> <pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="speed" halType="special32" scale="10"/> <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode_fb" halType="bit"/> <pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="digital_inputs" halType="bit"/> </pdo> </syncManager> <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="250000"/> </slave> </master>
上述参数是从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
对于上述的解释。
实时模块加载:loadrt、非实时模块加载:loadusr。使用格式为:loadrt trivkins count=1 param=value。loadrt 命令将运动轨迹规划模块 trivkins 加载于实时空间运行,加载数目为 1,引入参数为 value。
添加线程:addf,使用格式为:addf ethercat.read servo-thread。addf 命令将 ethercat驱动模块主函数添加至线程池中运行,servo-thread 按预定周期性调用该函数。
参数设置:setp,设置模块中某个引脚或参数为指定值,在模块使用前或在运行过程中均可使用,其使用格式为:setp motion.0.pin-08-out TRUE
引脚连接:net、linksp,用于将模块的引脚与引脚或信号与引脚间互连。
信号新建:newsig,建立一个指定数据类型的中间连接信号。数据类型包括 bit、s32、u32 以及 float。使用格式为:newsig OutputIO bit
对于本例子。。。。
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下各种服务的安装和解析
- centos LAMP第三部分php,mysql配置 php配置文件 配置php的error_log 配置php的open_basedir 安装php的扩展模块 phpize mysql配置第二十一节课
- Linux Readingpackagelists Error! 解决办法
- 我使用的Linux命令
- 由linux命令行下命令参数前的一横(-)和两横(--)的区别而得知的
- archlinux+i3wm安装与配置
- 每天一个linux命令(21):find命令之xargs
- Ubuntu下安装GCC编译器
- Linux下实现编写汇编程序
- linux硬链接与软链接
- linux设置系统时间与各种阻塞
- vmware安装CentOS " Intel VT-x 处于禁用状态"
- linux多线程-线程属性
- tr 的用法
- PS1设置
- (十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
- Linux netfilter 学习笔记 之三 ip层netfilter的table、rule、match、target结构分析
- 卸载CentOS7-x64自带的OpenJDK并安装Sun的JDK7的方法
- WIN7下访问Linux系统下Samba服务器不稳定的解决方法
- 在centos使用rpm包的方式安装mysql,以及更改root密码