- docs/작업일지: 06-17, 06-18 작업일지 추가 (조명 컨트롤러 연결, 현장 PC 원격 접속, 현장 소스 반영) - docs/현장update파일: 현장 반영용 변경 파일(SequenceSetting.cs, UCScannerObjectTeachingControlBoxViewModel.cs) 및 README 정리 - docs/분석: 260617 분석 문서(Laser Ready DI 변경, Axis Position Interlock, PLC DeviceMap, EROOM Light RS232 등) 추가 - docs/architecture.md, CLAUDE.md, harness-ptop.md 갱신 - PLC 인터페이스 엑셀 및 기존파일비교 자료 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.2 KiB
5.2 KiB
작업일지 — 2026-06-17
현장 RTC5보드 갈보모터 피드백 관련
- 현장 RTC5보드는 갈보모터 X, Y의 피드백값을 가져오는 게 없어서 DEVICE 상에서 COMMAND 값을 불러오도록 체크 해제 후 진행.
- 정확한 피드백값은 확인 불가한 상태.
Laser 동작 방식
- Laser 동작은 I/O로 하며, 프로그램 내에서 사용할 때 Simulation으로 동작한다.
Recipe View Laser Ready (DI 9) 미점등 이슈
- Recipe View에서 Laser Ready 부분이 DI(9)를 보고 있는데, 해당 BIT가 Laser를 IO On 해도 번들을 켜도 안 켜져서 전선 다시 확인 중인 상태.
- simulation이어서 true가 되긴 해야 하지만, 한번 확인해볼 것.
- 이전 MOTF 작업하던 프로젝트랑 비교하기.
[분석 요청] IsLaserReady 조건 — 현재 프로젝트 vs docs/기존파일비교
- 대상:
WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs - 요청: 현재 파일의
IsLaserReady조건과docs/기존파일비교/의 같은 파일명 버전(이전 MOTF) 비교
[분석 완료] 결론: IsLaserReady 판정 소스가 바뀜 → 미점등의 직접 원인
- OnMonitoring()의 IsLaserReady 판정 (핵심 차이)
- 기존(MOTF):
if (_Laser.GetLaserReady())→ Laser 디바이스 상태로 판정. Simulation이면 true가 됨. - 현재:
if (_IODevice.ReadDI(9))(try/catch 포함) → 실제 IO 하드웨어 DI 9번 비트를 직접 읽음. - → 현재는 Laser 디바이스(시뮬레이션)가 아니라 물리 DI(9)를 보므로, 배선으로 DI(9)가 실제로 들어오지 않으면 simulation이어도 true가 안 됨. 작업일지에 적은 "simulation이면 true여야 한다"는 기존 코드 기준이고, 현재 코드는 그렇게 동작하지 않음.
- 기존(MOTF):
- PerformCmdLaserReadyCheck() (Laser Ready Check 버튼)
- 기존:
_Laser.GetLaserReady()토글 →_Laser.LaserOn()/LaserOff()(실질적으로 Laser Ready On). - 현재:
toggleIO플래그로_IODevice._iOUnit.WriteDoBit(9, true)+WriteDoBit(13, true)직접 출력 (주석: "추후 Write bit 파라미터화 해야함"). - → 버튼이 켜는 것은 DO 9/13번 출력인데, 모니터링이 읽는 것은 DI 9번 입력. DO9 출력이 DI9 입력으로 되돌아오려면 물리 배선(루프백/외부 결선)이 필요함. 이 결선이 없으면 버튼을 눌러도 IsLaserReady가 안 켜짐 → 지금 전선 확인 중인 이슈와 일치.
- 기존:
- 부수 차이 (동작엔 직접 영향 적음)
- 필드 선언: 기존
private readonly IODevice _IODevice;→ 현재private IODevice _IODevice;(readonly 제거). 추가 필드public bool toggleIO = true;. - using 추가:
WeldingCommon,WeldingCommon.Devices.Laser,using static ...PAIX_PrismaticScanner. - 기존 OnMonitoring의 LaserOnLamp WriteDoBit 주석 블록은 현재 제거됨.
- PerformCmdRunTeachingRun: 기존은
PopupSequenceDiagram(...)호출, 현재는 주석 처리. OnCompleteTeachingRun도 기존은 성공 처리/ShowWarningToast 활성, 현재는 주석 처리.
- 필드 선언: 기존
- 확인/해결 방향
- DI(9)로 판정을 유지하려면 DO9/13 → DI9 물리 결선(또는 레이저 Ready 출력 → DI9 결선)을 확인할 것.
- 시뮬레이션에서 동작 확인이 목적이면, 기존처럼
_Laser.GetLaserReady()기반으로 임시 전환하거나, IO 시뮬레이션에서 DI(9)를 강제 On 할 수 있는지 확인.
Axis Position Interlock 파라미터 추가
- 수평, 수직 + 허용오차 (도) 파라미터 세팅값 입력하는 것 추가함. (현장 PC 업데이트 전)
[TODO / 추후 작업 예정]
- 추후 시퀀스 작업할 때 해당 파라미터(수평·수직 ± 허용오차)를 체크해서, 안전을 위해서라도 인터락을 걸어둘 예정.
- 즉, 시퀀스 동작 중 전축 위치(섹터 각도)가
기준값 ± 허용오차범위를 벗어나면 인터락. - 지금은 파라미터 입력 UI만 추가한 상태이고, 인터락 판정 로직은 나중에 작업.
- 참고: 설계/위치 분석은
docs/분석/2026/06/17/144442_sequencesetting_axis_interlock_properties.md에 정리해둠.
PLC 맵 작업 (260617 Laser Interface 반영)
- PLC에서 새 맵 받아서,
D:\ILSOSConfig\ILSOS_PrismaticRD_PTOP\External\PLC의 기존PLC_DeviceMap_*bit/word 파일들을260617_backup으로 백업해둠. 유니셀 PtoP 단동기 Laser Interface_260617.xlsx참고해서 4개 맵 CSV(Bit/Word × Input/Output) 내부 매핑 갱신. 파일명·주소행 범위는 유지하고 코드 스타일(PC_/PLC_) 네이밍, 음/양극 둘 다 채움.- Input/Output 방향 검증함 → 안 바뀜(정상). Word_Input 70585~70599
M오기 →D정정. - 소스 enum(base + machine) 정합성은 아직 안 건드림(보류). PLC측 확정 필요한 것들 있음.
[TODO / 추후 확인]
- StepNo(D70502 → RecipeNo로 바뀜), RMS_USED(M70509), 빠진 ALARM_RESET/RMS_READ_REQ/WELD_NG_JUDGE 처리, read count(배수)가 신규 최대 offset 포함하는지 확인.
- 체크리스트:
docs/분석/2026/06/17/171642_plc_map_update_checklist.md - 상세 분석:
docs/분석/2026/06/17/165341_plc_devicemap_update_260617.md,171312_plc_map_io_direction_and_enum_alignment.md