ethercat的linuxcnc解析器-关于lcec_conf和lcec.so

本文详述EtherCAT通信的从站配置方法,重点解析lcec_conf如何处理XML配置,实现PDO映射及资源申请。区分generic与非generic类型从站的配置差异,介绍XML节点关系与expat解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于EtherCAT通信使用部分,在https://blog.youkuaiyun.com/lswdcyy/category_9842141.html分类中可以大体获得相关了解;

那么,已经有了Ethercat的代码了解基础后,就可以基于ehtercat提供的函数库进行二次加工,将一些自定义的PDO存储在一个从站结构中,该从站结构包括类型以及需要映射的PDO,然后使用xml文件对需要的从站类型进行定义。从而避免经常性的处理PDO。这同样也是在简化从站配置相关内容的一种处理方式,这种处理方式与linuxcnc相结合后,就是linuxcnc_ethercat处理的内容:

本章节主要针对lcec_conf进行相关解析:

lcec_conf处理的工作就是解析XML文件的配置,然后将这些配置提取到结构中。在此过程中关键在于XML的解析,可以参考https://blog.youkuaiyun.com/lswdcyy/article/details/105476653了解expat对XML解析的使用。

了解完毕expat的使用,那么继续XML的解析,首先说一下EtherCAT的XML内部节点关系:

    "masters"
        "master"		
            "slave"
                "dcConf"
                "watchdog"
                "sdoConfig"
                    "sdoDataRaw"
                "idnConfig"
                    "idnDataRaw"
                "initCmds"
                "syncManager"
                    "pdo"
                        "pdoEntry"
                            "complexEntry"
                "modParam"
NULL

整体上的节点名称的关系如上,每种节点的缩略层数就是各个节点的关系,如masters为最外层节点,master是slave的外层节点...每种节点的关系在制作XML文件的时候必须是逐层递进的,不能直接由masters连接节点slave(这个关系会在解析过程中进行检测);

此外,从站可以分为两种类型,一种类型是generic类型,一种是非generic类型,对于generic类型的从站,需要手动设置sync、PDO以及PDO entry等PDO映射相关配置,而对于非generic类型从站,则不可以有以上元素,这是由于这部分内容由程序内部进行补充,0且如果在一个非generic类型从站添加了以上元素,程序会在解析XML文件关系时报警。

基于expat对XML的解析,可以将整个XML信息节点提取到一个链表中,然后将该链表信息添加到hal共享内存空间即可。

在提取XML信息到结构体中后,就可以针对已有的结构体进行解析,将结构体链表的信息提取而后进行各种主站、从站资源申请工作,并基于该信息将各个结构体进行关联,并将对一些参数进行初始化设置。

在这里主要还是对PDO映射部分进行了解,对于generic类型的从站来说,有以下几个部分需要在代码中实现:

1.需要根据XML中相关配置申请进行sync配置(用于自定义sync、PDO配置);

2.hal_data空间申请;

3.read/write回调函数实现(用于周期性读写ethercat数据);

4.对PDO_entry_reg进行内容填充(用于PDO映射);

5.创建管脚;

而对于非generic类型的从站来说,这部分由于放在程序中,也就是每个内置从站类型的初始化函数中执行,因此在需要在lcec中添加一个新的从站类型的的时候,需要另外增加一个头文件与源文件去完成这些事并进行重新编译。关于新增一类从站类型,有以下几点需要处理:

./src/lcec_conf.h对LCEC_SLAVE_TYPE_T新增一种类型
./src/lcec_conf.c对slaveTypes新增一种类型
./src/lcec_main.c对types增加一种类型,并实现相关初始化操作与之前提到的非generic类型从站需要的五点工作(需要增加一个头文件和一个源文件)。

这样,在XML配置中就可以将需要手动添加的sync部分处理到程序内部进行,而XML只需要配置从站类型即可。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值