Presentation is loading. Please wait.

Presentation is loading. Please wait.

교육 내용 OMRON SYSMAC Gateway(SGW) 설치 INDEX 제어 프로그램 설치

Similar presentations


Presentation on theme: "교육 내용 OMRON SYSMAC Gateway(SGW) 설치 INDEX 제어 프로그램 설치"— Presentation transcript:

1 교육 내용 OMRON SYSMAC Gateway(SGW) 설치 INDEX 제어 프로그램 설치
GUI 소개 TM Module 확장 스케줄러 확장

2 인덱스 제어 표준화 Development Guide
2010년 12월 15일 인덱스 제어 표준화 Development Guide 오픈에스지닷넷

3 Table of Contents Scheduler Overview Workflow 로봇 5개 단위 동작 Framework 활용
Scheduler Class ReadyList 클래스 구조 Scheduler_CoreEngine.cs Scheduler_SlotChecker.cs Scheduler_PathChecker.cs Scheduler_StepManager.cs Config 구성

4 I Scheduler Overview CTCTask ReadyList CTCTask Scheduler Class TM PM
생성 실행 참조 Scheduler Class 메서드1 메서드2 메서드3 TM PM CM Workflow ReadyList Workflow Scheduler Class TM Class PM Class CM Class

5 Workflow 실행, ReadyList 작성
I Scheduler Overview CTCTask Workflow 실행, ReadyList 작성 ReadyList 작업 목록 Workflow Scheduler 기능을 활용한 ReadyList 처리 로직 Scheduler Class 단위 Rule 메서드와 이벤트를 포함한 클래스 TM Class Arm의 상태, 로봇 제어 및 명령 송/수신 클래스 PM Class PM PIO 신호확인 CM Class PORT및 Slot 상태확인 모든 객체는 AppContext를 통해서 접근 가능함 현재의 AppContext 얻는 방법 AppContext.Current m_AppContext

6 I Scheduler Overview : Workflow
기본작업

7 I Scheduler Overview : Workflow
작업 가능여부 확인

8 I Scheduler Overview : Workflow
PM 신호처리

9 I Scheduler Overview : 로봇 5개 단위 동작
A: Port -> Arm , Get B: Arm -> Stage , Put C: State -> Arm , Get D: Arm -> Port , Put *Prep *Loading Stop *로봇 단위 동작별 실시간 경로 계산 CM1 CM2 CM3 CM4 A D TM B C PM1 PM2

10 I Scheduler Overview : Framework 활용
Scheduler에서 PM Tag Data Access ① PM Tag Data Read ② PM Tag Data Write

11 I Scheduler Overview : Framework 활용
Scheduler에서 TM Slot Data Access ① TM Arm Glass 유무 체크 ② TM Arm Glass Step 체크 ③ TM Arm Glass Step 완료 체크 및 기타 체크 ④ TM Arm 상태 체크

12 I Scheduler Overview : Framework 활용
Scheduler에서 CM Data Access ① CM Port Type 및 상태 Check ② Ready List(JobItem)를 통한 CM Data Access

13 II Scheduler Class :ReadyList
CTCTask.cs ReadyList : Member ◈ 생성 - Host로 부터 JobStart Message(S2F41 : RCMD : 1)를 받을때 - Operator에 의해서 UI(Panel)에서 [Manual Start] 클릭시 - Unload Type의 Index가 설비로 부터 Sandable 신호를 받을때 PanelContentUserControl.cs GUITask.cs CTCTask.cs Manual Start : Button Click JobStartDoAction (moduleID, STIFList) ProcessCTCMessage() HostJobStart() DoIndexStartReqAction() ManualStart (moduleID, STIFList, PanelList) CreateReadyList() Host : JobStart StartWorkflow() DoUnloadJobStartReqAction()

14 II Scheduler Class :클래스 구조
상속 관계 수평 관계 class SchedulerBase Scheduler_CoreEngine.cs Scheduler_PathChecker.cs class StandardScheduler : SchedulerBase Scheduler_SlotChecker.cs Scheduler_StepManager.cs

15 II Scheduler Class :클래스 구조
OpenSG Framework class SchedulerBase class StandardScheduler : SchedulerBase 업체별 확장 class SFAScheduler : StandardScheduler class ToptecScheduler : StandardScheduler class RorzeScheduler : StandardScheduler class EverScheduler : StandardScheduler

