135 Commits

Author SHA1 Message Date
83018da4ac fix: 정지 시 PC_RECIPE_NO/PC_PAGE_NO 0 초기화 제거
PLC는 PC 에코 워드가 0이면 레이저 출사 신호를 내지 않는다(2026-08-20 PLC측 확정).
bit15 가접 운전은 페이지마다 정지하므로 OnSeqActionStop의 무조건 0 초기화가
페이지마다 0/0 창을 열었고, PC는 다음 PAGE_CHANGE_REQ를 받아야만 재에코한다.
0 초기화는 SeqStatusMonitor가 Auto OFF 시에만 담당하도록 일원화.
2026-08-21 00:06:29 +09:00
172a273b90 feat: Recipe/Page 재동기 노드 + Page 수렴 후 Recipe 최종 확인
- 260813: ResyncRecipePage 노드 추가. ResumeMode·시뮬·PLC 워드 무효 시
  재동기를 생략하고 CheckPageNo 의 REQ 대기로 넘긴다.
  재동기 상한 10초(RESYNC_TIMEOUT_SEC) 초과 시 수렴 미완으로 포기.
- 260818: CheckPageNoComp 를 outer while 로 감싸 Page 수렴 후 PLC 의
  Recipe/Page 를 다시 읽어 PC 확정값과 대조. 어긋나면 Recipe 부터
  재확정 후 Page 재수렴.
  260812 15:17:29 로그 대응 — Page 수렴 중 PLC 가 Page 를 6→2 로 바꾸며
  Recipe 도 함께 바꿨을 때 PC 가 옛 Recipe(22)를 에코한 채 남아
  PLC_WELD_TRIGGER_REQ 가 오지 않고 타임아웃만 반복되던 문제.

원복: 각 region 통째로 삭제 (260818 은 outer while 제거 후 들여쓰기 복원).
2026-08-19 11:59:36 +09:00
832ee0b32e fix: AutoZip 이 프로젝트 로컬 External·Packages 를 제외하던 문제
AutoZip 으로 만든 zip 만으로는 빌드가 되지 않았다. 별도 PC(C:\Test)에서 풀어
Debug|x64 로 돌리면 37개 중 16개가 실패했다.

원인은 -xr! 이 재귀 매칭이라는 점이다. -xr!External / -xr!packages 가 루트뿐 아니라
하위 아무 depth 의 같은 이름 폴더까지 전부 걸러냈다. 화이트리스트에 .dll 이 없던 것도
겹쳐, HintPath 가 프로젝트 상대경로로 가리키는 DLL 6개가 통째로 빠졌다.

  AuroraACS\External\ACS.SPiiPlusNET.dll                       (AuroraACS.csproj:39)
  AuroraLaser\External\AuroraModbus.csharp.dll
  AuroraDeviceCommon\Packages\NModbus.3.0.80\...\NModbus.dll   (AuroraDeviceCommon.csproj:55)
  AuroraDeviceCommon\Packages\NModbus.Serial.3.0.80\...\NModbus.Serial.dll
  AuroraHeightSensor\Packages\MEDAQLib\MEDAQLib.dll            (AuroraHeightSensor.csproj:124)
  AuroraHeightSensor\Packages\MEDAQLib\MEDAQLib.NET.dll

AuroraDeviceCommon 이 NModbus 를 못 찾아 실패하면 _out\x64-Debug\AuroraDeviceCommon.dll
이 안 생기고, 이후 13개 프로젝트가 CS0006 으로 연쇄 실패했다. XAML MC3074 3건
(EnumToStringConverter·MainPage·UCWorkPos)도 같은 원인이다.

수정
- -xr!External / -xr!packages 삭제. -x!External -x!External\* -x!packages -x!packages\*
  로 대체해 루트만 제외한다.
- 화이트리스트에 -ir!*.dll 추가. obj·bin·_out* 이 이미 제외돼 있고 루트 두 폴더도
  빠지므로 실제로 늘어나는 건 위 6개뿐이다.
- 완료 메시지에 받는 쪽 준비물을 출력한다 - zip + 루트 External\ + 루트 packages\.

검증: 재압축 후 별도 폴더에 풀고 루트 External·packages 만 복사해 Debug|x64 빌드 성공.

