首页 > 系统相关 >【原创】EtherCAT主站IgH解析(二)-- Linux/Windows/RTOS等多操作系统IgH EtherCAT主站移植指南

【原创】EtherCAT主站IgH解析(二)-- Linux/Windows/RTOS等多操作系统IgH EtherCAT主站移植指南

时间:2024-06-20 22:20:37浏览次数:29  
标签:主站 linux RTOS Linux EtherCAT IgH

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/

前言

目前,EtherCAT商用主站有:Acontis、TwinCAT3、KPA、Codesys等,开源EtherCAT主站则主要有两大方案:igh与SOEM,两者设计天差地别,SOEM开源于2008年底1.1.2版本,具备良好的可移植性,能够轻松适配各类操作系统乃至裸机环境,然而,在功能丰富度与实时性能表现上(除裸机外)远不如IgH,应用层面想要应对复杂的EtherCAT应用场景会非常困难,SOEM的协议栈运作依托于应用层接口的驱动,其内部并无独立任务(线程)。

相比之下,IgH诞生较早,IgH功能全面,同时注重实时性能,为了在linux上获得良好的实时性能和低CPU利用率,同时方便多主站使用时进程间隔离等原因,IgH设计之初就基于linux内核态,今天看来可移植性较差;

igh的高实时性能得益于linux内核态可直接操作网卡收发,功能全面得益于其内部采用的多任务状态机架构,这些任务驱动机制通过系统调用向用户空间的EtherCAT应用提供服务,极大简化了应用层面的接口交互,使得EtherCAT应用操作接口变得极为简单。

那么IgH能移植到linux用户态,或者其他RTOS吗?答案是当然能,本文做简单介绍。

IgH整体框架及运行原理本详见博客文章 【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文

那么IgH能移植到裸机吗?理论上可以,但比较麻烦,但是IgH整体设计就是多任务的,关键点是没有任务调度,几个状态机如何驱动?不考虑权衡投入产出、可复用性,你可以自行尝试。

IgH依赖操作系统服务

IgH虽然运行在linux内核态,但并不与Linux内核的耦合,整个协议栈只用到了linux的基本服务。

操作系统服务 描述
任务(线程)调度 每个主站,内部状态机运行需要2个任务,EoE 1个(可选)、应用层周期任务
睡眠(定时服务) 任务睡眠,让出CPU;应用层通信周期控制,如果RTOS没有高精度定时接口,可启一个硬件timer回调更加精确。
读取时间戳 EtherCAT子报文对象维护需要收发时间戳
动态内存分配 master、slave、datagram、eoe、eeprom等对象需要动态内存分配
event(非必须) 应用调用主站服务时阻塞到事件等待,主站完成服务后通过事件唤醒应用
Semaphore/mutex 同步互斥
TCP/IP网络协议栈 主站已支持二层网络包转发,若设备本身需要TCP/IP网络远程调试工具需要TCP支持;可选实现主站EOE

关于RTOS 的高精度定时器详见博客文章不同RTOS中POSIX接口的实现差异 ,相关章节。

其他适配

其他一些数据结构以及网络接口相关:

  • 网卡驱动,主要实现轮询式无中断方式的二层网络包收发接口,原Linux ethernet设备的抽象及skb的替代实现;
  • EtherCAT主站初始化流程调整;
  • 链表、打印输出;
  • Linux相关特性删减修改:GNU C、unlikely、likely、prefetch,编译器特性等。

标签:主站,linux,RTOS,Linux,EtherCAT,IgH
From: https://www.cnblogs.com/wsg1100/p/18259476

相关文章

  • P6261 [ICPC2019 WF] Traffic Blights 题解
    思路考虑题目要求的是什么。假设\(p_i\)代表通过前\(i\)个红绿灯的概率。那么我们的答案即为\(p_i-p_{i-1}\)。不妨设\(w_i=r_i+g_i\)。我们的限制条件类似:\[t\not\equiva_i\pmodw_i\]那么所有红绿灯会形成周期\(lcm(w_1,w_2,\cdots,w_n)\)。由于\(2019!\)肯......
  • 【Playwright+Python】系列教程(一)环境搭建及脚本录制
    一、前言看到这个文章,有的同学会说:六哥,你为啥不早早就写完python系列的文章。因为有徒弟需要吧,如果你也想学自学,那这篇文章,可以说是我们结缘一起学习的开始吧!如果对你有用,建议收藏和转发!二、Playwright是什么?微软开源自动化测试工具Playwright,支持主流浏览器,包括:Chrome、Fir......
  • EtherCAT主站SOEM -- 44 -- win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机
    EtherCAT主站SOEM--44--win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走周期同步位置模式(CSP模式)0QT-SOEM及STM32F767-SOEM视频欣赏及源代码链接:0.1Linux--Ubuntu系统之QT-SOEM博客、视频欣赏及源代码链接0.2STM32F767-SOEM博客、视频欣赏及源......
  • Lightroom Classic for mac/win (Lrc2021) 10.3中文直装版
    LightroomClassic是Adobe公司开发的一款专业的照片处理和管理软件,旨在帮助摄影师对其作品进行全方位的后期处理,包括调整画面的明暗、色彩、对比度等,以及进行修图、拼接和摄影作品的管理整理等功能。它是摄影师和摄影爱好者常用的后期处理软件之一,可以在室内外的各种场景中进行......
  • ArkTS本地化数据库SqlLight使用,鸿蒙NEXT星河版API(11)
    RelationalStore提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。谓词:数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。结果......
  • LightAutoML——大型金融服务生态系统的 AutoML 解决方案
    尽管AutoML几年前就开始流行,但早期的工作AutoML的历史可以追溯到90年代初当科学家发表第一篇关于超参数优化的论文时。2014年,ICML组织了第一届AutoML研讨会,AutoML引起了ML开发者的关注。AutoML多年来的主要关注点之一是超参数搜索问题,其中模型实现了一系列优化方......
  • EtherCAT主站SOEM -- 41 -- win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机
    EtherCAT主站SOEM--41--win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走位置模式(PP模式)0QT-SOEM及STM32F767-SOEM视频欣赏及源代码链接:0.1Linux--Ubuntu系统之QT-SOEM博客、视频欣赏及源代码链接0.2STM32F767-SOEM博客、视频欣赏及源代码链接0......
  • Keysight N1092A系列 眼图测试中哪些因素会影响测试结果的准确性?
    在进行Keysight N1092A眼图测试时,多种因素可能会影响测试结果的准确性。以下是一些关键因素:偏置电流:偏置电流的设置不当可能导致波形底部太低,影响眼图的清晰度。适当增加偏置电流可以使波形底部向上移动,从而使眼图更加清晰。 上升沿速度:如果上升沿速度过快,可能会导致过冲......
  • 【ARM Coresight Debug 系列 -- ARMv8/v9 Watchpoint 软件实现地址监控详细介绍】
    请阅读【嵌入式开发学习必备专栏】文章目录ARMv8/v9WatchpointexceptionsWatchpoint配置信息读取ExecutionconditionsWatchpointdataaddresscomparisonsSizeofthedataaccessWatchpoint软件配置流程WatchpointType使用介绍WT,Bit[20]:WatchpointType......
  • Highcharts to Figma Design Projects
    HighchartstoFigmaDesignProjectsThenewHighchartsCoreFigmaPluginsimplifiesintegratinginteractivedatavisualizationsintoFigmadesignworkflows.HighchartsCorebyHighsoftisapowerfulJavaScriptchartinglibrarythatsimplifies......