16 II Scheduler Class :클래스 구조
Scheduler 확장(Method Override) Override 설명 ◈ 최상의 class SchedulerBase의 FindSlotToPorcess ()는 가상함수로 선언됨. ◈ 업체에서 확장시킨 class가 없는 경우 INDEX 프로그램이 진행 중 해당 함수를 호출 할 경우 최상위 class인 SchedulerBase를 상속받은 중간 class StandardScheduler의 FindSlotToPorcess()이 호출 됨. ◈ 업체에서 확장한 최하위 class SFAScheduler가 추가 될 경우 중간 class인 StandardScheduler의 FindSlotToProcess()는 가려지게 되고 업체에서 확장된 최하의 class인 SFAScheduler의 FindSlotToProcess()가 호출됨. class SchedulerBase public virtual JobItem FindSlotToProcess(PMModuleBase PM) class StandardScheduler public override JobItem FindSlotToProcess(PMModuleBase PM) class SchedulerBase public virtual JobItem FindSlotToProcess(PMModuleBase PM) class StandardScheduler public override JobItem FindSlotToProcess(PMModuleBase PM) class SFAScheduler public override JobItem FindSlotToProcess(PMModuleBase PM)

17 II Scheduler Class :Scheduler_CoreEngine.cs
// 메뉴얼작업 public virtual void DoRobotActionManualStep(RobotCmd Cmd, ModuleBase Module, eManualGlassMoveTypeList glassMoveType, bool bCheckOnly) { } public virtual void OnRobotActionManual(ModuleBase FromModule, int FromSlot, ModuleBase ToModule, int ToSlot, bool useUpperArm, eManualGlassMoveTypeList glassMoveType){ } public virtual void OnRobotActionPrepManual(ModuleBase ToModule, int ToSlot, bool useUpperArm, bool getAction){ } // 로봇 동작 수행- 메인 public virtual void OnRobotAction(){} public virtual void OnProcessPrep() { } public virtual void OnProcessCM() { } public virtual void OnProcessPM() { } public virtual void OnProcessBackToCM() { } // 로봇 동작 - 명령 Send  public virtual ResultStep SendRobotAction(RobotCmd cmd) {} // 로봇 동작 완료 대기 상태 public virtual ResultStep WaitRobotActionDone(RobotCmd cmd) {} // 로봇 동작 시작 public virtual void OnRobotActionStarted(RobotCmd cmd){} // 로봇 동작 완료 public virtual void OnRobotActionFinished(RobotCmd cmd){} // 로봇 Arm의 Panel 상태 업데이트 public virtual void OnRobotPanelUpdated(RobotPanelUpdatedArgs UpdatedArgs){} // PIO 데이터 검증 public virtual void SetPanelDataRefuseInfo(PanelData PanelItem) { } // Glass Cancel public virtual void CancelGlass(JobItem jobItem){}

18 II Scheduler Class :Scheduler_CoreEngine.cs
클래스 주요 구성

19 II Scheduler Class : Scheduler_SlotChecker.cs
⑴ FindSlotToProcess Scheduler_PathChecker.cs Scheduler_SlotChecker.cs CheckCMGet(PM) FindSlotToProcess(PMModuleBase PM) CheckCMGetInterlock(Item) FindSlotToProcess(PM) CheckPMStep(PM) JobItem ◈ CM에서 Glass를 Get 하기 위한 Slot(JobItem) 찾아 Return - ReadyList(JobItemList)에서 Get 하기위한 Slot탐색 - CM Get 가능 여부 체크 - Slot내 Glass의 FlowStep 체크

20 II Scheduler Class : Scheduler_SlotChecker.cs
⑵ FindOuputToReturn Scheduler_StepManager.cs Scheduler_SlotChecker.cs GetStep10_ReadData() FindOuputToReturn (PMModuleBase PM) FindOuputToReturn (CurrentPM) Slot ◈ 설비에서 배출되는 Glass가 적재 될 Port의 Slot Return - 배출되는 Glass의 Judgement, FlowID를 읽어서 UI에서 설정된 PortMode검색 PortMode(X) => OPCall, PortMode(O) => PortMode로 운영되고 있는 CM(Port)및 Slot 유무체크 CM(Port)(X) => Output & Wait Port중 Sorting Rule정보를 설정 및 Panel정보를 설정 Slot return

21 II Scheduler Class : Scheduler_SlotChecker.cs
⑶ ClearFUPCount, ProcessUnloaderFUP Rule CMModuleBase.cs Scheduler_SlotChecker.cs PortState 변경시 ClearFUPCount(this) ClearFUPCount(CMModuleBase CM) ProcessUnloaderFUPRule (this.PortMode) ProcessUnloaderFUPRule (PortModeItem PortModeitem) ◈ ClearFUPCount - CM의 PortState이 변경되는 시점에 Output Port에 대해서 설정 - PortState이 Wait, Complete로 변경되는 시점에 호출 ◈ ProcessUnloaderFUPRule - CM의 PortState이 변경되는 시점에 Output Port에 대해서 (FUP) 강제 배출 룰 처리 - PortModeItem의 FUP 설정정보와 동일한 Port(Output) & Busy & DumpMode.BPCC > BPSC 보다 클 경우 해당 Port를 강제로 Complete 처리해서 배출

