feat: PC STOP 시 PAGE/RECIPE 에코 워드 0 초기화 (260811 region)
OnSeqActionStop()에서 PC_RECIPE_NO/PC_PAGE_NO를 0으로 초기화한다. ResumeMode 여부와 무관하게 지운다 - 재기동 시 CheckRecipeNoComp -> CheckPageNoComp가 PLC 워드를 다시 읽어 재에코하므로 핸드셰이크는 성립. - 260805/260806 주석 원문과 if(!ResumeMode) 로그 블록은 그대로 보존 - SeqStatusMonitor의 Auto OFF 초기화와 중복이며, 거기 있던 M70515 보존 예외는 이번 코드가 무시 -> bit15 Resume은 보존값 상실 - 빌드/런타임 미검증. 문제 시 260811 region 삭제로 원복 작업일지: docs/작업일지/2026_08_11.md
This commit is contained in:
parent
099fd1f1c8
commit
ec46b15bf6
@ -1485,6 +1485,11 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 260811 정지 시 에코 워드 0 초기화 (원복 시 이 region 삭제)
|
||||
_PLC.WriteWord(eWordOutput.PC_RECIPE_NO, 0);
|
||||
_PLC.WriteWord(eWordOutput.PC_PAGE_NO, 0);
|
||||
Log.I($"[OnSeqActionStop] 에코 워드 0 초기화 (PC_RECIPE_NO/PC_PAGE_NO)");
|
||||
#endregion
|
||||
|
||||
|
||||
Log.I("[PLCInterface] PC All Bit Off (Auto, ReadyAck, Busy, Complete)");
|
||||
|
||||
53
docs/작업일지/2026_08_11.md
Normal file
53
docs/작업일지/2026_08_11.md
Normal file
@ -0,0 +1,53 @@
|
||||
# 작업일지 — 2026-08-11
|
||||
|
||||
## 1. PC STOP 시 PAGE/RECIPE 에코 워드 0 초기화 적용
|
||||
|
||||
### 요청
|
||||
|
||||
PC측에서 STOP 할 때 PAGE·RECIPE 워드 쓰던 부분을 초기화한다.
|
||||
기존 내용은 유지하고 오늘 날짜 `#region` / `#endregion` 으로 묶어서 넣는다.
|
||||
나중에 다시 삭제해도 되는 실험적 적용.
|
||||
|
||||
### 기존 상태 (변경 전)
|
||||
|
||||
| 위치 | 동작 |
|
||||
|---|---|
|
||||
| `SeqAutoRunPTOP.cs` `OnSeqActionStop()` | 비트만 OFF. **에코 워드는 0으로 안 지움** (260621 방침) |
|
||||
| `SeqStatusMonitor.cs:104-108` | Auto OFF 시 `PC_RECIPE_NO`/`PC_PAGE_NO` 0 — 단 `M70515` 살아있으면 보존 |
|
||||
| `UCMainAutoRunViewModel.cs:226-227` | bit15 Resume 이 "OnSeqActionStop 이 워드 0 안 씀"을 전제로 `ResumeMode = true` |
|
||||
|
||||
워드를 지우지 않던 근거는 소스 주석에 260805·260806 두 차례 기록돼 있었다.
|
||||
260806 에 PLC측 시퀀스가 확정되면서 **PLC가 보는 핸드셰이크 게이트는 비트가 아니라 워드**
|
||||
(`PC_PAGE_NO`/`PC_RECIPE_NO`)임이 확인됐다.
|
||||
|
||||
### 수정
|
||||
|
||||
`Machines/ILSOS_PrismaticRD_PTOP/Sequences/SeqAutoRunPTOP.cs` — `OnSeqActionStop()` 안,
|
||||
기존 260805 region 이 닫힌 직후에 추가.
|
||||
|
||||
```csharp
|
||||
#region 260811 정지 시 에코 워드 0 초기화 (원복 시 이 region 삭제)
|
||||
_PLC.WriteWord(eWordOutput.PC_RECIPE_NO, 0);
|
||||
_PLC.WriteWord(eWordOutput.PC_PAGE_NO, 0);
|
||||
Log.I($"[OnSeqActionStop] 에코 워드 0 초기화 (PC_RECIPE_NO/PC_PAGE_NO)");
|
||||
#endregion
|
||||
```
|
||||
|
||||
- 260805·260806 주석 원문과 `if (!ResumeMode)` 로그 블록은 **그대로 보존**.
|
||||
- `ResumeMode` 와 무관하게 무조건 0을 쓴다.
|
||||
|
||||
### 판단 근거
|
||||
|
||||
Resume bit 가 살아 있어도 재시작하면 `CheckRecipeNoComp` → `CheckPageNoComp` 가
|
||||
Recipe 부터 Page 까지 다시 확인·재에코하므로 보존값이 없어도 핸드셰이크는 성립한다.
|
||||
|
||||
### 남는 문제
|
||||
|
||||
- `SeqStatusMonitor` 의 Auto OFF 0 초기화와 **중복 쓰기**이고,
|
||||
거기 있던 `M70515 살아있으면 보존` 예외를 이번 코드가 무시한다 → bit15 Resume 은 보존값을 잃는다.
|
||||
- [추론] PLC 가 0 을 중간상태로 어떻게 해석하는지는 미검증. PLC 쪽이 꼬일 가능성 있음.
|
||||
|
||||
### 검증
|
||||
|
||||
빌드·런타임 모두 **미검증**. 우선 적용하고 현장에서 돌려보며 확인하기로 함.
|
||||
문제가 있으면 `260811` region 만 삭제하면 원복된다.
|
||||
Loading…
x
Reference in New Issue
Block a user