인코딩은 CP949 를 유지했다. UTF-8 로 저장하면 콘솔 한글이 전부 깨진다(실측).
2026-08-12 10:54:57 +09:00
to3796zw
5807279c4f feat: 소스 전용 암호 zip 백업 AutoZip.bat 추가
저장소를 통째로 전달하려면 21.6GB(.git 8.2 / Doc 5.1 / _out 1.2 / packages 1.1 …)를
옮겨야 했다. 실제로 필요한 것은 Visual Studio에서 다시 빌드할 수 있는 소스뿐이고,
그 집합은 2,025개 / 20.2MB → 압축 후 5.8MB 다.

압축 암호는 ub8877 이다. AutoZip.bat 상단 PW 변수에 정의돼 있고 7za 의 -p 로 넘어간다.
zip 기본 암호화(ZipCrypto)를 쓴다 — AES-256 은 구버전 알집에서 열리지 않는 사례가 있어
호환을 택했다. 바꾸려면 압축 명령에 -mem=AES256 만 붙이면 된다.
암호가 걸린 사내 전달용 아카이브이며 자격증명이 아니다.

동작
- 배치파일 위치(%~dp0)를 기준으로만 동작한다. 절대경로 없음.
- 파일 목록을 박아두지 않고 확장자 화이트리스트로 거른다. .cs/.xaml 을 추가해도
  이 배치파일은 고칠 필요가 없다.
- 포함: .sln .csproj .cs .xaml .resx .config .settings .manifest .snk
        + 빌드 리소스 이미지(.png .ico .jpg .bmp .gif .cur .ttf)
  csproj 에 <Resource Include="Resources\*.png" /> 가 있어 이미지를 빼면 빌드가 깨진다.
- 제외: obj bin .git .vs packages _out* External Doc docs _dummyImages
        _workspace .claude .serena __pycache__ 및 이전 *.zip
- 결과물은 루트에 ILSOS_All_src_YYYYMMDD_HHmmss.zip 으로 떨어지고,
  다음 실행 때 압축 대상에서 제외된다(.gitignore 에도 등록).

tools/7za.exe (7-Zip 18.05 x64, 단독 실행본)를 동봉했다. Windows 기본 tar/Compress-Archive
는 암호 zip 을 만들지 못하고 이 PC에 7-Zip 이 설치돼 있지 않아 설치 없이 돌아가게 했다.
7-Zip 은 LGPL 이라 재배포 가능하다.

인코딩은 CP949 로 저장했다. UTF-8 + chcp 65001 조합은 cmd 가 배치 실행 도중 코드페이지를
바꿀 때 파일 읽기 위치가 어긋나 이후 줄이 통째로 오파싱된다(실행 실패 확인).

검증: zip 생성/암호(무암호 테스트 실패·정상 암호 통과)/포함(.cs 1365 .xaml 289 .resx 59
.csproj 45)/제외 전 항목 0건/재실행 시 이전 zip 미포함/cmd 한글 출력 정상.
한계 — External·packages 를 제외하므로 받는 쪽에서 참조 DLL 과 NuGet 패키지는 따로 확보해야 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:29:45 +09:00
to3796zw
750aa81b51 chore: 로컬 전용 문서·하네스 설정 git 추적 제외
docs·CLAUDE.md·README.md·rules.md·.claude·.ubisam_agent 를 추적에서 해제.
로컬 전용 문서와 에이전트 설정이 저장소에 올라와 있어 정리한다.
파일은 디스크에 그대로 유지되며 .gitignore 로 재추적을 막는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:21:39 +09:00
a43a531e00 docs: 미커밋 분석·작업지시서·작업일지 반영 (260805~260810)
- 분석_bit15_Resume_핸드셰이크_260805.md
- 작업지시서_PTOP_PLC핸드셰이크_260805.md
- 분석_HeavyAlarm_비트_동작_260810.md
- 작업일지 2026_08_06.md
2026-08-11 09:46:02 +09:00
ec46b15bf6 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
2026-08-11 09:46:01 +09:00
099fd1f1c8 chore: Office·OS 임시 파일 gitignore 추가 (~$*, Thumbs.db, *.tmp 등) 2026-08-10 16:54:52 +09:00
868bc6d79c chore: PLC 인터페이스 폴더 정리 — Laser param Shot 비교본 및 작업사진 아카이브 삭제
레시피별 Laser 파라미터 Shot 비교 xlsx 6건(260730~260804)과
작업사진 txt 3건·7z·zip 3건을 제거한다.

