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

存储同步管理器SyncManager 归纳

一、存储同步管理器(SM)核心概述

  1. 定义与作用SM 是 EtherCAT 从站控制器的核心模块,通过组织特定大小的缓存区,由硬件控制主站与从站应用程序对缓存区的访问,核心目标是保障数据交换的一致性(避免数据错乱)与安全性(防止数据丢失),同时在数据状态改变时产生中断通知双方,减少 CPU 轮询开销。
  2. 配置基础规则
    • SM 配置寄存器从0x800地址开始,每个 SM 通道占用8 个字节,包含配置寄存器(控制参数)和状态寄存器(运行状态)。
    • 操作约束:必须从缓存区起始地址开始操作,否则操作被拒绝;操作结束地址后,缓存区状态改变,可触发中断或 WDT 脉冲;同一数据帧内不允许两次操作结束地址

二、SM 通道的两种运行模式

2.1 缓存类型(3 个缓存区模式)

(1)核心特性与适用场景
  • 适用场景:周期性过程数据通信(如 PDO 实时控制数据)。
  • 核心优势:允许主站与从站微处理器随时访问缓存区,接收方可获取最新数据,发送方可随时更新数据;若写速快于读速,旧数据会被覆盖(适用于实时性优先、允许少量数据覆盖的场景)。
  • 缓存区分配规则仅配置第 1 个缓存区的地址范围,第 2、3 个缓存区由 SM 自动管理,不可直接访问且不可被其他 SM 通道占用,示例如下表:
地址范围缓存区编号访问权限用途
0x1000~0x10FF缓存区 1可直接访问主站 / 从站直接读写
0x1100~0x11FF缓存区 2不可直接访问、不可共享SM 自动管理的备用缓存
0x1200~0x12FF缓存区 3不可直接访问、不可共享SM 自动管理的备用缓存
0x1300 及以上-可自由分配其他用途存储空间
(2)数据交换原理(状态切换)

以 “主站写数据、从站读数据” 为例,3 个缓存区通过状态切换实现连续数据交换:

  1. 状态①:缓存区 1 由主站写入数据,缓存区 2 空闲,缓存区 3 由从站读取数据。
  2. 状态②:主站写缓存区 1 完成后,缓存区 1 与缓存区 2 交换,缓存区 2 变为 “待读”,缓存区 1 变为 “空闲”。
  3. 状态③:从站读缓存区 3 完成后,缓存区 3 变为 “空闲” 并与缓存区 1 交换,回到可再次读写的初始状态。
  4. 中断触发:若 SM 控制寄存器(0x0804+N×8)中使能 ECAT 帧或 PDI 中断,每次成功读写后,SM 状态寄存器(0x0805+N×8)会设置中断事件请求,映射到 ECAT 中断请求寄存器(0x0210~0x0211)和 AL 事件请求寄存器(0x0220~0x0221),最终由中断屏蔽寄存器决定是否触发中断信号。

2.2 邮箱类型(1 个缓存区模式)

(1)核心特性与适用场景
  • 适用场景:非周期性应用层数据通信(如 SDO 配置数据、设备参数交互)。
  • 核心优势:采用握手机制,仅 1 个缓存区,确保数据不丢失;只有一端完成数据操作(写 / 读)后,另一端才能访问缓存区。
  • 通道分工:通常使用两个 SM 通道配合:
    • SM0 通道:主站→从站的数据传输(主站写、从站读)。
    • SM1 通道:从站→主站的数据传输(从站写、主站读)。
(2)数据交换流程
① 主站写邮箱操作(主站→从站)
步骤操作细节关键判断指标
1主站发送 ECAT 帧,写 SM0 通道缓存区,携带顺序编号 Ctr(每次新服务 Ctr+1)-
2从站接收数据帧,若 FCS 校验正确,SM0 通道状态改变主站检查 WKC(工作计数器):WKC=1→写成功(状态①);WKC=0→写失败
3若 WKC=0(缓存区满,从站未读上次数据),主站等待一段时间后重试重试后 WKC=1→写成功(状态②)
4若数据帧丢失,主站超时后重发相同数据帧从站检测 Ctr 与上次相同→识别为重复数据(状态③)
② 主站读邮箱操作(从站→主站)
  1. 从站有数据发送时,先将数据写入 SM1 通道缓存区。
  2. 主站发送 “读邮箱命令”,携带 Ctr=1;若数据帧丢失,主站检测超时后翻转 SM0 通道控制寄存器的 “重复请求位”(0x0806.1)。
  3. 从站检测到 “重复请求位” 翻转后,将上次数据重新写入 SM1 通道,并翻转 SM1 通道的 “重复请求应答位”(0x80E.1)。
  4. 主站轮询到 “重复请求应答位” 翻转后,再次发送读命令,读取数据,WKC=1 表示读成功。
  5. 主站判断数据有效性:若 Ctr 与上次相同,确认数据无误;若不同,识别为新数据。