22 II Scheduler Class : Scheduler_SlotChecker.cs
⑷ UpdateFUPCount PanelData.cs Scheduler_SlotChecker.cs PanelState 변경시 UpdateFUPCount(CMModuleBase CM) UpdateFUPCount(CM) ◈ PanelData의 PanelState이 변경되는 시점에 호출됨 - Output Port & Busy & PortMode가 동일한 Port에 대해서 배출을 위한 Count정보를 Update한다. 요청된 CM의 정보는 초기화하고, 다른 Port는 Count는 증가 한다.

23 II Scheduler Class : Scheduler_PathChecker.cs
⑴ CM에서 Get 할 수 있는 조건 CM ① CM Glass Get 조건 PM 작업용 CM Ready List 존재 CM Port Pause 상태 아님 L/U Arm Glass 없음 PM Receive/Send Able On PM Receive/Send PreAction On PM Loading Stop Off 사양에 의해 UArm Get도 가능 TM L U PM1 PM2

24 II Scheduler Class : Scheduler_PathChecker.cs
⑵ CM → Arm Sequence Method 설명 ◈ CalcCMGetState - 내역 : PIO에 의한 CM Get - L/U Arm Glass 없음 - PM H/S 가능 신호 체크 (Receive Able/PreAction On) (Send Able/PreAction On) - PM Loading Stop Off ◈ CalcDefaultCMGetState - 내역 : 미리 대기에 의한 CM Get ◈ FindSlotToProcess - 내역 : 전체 ReadyList를 검사 - Port의 Get 작업 가능여부 체크 (Port, Slot, Glass 유무 등의 상태) - ReadyList의 Step 체크 (해당 Glass의 작업 범위 체크) ◈ GenerateCMGetCmd - CM Get Command 생성 SchedulerBase.cs Scheduler_PathChecker.cs CheckCMGet() CheckCMGet(CurrentPM) CheckCMGet(PMModuleBase PM) CalcCMGetState(PM) CalcDefaultCMGetState(PM) FindSlotToProcess(PM) GenerateCMGetCmd(_item)

25 II Scheduler Class : Scheduler_PathChecker.cs
⑶ PM에 Put 할 수 있는 조건 CM ③ PM1 Glass Put 조건 LArm Glass 유 UArm Glass 유무 관계 없음 PM1 Receive Able On PM1 Loading Stop Off LArm Glass 진행 모듈이 PM1 TM L ⑧ PM2 Glass Put 조건 LArm Glass 유 UArm Glass 유무 관계 없음 PM2 Receive Able On PM2 Loading Stop Off LArm Glass 진행 모듈이 PM2 PM1 PM2

26 II Scheduler Class : Scheduler_PathChecker.cs
⑷ Arm → PM Sequence SchedulerBase.cs Scheduler_PathChecker.cs Method 설명 ◈ CalcPMPutState - 내역 : PIO에 의한 PM Put - L/U Arm 중 Glass 한 장은 있음 - PM Receive PIO 체크 (Receive Able/PreAction On) - PM Loading Stop Off - Arm Glass Step 체크 (해당 Glass의 작업 범위 체크) ◈ GeneratePMPutCmd - 내역 : PM Put Command 생성 CheckPMPut() CheckPMPut(CurrentPM) CheckPMPut(PMModuleBase PM) CalcPMPutState(PM) GeneratePMPutCmd()

27 II Scheduler Class : Scheduler_PathChecker.cs
⑸ PM에서 Get 할 수 있는 조건 CM ② PM1 Glass Get 조건 UArm Glass 무 PM1 Send Able On LArm Glass 유무에 따른 조건 a. Glass가 없다면 PM1 Get 진행 b. Glass가 있다면 - PM1로 갈 Glass라면 PM1 Get 진행 - PM2로 갈 Glass라면 Get 안함 - CM으로 갈 Glass라면 Get 안함 TM U ⑦ PM2 Glass Get 조건(병렬) UArm Glass 무 PM2 Send Able On LArm Glass 유무에 따른 조건 a. Glass가 없다면 PM2 Get 진행 b. Glass가 있다면 - PM2로 갈 Glass라면 PM2 Get 진행 - PM1로 갈 Glass라면 Get 안함 - CM으로 갈 Glass라면 Get 안함 PM1 PM2

