PROC IndexToStn1() //檢測變位機狀態 并設置要運行到的角度位置 并對不同的GetNextPartAdv返回值情況 進行處理 VAR bool bActive;VAR jointtarget jtCurrent; //聲明一個位置變量IF (NOT bInterchCalib1) CalibIntch1; ! reset inpos signals used in vcReset soLS_1_INPOS;Reset soLS_2_INPOS; //復位變位機的輸出bActive:=IsMechUnitActive(INTERCH); //是否變位機激活IF (NOT bActive) ActInterch1; //激活變位機jtCurrent:=CJointT(); // 得到當前角度! get parts for stationsGetNextPartAdv 1,padvTmp1\statusCode:=retCode1;//得到存儲的partdata類型的數據的值, 并將GetNextPartAdv 返回狀態賦值給retCode1GetNextPartAdv 2,padvTmp2\statusCode:=retCode2;IF (retCode1=0) THENjtCurrent.extax.eax_e:=padvTmp1.procAngle.eax_e; //如果返回成功,將partdata類型數據的eax_e的值賦值給當前jtCurrentELSEjtCurrent.extax.eax_e:=0; //否則賦值0 并進行處理text_res_no:=TextResTabGet("CellText");sHeader:=TextResGet(text_res_no,218);IF (retcode1=-1) THENsMsgArr{1}:=TextResGet(text_res_no,202)+" 1";sMsgArr{2}:=TextResGet(text_res_no,214);sMsgArr{3}:="";sMsgArr{4}:="";ErrWrite\W,sHeader,sMsgArr{1}\RL2:=sMsgArr{2}\RL3:=sMsgArr{3}\RL4:=sMsgArr{4};ELSEIF (retcode1=-2) THENsMsgArr{1}:=TextResGet(text_res_no,204)+" 1";sMsgArr{2}:=TextResGet(text_res_no,205)+" 1";sMsgArr{3}:=TextResGet(text_res_no,214);sMsgArr{4}:="";ErrWrite\W,sHeader,sMsgArr{1}\RL2:=sMsgArr{2}\RL3:=sMsgArr{3}\RL4:=sMsgArr{4};ENDIFENDIFIF (retCode2=0) THENjtCurrent.extax.eax_f:=padvTmp2.loadAngle.eax_f;ELSEjtCurrent.extax.eax_f:=0;text_res_no:=TextResTabGet("CellText");sHeader:=TextResGet(text_res_no,218);IF (retcode2=-1) THENsMsgArr{1}:=TextResGet(text_res_no,202)+" 2";sMsgArr{2}:=TextResGet(text_res_no,213);sMsgArr{3}:="";sMsgArr{4}:="";ErrWrite\W,sHeader,sMsgArr{1}\RL2:=sMsgArr{2}\RL3:=sMsgArr{3}\RL4:=sMsgArr{4};ELSEIF (retcode2=-2) THENsMsgArr{1}:=TextResGet(text_res_no,204)+" 2";sMsgArr{2}:=TextResGet(text_res_no,205)+" 2";sMsgArr{3}:=TextResGet(text_res_no,213);sMsgArr{4}:="";ErrWrite\W,sHeader,sMsgArr{1}\RL2:=sMsgArr{2}\RL3:=sMsgArr{3}\RL4:=sMsgArr{4};ENDIFENDIF! apply interchange positionjtCurrent.extax.eax_d:=nInterchStn1; //將存儲的變位機水平軸位置賦值給當前IF (TaskRunRob()) THEN //判定程序運行于哪個平臺MoveAbsJ jtCurrent,sdInterch1,fine,tool0; ELSE%"MoveExtJ"% jtCurrent,sdInterch1,fine; //如果是外部軸 則運動到指定位置ENDIFIF (NOT RobOS()) Set soLS_1_INPOS; //并設置相應的變位機狀態給PLCWaitTime nTorqueTime; IF (NOT bActive) DeactInterch1; //如果在運行這段程序之前 變位機沒有激活 則 運行這段程序之后也保持運行之前的狀態 ENDPROC