남기는 인터페이스 정의서 2건:
  - 유니셀 PtoP 단동기 Laser Interface_260622_변경.xlsx
  - 유니셀 PtoP 단동기 Laser Interface_260730_레시피NUM변경.xlsx
2026-08-10 16:51:27 +09:00
594c6ba24a fix: Page 에코 수렴 확인 전 PLC 업데이트 주기 대기 추가
CheckPageNoComp 에코 수렴 루프에서 PC_PAGE_NO 를 쓴 직후 되읽어 비교하면
PLC 데이터 업데이트 주기가 반영되기 전 값을 읽어 수렴 판정이 흔들릴 수 있다.
WriteWord 이후 되읽기 전에 200ms 대기를 넣는다.

대상: SeqAutoRunPTOP.cs CheckPageNoComp() "4. 되읽어 수렴 확인" 직전
2026-08-10 16:42:26 +09:00
e0e5416975 fix: PLC 기동 시 210002 오알람 차단 — Livetimer 초기화 및 모니터 타이머 기동 위치 이동
PLCController.DoActivate() 가 PLC 연결을 열기 전에 _monitorPlcInterfaceMap 을
기동해, 연결 확립 전 LiveStatusUpdate() 가 돌면서
ALARM_DEVICE_PLC_DISCONNECT(210002) 오알람이 매 기동마다 발생했다.

원인
- Livetimer 가 초기화되지 않아 DateTime.MinValue 상태 → (Now - MinValue) 가
  항상 10000ms 를 초과해 워치독이 오판. 임계값 조정으로는 해결 불가.
- MicroTimer 첫 콜백이 주기(100ms) 뒤가 아니라 Start() 직후(약 1ms)라
  경합이 아니라 100% 재현되는 결정적 버그.

실측 (2026-08-10 16:12:25.904)
  Livetimer=0001-01-01, elapsed=63921975145904ms,
  isLive=False, IsActivated=False, IsConnected=False

조치
- _monitorPlcInterfaceMap.Start() 를 base.DoActivate() 성공 이후로 이동
- Livetimer = DateTime.Now 로 기준시각 확보 후 타이머 기동
- 두 조치는 각각 단독으로는 무효. 반드시 함께 적용해야 한다.
- 수정 전/후를 #region 2개(검색: 260810 기동 오알람)로 기록해 원복 가능

검증: 2026-08-10 현장 재기동 확인 — 기동 시 210002 미발생

미해결(별건): Livetimer 이중 용도, ReadBit .err 무시, ClearAlarm 부재,
SeqAlarmMonitor 의 무지연 루프 및 Laser/Chiller 즉시 알람

상세: docs/분석_PLC210002_기동오알람_260810.md
작업일지: docs/작업일지/2026_08_10.md
2026-08-10 16:37:27 +09:00
b7437a00f7 feat: 수동 Scout 이미지 파일명에 레시피/페이지 번호 태그 추가
레시피 티칭 화면 Scout 출사 시 SaveTag를 normal_{recipeId}_{pageNo}로 주입해 1_HHmmss_normal_23_5.PNG 형태로 저장. 공통 시퀀스 SeqScoutNormal은 무수정(기존 SaveTag 확장점 사용). 페이지 번호는 1-base로 AutoRun의 auto_{recipe}_{page}_pre/post와 숫자 정합. 원복 마커: #region 260807. 현장 검증 완료.
2026-08-07 10:39:42 +09:00
c7f12b0bda feat: Recipe/Page 핸드셰이크 에코 수렴 루프 적용
PLC가 PC 에코 넘버(PC_PAGE_NO/PC_RECIPE_NO) 일치를 상시 확인하는 것으로 확정(260806)됨에 따라, PC 책임을 검증에서 '정확히 읽고 → 내부 상태 갱신 → 에코'로 전환.

