37 Commits

Author SHA1 Message Date
de0c1c20df docs: Git 커밋 규칙 문서화 및 architecture.md 연결
External/Aurora/bin 커밋 예외, .gitignore 자체 커밋(-f) 규칙을 GIT_RULES.md로 정리하고 architecture.md에 @import 연결

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 09:26:51 +09:00
7f464ab2af chore: External/Aurora/bin 커밋 예외 추가 및 산출물 포함
전역 bin/ 무시는 유지하되, External/Aurora/bin 만 negation으로 재포함하여 커밋 대상에 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 09:23:35 +09:00
8033edad26 docs: 작업일지 - 오늘 작업 마무리 기록 (PLCAddress/IO null 커밋·푸시 정리) 2026-06-18 20:34:53 +09:00
0ca485eab2 docs: 작업일지 - PLCAddress 모호참조/IO null 분석 및 수정 기록 2026-06-18 20:32:35 +09:00
a312e4ec8a fix: 레시피 화면 IO 미연결 시 null 가드 (OnMonitoring)
시뮬 모드가 아니고 IO보드가 없으면 IODevice._iOUnit이 null이라
OnMonitoring의 ReadDI(11/15)에서 NRE 발생(현장 PC에서 레시피 메뉴 진입 시).
IsConnected()로 미연결을 선검사해 폴링을 스킵, 프로그램이 꺼지지 않도록 함.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 20:32:35 +09:00
95ef7b97c0 fix: PLCController.Address eCommon* enum 원복 (빌드 정상화)
89e9a02 "PLCController.Address 통일"이 base WeldingCommon의
eCommonBitInput/Output, eCommonWordInput/Output 선언만 eBit*/eWord*로
리네임하면서 소비처(Logic/시퀀스 등 60+곳)가 CS0246으로 깨지고,
PTOP enum과 using static 충돌(CS0104)까지 유발했음.
base를 eCommon*로 원복해 빌드 정상화 (이름 통일은 별도 과제).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 20:32:23 +09:00
89e9a02ed0 feat : PLCController.Address 통일 2026-06-18 17:12:25 +09:00
12402f81d6 feat :ReadbackAnalogOut 아날로그 Vot 값 표시 수정 2026-06-18 17:08:17 +09:00
aafde8e63f docs: CVT-Emini 조명 컨트롤러 메뉴얼/자료 추가 (LightControl)
Protocol/Spec-User Manual, Layout(dwg), LED Controller Test Prog 등.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 16:00:35 +09:00
a9f3ab0f2d docs: 작업일지 - Manual Laser Power Control Power 기본값 0 변경(5eebe96) 기록
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:56:59 +09:00
5eebe96779 프로그램 시작 시 Manual - Laser Powe Control 부분 파라미터 Power 값 10 -> 0 300 ->0 수정 2026-06-18 15:54:50 +09:00
0537c4aa7d docs: 작업일지 - PTOP 현장 레이저 참고 메뉴얼 기록 (Trumpf OPC UA for CPX)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:40:12 +09:00
e19a1e677a chore: PLC Recipe Change 수정가이드 삭제 (구현 반영 완료)
구현(42c5565)에 모두 반영되어 가이드 명세서 제거.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:32:00 +09:00
42c5565249 feat: PLC Recipe Change 핸드셰이크 구현 (SeqAutoRunPTOP) + 주소 정합
근거: 가이드 + Excel 260618(빨간셀 M70509/M70009/D70502/D70002). Page Change 미러링.
- 주소 enum: PLC_RECIPE_CHANGE_REQ(0x09)/PC_RECIPE_CHANGE_COMPLETE(0x09)/
  PLC_RECIPE_NO(idx2)/PC_RECIPE_NO(idx2). 공용 eCommonBitOutput 동기화.
  충돌: SeqStatusMonitor RMS_USED 읽기 주석, SeqAutoRunPrismatic 참조 이름만 교체.
- 시퀀스: CheckRecipeNo(논블로킹 Decision) + CheckRecipeNoComp(.Id 1:1 조회/활성화/
  반영폴링/에코·완료비트), Builder 흐름·엣지·루프백, 리셋 비트·워드, _RecipeManager Enter 확보.
