GJ 197 EtherCAT 磁致伸缩位移传感器:ESI 文件解读与上机配置
197 系列磁致伸缩位移传感器接 EtherCAT 时,主站扫到的不是一个"嘴上的传感器",而是一个按 ESI 文件描述出来的从站:三个 32 位输入、没有输出过程数据、参数走邮箱。这份文件把上面这些写死了,读懂它,配置这一步就不用猜。
文中出现的每个编号和数值,都取自厂家给的 GJ 197 EtherCAT (1 magnet).xml,不是通用经验值。
文件骨架:三层
文件头是 EtherCATInfo Version 1.6,往下分 Vendor 与 Descriptions 两层。Vendor 里是厂家编号和名称,Descriptions 里才是设备本身。
| 项目 | ESI 里的值 | 用在哪 |
|---|---|---|
| Vendor Id | #x000005FC | 主站按它认厂家,扫到的设备对不上就查这里 |
| Device Type | ProductCode #x00000197 | 主站靠它匹配 ESI 文件 |
| RevisionNo | #x1 | 描述修订号,与固件不匹配时会提示 |
| Physics | YY | 物理层为 EtherCAT |
| GroupType | GJ EtherCAT Sensor | 主站设备树里的分组 |
导入时常被忽略的是 RevisionNo。同一台设备换了固件、ESI 没跟着换,主站会提示描述与设备不一致;此时要么换文件,要么在工程里关掉那一项校验,别硬跑。
从站只往上送三组数
整份文件里只有一个 TxPDO:#x1a00,名称 Sensor Inputs,挂在 SM3 上,标了 Mandatory 和 Fixed——意味着这几项不能删、不能改顺序。
| 索引 | 名称 | 数据类型 | 含义 |
|---|---|---|---|
| #x6000:1 | Position 1 | DINT · 32 位 | 位置 |
| #x6000:2 | Velocity 1 | DINT · 32 位 | 速度 |
| #x6000:3 | Status 1 | DINT · 32 位 | 状态 |
三项合计 96 位,也就是 12 字节,全部只上行。文件里 RxPDO 的数量是 0:主站没有任何过程数据能往下写,控制字、目标值一概没有。要改参数只能走邮箱,走 CoE 的 SDO。
这里有一个会让人犯嘀咕的地方:ESI 里 SM3 的默认尺寸写的是 6 字节,而上面三项加起来是 12 字节。多数主站会把尺寸按 PDO 重算,运行不受影响;导入时如果主站报"SYNC 尺寸不一致",以 PDO 的 12 字节为准,别反过来改映射去凑 6。
对象字典里真正要动的只有 #x2000
字典一共 17 个对象,其中 14 个是 EtherCAT 通用项(设备类型、错误寄存器、标识、同步参数、PDO 分配),现场不改。跟测量真正有关的只有三个:#x2000 参数、#x6000 输入、#x8000 调试。
| 子项 | 名称 | 作用 |
|---|---|---|
| 1 | Stroke | 量程 |
| 2 | Resolution | 分辨率 |
| 3 | Direction | 方向,决定递增还是递减 |
| 4 | Max no of magnet | 最大磁环数 |
| 5 | No of missing magnet | 缺失磁环数 |
| 6 / 7 | Reserved1 / Reserved2 | 保留 |
| 8 | Save | 保存到非易失存储 |
顺序上有讲究:前四项写完,最后写 Save。不写 Save,参数只停在内存里,断电就回到默认值 0000——量程和分辨率都是 0 的状态下,位置值换算不成毫米,很多人到这里以为是通讯坏了。
ESI 里这些对象的 Access 一律标 ro,看着像全只读。这个标注不能当结论用,能不能写取决于固件和厂家手册;省事的验证方式是主站上用 SDO 写一次、立刻读回,读回来的不是原值就说明写进去了。
同步方式:Free Run 还是 DC Sync0
文件给了两个 OpMode:Free Run(AssignActivate #x0000)和 DistributedClk(#x0300,Sync0 事件)。调试阶段先用 Free Run 把通讯跑通,再切 DC,问题好定位。
切到 DC 之后要盯的是 #x1c32 和 #x1c33 这两组同步参数,各有 12 个子项,现场常用的是 Synchronization Type、Cycle Time、Sync0 Cycle Time,以及三个错误计数:SM-Event Missed、Cycle Time Too Small、Sync Error。这三个计数一旦开始涨,就别再调控制参数了,先把周期和主站负载对一遍。
另一点要留出余量:DC 只解决"什么时候采样、主站什么时候取",消不掉传感器自身的测量延迟。算整环响应时,这一段要单独加进去。
#x8000 是厂家的调试口
调试对象有 8 个子项:Out 1 到 Out 6、Reserved、Command。这组在标准 EtherCAT 设备里没有,属于厂家自带,ESI 只给了名字没给语义,具体每个 Out 对应什么要看厂家说明。
用法上它比猜有用:设备状态可疑时先读这组值,能大致判断问题在测量侧还是通讯侧,省掉把传感器拆下来这一趟。
上机六步
- 导入 ESI,核对身份。ProductCode 要是 #x00000197、Revision 要是 #x1,两项都对上再往下走。
- 选同步方式。能上 DC 就上 Sync0;先跑 Free Run 确认通讯,再切 DC。
- 核 PDO。三个 32 位、合计 12 字节、顺序是位置在前的 Position/Velocity/Status。
- 写 #x2000。量程按实际行程,分辨率按型号,方向按缸的朝向,磁环数按实际装了几只。
- 写 #x2000:8 Save。写完立刻读回,确认参数没有回滚。
- 读回验证。读 #x6000:1,按量程与分辨率折算成毫米,和钢尺在两个端点各对一次。
三个容易踩的坑
坑一,ESI 选错文件。文件名和设备名都带 (1 magnet),同一系列按磁环数会配不同的 ESI。换配置时没换文件,通讯可能照样通,但对象字典里跟磁环数有关的项对不上,表现是能读数却读不对。
坑二,用 SDO 周期读位置。邮箱是一问一答,轴一多总线负载立刻上去,表现是刷新变慢、位置滞后。位置必须在 PDO 里:#x1c13(TxPDO assign)的默认值已经是 #x011a,指向 #x1a00,别把这个分配删掉。
坑三,把 SM 默认尺寸当数据长度。上面那个 6 字节就是例子。数据长度永远以 PDO 映射为准,SM 的 DefaultSize 只是个默认提示。
这份 ESI 是厂家给的,改不了;能改的是主站侧怎么读、怎么写。把三组数读对、把 #x2000 写对并 Save,剩下的就是换算和机械对零的事。
这篇讲的是文件本身。物理层接线和上线顺序偏ESI 文件与 IN/OUT 接线方向,同步与状态迁移的取舍偏DC 配置与从站状态机。整线选型看四种总线选型,同系列的 PROFINET 版本在199 的 GSDML 组态。
常见问题
Q:导入 ESI 后主站为什么没有输出过程数据
这份 ESI 里 RxPDO 数量是 0。197 系列只向上送三组 32 位数据(位置、速度、状态),没有接收的过程数据,所以主站的输出区是空的。要下发参数只能走邮箱,用 CoE 的 SDO 写入对象字典。
Q:#x2000 里改了参数,断电后为什么又回到默认值
少了最后一步 Save。#x2000 有 8 个子项,Stroke、Resolution、Direction、磁环数写完,还要写 #x2000:8 Save。不写 Save,参数只存在内存里,断电就回到 0000,量程和分辨率都归零。
Q:ESI 里 SM3 写 6 字节而 PDO 是 12 字节,按哪个改
以 PDO 为准,别改映射去凑 6。三项各 32 位合计 12 字节,多数主站会按 PDO 重算尺寸;如果主站报 SYNC 尺寸不一致,把数据长度按 12 字节处理,SM 的默认尺寸只是提示值。
Q:主站扫到了设备但参数项对不上
先看 ESI 文件有没有选错。文件名与设备名都带 (1 magnet),同一系列按磁环数会配不同文件;ProductCode 相同,描述内容不同,主站靠 RevisionNo 判断匹配。换配置时记得一起换文件。
这篇讲的问题,说到底都绕不开磁致伸缩位移传感器本身。磁致伸缩位移传感器产品中心按行程、安装方式与输出接口把全部系列排开,选型从这里进最省事。
← 返回行业动态