- CheckRecipeNoComp/CheckPageNoComp를 수렴 루프로 재작성 (에코 후 되읽어 일치 확인, 어긋나면 재읽기, 맞는 즉시 다음 노드로)
- 에코 없이 return 하던 경로 제거 (RecipeNo=0/미등록 → 에코 안 하고 재시도)
- 범위 밖 PageNo: 3초 무한대기 → 200ms 재읽기, 에코 안 함
- Page 3회 수집(600ms)·Recipe 800ms 재폴링 제거 → 정상 흐름 지연 0
- while 탈출 후 context.Stopped 가드 추가
- ReadOutWord(eWordOutput) 헬퍼 추가 (ReadOutBit 패턴 준용)
- 시뮬레이션 가드: IsSimul이면 수렴 생략 (PLC 워드가 항상 0이라 못 빠져나감)

구버전은 #region 260806 으로 전량 주석 보존 — 원복 시 블록 교체.
분석: docs/분석/2026/08/06/
2026-08-06 11:41:58 +09:00
a9d9e4f4d6 Merge branch 'feature/ubisam-pptx-integration' of https://gitea.ubisampaju.synology.me/RobotAutomationDevelopment-Dept/LGES-OC5-PtoP-Welder into feature/ubisam-pptx-integration
# Conflicts:
#	WeldingComponents/WeldingCommon/Utils/RecipeHelper.cs
2026-08-06 11:41:56 +09:00
45d991a25c UPDATE 2026-08-06 11:29:00 +09:00
to3796zw
39346ab718 fix: 레시피 페이지 데이터 빈 상태 저장 차단
기동 중 RecipeFieldScan 싱글톤이 비어 있는 상태에서 SaveAndLoadFieldScanFromLasaDb
가 Save 를 Load 보다 먼저 수행해(MainPage.cs:539 -> :540) 대상 FieldHelper.json 이
"[]" 2바이트로 파괴됐다. 현장 3건 확인 — RMS(07-29), U_Frame _pre welding(08-03),
Bottom_Frame_Welding(08-03). 3건 모두 Aurora 초기화 직후 4~19초, 사용자 입력이
불가능한 구간이며 형제 TeachingEditor.json 은 옛 mtime 을 유지했다.

RecipeFieldScan
- SaveFieldHelper 진입부: 완주한 로드의 결과가 아닌 빈 상태면 저장을 건너뛴다.
  Load(:540)는 그대로 돌아 파일의 실제 데이터로 싱글톤을 채운다. 사용자가 페이지를
  지워 정당하게 비운 경우는 loadedOnce 로 구분해 통과시킨다.
- LoadFieldHelper: loadedOnce 를 Clear 와 짝지어 리셋하고, 완주해도 결과가 0건이면
  로드로 보지 않는다. Clear 이후 예외가 나는 경로에서 플래그만 남아 가드가
  무력화되는 것을 막는다.
- 맨 catch 를 LastSaveError 기록으로 교체. throw 하지 않는 이유는 ReloadSetting
  경로가 Rx OnNext 안이라(UCScannerObjectTeachingViewModel.cs:55-57) 전파 시
  구독이 끊겨 티칭 화면 갱신이 영구 정지하기 때문이다.

RecipeHelper
- SaveRecipe 에 저장 대상과 메모리 신원(Recipe.SelectedRecipeFile) 불일치를
  Aurora Logger 로 남기는 관측 코드 추가. 저장은 막지 않는다. 기준을
  Dao.SystemRecipe.WorkRecipeFile 로 잡지 않은 것은 그 값이
  SystemParameterILSOS.json 에 영속되고 Aurora SystemParameter 와 파일을
  공유해 신원으로 쓸 수 없기 때문이다.

교차 오염(내용이 채워진 채 엉뚱한 레시피에 기록되는 현상)은 이 변경으로 막히지
않는다. 관측 로그로 발생 경로를 확정한 뒤 별건으로 조치한다.

