当前位置: 首页 > news >正文

IgH EtherCAT Master 学习笔记

架构:内核模块 + 用户态库的双层架构:内核态部分:以内核模块形式运行,直接接管一块以太网网卡,在内核空间完成帧的实时收发、EtherCAT 状态机(Init/Pre-Op/Safe-Op/Op)维护,以及周期性的过程数据(PDO)刷新。之所以放进内核,是因为只有这样才能绕开 Linux 网络协议栈的调度延迟和不确定性,配合实时内核(如 PREEMPT_RT)才能实现微秒级的稳定周期。
用户态部分:应用程序不会直接操作网卡或内核模块,而是通过一套用户态 API 来请求主站句柄、配置每个从站要用到的 PDO 映射,创建“域(Domain)”——一块与内核共享的进程数据内存,每个控制周期调用一次读写函数,收发这块内存里的数据。

笔记:网卡 → Linux → IgH 的软件层次:Ethernet硬件->st_gmac->eth0->ec_generic->ec_master->Slave

配置:主站生命周期与配置流程:请求主站(Request Master),获取从站配置(Slave Configuration),注册 PDO 映射到域(Domain Registration),激活主站(Activate Master),进入周期性循环。

单周期内:实时循环的时序模型:周期驱动方式:IgH 本身不负责“帮你定时”,应用程序必须自己起一个高精度定时循环。每周期的标准动作序列,且顺序不能颠倒:ecrt_master_receive(),ecrt_domain_process(),应用业务逻辑,ecrt_domain_queue(),ecrt_master_send()。

实时:实时任务的调度策略与隔离:必须用 sched_setscheduler() 把控制循环所在的线程设置为 SCHED_FIFO(先入先出的实时调度类),并给一个较高的优先级(比如 80-99),这样只要这个线程处于可运行状态,调度器就会立刻抢占普通进程去运行它;用 taskset 或 sched_setaffinity() 把实时循环绑定到一个专用的 CPU 核心上,并且在内核启动参数里用 isolcpus= 把这个核心从通用调度池里隔离出去,不让其他普通进程和中断处理程序跑上去抢占;mlockall(MCL_CURRENT | MCL_FUTURE),把进程当前和未来分配的所有内存都锁在物理内存里,杜绝换页延迟。

多轴:多从站配置与差异化 PDO 管理:从站的两种定位方式:Position(位置)与 Alias(别名);异构从站的差异化配置:如果总线上挂的是不同厂家、不同型号的从站,怎么对每一个从站分别调用 ecrt_master_slave_config() 拿到独立的配置句柄,分别为每个句柄配置各自的 PDO 映射(ecrt_slave_config_pdos()),最后统一注册进同一个(或按需拆分成多个)域。

http://www.cnnetsun.cn/news/4331128.html

相关文章:

  • SpringBoot+WebSocket手写轻量级聊天室:两个Java类搞定
  • SpringBoot+Vue校园快递管理系统:架构设计与毕设实战解析
  • EDEM-Fluent耦合UDF:动态映射颗粒半径到流体网格的CalcRadius实现
  • 本地模型驱动的自构建dev harness:416次运行仅176美元的低成本AI编程闭环
  • ThinkPHP 5.0.7实战:架构、安全加固与升级迁移指南
  • RTX 5090看直播还卡?问题可能在浏览器硬件解码与设置
  • pacywork个人简历保姆级写法|零基础手把手教学,告别石沉大海(程序员/应届生通用)
  • FBG Matlab仿真程序解析:从传输矩阵到反射/透射谱
  • ROS小车实战:激光雷达+IMU融合的SLAM建图与自主导航全流程
  • 基于机器学习的微博恶意用户识别系统设计与实践
  • AI Agent治理实战:权限边界、工具白名单与审计追踪
  • MATLAB复杂网络工具箱全攻略:选型、实操与避坑指南
  • 量化交易框架实战:基于OKX与CCXT的自动化交易系统构建
  • DeepSeek Harness进阶:Agent Teams、动态工作流与插件实战
  • 2025年企业数据治理阶段汇报方案【附全文阅读】
  • 阿里云ACP考试取消约考全攻略:规则、流程与避坑指南
  • 145、强化学习控制:从仿真训练到真实部署的端到端控制
  • 营业执照公证怎么办理?所需材料、流程对比与办理周期完整详解
  • 刚开电脑店先别急着囤货装修,同行:先把记账捋顺,新手也能直接上手(2026)
  • 2026年7月商丘市新房价格深度分析报告
  • AI儿童向动画短视频批量生产工作流:从角色一致性到图生视频
  • TensorRT-LLM大模型部署实战:从模型转换到性能调优全流程
  • Python爬虫爬取数据案例
  • 2026秋招Java面试:Spring、JVM、MySQL、Redis、Netty五条主线梳理
  • 树莓派人脸识别门禁系统实战:OpenCV+PyQt5从零搭建
  • Python GUI编程:Tkinter打造桌面应用
  • Java面试攻略:八股文与项目场景题如何结合准备
  • Harness Engineering:给AI这匹烈马套上缰绳
  • 阿克曼小车纯跟踪算法MATLAB仿真完整实现
  • HyperMesh有限元前处理核心能力详解:几何清理、网格划分与质量检查