三、SM 配置寄存器详细说明

SM 每个通道的 8 字节寄存器包含偏移地址 + 0x0~+0x7,关键参数如下表(以单个 SM 通道为例):

偏移地址位范围寄存器名称关键配置项描述复位值
+0x0~+0x10~16数据物理起始地址-SM 通道处理的第一个字节在从站控制器地址空间的起始地址0
+0x2~+0x30~16SM 通道数据长度-分配给 SM 通道的数据长度,必须 > 1 才激活;设为 1 时仅使能 WDT0
+0x40~1运行模式00:3 个缓存区模式;01:保留;10:1 个缓存区模式;11:保留选择 SM 通道的缓存区数量模式00
2~3方向00:读(ECAT 帧读、PDI 写);01:写(ECAT 帧写、PDI 读)设定数据传输方向00
4ECAT 帧中断使能0:不使能;1:使能ECAT 帧读写成功后是否触发中断0
5PDI 中断使能0:不使能;1:使能PDI 读写成功后是否触发中断0
6WDT 触发0:不使能;1:使能是否通过 SM 通道触发 WDT(看门狗)脉冲0
7保留-预留位,无功能-
+0x50写中断标志1:写成功触发中断;0:读第一个字节后清除指示写操作相关中断状态0
1读中断标志1:读成功触发中断;0:写第一个字节后清除指示读操作相关中断状态0
3单缓存区状态0:缓存区空闲;1:缓存区满(仅 1 个缓存区模式生效)邮箱模式下缓存区的占用状态0
4~53 缓存区状态00:缓存区 1;01:缓存区 2;10:缓存区 3;11:无写入(仅 3 个缓存区模式生效)指示 3 个缓存区中最后写入数据的缓存区编号11
+0x60SM 通道使能0:不使能(禁止 SM 控制内存访问);1:使能(允许 SM 控制内存访问)控制 SM 通道是否激活0
1重复请求0:无;1:请求重复邮箱数据传输(配合 ECAT 帧读邮箱使用)主站请求从站重发邮箱数据0
6ECAT 帧事件锁存0:无操作;1:主站读写缓存区后产生锁存事件记录主站对缓存区的访问事件0
7PDI 事件锁存0:无操作;1:PDI 读写缓存区或访问起始地址后产生锁存事件记录从站 PDI 对缓存区的访问事件0
+0x70SM 通道无效控制读:0 = 正常激活,1 = 无效锁定;写:0 = 激活,1 = 请求无效(待当前帧结束)控制 SM 通道的激活 / 无效状态0
1重复请求应答0:无;1:与重复请求位一致,表 PDI 应答重复请求从站对主站 “重复请求” 的应答标志0

http://www.dtcms.com/a/494469.html

相关文章:

  • 做游戏网站多少钱建设电子商务网站要多少钱
  • iBizModel 实体通知(PSDENOTIFY)模型详解
  • mysql函数大全及举例
  • 人工智能综合项目开发3-----农业病虫害识别dataclean.py
  • R语言手搓一个计算生存分析C指数(C-index)的函数算法
  • 使用leaflet库加载服务器离线地图瓦片(这边以本地nginx服务器为例)
  • 无状态协议HTTP/HTTPS (笔记)
  • 模式识别与机器学习课程笔记(8):特征提取与选择
  • python+uniapp基于微信美食点餐系统小程序
  • 【邀请函】锐成信息 × Sectigo | CLM - SSL 证书自动化运维解决方案发布会
  • 基于MATLAB实现基于距离的离群点检测算法
  • 冠县网站建设电话wordpress插件 电商
  • 【Android】RecyclerView LayoutManager 重写方法详解
  • 数据流通合规新基建 隐私计算平台的三重安全防线
  • MySQL-2--数据库的查询
  • 微信公众号商城网站开发wordpress 留言板制作
  • 虚幻基础:角色旋转控制角色视角控制
  • 【轨物方案】智慧供暖全景运营物联网解决方案
  • 超越“接收端”:解析视频推拉流EasyDSS在RTMP推流生态中的核心价值与中流砥柱作用
  • 自助建站上建的网站免费吗信息技术网站建设专业
  • 融合SpringBoot3和Vue3工程
  • 怎么学做网站制作商水县住房城乡建设网站
  • 16-机器学习与大模型开发数学教程-第1章 1-8 泰勒展开与高阶近似
  • 【学习系列】SAP RAP 6:行为定义-Concurrency Control
  • docker 运行容器限制 CPU
  • Python自动化从入门到实战(24)如何高效的备份mysql数据库,数据备份datadir目录直接复制可行吗?一篇给小白的完全指南
  • 个人可以备案网站的内容国外直播平台tiktok
  • C语言也能干大事网站开发pdf企业网站管理系统多站多语言版
  • 清理页面缓存
  • YD925输出5V,高性价比的非隔离电源方案详细介绍