검증: LASAGUI/WeldingCommon/ILSOS_PrismaticRD_PTOP 빌드 오류 0,
빌드 산출물 직접 로드한 시뮬레이션 31건 전수 통과.
2026-08-04 15:45:45 +09:00
9edd7d9538 chore(skill): ubisam-ppt-make 레이아웃 선택 레퍼런스 이미지 추가 2026-07-28 17:09:56 +09:00
5e0d083166 docs: 2026-07 분석 문서 4건 및 07/23 작업일지 추가
- 07/03 케이블베어 트러블 분석
2026-07-28 17:09:48 +09:00
b3cb159491 fix: MoveScanner SelectedIndex 범위 가드 추가
그리드 빈 영역/헤더 더블클릭, Apply 전, Esc 선택해제 등으로 SelectedIndex가 -1이거나 VisionCorrectionList 범위를 벗어난 상태에서 MoveScanner가 호출되면 인덱스 예외가 발생했다. 진입부에서 범위를 검사해 무시하도록 처리.
2026-07-28 17:09:41 +09:00
0f28908f5f refactor: ubisam-ppt-make ↔ ubisam-deliverables 역할 경계 명확화
역할 분리 원칙 확립:
- ubisam-ppt-make: PPTX 렌더링 엔진 (build_deck.py). 레이아웃·디자인 토큰 SSoT.
  When to use에 deliverables 위임 케이스 추가 + 역할 경계 명시.
- ubisam-deliverables: 산출물 오케스트레이터. PPTX 직접 생성 금지 명시.
  Step C를 "ubisam-ppt-make에 위임" 구조로 재작성.
- 09-pptx-integration.md: 역할 분리 원칙 헤더 추가, build_deck.py 경로·SSoT 명시.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 16:27:37 +09:00
ac954a5ea5 docs: ubisam-deliverables 통합 완료 — build_02설계_pptx.py 참조 전면 반영
- SKILL.md: C항목 2.설계 PPTX를 한 줄 실행 명령으로 교체, 불변규칙에 pptx 재생산 추가
- 06-procedure.md: xlsx 재생산과 동등한 pptx 재생산 절차 섹션 추가
- 09-pptx-integration.md: 자동 재생산(build_02설계_pptx.py)과 수동 절차를 구분 기재

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 16:13:18 +09:00
12d78900cd fix: table layout — cap height at 5.3in to prevent footer overlap
- L_table: Inches(0.5×rows) → min(0.5×rows, 5.3) 상한 적용
  (footer y=7.05, table top y=1.7 → max 5.3" + 0.05" gap)
- 영향 슬라이드: 행 수 11+인 표 전체 (DI/DO 14행, TactTime 13행, PLC신호 12행)
- SKILL.md Notes에 table 높이 상한 규칙 문서화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 16:09:47 +09:00
0cddd5d5b3 feat: ubisam-ppt-make and ubisam-deliverables PPTX integration (Step 2/2) - SW 설계서 자동 생성
- build_02설계_pptx.py 추가: 2.설계 산출물(기능명세·시퀀스·신호정의·IO맵·TactTime) → SW_설계서.pptx 22슬라이드 한 줄 재생산
  - cover / history / agenda / divider × 5 / table × 12 / flow × 2 / closing 구성
  - tempfile spec JSON → build_deck.py → pptx, spec 자동 삭제
  - 실행: set PYTHONUTF8=1 && py .claude/skills/ubisam-deliverables/references/build_02설계_pptx.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 16:04:07 +09:00
f7bacb90c1 23. SW 점걸 결과_ Flow Chart 주요 ptop 프로젝트 시퀸스 4개 이미지 첨부 완료 2026-06-30 15:00:21 +09:00
e34ed97a3a 스킬 전부 업데이트 _ 기존 브랜치에서 넣지 않았던 파일들 전부 커밋 2026-06-30 14:35:22 +09:00
08a60d2605 feat: ubisam-ppt-make and ubisam-deliverables PPTX integration (Step 1/2) - master background + docs 2026-06-30 14:28:31 +09:00
31534ff1bb docs: SW 점검 결과 - 요청자/작업자 컬럼 추가 + Gantt 시트 신규
[SW Version 시트]
- 점검 내용과 점검 결과 사이에 '요청자', '작업자' 2개 컬럼 삽입
- 표 스타일·상단 요약 병합셀 위치 보정(제목 B1:I2 확장, 라벨/날짜 정렬)

[Gantt 시트 신규]
- 프로젝트 6단계 일정 간트차트(타임라인 2026-05~08 일 단위)
- 월/주/일 3행 헤더를 일 날짜 기반 수식으로 자동 생성
- 막대는 조건부서식으로 시작일~종료일 구간을 상태색 자동 채움
  (날짜만 입력/수정하면 막대 자동 갱신, 미정 단계는 공백)