- Page 검증 상한 하드코딩 제거 → 활성 Recipe Layers.Count() 가변.
- (별도) D:\ILSOSConfig\...\External\PLC CSV 디바이스맵 4종 라벨 정합(.bak260618 백업).

빌드는 VS Rebuild로 검증 필요(레거시 포함). STEP5 UI/PLC 사양 최종정합은 후속.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:31:43 +09:00
de06a4c897 docs: IOInterfaceView DI 경로 PTOP 전환 분석일지
IO DI 경로는 IO_Board.json의 IOInterfaceMapDI 절대경로로 결정되며
IODevice.MappingDIO가 path-agnostic하게 그대로 읽음(소스 수정 불필요).
PTOP 전환 = config(IO_Board.json 경로) + DI/DO.csv 존재 + DataPath 확인.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:38:14 +09:00
1fbe7fa98f feat: DA1/DA2 Voltage 표시를 No Laser 토글에 연동(조건부 표시)
DA1/DA2 Voltage UniformGrid에 Visibility 바인딩(IsNoLaser, convTrueVisible) 추가.
Time이 Use Spot Time 체크 시 표시되듯, No Laser 체크 시에만 전압 표시.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:20:26 +09:00
accffdd94a feat: NoLaser 옵션을 Manual(ScannerLaserControl)로 이동, Recipe NoLaser 제거
- Manual: IsNoLaser 추가, Laser On 직접 분기(Percent/Watt)의 LaserSignalOn을
  if(!IsNoLaser)로 가드 → 체크 시 발진 없이 전압만 인가
- Manual XAML: Use Spot Time과 동일 ToggleSwitch 디자인의 'No Laser(전압만)' 토글 추가
  (Timer Set: UseSpotTime → Time(체크시) → NoLaser → DA1/DA2 Voltage)
- Recipe(UCScannerObjectTeachingControlBox): NoLaser 완전 제거(원래 의도가 Manual),
  PerformCmdLaserReadyCheck를 WriteDoBit(9/13,true)로 환원. DI 11&15 변경은 유지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:14:59 +09:00
166d1bd2f0 feat: RTC5 AnalogOut 전압 readback - device 계층 + ViewModel + XAML 표시
ed36f8d에서 분석 문서만 들어가, 실제 구현 소스를 함께 커밋.
- ScannerObj.GetAnalogOut(abstract) + RTC5/RTC6(n_get_value, signal=portNo+32)/Simul(0) + Scanner 파사드(-1)
- UCScannerLaserControlViewModel: AnalogOut1/2Voltage + ReadbackAnalogOut(raw/4095*10 V), Laser On 직접 분기 WriteDA 직후 호출
- UCScannerLaserControl.xaml: Control Setting에 DA1/DA2 Voltage [V] 표시
- 작업일지 13:55 기록

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:57:14 +09:00
ed36f8deaa feat: RTC5 AnalogOut 전압 readback 표시 (Scanner Laser Control)
- Device 계층: ScannerObj.GetAnalogOut(abstract) + RTC5/RTC6(n_get_value, signal=portNo+32)
  /Simul(0) override + Scanner 파사드(미활성 -1)
- UCScannerLaserControlViewModel: AnalogOut1/2Voltage + ReadbackAnalogOut(raw/4095*10 V),
  Laser On 직접 분기 WriteDA 직후 호출
