将Feature/XP.Common和Feature/XP.Hardware分支合并至Develop/XP.forHardwareAndCommon,完善XPapp注册和相关硬件类库通用类库功能。
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
# XP.Hardware.MotionControl
|
||||
|
||||
工业运动控制模块 | Industrial Motion Control Module
|
||||
|
||||
---
|
||||
|
||||
## 项目概述 | Project Overview
|
||||
|
||||
XP.Hardware.MotionControl 是 XplorePlane 平面CT工业检测系统的核心运动控制模块,负责管理4个直线轴(SourceZ、DetectorZ、StageX、StageY)、3个旋转轴(DetectorSwing、StageRotation、FixtureRotation)及1个安全防护门的全部运动控制逻辑,并提供 FOD/FDD/放大倍率的几何正算与反算能力。
|
||||
|
||||
### 主要特性 | Key Features
|
||||
|
||||
- 4个直线轴 + 3个旋转轴统一管理(策略模式)
|
||||
- 安全防护门控制(联锁检查、状态机)
|
||||
- FOD/FDD/放大倍率几何正算与反算
|
||||
- 多轴联动移动(原子性边界检查)
|
||||
- Jog 点动调试(MouseDown/MouseUp 安全控制)
|
||||
- 100ms 周期 PLC 状态轮询
|
||||
- 基于 Prism EventAggregator 的跨模块事件通讯
|
||||
- 可配置的轴启用/禁用(FixtureRotation 等可选轴)
|
||||
- Telerik Crystal 主题 UI 控件
|
||||
- 中/英/繁体中文多语言支持
|
||||
|
||||
---
|
||||
|
||||
## 框架架构 | Architecture
|
||||
|
||||
```
|
||||
XP.Hardware.MotionControl/
|
||||
├── Abstractions/ # 抽象层 | Abstraction Layer
|
||||
│ ├── ILinearAxis.cs # 直线轴策略接口
|
||||
│ ├── IRotaryAxis.cs # 旋转轴策略接口
|
||||
│ ├── ISafetyDoor.cs # 安全门策略接口
|
||||
│ ├── IMotionSystem.cs # 顶层系统管理接口
|
||||
│ ├── LinearAxisBase.cs # 直线轴抽象基类(含边界检查)
|
||||
│ ├── RotaryAxisBase.cs # 旋转轴抽象基类
|
||||
│ ├── SafetyDoorBase.cs # 安全门抽象基类
|
||||
│ ├── MotionResult.cs # 统一操作结果类型
|
||||
│ ├── Enums/ # 枚举定义
|
||||
│ │ ├── AxisId.cs # 直线轴标识
|
||||
│ │ ├── RotaryAxisId.cs # 旋转轴标识
|
||||
│ │ ├── AxisStatus.cs # 轴状态
|
||||
│ │ └── DoorStatus.cs # 门状态
|
||||
│ └── Events/ # Prism 事件定义
|
||||
│ ├── AxisStatusChangedEvent.cs
|
||||
│ ├── DoorStatusChangedEvent.cs
|
||||
│ ├── DoorInterlockChangedEvent.cs
|
||||
│ ├── GeometryUpdatedEvent.cs
|
||||
│ └── MotionErrorEvent.cs
|
||||
├── Implementations/ # PLC 实现层
|
||||
│ ├── PlcLinearAxis.cs # 基于 PLC 的直线轴实现
|
||||
│ ├── PlcRotaryAxis.cs # 基于 PLC 的旋转轴实现
|
||||
│ ├── PlcSafetyDoor.cs # 基于 PLC 的安全门实现
|
||||
│ └── PlcMotionSystem.cs # 运动系统管理器
|
||||
├── Services/ # 业务服务层
|
||||
│ ├── IMotionControlService.cs # 业务服务接口
|
||||
│ ├── MotionControlService.cs # 服务实现(轮询、事件、日志)
|
||||
│ └── GeometryCalculator.cs # 几何计算器
|
||||
├── Config/ # 配置层
|
||||
│ ├── MotionControlConfig.cs # 配置实体
|
||||
│ ├── ConfigLoader.cs # 配置加载器
|
||||
│ └── MotionSignalNames.cs # PLC 信号名称常量
|
||||
├── ViewModels/ # 视图模型
|
||||
│ ├── MotionControlViewModel.cs # 操作面板 ViewModel
|
||||
│ └── MotionDebugViewModel.cs # 调试窗口 ViewModel
|
||||
├── Views/ # WPF 视图
|
||||
│ ├── MotionControlView.xaml # 操作面板(350px UserControl)
|
||||
│ ├── MotionDebugWindow.xaml # Jog 调试窗口
|
||||
│ └── MotionControlView.xaml.cs
|
||||
├── Module/
|
||||
│ └── MotionControlModule.cs # Prism 模块注册
|
||||
├── Resources/ # 多语言资源
|
||||
│ ├── Resources.resx # 默认(英文)
|
||||
│ ├── Resources.zh-CN.resx # 简体中文
|
||||
│ ├── Resources.zh-TW.resx # 繁体中文
|
||||
│ └── Resources.en-US.resx # 英文
|
||||
└── Documents/ # 文档
|
||||
├── README.md # 本文档
|
||||
└── GUIDENCE.md # 外部集成指南
|
||||
```
|
||||
|
||||
|
||||
### 对外接口 | Public Interfaces
|
||||
|
||||
| 接口 | 用途 | 注册方式 |
|
||||
|------|------|----------|
|
||||
| `IMotionControlService` | 业务控制(移动、停止、回零、Jog、开关门、几何计算) | 单例 |
|
||||
| `IMotionSystem` | 底层状态读取(轴位置、状态、门状态) | 单例 |
|
||||
| `MotionControlConfig` | 配置参数(轴范围、几何原点、轮询周期) | 实例 |
|
||||
| `GeometryCalculator` | 几何正算/反算工具 | 单例 |
|
||||
|
||||
### 事件 | Events
|
||||
|
||||
| 事件 | 载荷 | 触发时机 |
|
||||
|------|------|----------|
|
||||
| `AxisStatusChangedEvent` | `AxisStatusChangedData(AxisId, AxisStatus)` | 轴状态变化 |
|
||||
| `DoorStatusChangedEvent` | `DoorStatus` | 门状态变化 |
|
||||
| `DoorInterlockChangedEvent` | `bool` | 门联锁状态变化(true=已联锁, false=未联锁) |
|
||||
| `GeometryUpdatedEvent` | `GeometryData(FOD, FDD, Magnification)` | 几何参数更新(每轮询周期) |
|
||||
| `MotionErrorEvent` | `MotionErrorData(AxisId, ErrorMessage)` | 轴进入 Error/Alarm 状态 |
|
||||
|
||||
---
|
||||
|
||||
## 技术要求 | Technical Requirements
|
||||
|
||||
| 依赖 | 版本 | 用途 |
|
||||
|------|------|------|
|
||||
| .NET 8.0 | net8.0-windows7.0 | 运行时 |
|
||||
| Prism.Wpf | 9.0.537 | MVVM + DI + EventAggregator |
|
||||
| Telerik UI for WPF | 2024.1.408 | UI 控件(Crystal 主题) |
|
||||
| XP.Common | - | 日志、多语言 |
|
||||
| XP.Hardware.PLC | - | IPlcService(PLC 连接状态)、ISignalDataService(PLC 信号读写) |
|
||||
|
||||
---
|
||||
|
||||
## 配置参数 | Configuration
|
||||
|
||||
在 `App.config` 的 `<appSettings>` 中配置:
|
||||
|
||||
| 参数 | 默认值 | 说明 |
|
||||
|------|--------|------|
|
||||
| `MotionControl:SourceZ:Min/Max/Origin` | 0/500/0 | 射线源Z轴范围和原点(mm) |
|
||||
| `MotionControl:DetectorZ:Min/Max/Origin` | 0/600/0 | 探测器Z轴范围和原点(mm) |
|
||||
| `MotionControl:StageX:Min/Max/Origin` | -150/150/0 | 载物台X轴范围和原点(mm) |
|
||||
| `MotionControl:StageY:Min/Max/Origin` | -150/150/0 | 载物台Y轴范围和原点(mm) |
|
||||
| `MotionControl:DetectorSwing:Min/Max/Enabled` | -45/45/true | 探测器摆动范围和启用 |
|
||||
| `MotionControl:StageRotation:Min/Max/Enabled` | -360/360/true | 载物台旋转范围和启用 |
|
||||
| `MotionControl:FixtureRotation:Min/Max/Enabled` | -90/90/false | 夹具旋转范围和启用 |
|
||||
| `MotionControl:Geometry:SourceZOrigin` | 0 | 射线源Z原点偏移(mm) |
|
||||
| `MotionControl:Geometry:DetectorZOrigin` | 600 | 探测器Z原点偏移(mm) |
|
||||
| `MotionControl:Geometry:StageRotationCenterZ` | 300 | 旋转中心Z坐标(mm) |
|
||||
| `MotionControl:PollingInterval` | 100 | 轮询周期(ms) |
|
||||
| `MotionControl:DefaultVelocity` | 100 | 默认速度 |
|
||||
|
||||
PLC 信号名称硬编码在 `MotionSignalNames.cs` 中,信号定义在 `PlcAddrDfn.xml` 的 ReadCommon/WriteCommon 组。
|
||||
|
||||
---
|
||||
|
||||
**最后更新 | Last Updated**: 2026-04-14
|
||||
Reference in New Issue
Block a user