28 II Scheduler Class : Scheduler_PathChecker.cs
⑹ PM → Arm Sequence SchedulerBase.cs Scheduler_PathChecker.cs Method 설명 ◈ CalcPMExState - 내역 : PIO에 의한 PM Exchange - L/U Arm 중 Glass 한 장만 있음 - PM Send PIO 체크 (Send Able/PreAction On) - PM은 Exchange 사용으로 설정됨. - Arm Glass Step 체크 (해당 Glass의 작업 범위 체크) ◈ CalcPMGetState - 내역 : PIO에 의한 PM Get - L/U Arm에 Glass가 없거나 한 장 있음 ◈ GeneratePMGetCmd - 내역 : PM Get Command 생성 CheckPMGet() CheckPMGet(CurrentPM) CheckPMGet(PMModuleBase PM) CalcPMExState(PM) CalcPMGetState(PM) GeneratePMGetCmd()

29 II Scheduler Class : Scheduler_PathChecker.cs
⑺ CM에 Put 할 수 있는 조건 CM ⑨ CM Glass Put 조건(병렬) UArm Glass 있음 UArm의 Glass 다음 Step이 없음 LArm Glass 유무에 따른 조건 a. Glass가 없다면 CM Put진행 b. Glass가 있다면 - PM1로 갈 Glass라면 PM1 Put 대기 - PM2로 갈 Glass라면 PM2 Put 대기 - CM으로 갈 Glass 일 경우에 조건 ⓐ L_Stop인 경우 U/LArm 모두 Put ⓑ BackMode인 경우 UArm만 Put TM TM U U PM1 PM2

30 II Scheduler Class : Scheduler_PathChecker.cs
⑻ Arm → CM Sequence SchedulerBase.cs Scheduler_PathChecker.cs Method 설명 ◈ CalcCMPutState - 내역 : Done Glass CM Put - L/U Arm 한 장 이상의 Glass있음 - Glass가 한 장 있는 경우 해당 Glass의 Step 완료 체크 - Glass가 두 장 있는 경우 해당 Glass의 Step 완료 체크 및 설비의 Loading Stop 상태 체크 ◈ CheckCMPutInterlock - 내역 : CM Put 가능 여부 체크 - Port, Slot, Glass 유무 등 CM Put 가능 상태를 체크 ◈ GenerateCMPutCmd - 내역 : CM Get Command 생성 CheckCMPut() CheckCMPut(CurrentPM) CheckCMPut(PMModuleBase PM) CalcCMPutState(PM) CheckCMPutInterlock() GenerateCMPutCmd()

31 II Scheduler Class : Scheduler_StepManager.cs
⑴ Get Step Method GetStep00_Start() GetRecovery_Wait_TMAlarmClear() GetStep10_ReadData() GetRecovery00_Start() GetStep20_Wait_SendStart_On() GetRecovery10_ActiveResume() GetStep30_DoRobotAction() GetRecovery20_ActiveInitial() GetStep40_Wait_RobotAction_Done() GetRecovery20_HSSkipInitial() GetStep50_Wait_SendComplete_On() GetRecovery30_PassiveResume() GetStep60_Wait_SendComplete_Off() GetRecovery40_PassiveInitial() GetWait_ImmPauseReq_Off() GetDataRefuse_Wait_RefuseOrSendStart_Off() Get Normal Step Get Abnormal Step

32 II Scheduler Class : Scheduler_StepManager.cs
① Get Normal Step Method GetStep00_Start() Get H/S 작업 시작 GetStep10_ReadData() EQ Send Data Read GetStep20_Wait_SendStart_On() 설비 Send Start 대기 GetStep30_DoRobotAction() Contact Point Check 및 Get 또는 Exchange 명령 Robot 전송 GetStep40_Wait_RobotAction_Done() Robot Request 명령에 대한 완료 Reply 대기 GetStep50_Wait_SendComplete_On() EQ Send Complete On 대기 GetStep60_Wait_SendComplete_Off() EQ Send PIO All Off 대기 GetWait_ImmPauseReq_Off() EQ Get 작업중 발생한 Imm'pause Request에 대한 Off 대기 GetDataRefuse_Wait_RefuseOrSendStart_Off() EQ 배출 Glass의 이상 Data에 대한 처리를 대기