- 단계 반영: 제작 2026-05-01~06-30 진행완료(오창공장 이전 전 완료),
  셋업 미정(7/15 이후 오창공장), 양산·CS 미정

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 13:47:32 +09:00
c63a228dad feat :[문서] 가접용접_메뉴얼 추가 2026-06-26 15:13:52 +09:00
to3796zw
9c1daaee1d fix: Busy bit 위치 변경 및 Scanner Cam 팝업 모션 수정
- Laser On Display 타이밍을 맞추기 위해 PC_WELD_BUSY bit
  기록 위치 변경 (SeqAutoRunPTOP)
- 레시피 Scanner Cam 팝업(WDScannerCamMotion)을 직접 실행
  모드(publishMode:false)로 변경하고, 창 표시 시 모니터
  타이머/Limit 초기화를 호출해 모션 미동작·좌표 0 고정 해소
- 작업일지 2026-06-26 추가, Laser Interface 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:02:21 +09:00
to3796zw
8bbac47244 docs: 용어정리(가접 용접) 별도 파일 분리 + import
200줄 규칙 준수 위해 architecture.md §8 용어정리 본문을 docs/용어정리.md로 분리하고 @import로 연결.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 22:31:10 +09:00
to3796zw
041c15550c feat: 레시피별 Front/Down 레이저 인터락 추가
Use Interlock ON 시 ① 안전구역 게이트(기존) 유지 + ② 레시피별 방향 차단(신규). Recipe 폴더의 Recipe_Laser_Interlock.json(Front/Down 0/1)에 저장하고, 경로는 FieldHelper.json과 동일 소스(DB.Dao.SystemRecipe.WorkRecipeFile) 사용. Auto/Manual 양쪽 적용(Manual은 ①+② 신규), VM 체크박스는 레시피 전환 시 Background 우선순위 재로드로 stale 방지.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 22:30:57 +09:00
48befb60b2 docs: SW 점검 결과 SW Version 시트에 최신 Source 변경분 반영
d131ad9 이후 소스(.cs/.xaml/.csv) 커밋 6항목 추가:
용접 전/후 Scout 핸드셰이크, Auto 발진 보정테이블/셀 offset,
레시피 스캐너 토글 창·Field 버튼, 카메라 각도 기반 Laser offset.
헤더 요약 갱신(총 14→20, 정상 9→12, 확인중 5→8, 점검일자 06-24).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 10:34:44 +09:00
9f72e6caaf Merge branch 'field/ptop-1st' into field/ptop-recipe-scanner-move 2026-06-24 17:38:14 +09:00
to3796zw
2871db6e8f feat: 카메라 각도(D70510) 기반 Laser 발진 offset 분기
각도에 따라 발진 위치가 달라져, Front/Down angle 평균을 임계값으로
Front/Down offset을 자동 선택해 적용(자동·수동 발진 공통).

- LaserInterlock: Horizontal/Vertical → Front/Down angle 로 변경
- SystemParameter: CellCenterOffset X/Y → Front/Down offset X/Y (4개)
- LaserAngleOffsetSelector 헬퍼 신규 + 선택값 LOG
- PLC 미연결 시 Front offset fallback