- UCScannerLaserControl.xaml: Control Setting에 DA1/DA2 Voltage [V] 읽기전용 표시
- LaserSignalOn 발사 동작 무변경. (AnalogOut1=33/AnalogOut2=34)
- 분석 문서 추가: Laser On 미출사 원인(122432)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:56:38 +09:00
f0380f43f9 fix: Laser Ready 판정 DI 변경 (IO 결선 변경 12&24 → 11&15)
IO 결선 변경에 따라 Laser Ready 입력 판정을
ReadDI(12) && ReadDI(24) → ReadDI(11) && ReadDI(15)로 수정. 로직 동일.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 12:21:08 +09:00
d29bf83ed3 docs: NoLaser 분석 문서 갱신 - DO9/13(IO Control) 채택안으로 정리
발진 Enable 실제 지점이 LaserSignalOn(RTC5)이 아니라 IO Control
DO9/DO13(Core/Ring Laser Control)임을 반영. IsNoLaser 채택 구현과
초기 LaserSignalOn 방식 원복 경위 기록.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 12:18:09 +09:00
8ec4fd0d62 feat: NoLaser 옵션 - 레이저 컨트롤러 IO(DO9/13) 안 켜고 Laser On 가능
UCScannerObjectTeachingControlBox에 IsNoLaser 추가. Laser Ready 버튼이
CoreLaser_Control(DO9)/RingLaser_Control(DO13)을 켜는 분기에서 ctrlOn=!IsNoLaser
적용 → IsNoLaser=true면 DO9/13을 false로 유지(레이저 컨트롤러 OFF)하여
발진 없이 전압만 인가한 채 Laser On 가능(Cal/전압 측정용).
XAML에 'No Laser' 체크박스 추가. 디바이스 레이어 무변경.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 12:12:48 +09:00
ad6cf68498 feat: Manual Laser Power Control의 Watt 입력 GroupBox 숨김(Collapsed)
W 입력 영역은 주로 사용하지 않아 UCScannerLaserControl.xaml의 Grid.Row=1
(Watt 기준) GroupBox를 Visibility=Collapsed 처리. Percent 영역만 노출.
ViewModel/바인딩은 변경 없음(CMD_LaserShotOnWatt 등 유지).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 11:32:51 +09:00
aa5928ce3e refactor: PTOP 네임스페이스/클래스 정리(Scanner→PTOP) 및 머신 PTOP 단독화
- namespace/using ILSOS_PrismaticScanner → ILSOS_PrismaticRD_PTOP (전 .cs/.xaml)
- 파일/클래스 리네임 7개: AlarmCode/AlarmManager/PAIX/EquipmentSpecificModel→_PTOP,
  RMSHandlerForScanner→ForPTOP, SettingUploadDataListForScanner→ForPTOP,
  SeqAutoRunPrismaticScanner→SeqAutoRunPrismatic, PLCControllerPrismaticScanner→PLCControllerPTOP
