172 lines
6.6 KiB
Markdown
172 lines
6.6 KiB
Markdown
|
|
# EL6695 双向 1KB 实时通讯验证 — 进度跟踪
|
|||
|
|
|
|||
|
|
> **更新时间**: 2026-07-24 12:20
|
|||
|
|
> **硬件状态**: 全部重启,EL6695 EEPROM 加载默认值
|
|||
|
|
> **目标**: 从零配置 TwinCAT + J1900,验证双向 1KB 实时数据通讯
|
|||
|
|
> **当前阻塞**: TwinCAT AmsNetId 与 EtherCAT 网卡 IP 不匹配,需要管理员权限修改
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 总体状态
|
|||
|
|
|
|||
|
|
| 阶段 | 状态 | 开始时间 | 完成时间 |
|
|||
|
|
|------|------|----------|----------|
|
|||
|
|
| 1. 环境检查 | ✅ 完成 | 22:47 | 12:20 |
|
|||
|
|
| 2. TwinCAT 激活 | 🔶 阻塞 | 12:20 | — |
|
|||
|
|
| 3. J1900 ConfigOwner | ⬜ 未开始 | — | — |
|
|||
|
|
| 4. Consumer 模式 | ⬜ 未开始 | — | — |
|
|||
|
|
| 5. 1KB 数据完整性 | ⬜ 未开始 | — | — |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段 1:环境检查
|
|||
|
|
|
|||
|
|
| # | 步骤 | 状态 | 结果 |
|
|||
|
|
|---|------|------|------|
|
|||
|
|
| 1.1 | 检查 TwinCAT 安装 + TcSysManCmdHelper.exe | ✅ | TcSysManCmdHelper OK (4026.0), DTE .Object 返回 null |
|
|||
|
|
| 1.2 | 检查 .sln/.tsproj 完整性(PDO 已配 1024B) | ✅ | 初始空 PDO,已通过 `Edit-EL6695-PdoXml.py` 注入 1KB Entry |
|
|||
|
|
| 1.3 | 检查 J1900 连通性(通过跳板机) | ✅ | J1900 实际 IP 为 192.168.68.100(非 102),串口可达,el6695_rt 可运行 |
|
|||
|
|
| 1.4 | 检查 EL6695 桥接器物理连接 | ✅ | J1900 eth1 可发现 EL6695 station 0x1000,SM0/SM1 1024 字节 OK |
|
|||
|
|
|
|||
|
|
### 验证方法
|
|||
|
|
```powershell
|
|||
|
|
# 1.1 TcSysManCmdHelper
|
|||
|
|
Test-Path "C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\Components\Base\TcSysManCmdHelper.exe"
|
|||
|
|
|
|||
|
|
# 1.2 项目文件
|
|||
|
|
Test-Path "C:\Users\tonycao\work\twincat3-auto-cli\TwinCAT_EL6695_Secondary\TwinCAT_EL6695_Secondary.sln"
|
|||
|
|
|
|||
|
|
# 1.3 J1900 串口访问(跳板机 ttyUSB0, 115200)
|
|||
|
|
# J1900 IP: 192.168.68.100, MAC: 00:e2:69:34:71:2c
|
|||
|
|
|
|||
|
|
# 1.4 EL6695 物理连接
|
|||
|
|
/root/gateway/el6695_rt eth1 --mode probe --duration 3
|
|||
|
|
# 期望: [0] Found EL6695, station 0x1000, SM0/SM1 len=1024
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 新发现
|
|||
|
|
- J1900 实际 IP 是 `192.168.68.100`(DHCP 范围第一个),不是 `102`
|
|||
|
|
- J1900 已运行 `Linux 6.6.135-rt74`, `el6695_rt` 位于 `/root/gateway/el6695_rt`
|
|||
|
|
- `rustbootd` 没有 DHCP 租约日志;HTTP boot 也没有访问日志
|
|||
|
|
- J1900 串口(ttyUSB0)是带外访问最可靠的方式
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段 2:TwinCAT 激活配置
|
|||
|
|
|
|||
|
|
| # | 步骤 | 状态 | 结果 |
|
|||
|
|
|---|------|------|------|
|
|||
|
|
| 2.1 | 通过 TcSysManCmdHelper 注入 1KB PDO Entry | ✅ | 0x1608/0x1A08 现在包含 1KB ARRAY[0..1023] OF BYTE |
|
|||
|
|
| 2.2 | TcSysManCmdHelper 激活 + 重启 (`-c ActivateConfiguration,StartRestartTwinCAT`) | ✅ | Exit 0 |
|
|||
|
|
| 2.3 | 确认 TwinCAT 进 OP / EL6695 在线 | ❌ | J1900 侧仍见 0x6000[0]=1, 0x7000[0]=1,PDO assign 为空 |
|
|||
|
|
|
|||
|
|
### 阻塞根因
|
|||
|
|
TwinCAT 本机 **AmsNetId 与 EtherCAT 网卡 IP 不匹配**:
|
|||
|
|
- 注册表 AmsNetId: `169.254.176.217.1.1`
|
|||
|
|
- tsproj 中 Device AmsNetId: `169.254.176.217.2.1`
|
|||
|
|
- 实际 TwinCAT-Intel 网卡 IP: `169.254.70.104/16`
|
|||
|
|
|
|||
|
|
TwinCAT 激活命令虽然返回 0,但无法通过错误的 AmsNetId 绑定到实际 EtherCAT 网卡,导致 EL6695 未被真正配置。J1900 侧看到的 EL6695 仍处于未配置状态(PDO assign 空,0x6000/0x7000 仅 1 字节)。
|
|||
|
|
|
|||
|
|
### 解堵方案(需要管理员权限)
|
|||
|
|
运行脚本 `ethercat-linux/scripts/tc-set-ethercat-ip.ps1`(以管理员身份):
|
|||
|
|
```powershell
|
|||
|
|
powershell -ExecutionPolicy Bypass -File "C:\Users\tonycao\work\ethercat-linux\scripts\tc-set-ethercat-ip.ps1"
|
|||
|
|
```
|
|||
|
|
该脚本会把 TwinCAT-Intel 网卡设为 `169.254.176.217/16`,与注册表 AmsNetId 匹配。然后再重新运行 `tc-build-activate-local.ps1`。
|
|||
|
|
|
|||
|
|
### 命令
|
|||
|
|
```powershell
|
|||
|
|
# 1) 管理员身份设置 IP
|
|||
|
|
powershell -ExecutionPolicy Bypass -File "C:\Users\tonycao\work\ethercat-linux\scripts\tc-set-ethercat-ip.ps1"
|
|||
|
|
|
|||
|
|
# 2) 激活 TwinCAT(已修正 target 为 169.254.176.217.1.1)
|
|||
|
|
powershell -ExecutionPolicy Bypass -File "C:\Users\tonycao\work\ethercat-linux\scripts\tc-build-activate-local.ps1"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 下一步(IP 修正后)
|
|||
|
|
- 在 J1900 上执行 `/root/gateway/el6695_rt eth1 --mode verify`,确认 0x6000/0x7000 展开为 1024 字节
|
|||
|
|
- 如果仍只有 1 字节,需要检查 E-bus 物理连接(EK1100 供电、TwinCAT 网卡到 EK1100 的网线)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段 3:J1900 ConfigOwner 验证
|
|||
|
|
|
|||
|
|
| # | 步骤 | 状态 | 结果 |
|
|||
|
|
|---|------|------|------|
|
|||
|
|
| 3.1 | 编译 el6695-rt (cargo build --release) | ⬜ | |
|
|||
|
|
| 3.2 | 部署到 J1900 (scp) | ⬜ | |
|
|||
|
|
| 3.3 | 运行 `--mode verify`(CoE 审计) | ⬜ | |
|
|||
|
|
| 3.4 | 运行 ConfigOwner ticker 30s | ⬜ | |
|
|||
|
|
| 3.5 | 检查 SAFEOP/OP + 数据循环 | ⬜ | |
|
|||
|
|
|
|||
|
|
### 关键指标
|
|||
|
|
- SAFEOP/OP 成功
|
|||
|
|
- layout hash = `0xEA8257F1`(35 entries × 8192 bits)
|
|||
|
|
- tc_seq 单调递增
|
|||
|
|
- tx_err=0, rx_err=0
|
|||
|
|
- 非零字节数(目标 > 1,验证 1KB 扩展是否生效)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段 4:Consumer 模式验证
|
|||
|
|
|
|||
|
|
| # | 步骤 | 状态 | 结果 |
|
|||
|
|
|---|------|------|------|
|
|||
|
|
| 4.1 | 运行 Consumer ticker(无 INIT→PREOP) | ⬜ | |
|
|||
|
|
| 4.2 | Consumer hash == ConfigOwner hash | ⬜ | |
|
|||
|
|
| 4.3 | 连续运行 5 分钟无错误 | ⬜ | |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段 5:1KB 数据完整性验证
|
|||
|
|
|
|||
|
|
| # | 步骤 | 状态 | 结果 |
|
|||
|
|
|---|------|------|------|
|
|||
|
|
| 5.1 | TwinCAT PLC 写 walking-ones pattern | ⬜ | |
|
|||
|
|
| 5.2 | J1900 读取 + 比对全 1024 字节 | ⬜ | |
|
|||
|
|
| 5.3 | J1900 回写 transformed pattern | ⬜ | |
|
|||
|
|
| 5.4 | TwinCAT 验证回写数据正确 | ⬜ | |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 关键路径
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
TwinCAT PC (Windows)
|
|||
|
|
└─ twincat3-auto-cli/TwinCAT_EL6695_Secondary/
|
|||
|
|
├─ .sln / .tsproj (PDO 已配 ARRAY[0..1023] OF BYTE)
|
|||
|
|
└─ Scripts/ (100+ 实验脚本)
|
|||
|
|
|
|||
|
|
scripts/ (新整理的基础脚本)
|
|||
|
|
├─ tc-common.ps1 共享函数
|
|||
|
|
├─ tc-activate.ps1 激活配置
|
|||
|
|
├─ tc-configure-pdo.ps1 PDO 配置
|
|||
|
|
├─ tc-verify.ps1 验证
|
|||
|
|
├─ tc-scan.ps1 扫描
|
|||
|
|
└─ tc-deploy.ps1 全流程
|
|||
|
|
|
|||
|
|
J1900 (192.168.68.102, via 192.168.58.8)
|
|||
|
|
└─ /root/gateway/el6695_rt
|
|||
|
|
├─ --mode verify CoE 审计
|
|||
|
|
├─ --mode ticker 数据循环
|
|||
|
|
├─ --consumer 消费者模式
|
|||
|
|
└─ ConfigOwner 配置者模式(默认)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 已知问题
|
|||
|
|
|
|||
|
|
| # | 问题 | 影响 | 规避方案 |
|
|||
|
|
|---|------|------|----------|
|
|||
|
|
| 1 | DTE `.Object` 返回 null | 无法通过 DTE 获取 SysManager | 用 TcSysManCmdHelper CLI |
|
|||
|
|
| 2 | DTE ExecuteCommand 中文命令名编码错误 | 激活配置命令无法执行 | 用 TcSysManCmdHelper CLI |
|
|||
|
|
| 3 | 扫描 INIT→PREOP 擦除 PDO assign/map | Consumer 模式 hash 总不匹配 | Consumer 做幂等写入 |
|
|||
|
|
| 4 | 0x6000:01 只有 1 字节(除非 TwinCAT 扩展) | 只有 1 字节数据转发 | 需 TwinCAT 激活后不断电 |
|
|||
|
|
| 5 | 0x1C10/0x1C11 写入损坏 CoE | 0x7000 对象消失 | SDO 白名单已实施 |
|
|||
|
|
|
|||
|
|
## 修订历史
|
|||
|
|
|
|||
|
|
| 日期 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| 2026-07-23 | 创建计划文档 |
|