VisionCommon MIL or Cognex 라이브러리를 활용한 환경 구성 기본 비전 알람 매니저 비전 알람 코드 조명 설정 에러 카메라 연결 에러 카메라 그랩 에러 비전 알람 인터페이스 알람을 등록한다. 결과 상태 코드 알람을 발생시킨다. 비전 알람 코드 결과 상태 코드 알람을 발생시킨다. 비전 알람 코드 결과 상태 코드 장비의 비전 셋업 인터페이스 오토 포커스의 결과로 나온 최적의 초점 위치 저장 최적의 초점 위치 기본 장비 패턴 매니저 장비 패턴 인터페이스 장비에서 구현한 패턴 타입 리스트를 얻어온다. 패턴 타입 리스트 패턴을 얻어온다. 패턴 정보 패턴 패턴 설정 윈도우를 얻어온다. 패턴 에이전트 패턴 정보 카메라 디스플레이 FOV 키 정보 패턴 장비에서 시퀀스 노드를 정의하고, AuroraVision 시퀀스에서 사용하기 위한 클래스 생성자 로그 태그명 Action 노드를 가져온다. 노드 이름 Default Decision 노드 Action 노드 Decision 노드를 가져온다. 노드 이름 Default Decision 노드 Decision 노드 Action 노드를 등록한다. 노드 이름 Action 노드 Deicision 노드를 등록한다. 노드 이름 Deicision 노드 Sequence adapter 사용 시 default node ( ActionNode ) 만들어주는 Method 생성자 ActionNode 사용 시 Default로 제공하는 결과값 (default(non param) : SequenceAction.OK()) 생성자 : ActionNode 사용 시 Default로 제공하는 결과값 (default : SequenceAction.OK()) Default Action Node Default Action Node return Sequence adapter 사용 시 default node (Decision Node ) 만들어주는 Method 생성자 DecisionNode 사용 시 Default로 제공하는 결과값(default : "") Default Decision Node Default Decision Node return 기본 장비 시퀀스 매니저 생성자 장비에서 정의한 시퀀스 어댑터 매니저 기본 생성자 서브 시스템의 시퀀스 어댑터를 등록한다. 서브 시스템 정보 시퀀스 어댑터 서브 시스템의 시퀀스 어댑터를 가져온다. 서브 시스템 정보 가져올 때 default Adapter를 어떤 것을 가져올지 설정하는 정보 !주의! Node 형태로 사용할 때 : ( DefaultActionNode / DefaultDecisionNode 를 생성) !주의! Method 형태로 사용할 때 : null을 사용한다면 ".GetAdapter(~)?.Invoke(~)" 형태로 사용 시퀀스 어댑터 기본 장비의 운영 모드 어댑터 기본 장비의 카메라 트리거 어댑터 장비의 카메라 트리거 인터페이스 SW or HW 트리거 모드 일괄 설정 파라미터 성공 유무 SW 트리거 모드 설정 파라미터 성공 유무 HW 트리거 모드 설정 파라미터 성공 유무 트리거 On 성공 유무 트리거 Off 성공 유무 트리거 신호 On 카메라 컨피그 트리거 신호 Off 카메라 컨피그 기본 모션 기본 서브 시스템 모션 매니저 생성자 기본 FOV 모션 매니저 생성자 모션 제어를 위한 매니저 키 정보 모션을 등록한다. 키 정보 모션 모션을 얻어온다. 키 정보 모션 특정 키에 해당하는 모션을 제거한다. 키 정보 모든 모션을 제거한다. 상대위치 이동 키 정보 상대 위치 이동량 이동 결과 상태 코드 절대위치 이동 키 정보 이동할 절대 위치 이동 결과 상태 코드 포지션 타입의 위치로 이동한다. 키 정보 포지션 타입 이동 결과 상태 코드 현재의 위치 값을 얻어온다. 키 정보 현재 위치 값 EquipAdapter에서 사용하는 모션 제어 인터페이스 요청한 이동량(delta)만큼 상대위치 이동한다. 상대 위치 이동량 성공 : Hermes.E1.OK 요청한 위치로 이동한다. 성공 : Hermes.E1.OK 요청한 포지션타입(ePositionType)에 맞는 위치로 절대위치 이동한다. 포지션타입 성공 : Hermes.E1.OK 현재 모터 위치를 리턴한다. 현재 모터 위치 기본 포지션 매니저 기본 서브 시스템 포지션 매니저 생성자 기본 FOV 포지션 매니저 생성자 포지션 어댑터 인터페이스 포지션을 얻어온다. 포지션 타입 포지션 모션의 포지션 매니저 포지션 어댑터를 등록한다. 키 정보 포지션 어댑터 포지션 어댑터를 얻어온다. 키 정보 포지션 어댑터 포지션을 얻어온다. 키 정보 포지션 타입 포지션 다른 디스플레이에서 동일 카메라 라이브 동작시, 버튼 UI Sync를 맞추기 위함. 외부(버퍼) 트리거에 의한 그랩 완료 여부 (True : 그랩 완료 / False : 그랩 미완료) EventCallBack에 의한 그랩 완료 여부 (True : 그랩 완료 / False : 그랩 미완료) 카메라 화면 중심을 기준으로 Ratio X,Y를 적용한 자를 이미지 크기 자를 이미지 크기 외부(버퍼) 트리거에 의한 그랩 완료 여부 설정 그랩 완료 여부 EventCallBack에 의한 그랩 완료 여부 설정 그랩 완료 여부 EventCallBack에 의한 그랩 완료 여부 체크 (True : 그랩 완료 / False : 그랩 미완료) 그랩 완료 여부 라이브 켜져있는지 여부 라이브 여부 카메라 라이브 시키기 카메라 라이브 끄기 연결되어있는지 여부 연결여부 이미지 버퍼 복제 복제한 이미지버퍼 카메라 디스플레이 가져오기 카메라 디스플레이 디스플레이 설정하기 카메라 디스플레이 디스플레이로 부터 이미지 가져오기 가져올 카메라 디스플레이 이미지 객체 게인 값 가져오기 성공유무 게인 값 설정하기 설정할 게인 값 성공유무 노출도 값 가져오기 노출 값 노출도 최솟값 가져오기 노출도 최솟값 노출도 최댓값 가져오기 노출도 최댓값 노출 값 설정하기 노출시간(ms)기준 성공유무 이미지 사이즈 가져오기 이미지 사이즈 버퍼로 부터 그랩한 이미지 가져오기 카메라 디스플레이 가져올 이미지 (reference) 성공유무 카메라 그랩(동기) 카메라 디스플레이 가져올 이미지 (reference) 성공 유무 라이브 시작 카메라 디스플레이 라이브 정지 Child 이미지들로 Parent(원장) 이미지가 정상적으로 만들어지는지 검증 디스플레이 원장(부모) 이미지 성공 유무 플라잉 시작 FOV 정보 추가 파라미터 성공 유무 플라잉 종료 추가 파라미터 성공 유무 플라잉 상태 체크 성공 유무 현재 플라잉 인덱스 가져오기 현재 플라잉 인덱스 플라잉 이미지 가져오기 플라잉 인덱스 플라잉 이미지 플라잉 이미지 전체 가져오기 플라잉 이미지 전체 플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬 플라잉 합성(원장) 이미지 데이터를 인덱스별로 관리하는 클래스 생성자 모든 데이터 리턴 모든 데이터 마지막 lastDataCnt개의 데이터 리턴 마지막 데이터 개수 마지막 lastDataCnt개의 데이터 데이터 삽입 데이터 원점, 각도, 길이로 구성되는 십자가 원점 각도 수직/수평 길이 수직 라인 수평 라인 생성자 원점 생성자 원점 수직/수평 길이 생성자 원점 각도 생성자 원점 각도 수직/수평 길이 객체 복제 (DeepCopy) 객체 복사 (DeepCopy) MIL, Cognex와 상관없이 범용적으로 사용하는 컬러 Source -> Target 좌표계 변환을 위환 변환 값으로 작성한다. 데이터 저장 타입 CSV 로드 및 저장 생성자 CSV파일 로드 서브시스템 정보 시간 데이터 저장 타입 데이터 리스트 자동 생성된 경로에 CSV파일 저장 (비동기식) 서브시스템 정보 데이터 리스트 데이터 저장 타입 자동 생성된 경로에 CSV파일 저장 (비동기식) 서브시스템 정보 데이터 데이터 저장 타입 자동 생성된 경로에 CSV파일 저장 (동기식) 서브시스템 정보 데이터 데이터 저장 타입 이미지 로드 및 저장 생성자 이미지 로드 파일 경로 이미지 이미지 로드 파일 경로 보드 타입 보드 슬롯 위치 이미지 자동 생성된 경로에 이미지 저장 (비동기식) FOV 정보 이미지 공정 결과 상태 자재 정보 공정중 Grab한 이미지를 저장 서브 시스템 키 정보 데이터 저장 타입 이미지 공정 중 Grab한 이미지를 저장 FOV 키 정보 데이터 저장 타입 이미지 지정된 경로에 이미지 저장 (비동기식) 파일 경로 파일 이름 이미지 오버레이 이미지 저장 마지막 FOV 정보 공정 결과 상태 자재 정보 디스플레이 타입 특정 서브시스템에 대한 동기화된 공정 결과 시간을 저장 서브시스템 정보 공정 결과 특정 서브시스템에 대한 공정 결과 시간 초기화 서브시스템 정보 센터로부터 각 패턴의 정위치까지 떨어진 거리 파라미터 센터로부터 각 패턴의 정위치까지 떨어진 거리들 이미지 좌표상으로 좌상단부터 우하단까지 0 ~ n-1 인덱스이며, RefOffsets가 null이면 센터를 기준으로 얼라인 찾은 패턴의 위치와 패턴의 정위치 간에 허용 거리. (Default : 3 mm) 생성자 센터로부터 각 패턴의 정위치까지 떨어진 거리들 찾은 패턴의 위치와 패턴의 정위치 간에 허용 거리 센터로부터 각 패턴의 정위치까지 떨어진 거리 센터로부터 패턴 정위치까지 거리X 센터로부터 패턴 정위치까지 거리Y 수평/수직 라인의 방향 타입 수평 라인 수직 라인 시작과 끝점을 가지는 직선 직선의 시작점 직선의 끝점 직선의 길이 생성자 시작점 끝점 수평/수직 라인 방향을 결정 각도 라인 방향 (수평 or 수직) 비전 시퀀스를 호출하기 전, 상위에서 클래스를 생성한 후 시퀀스 context에 넣어주어야 함. var materialInfo = new MaterialInfo() { LotId = "L0032", CarrierId = "C19KAM123", MaterialId = "90KMAQMM1QAS12" }; context.PutValue(VisionContextKeys.CNTXT_KEY_MATERIAL_INFO, materialInfo); 장비의 운영 모드 상태 체크를 위한 인터페이스 시뮬레이션 모드 상태인지 체크 상태 플래그 드라이런 또는 물류 모드 상태인지 체크 상태 플래그 드라이런과 물류 모드 상태가 아닌지 체크 상태 플래그 드라이런 모드 상태인지 체크 상태 플래그 물류 모드 상태인지 체크 상태 플래그 카메라 디바이스 모델 리스트 그래버 유형 그래버 슬롯 위치 (MIL에서 Auto 인덱싱 해줌에 주의) 그래버 포트 위치 (MIL에서 Auto 인덱싱 해줌에 주의) 카메라 트리거 유형 카메라 트리거 발생 주체 트리거 발생 주체가 외부(버퍼) 프로그램인 경우 트리거 발생 주체가 Aurora인 경우 GenICam "TriggerSource" Features MIL : *.dcf 파일로 카메라 연결. EX) "D:\\Aurora\\DcfFiles\\CAM1.dcf" Euresys : *.cti 파일로 카메라 연결. EX) "C:\\Program Files\\Euresys\\eGrabber\\cti\\x86_64\\gigelink.cti" 활성화된 모터 위치 인덱스 기준으로 오름차순 정렬된 Child 객체 리스트 가져오기 활성화된 모터 위치 인덱스 기준으로 오름차순 정렬된 Child 객체 리스트 이미지 취득을 위한 카메라 트리거 모드 관리 항상 SW트리거로만 동작하는지 체크 항상 SW트리거로 동작하면 True 항상 HW트리거로만 동작하는지 체크 항상 HW트리거로 동작하면 True 플라잉 시작 FOV 정보 추가 파라미터 성공 유무 플라잉 종료 추가 파라미터 성공 유무 플라잉 상태 체크 성공 유무 현재 플라잉 인덱스 가져오기 현재 플라잉 인덱스 플라잉 이미지 가져오기 플라잉 인덱스 플라잉 이미지 플라잉 이미지 전체 가져오기 플라잉 이미지 전체 플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬 플아잉 합성(원장) 이미지 MIL or Cognex 라이브러리를 활용한 환경 구성 패턴 유틸 클래스 UI 콤보 박스용 패턴 설명 생성 패턴 정보 패턴 설명 패턴 검출 결과의 레퍼런스 인덱스를 구한다. 포인트 타입, 예)ImagePoint, StaticPoint 패턴 검출 결과 레퍼런스 허용 거리(Spec) 패턴의 레퍼런스 인덱스 (성공 : 0 ~ , 실패 : -1) 직선의 방정식 : Ax + By + C = 0 직선의 방정식 파라미터 A 직선의 방정식 파라미터 B 직선의 방정식 파라미터 C 직선의 파라미터로 방정식 생성 직선의 방정식 파라미터 A 직선의 방정식 파라미터 B 직선의 방정식 파라미터 C 직선을 지나는 두 점으로 방정식 생성 직선을 지나가는 좌표1 X 직선을 지나가는 좌표1 Y 직선을 지나가는 좌표2 X 직선을 지나가는 좌표2 Y 파라미터 Y좌표에 대응하는 X좌표 임의의 Y좌표 파라미터 X좌표에 대응하는 Y좌표 임의의 X좌표 복제 (ICloneable) object(LineEquation) FOV 간에 상관관계를 이용하여 라인을 교정하기 위한 매니저 라인 중점 보관 (자재 좌표) FOV 정보 수평/수직 라인 타입 라인 중점 (자재 좌표) 라인 중점 가져오기 (자재 좌표) FOV 정보 수평/수직 라인 타입 라인 중점 (자재 좌표) 라인 중점 초기화 각 FOV에서 찾은 라인의 중점 기반으로 새로 그려진 라인의 교점으로 meaPoints를 새롭게 정의 보상된 교점 위치 라인 교점들로 라인 그리기 라인 교점들 패턴을 트래킹하기 위해 패턴 위치를 저장/관리하는 매니저 패턴 위치 추가 FOV 키 패턴 위치 모든 패턴 위치 리턴 FOV 키 모든 패턴 위치 마지막 lastDataCnt개의 패턴 위치 리턴 FOV 키 마지막 패턴 위치 개수 마지막 lastDataCnt개의 패턴 위치 모든 패턴 위치 초기화 FOV 키 C2_F4 or C4_F4에서 라인 교점으로 얼라인 하는 경우, 각 FOV들 간에 상관관계를 이용하여 라인 교점 알고리즘을 보상해주기 위해 라인 중점 저장 라인 결과 패턴 정보 카메라 디스플레이 FixtureResult를 기준으로 이동시킨 ROI를 리턴한다. 패턴 타입 원본 ROI 기준 패턴 결과 각도 반전 플래그. MIL과 Cognex의 각도 방향은 반대. Default : "true" 회전 및 이동이 반영된 ROI 레퍼런스 위치에 십자가 그리기 십자가 길이 십자가 색상 Pattern 찾을 때 Parameter interface 패턴 파인더 interface 외부 패턴 파일 패턴 파일 경로 가져오기 패턴 파일 경로 패턴 불러오기 성공 유무 패턴 저장하기 성공 유무 패턴 생성하기 성공 유무 패턴 제거하기 성공 유무 찾기 영역(ROI) 가져오기 ROI 찾기 영역(ROI) 설정하기 설정할 ROI 성공 유무 패턴 찾을 때 사용할 파라미터들을 가져오기 패턴 찾을때 사용 할 파라미터 (RunParam) 패턴 찾을 때 사용할 파라미터들 설정하기 패턴 찾을때 사용 할 파라미터 (RunParam) 성공 유무 패턴 찾기 패턴 검출할 이미지 패턴 결과 패턴 찾기 패턴 검출할 이미지 검출할 영역 패턴 결과 패턴을 찾지 못했을 때 패턴 결과 패턴 결과 Tool 가져오기 객체 패턴 결과 표시하기 패턴 결과 카메라 디스플레이 Fixture Pattern인지 여부 패턴 썸네일 가져오기 썸네일 윈도우 타이틀 타이틀 등록 함수 포지션 리셋 함수 라인1,2 간에 교점 계산 라인1 라인2 라인1,2 간에 교점 라인1을 지나는 점에서 수직인 라인과 라인2 간에 교점 계산 라인1을 지나는 점 라인1 라인2 라인1을 지나는 점에서 수직인 라인과 라인2 간에 교점 점과 라인 간에 거리 계산 점 라인 점과 라인 간에 거리 편집 중인 패턴 데이터가 존재하는지 체크. 공정 중 편집 중이던 패턴 데이터 갱신을 위함. 편집중인 패턴 데이터 존재하는지 여부 편집 중인 패턴 데이터 존재 여부 패턴 데이터 편집 중으로 설정 편집 중인 패턴 데이터 클리어 패턴 썸네일 유틸 틀래스 썸네일 이미지 폭(가로) 썸네일 이미지 높이(세로) 썸네일의 이미지 사이즈 정보를 얻어온다. 이미지 사이즈 정보 기본 썸네일 이미지 썸네일 비트맵 메인화면 UI 설정을 위한 Recipe 메인화면 FOV 행렬 위치 메인화면 타입 Clone (Deep Copy) MainUiRecipe 얼라인 정위치(Reference Point) 설정을 위한 레시피 FOV의 중심 위치로부터의 오프셋 [mm] RefPointRecipe를 깊은 복사한다. 데이터를 target에 복사한다. 복사 대상 자재 좌표계 구성을 위한 레시피 기준 좌표계 대비 자재 좌표계의 방향을 설정 FOV 간의 X, Y축 방향으로의 거리 얼라인 보정량 계산과 보정량 적용을 위한 회전 중심 깊은 복사 데이터 복사 (this -> target) 하드웨어 카메라마다 여러 개의 FovInfo를 가질 수 있다. 서브시스템별 공정 설정 관리 부착검사 시퀀스 FOV 타입 FOV 순서별 부착검사 파라미터 Light Retry 사용 여부 Light Retry Value ( 모드 적용 시 움직일 Step 값 ) Light Retry Value ( 모드 적용 시 움직일 Step 값 ) Light Retry Step으로 반복 할 횟수 얼라인 모드(알고리즘)를 정의 스테이지 얼라인 (스테이지 또는 자재가 이동) 헤드 얼라인 (카메라, 레이저 등이 이동) 장비에서 직접 구현하기 위한 모드 장비에서 직접 구현하기 위한 모드 얼라인 계산 축(DOF) 활성화한 축의 보정량만 계산된다. 비활성화된 축의 보정량은 0이다. 카메라 설정을 위한 Recipe 카메라(HW) ID 카메라(Aurora Device)의 CamId를 반환한다. 카메라의 Aurora Device ID CamId Clone (Deep Copy) CamRecipe 하드웨어 카메라마다 고유하게 지정 하드웨어 조명 컨트롤러마다 고유하게 지정 얼라인 혹은 검사에 대한 string ID 하나의 FOV 내에서 동시에 찾을 패턴의 갯수 ID EX) ProcPattern1 : 1개 / ProcPattern2 : 2개 / ... / ProcPattern10 : 10개 SubSystem별 비전 셋업 기능을 위한 레시피 캘리브레이션 시퀀스 설정 센터튜닝 시퀀스 설정 (필요시 생성) FOV별 비전 셋업 기능을 위한 레시피 Auto Focus 시퀀스 설정 (필요시 생성) 비전 반복도 시퀀스 설정 (필요시 생성) 메인 카메라뷰 FOV UI Row/Column 위치 (EX : RC_02 -> 0행 2열) (EX : RC_10 -> 1행 0열) 현재 실행 중인 SW의 Recipe 구성에 맞게 장비에 저장된 Recipe 파일을 업데이트 한다. 레시피 업데이트를 실행한다. 레시피 또는 모델 실행 결과 현재 SW의 레시피 버전 레시피 최초 버전 Aurora Ingredient에서 관리되는 비전 레시피 Aurora Model에서 관리되는 비전 레시피 서브 시퀀스 파라미터 베이스 클래스 시퀀스 모드 생성자 시퀀스 모드 서브 시퀀스 매니저 서브 시퀀스의 시퀀스빌더를 생성한다. 서브 시퀀스 객체 시퀀스 이름 시퀀스빌더 서브 시퀀스 추상 베이스 클래스 서브 시퀀스의 시퀀스빌더 생성 서브 시퀀스 이름 시퀀스빌더 무브 후, 그랩 전 딜레이 적용 서브 시스템 정보 에러로그 출력 및 Toast 메시지 띄우기 로거 에러 메시지 에러로그 출력 및 Toast 메시지 띄우기 로거 메시지 C2_F4 or C4_F4 라인 교점 얼라인시, 이웃한 FOV들 간에 상관관계를 이용하여 라인 교점을 보상할지 체크 반드시 RegisterSetting이 끝난 이후에 수행되어야 함. Aurora Recipe에서 관리되는 비전 레시피 자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다. FovInfo FOV 위치 자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다. SubSysInfo eFovId FOV 위치 자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다. eUnitId eSubSysId eFovId FOV 위치 얼라인 정위치(Reference Point) 레시피를 반환한다. FovInfo RefPointRecipe 얼라인 정위치(Reference Point) 레시피를 반환한다. UnitId SubSysId FovId RefPointRecipe 얼라인 정위치(Reference Point)를 반환한다. SubSysInfo FovId Reference Point 얼라인 정위치(Reference Point)를 반환한다. FovInfo Reference Point 얼라인 정위치(Reference Point)를 반환한다. UnitId SubSysId FovId Reference Point 비전 레시피를 저장할 Aurora의 데이터 타입 Aurora의 Recipe에 저장 Aurora의 Model에 저장 Aurora의 Ingredient에 저장 설정 - 비전 레시피를 저장할 Aurora의 데이터 타입 UI 바인딩 및 레시피 저장이 필요한 뷰에서 상속받아 구현한다. 비전 레시피를 최신으로 갱신한다. _VsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 갱신 최신 레시피 복사본을 UI에 업데이트한다. var vsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 새로 읽기 var alignRecipe = vsRps.AlignRecipes[_AlignIdx].Clone(); // 레시피 복사 AlignRetry = alignRecipe.AlignRetry; // 레시피 업데이트(바인딩) 파일 저장 전, UI에서 읽어온 레시피를 메모리에 업데이트 한다. var vsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 새로 읽기 var alignRecipe = vsRps.AlignRecipes[_AlignIdx]; alignRecipe.AlignRetry = AlignRetry; // 레시피 메모리에 쓰기 RecipeFileManager.SaveVisionRecipe(); // 레시피 파일 저장 (함수 외부에서 저장해도 됨)