주의: 설정 프로퍼티명 변경으로 기존 저장값 자동 이관 안 됨(재입력 필요)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 17:34:46 +09:00
2684685014 docs: Manual Select Field 저장/Scout Normal 읽기 경로 분석
FieldHelper.json 페이지별 저장 구조와 Run Scout Normal 읽기 경로,
FileName(표시용) vs FieldScans(스캔 입력용) 구분 정리.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:38:20 +09:00
to3796zw
03b97913c0 Merge branch 'field/ptop-1st' of https://gitea.ubisampaju.synology.me/RobotAutomationDevelopment-Dept/LGES-OC5-PtoP-Welder into field/ptop-1st 2026-06-23 22:51:18 +09:00
to3796zw
90adf1d1f9 fix: Auto 발진에 셀 offset 적용 — 매뉴얼과 정합
Auto(SeqAutoRunPTOP)가 CellMeasureCenterOffset을 0으로 넘겨
매뉴얼(SeqComponentTeachingRun)과 발진 위치가 어긋남.
매뉴얼과 동일 수식(CellPosMeasureCenterOffset + CellCenterOffset)
으로 변경하여 자동/매뉴얼 발진 위치 정합.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 22:43:32 +09:00
e488c37944 사용법 참고 메뉴얼 Update 2026-06-23 19:57:26 +09:00
5d026b1720 docs: 작업일지 2026-06-23 LGES 검수 항목 추가
매뉴얼 작성·Recipe View 재구성·SW 대응 및 26.06.24 AutoRun 실출사 예정 기록

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 19:54:05 +09:00
a64dd12519 fix: 레시피 Field 버튼 아이콘을 Select Field 아이콘(slash.jpg)으로 교체
빔 아이콘(guide.png)이 아니라 매뉴얼 화면 Select Field 버튼과 동일한
slash.jpg 아이콘 사용 (20x20).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:45:34 +09:00
d272d6e7e9 style: 레시피 Field 버튼을 기존 Scanner Cam 버튼 디자인으로 통일
StButtonAccentBlue + guide.png 아이콘 + 텍스트 StackPanel 형태로 변경
(기존 Scanner Cam 버튼과 동일한 디자인).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:34:18 +09:00
357702399c feat: 레시피 Scout Normal 줄에 Field 버튼 추가 (3열 [Field]-[Run]-[Stop])
- UCScannerObjectTeachingControlBox.xaml: Scout Normal 실행 줄을 2열에서 3열로
  재구성, 너비 1*/1.3*/1*로 Run 강조. Run Scout Normal 버튼을 Run으로 변경,
  1열에 Field 버튼 신규 추가.
- VM: 매뉴얼 화면과 동일한 WDSelectScoutField 팝업을 띄우는
  CMD_ShowSelectFieldWindow 이식. 저장은 팝업 VM에서 자체 처리하므로
  비전 이벤트 구독(SAVE_CHILD_IMAGE_SETTING)은 제외.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:23:10 +09:00
4ed35cb94a feat: 레시피 화면에서 스캐너 카메라+모션 토글 창 추가 (이벤트 구동)
- 레시피 컨트롤박스에 'Scanner Cam' 버튼 추가 → 카메라+모션 창 Show/Hide 토글
- WDScannerCamMotion: 전용 displayType(Machine_C) 카메라뷰 + 매뉴얼 UCScannerMotion 재사용
- UCScannerMotionViewModel: publish/execute 모드 분리
  - 레시피(publish): 입력값을 EVENT_SCANNER_COMMAND_MOVE 로 발행
  - 매뉴얼(execute): 이벤트 구독해 동일 메소드로 실제 스캐너 이동(인터락 그대로 재사용)
- Move/Jog/Home 메소드를 인자형으로 리팩터해 UI·이벤트 경로가 같은 본체 공유
- 분석 문서 추가(docs/분석/2026/06/23)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 17:03:21 +09:00
to3796zw
020840e678 fix: Auto 발진 직전 보정테이블(1) 선택 — 매뉴얼과 위치 정합
Auto(SeqAutoRunPTOP.ExecuteWelding)가 발진 직전 보정테이블을 선택하지
않아 직전 상태로 발진 → 매뉴얼과 위치 어긋남. ExecuteList 직전
SelectCorrectionTable(1) 명시 추가(장비측 보정도 테이블 1 기준 정합).
2026-06-23 작업일지 추가.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 09:17:07 +09:00
a69ba578e6 docs: SeqAutoRunPTOP 시퀀스 전체 분석 문서 + 작업일지 추가
- 현재 코드 기준 노드 흐름·PLC 핸드셰이크·레이저 발진 구간 정리
- M70509(Scout, 9번) 분기 특성, 정지/Resume 처리 포함
- 현장 레이저 발진·Scout 이미지 촬영 정상 확인

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 00:38:59 +09:00
669a1cda82 작업일지 업데이트 2026-06-22 23:09:41 +09:00
f52db8597e HMI Manual_문서 업데이트 버전 2026-06-22 23:08:17 +09:00
to3796zw
4ef5a66333 23. S/W 점검 결과 파일 정리
파일 정리
2026-06-22 22:19:59 +09:00
c49c5e8386 작업일지 업데이트/ IO_체크완료 2026-06-22 21:22:51 +09:00
to3796zw
6971896d54 docs: 2026-06-22 작업일지 추가 (Scout 구현·전체 시나리오 검증)
M70509 기반 용접 전/후 Scout 구현 요약과 전체 시나리오 검증 테스트 진행 기록.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 19:47:13 +09:00