- PAIX_PrismaticScanner: 머신 참조만 PAIX_PTOP로 변경, WeldingCommon 공유 참조(SeqTestRun)는 보존
- XAML 3종(x:Class/clr-namespace/code-behind) 일치, csproj Compile Include 갱신
- csproj 빌드 경로 TDC→PTOP(_out_prismatic_rd_ptop)
- sln에서 Scanner/Gun/CleanLaser 제거 및 해당 머신 소스 삭제 → Machines에 PTOP만
- 분석/작업일지 문서 추가 (참고본: 정리후(빌드완) 기준)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 11:28:19 +09:00
0fcb32ae5a docs: 작업일지 06-18 요청사항 추가 및 PLC 인터페이스 폴더 정리
- 작업일지: 레이저 미발진 + Analog만 살려 Power Cal 파일 생성 가능 여부 요청 기록
- docs PLC 인터페이스 폴더 정리(구 _260617 폴더 → 신규 폴더로 이동)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:23:58 +09:00
aecbe2d3cd chore: Doc 정리 - 불필요 폴더 삭제 및 현장 데이터(ILSOSConfig_260618_PTOP.zip) 추가
- Doc 내 불필요한 폴더/파일 삭제 (LHS/ILSOSConfig, Issue/FAT 등)
- Doc/ILSOSConfig/ILSOSConfig_260618_PTOP.zip 현장 데이터 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:10:26 +09:00
d8e5ec9791 docs: 작업일지 06-18 - SeqScoutNormal moveSleepTime 50→100ms 기록
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:04:47 +09:00
81fdf01465 fix: SeqScoutNormal moveSleepTime 50→100ms 변경
현장 PTOP 환경에서 Scout 이미지 캡처가 속도 때문에 제대로 안 되는 문제 대응.
ScoutNormal에서 FOV 거리가 멀어 Scanner Jump 직후 캡처가 흔들리는 부분을
완화하기 위해 Jump 후 SleepTime을 50ms에서 100ms로 상향.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:01:47 +09:00
a057f99815 docs: LGPRI 문서 추가 - 유니셀 PtoP 단동기 Laser Interface_260618
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 09:48:54 +09:00
70739252bb docs: 작업일지·현장update파일·분석 문서 및 아키텍처 정리
- 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>
2026-06-18 09:38:33 +09:00
9aa1b2aa13 fix: Laser Ready 판정을 Core·Ring Control Status(DI12 & DI24) 동시 조건으로 변경
OnMonitoring의 IsLaserReady 판정을 DI(9)(CoreLaser_Laser_Ready 단독)에서
DI(12) && DI(24) (CoreLaser_Control_Status AND RingLaser_Control_Status)로 변경.
버튼이 켜는 Control(DO9/13)의 피드백을 Core·Ring 둘 다 확인.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 15:12:52 +09:00
9543238db4 feat: SequenceSetting에 Axis Position Interlock 파라미터 추가
수직/수평 기준값 + 허용오차(deg) 단일 값 입력 속성 추가.
추후 시퀀스에서 전축 위치 체크 후 안전 인터락 적용 예정.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 14:54:58 +09:00
3fc3789bfa 추가된 파일:
- docs/project-overview.md — 프로젝트
  개요
  - docs/solution-structure.md — 솔루션
  구조
  - docs/ptop-architecture.md — PTOP
  아키텍처
  - docs/aurora-devices.md — Aurora
  디바이스 목록
  - docs/build-output.md — 빌드 출력 경로
  - docs/harness-ptop.md — PTOP 하네스
  구성

  수정된 파일:
  → CLAUDE.md — 기존 내용을 6개 문서로
  분리, @import 방식으로 변경
  → .gitignore — .claude/ 추가

  삭제된 파일:
  - _기존md파일/ 디렉토리 (원본)

  제안 커밋 메시지:
  docs: CLAUDE.md를 주제별 문서로 분리 및
  @import 방식으로 재구성

  - 프로젝트 개요, 솔루션 구조, PTOP
  아키텍처, 디바이스 목록, 빌드 경로,
  하네스 구성을 별도 문서로 분리
  - 각 문서는 200줄 이하로 규칙 5번 준수
  - CLAUDE.md에서 @import로 참조하는
  라이브러리 형태로 변경 (규칙 6번 준수)
  형태로 변경 (규칙 6번 준수)
  - .gitignore에 .claude/ 추가, .ubisam_agent는
  제거
2026-06-16 17:28:03 +09:00
354cc29f83 fix: Recipe 탭 DI 읽기 실패 해결 (ERROR CODE:3102)
PTOP 변경 과정에서 Recipe 탭 진입 시 IO Device DI 읽기 실패로 시스템 크래시 발생.

  근본 원인:
  - DI 24가 PTOP 하드웨어에 미정의됨
  - UCScannerObjectTeachingControlBoxViewModel에서 DI 9, 24를 함께 읽으려고 시도
  - 범위 초과 오류(ERROR CODE:3102) 발생

  변경사항:
  - DI 24 읽기 제거 (Scanner 레거시 코드, PTOP에 불필요)
  - DI 9 읽기만 수행하도록 변경
  - try-catch 예외 처리 추가로 안정성 개선
  - 오류 발생 시 에러 로깅

  Fixes: Recipe 탭 시스템 셧다운

  또는 더 간단하게:

  fix: Recipe 탭 DI 읽기 오류 해결

  DI 24가 PTOP에 미정의되어 OnMonitoring에서 범위 초과 에러 발생.
  DI 9만 읽도록 수정하고 try-catch 예외 처리 추가.
2026-06-16 15:00:25 +09:00
916363ed69 feat: 작업 시 작성해야 할 문서 첨부 2026-06-16 10:21:09 +09:00
3407bb7cae chore: ignore _out_primatic_rd_ptop build output 2026-06-08 17:27:31 +09:00
d28e76c2fe file update 2026-06-05 13:44:39 +09:00