添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
104
MX-PD-盘古 - new/PanGu.DieBonderApp/.github/instructions/motion.instructions.md
vendored
Normal file
104
MX-PD-盘古 - new/PanGu.DieBonderApp/.github/instructions/motion.instructions.md
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
applyTo: "MainShell/Motion/**/*.cs,**/*MotionController*.cs,**/*SafeAxisMotion*.cs,**/*AxisSpeedManager*.cs"
|
||||
---
|
||||
|
||||
# Motion Control Instructions
|
||||
|
||||
## Motion Architecture
|
||||
Motion control uses layered design:
|
||||
|
||||
- SafeAxisMotion as business entry
|
||||
- MotionController as single-axis controller
|
||||
- IAxis / IAxisFunc as platform abstraction
|
||||
|
||||
Keep this layering intact.
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD>ù̶<EFBFBD><EFBFBD>ֲ㣺
|
||||
- `SafeAxisMotion`<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- `MotionController`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- `IAxis / IAxisFunc`<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD>Ҫ<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>зֲ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>
|
||||
|
||||
## MotionController Rules
|
||||
- Constructor should receive `IAxis`
|
||||
- Convert to `IAxisFunc` when motion command capability is needed
|
||||
- Use `SemaphoreSlim` to serialize motion commands per axis
|
||||
- Motion methods should support async/await and CancellationToken
|
||||
- Perform status validation before motion:
|
||||
- servo/power status
|
||||
- alarm status
|
||||
- soft limit state
|
||||
- Support timeout handling
|
||||
- Raise motion lifecycle events such as MotionStarted / MotionFinished
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
`MotionController` <20><><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `IAxis`
|
||||
- <20><>Ҫ<EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱת<CAB1><D7AA>Ϊ `IAxisFunc`
|
||||
- ʹ<><CAB9> `SemaphoreSlim` <20><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEB4AE>
|
||||
- <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> `async/await` <20><> `CancellationToken`
|
||||
- <20>˶<EFBFBD>ǰҪ<C7B0><D2AA><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ״̬
|
||||
- ֧<>ֳ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD>ṩ `MotionStarted` / `MotionFinished` <20>¼<EFBFBD>
|
||||
|
||||
## Common Axis Properties
|
||||
Prefer existing property patterns such as:
|
||||
- AxisName
|
||||
- CurrentPos
|
||||
- IsBusy
|
||||
- IsAlarm
|
||||
- InPos
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽһ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺
|
||||
- `AxisName`
|
||||
- `CurrentPos`
|
||||
- `IsBusy`
|
||||
- `IsAlarm`
|
||||
- `InPos`
|
||||
|
||||
## Motion Method Signatures
|
||||
Keep compatibility with existing motion API patterns:
|
||||
- MoveAbsAsync
|
||||
- MoveRelAsync
|
||||
- JogAsync
|
||||
- StopAsync
|
||||
- HomeAsync
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||
- `MoveAbsAsync`
|
||||
- `MoveRelAsync`
|
||||
- `JogAsync`
|
||||
- `StopAsync`
|
||||
- `HomeAsync`
|
||||
|
||||
## SafeAxisMotion Rules
|
||||
- Prefer SafeAxisMotion for batch-safe movement
|
||||
- Resolve axis name to IAxis and MotionController through existing repository mechanisms
|
||||
- Preserve alarm integration and timeout behavior
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> `SafeAxisMotion` ʵ<>֣<EFBFBD>
|
||||
- ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB>ư<EFBFBD><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ `IAxis` <20><> `MotionController`
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺͳ<C9BA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## MotionResult Rules
|
||||
- Use structured MotionResult
|
||||
- Distinguish success, timeout, cancellation, and fault
|
||||
- Use EnsureSuccess when caller expects exception-on-failure semantics
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
`MotionResult` ӦΪ<D3A6>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD>ֳɹ<D6B3><C9B9><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
- <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>Ҫ"ʧ<>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD>쳣"ʱ<><CAB1>ʹ<EFBFBD><CAB9> `EnsureSuccess()`
|
||||
|
||||
## Speed Management
|
||||
Use AxisSpeedManager for speed control where applicable.
|
||||
Do not hardcode inconsistent speed logic if a unified speed manager already exists.
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD>ٶȹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> `AxisSpeedManager` ͳһ<CDB3><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<EFBFBD>ٶȹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Reference in New Issue
Block a user