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

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

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

lcec_conf处理的工作就是解析XML文件的配置,然后将这些配置提取到结构中。在此过程中关键在于XML的解析,可以参考https://blog.csdn.net/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只需要配置从站类型即可。

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

  1. LeetCode简单题之设计 Goal 解析器

    题目 请你设计一个可以解释字符串 command 的 Goal 解析器 .command 由 "G"."()" 和/或 "(al)" 按某种 ...

  2. CSS 选择器:BeautifulSoup4解析器

    和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据. lxml 只会局部遍历,而Beautiful Soup 是基 ...

  3. php codeigniter 语言,php – codeigniter模板引擎,包括语言解析器

    不幸的是,CI内置的模板解析器类没有此功能.你可以在 sparks directory中环顾四周,有多个火花集成了许多模板引擎,如smarty或twig,可以通过调整来创建这样的东西. 此外,您可以尝 ...

  4. rest-framework之解析器

    rest-framework之解析器 本文目录 一 解析器的作用 二 全局使用解析器 三 局部使用解析器 四 源码分析 回到目录 一 解析器的作用 根据请求头 content-type 选择对应的解析 ...

  5. 【C++】clipp 一个命令行参数解析器

    1.简介 clipp是一个使用方便.功能强大的命令行解析器,源码只有一个头文件<clipp.h> github地址:https://github.com/muellan/clipp 2.使 ...

  6. Android XML pull 解析器

    Android 并未提供对 Java StAX API 的支持.但是,Android 确实附带了一个 pull 解析器,其工作方式类似于 StAX.它允许您的应用程序代码从解析器中获取事件,这与 SA ...

  7. 用PULL解析器解析XML文件

    第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...

  8. 使用 SAX 解析器简化文档处理程序的编写

    http://www-900.ibm.com/developerWorks/cn/xml/x-dochan.shtml 有时候 SAX 文档处理程序的代码可能变得非常麻烦.结构性差而且难以维护,尤其是 ...

  9. Python之父发文,将重构现有核心解析器

    原题 | PEG Parsers 作者 | Guido van Rossum 译者 | 豌豆花下猫 转载自 Python猫(ID: python_cat) 导语:Guido van Rossum 是 ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之入门的黑客
  2. mac u盘格式化 linux系统文件,Mac上怎么制作Ubuntu的U盘开启盘(装Linux系统)
  3. scanf从文件中读入,printf写入到文件
  4. eDMA结构及工作机理的简单介绍
  5. Python input 函数 -Python零基础入门教程
  6. python实现dem输出三维模型_python DEM数据可视化
  7. coreboot学习7:ramstage阶段之设备枚举流程
  8. SpringMVC框架----请求参数的绑定
  9. newaxis取出某一行或列数据以及增加维度
  10. C语言--三次方程数值求解
  11. rgb转nv12 nv12转rgb
  12. vue-aliplayer 阿里云播放器适配 vue [新]
  13. p6spy mysql8_P6spy监控打印SQL语句
  14. 从 0 到 1,开发一个智能问答机器人
  15. android 播放pcm的软件,应用AudioTrack播放PCM音频数据(android)
  16. 十大铁饭碗职业排行,哪些行业最吃香?外行看热闹,内行看门道
  17. html英文书籍推荐,Html英文
  18. 前端学习笔记 - promise是什么?能解决什么问题?
  19. 激活函数(1)Sigmoid激活函数
  20. 二三四五4位高管 陈于冰董事长 代小虎财务总监 罗绘副总对外对公 邱俊祺董秘 实控人韩猛

热门文章

  1. 微信官方:微信圈子将停止运营
  2. 如何让计算机桌面自动更换,怎么让电脑自动更换桌面背景
  3. 贝尔宾团队角色理论:附Belbin Team Roles测试 CW CO SH PL RI ME TW FI
  4. swagger2 description is deprecated
  5. C++:pass by reference的时候真正传递的是什么?
  6. 09.JSP自定义标签01
  7. elasticsearch DSL查询之should查询
  8. 让AI帮你玩游戏(一) 基于目标检测用几个样本帮你实现在魔兽世界中钓鱼(群已满)
  9. 没有干货的LTSC浅度体验
  10. java中怎么判断一段代码时线程安全还是非线程安全_3万字的Java后端面试经历总结