33 II Scheduler Class : Scheduler_StepManager.cs
② Get Abnormal Step Method GetRecovery_Wait_TMAlarmClear() Robot Alarm 발생에 대한 조치를 대기 GetRecovery00_Start() Get 작업에 대한 Recovery 대기 GetRecovery10_ActiveResume() Active Resume에 대한 Reply 대기(INDEX Request ⇒ EQ Reply) GetRecovery20_ActiveInitial() Active Initial에 대한 Reply대기(INDEX Initial) GetRecovery20_HSSkipInitial() Initial을 INDEX, EQ간에 진행하지 않고 INDEX 단독으로 진행(CF Only) GetRecovery30_PassiveResume() Passive Resume에 대한 Reply 대기(EQ Request ⇒ INDEX Reply) GetRecovery40_PassiveInitial() Passive Initial 대기

34 II Scheduler Class : Scheduler_StepManager.cs
⑵ Put Step Method PutStep00_Start() PutRecovery_Wait_TMAlarmClear() PutStep10_WriteData() PutRecovery00_Start() PutStep20_Wait_RcvStart_On() PutRecovery10_ActiveResume() PutStep30_DoRobotAction() PutRecovery20_ActiveInitial() PutStep40_Wait_RobotAction_Done() PutRecovery20_HSSkipInitial() PutStep50_Wait_RcvComplete_On() PutRecovery30_PassiveResume() PutStep60_Wait_RcvComplete_Off() PutRecovery40_PassiveInitial() PutWait_ImmPauseReq_Off() PutDataRefuse_CheckDataUpdateFlag() PutDataRefuse_Wait_Refuse_Off() Put Normal Step Put Abnormal Step

35 II Scheduler Class : Scheduler_StepManager.cs
① Put Normal Step Method PutStep00_Start() Put H/S 시작 PutStep10_WriteData() INDEX Put Glass Data Write PutStep20_Wait_RcvStart_On() 설비의 Receive Start On 대기 PutStep30_DoRobotAction() Contact Point Check 및 Put 명령 Robot 전송 PutStep40_Wait_RobotAction_Done() Robot Request 명령에 대한 완료 Reply 대기 PutStep50_Wait_RcvComplete_On() EQ Receive Complete On 대기 PutStep60_Wait_RcvComplete_Off() EQ Receive PIO All Off 대기 PutWait_ImmPauseReq_Off() EQ Put 작업중 발생한 Imm'pause Request에 대한 Off 대기 PutDataRefuse_CheckDataUpdateFlag() INDEX 투입 Glass의 이상 Data에 대한 처리를 대기 PutDataRefuse_Wait_Refuse_Off() EQ의 Receive Refuse Bit Off 대기

36 II Scheduler Class : Scheduler_StepManager.cs
② Put Abnormal Step Method PutRecovery_Wait_TMAlarmClear() Robot Alarm 발생에 대한 조치를 대기 PutRecovery00_Start() Put 작업에 대한 Recovery 대기 PutRecovery10_ActiveResume() Active Resume에 대한 Reply 대기(INDEX Request ⇒ EQ Reply) PutRecovery20_ActiveInitial() Active Initial에 대한 Reply대기(INDEX Initial) PutRecovery20_HSSkipInitial() Initial을 INDEX, EQ간에 진행하지 않고 INDEX 단독으로 진행(CF Only) PutRecovery30_PassiveResume() Passive Resume에 대한 Reply 대기(EQ Request ⇒ INDEX Reply) PutRecovery40_PassiveInitial() Passive Initial 대기

37 II Scheduler Class : Config 구성
Scheduler Config 구성 <Scheduler SchedulerLStopBackMode="true" SchedulerWaitPosition="PM1" SchedulerWaitWithPanel="true" SchedulerCount2Enable="false" SchedulerHSInitialSkipEnable="true" assemblyName="CTCFx.Scheduler.SFA.dll" typeName="CTCFx.Scheduler.SFA.SFAScheduler" > </Scheduler> - SchedulerLStopBackMode : Loading Stop시 Back Mode 여부 설정(true : Back 함, false : Back 안 함) - SchedulerWaitPosition : Robot의 Default Position 설정 (Ex :"PM1", "none") - SchedulerWaitWithPanel : Wait Position 이동 시 Glass 유무를 설정(true : Glass 유 대기, false : Glass 무 대기) - SchedulerCount2Enable : Count2 설정에 의한 연속 반송 여부 체크(true : 사용 함, false : 사용 안 함) - SchedulerHSInitialSkipEnable : H/S Initial 시 EQ와 연동 여부 설정(true : 단독 진행, false : 연동 진행) - assemblyName :Main Scheduler에 자식 Class로 사용될 DLL 이름 - typeName : Main Scheduler에 자식 Class의 Namespace

38 감사합니다.


Download ppt "교육 내용 OMRON SYSMAC Gateway(SGW) 설치 INDEX 제어 프로그램 설치"

Similar presentations


Ads by Google