版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
------------------------------------------------------------------------MCS運(yùn)動(dòng)控制函式庫(kù)范例手冊(cè)MCS運(yùn)動(dòng)控制函式庫(kù)范例手冊(cè)MCS運(yùn)動(dòng)控制函式庫(kù)范例手冊(cè)(適用于運(yùn)動(dòng)控制函式庫(kù)50版或以上版本)版本:.5.0日期:21.5CS運(yùn)控制式庫(kù)例手冊(cè)目 錄1.運(yùn)動(dòng)控函式庫(kù)范例內(nèi)容說明........................................................................................12.Group參數(shù)與機(jī)構(gòu)、編碼器參數(shù)設(shè)定..........................................................................23.插值時(shí)間調(diào)整...............................................................................................................34.啟動(dòng)與結(jié)束運(yùn)功控制函式............................................................................................45.系統(tǒng)狀態(tài)設(shè)定...............................................................................................................76.讀取運(yùn)動(dòng)速度、坐標(biāo)與運(yùn)動(dòng)命令資訊.......................................................................107.運(yùn)動(dòng)狀態(tài)檢視.............................................................................................................128.加、減速段使用時(shí)間設(shè)定..........................................................................................149.進(jìn)給速度設(shè)定.............................................................................................................1510.直線、圓弧、圓、螺線運(yùn)動(dòng)(一般運(yùn)動(dòng)).............................................................16.點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)...............................................................................................................1912.OG運(yùn)動(dòng)....................................................................................................................2113.定位控制...................................................................................................................2214.原點(diǎn)復(fù)歸運(yùn)動(dòng)...........................................................................................................2415.運(yùn)動(dòng)暫停、持續(xù)、棄值............................................................................................2616.強(qiáng)迫延遲執(zhí)行運(yùn)功命令............................................................................................2717.速度強(qiáng)制控制...........................................................................................................2818.軟件過行程檢查與硬件極限開關(guān)檢查.....................................................................2919.連續(xù)運(yùn)動(dòng)功能設(shè)定...................................................................................................3220讀取與清除錯(cuò)誤狀態(tài)..................................................................................................3321.齒輪齒隙與間隙補(bǔ)償................................................................................................3422.如何完成6軸連續(xù)運(yùn)動(dòng)............................................................................................3523.編碼器(Eodr計(jì)數(shù)值觸發(fā)中斷服務(wù)函式功能.....................................................39iCS運(yùn)控制式庫(kù)例手冊(cè)24.門鎖(t)編碼器計(jì)數(shù)值與INDEX訊號(hào)觸發(fā)中斷服務(wù)函式功能........................4125.近端節(jié)點(diǎn)(olI/O)訊號(hào)控制與觸發(fā)中斷服務(wù)函式功能........................................4326.計(jì)時(shí)器計(jì)時(shí)終了觸發(fā)中斷服務(wù)函式功能.................................................................4827.thDog功能.........................................................................................................5028.設(shè)定與讀取oteI/O輸出、入接點(diǎn)訊號(hào)............................................................5229.讀取oteI/O訊號(hào)傳輸狀態(tài)................................................................................5330.oteI/O輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式..........................................................5531.oteI/O資料傳輸錯(cuò)誤觸發(fā)中斷服務(wù)函式..........................................................5732.規(guī)劃DAC類比電壓輸出.........................................................................................5933.ADC電壓輸入單次轉(zhuǎn)換............................................................................................6034.ADC電壓輸入連續(xù)轉(zhuǎn)換............................................................................................6235.ADC比較器中斷功能控制........................................................................................6436.ADC標(biāo)簽annl觸發(fā)中斷服務(wù)函式功能.............................................................67iiCS運(yùn)控制式庫(kù)例手冊(cè)1.運(yùn)動(dòng)控制函式庫(kù)范例內(nèi)容說明安裝光盤中所提供的范例皆為osoeode類型使用者可將這些范例整合到自己的應(yīng)用程序中。L最多能支持12張TC運(yùn)動(dòng)控制卡與72個(gè)group,但為了增加這些范例的可讀性,大部分的范例只使用1張運(yùn)動(dòng)控制卡(運(yùn)動(dòng)控制卡編號(hào)使用D_INDEX來(lái)表示與1個(gè)group(goup編號(hào)使用g_nGoupndx來(lái)表示)。1CS運(yùn)控制式庫(kù)例手冊(cè)2.rop參數(shù)與機(jī)構(gòu)、編碼器參數(shù)設(shè)定相關(guān)函式_StSsxSpd()_GtsaxSpd()_StPr()_GtPr()_StEodroig()_CoAlGroup()_CrtGroup)_UpdtPr()范例程序ItSs.pp內(nèi)容說明本范例說明group機(jī)構(gòu)與編碼器參數(shù)的設(shè)定過程先使用C_StsxSped()設(shè)定進(jìn)給速度的上限接著使用_StPr()與C_Stodroig()設(shè)定各軸的機(jī)構(gòu)與編碼器參數(shù),最后再使用C_rtGroup(建立一新的group。有關(guān)group使用方式與機(jī)構(gòu)參數(shù)更詳細(xì)的說明請(qǐng)參考”CS運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)。2CS運(yùn)控制式庫(kù)例手冊(cè)3.插值時(shí)間調(diào)整相關(guān)函式_IntSst()_GturusStokout()范例程序hkHStok.pp內(nèi)容說明較小的插值時(shí)間擁有較佳的運(yùn)動(dòng)控制性能,插值時(shí)間可設(shè)定的最小值為1s但并非所有PC皆適用1s的插值時(shí)間,這與PC的性能有關(guān)。為了獲得最適當(dāng)?shù)牟逯禃r(shí)間,可以使用_GturusStokout(讀取TC運(yùn)動(dòng)控制卡上的puse庫(kù)存筆數(shù)在持續(xù)運(yùn)動(dòng)過程中puse庫(kù)存筆數(shù)必須大于或等于60,才能保證穩(wěn)定的運(yùn)動(dòng)性能若庫(kù)存筆數(shù)出現(xiàn)等于0的現(xiàn)象則必須延長(zhǎng)插值時(shí)間插值時(shí)間為_IntSst()所需的參數(shù)之一)另外若人機(jī)操作畫面的顯示出現(xiàn)遲滯的現(xiàn)象也必須延長(zhǎng)插值時(shí)間。3CS運(yùn)控制式庫(kù)例手冊(cè)4.啟動(dòng)與結(jié)束運(yùn)動(dòng)控制函式庫(kù)相關(guān)函式_IntSst()_CoSst()_GtotoSttu()范例程序ItSs.pp內(nèi)容說明本范例說明在完成group參數(shù)與機(jī)構(gòu)參數(shù)的設(shè)定后,使用_IntSst()啟動(dòng)運(yùn)動(dòng)控制函式庫(kù),所需的參數(shù)請(qǐng)參考”MCS運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)。下面說明范例的內(nèi)容。Stp1:給定控制卡硬件參數(shù)SYS_AD_ONIG trdoig[AX_CAD_NUM];..trdoig[AD_INDEX].wrdddrss=ASE_DDRESStrdoig[AD_INDEX].wrdpe =wrdpe;trdoig[AD_INDEX].wIQ_No =IQ_NO;Stp2:?jiǎn)?dòng)運(yùn)動(dòng)控制函式庫(kù)Rt=C_ItSst(INTPOON_TE,// 插值補(bǔ)間時(shí)間設(shè)為10strdoig, // 硬件參數(shù)1); // 只使用1張TC卡4CS運(yùn)控制式庫(kù)例手冊(cè)if(t=NO_E)// 啟動(dòng)運(yùn)動(dòng)控制函式庫(kù)成功{/*使用者可于此執(zhí)行其它初始化的動(dòng)作例如設(shè)定位移單位進(jìn)給速度。*/}Stp3:_CoSst()被使用來(lái)關(guān)閉CL與驅(qū)動(dòng)程序函式庫(kù)兩種方式可用來(lái)關(guān)閉系統(tǒng):i. 全部運(yùn)動(dòng)命令執(zhí)行完成才關(guān)閉系統(tǒng)需檢查系統(tǒng)是否處于停止?fàn)顟B(tài),C_GtotoSttu()的函式傳回值若為GS_SO,則系統(tǒng)處于停止?fàn)顟B(tài)。wle((rt=C_GtotoSttu(g_Groupdx))=GS_SOP){_eDea(1); // Sp1s// 因使用wle命令,為避免系統(tǒng)死鎖,影響系統(tǒng)的操作// 需呼叫C_eDay(釋放PU的使用權(quán)。}_CoSst(); // 結(jié)束CL與驅(qū)動(dòng)程序函式庫(kù)5CS運(yùn)控制式庫(kù)例手冊(cè)ii. 直接結(jié)束運(yùn)動(dòng)控制庫(kù)只需呼叫_CoSst()即可,系統(tǒng)將立刻停止運(yùn)作。6CS運(yùn)控制式庫(kù)例手冊(cè)5.系統(tǒng)狀態(tài)設(shè)定相關(guān)函式_StUt()_GtUt()_Stbsout()_StIrs()_Gt_oordp()_Stcp()_Gtp()_StDp()_GtDp()_StPtp()_Gttp()_StPtPDpe()_GttPDp()_StSroO()_StSroO()_EnbePod()_DsbePod()范例程序StSttu.pp內(nèi)容說明此范例說明如何改變系統(tǒng)狀態(tài)未特別設(shè)定系統(tǒng)狀態(tài)系統(tǒng)將使用預(yù)設(shè)狀態(tài)運(yùn)作,7CS運(yùn)控制式庫(kù)例手冊(cè)系統(tǒng)的預(yù)設(shè)狀態(tài)可參閱”MCS運(yùn)動(dòng)控制函式庫(kù)參考手冊(cè)。下面說明函式的內(nèi)容。_StUt(UNIT_,g_Groupdex); // 使用m為位移量單位_Stbsout(g_GroupIdx); // 使用絕對(duì)坐標(biāo)型態(tài)表示各軸位置// 使用T型曲線為直線、圓弧、圓運(yùn)動(dòng)的加速型式_Stcp(‘’,g_GroupIdx);// 使用S’型曲線為直線、圓弧、圓運(yùn)動(dòng)的減速型式_StDp(‘S’,g_GroupIdx);// 使用T型曲線為點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)的加速型式_StPtp('T',T','T,T','T,T',g_Groupdex);// 使用S’型曲線為點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)的減速型式_StPtPDpe(S','S,'S,'S,'S,S',g_GroupIdx);_StSroO(0,AD_INDEX);// 啟動(dòng)第0軸伺服系統(tǒng)// 開啟Potondy輸出接點(diǎn)功能_EnbePod(ARD_INDEX);啟動(dòng)伺服系統(tǒng)需呼叫_StSroO(),系統(tǒng)才能正常運(yùn)作;是否需呼叫8CS運(yùn)控制式庫(kù)例手冊(cè)_EnbePod()視實(shí)際情況而定。9CS運(yùn)控制式庫(kù)例手冊(cè)6.讀取運(yùn)動(dòng)速度、坐標(biāo)與運(yùn)動(dòng)命令信息相關(guān)函式_GturdSpd()_GtdSpd()_Gturo()_GtusPo()_Gturoand()_Gtoandout()范例程序Gtttu.pp內(nèi)容說明C_GturdSpd()用來(lái)讀取目前的進(jìn)給速度C_GtSpd(則可以用來(lái)讀取目前各軸的進(jìn)給速度。_Geturo()用來(lái)讀取各軸目前位置之直角坐標(biāo)值,_GtusPo(則用來(lái)讀取各軸目前位置之馬達(dá)坐標(biāo)值或稱為puse坐標(biāo)值)。直角坐標(biāo)值與馬達(dá)坐標(biāo)值可以利用機(jī)構(gòu)參數(shù)換算而得,也就是馬達(dá)坐標(biāo)值=直角坐標(biāo)值×(dGrto/dPth)×dwPPR。使用C_GturPo()與C_GtPuPo()所讀取之各軸坐標(biāo)值,只有在該軸有實(shí)際對(duì)應(yīng)至硬件輸出hnnl時(shí)才有意義。下面為使用范例:Stp1:宣告變量doue durPoX,durPo,durPo,durPoU,durPo,durPo,durSpd;doue durSpdX, durSpd, durSpdZ, durSpdU, durSpd,durSpd;10CS運(yùn)控制式庫(kù)例手冊(cè)og urPusX,CurPue,CurPue,urPusU,CurPus,CurPue;Stp2:讀取目前的進(jìn)給速度durSpd=_GeturdSpd(g_nGroupIdx);Stp3:讀取目前各軸的進(jìn)給速度_Gtpd( dCurSpdX,dCurSpd,dCurSpdZ,dCurSpdU,dCurSpd,dCurSpd,g_GroupIdx);Stp4:讀取各軸目前位置之直角坐標(biāo)值_Gturo(dCurPoX,dCurPo,dCurPo,dCurPoU,dCurPo,dCurPo,g_GroupIdx);Stp5:讀取各軸目前位置之馬達(dá)坐標(biāo)值_GtusPo(CurPusX,CurPus,CurPue,CurPusU,CurPue,CurPus,g_GroupIdx);使用_Gturoand()可以獲得目前正在執(zhí)行的運(yùn)動(dòng)命令相關(guān)的信息,包括運(yùn)動(dòng)命令類型、運(yùn)動(dòng)命令編碼、進(jìn)給速度、目的點(diǎn)位置坐標(biāo)等。使用_Gtoandout()可以獲得運(yùn)動(dòng)命令緩沖區(qū)中庫(kù)存且尚未執(zhí)行的運(yùn)動(dòng)命令之?dāng)?shù)目。1CS運(yùn)控制式庫(kù)例手冊(cè)7.運(yùn)動(dòng)狀態(tài)檢視相關(guān)函式_GtotoSttu()范例程序otonished.pp內(nèi)容說明利用C_GtotoSttu()的函式傳回值可檢視機(jī)器目前的運(yùn)動(dòng)狀態(tài)。若函式傳回值為GS_UNNING,表示機(jī)器處于運(yùn)動(dòng)狀態(tài);若函式傳回值為GS_SOP,表示機(jī)器處于停止?fàn)顟B(tài),運(yùn)動(dòng)命令緩沖區(qū)中已無(wú)命令;若呼叫C_Hodoto()成功此時(shí)_GtotoSttu(的函式傳回值為GS_HOLD表示機(jī)器處于暫停狀態(tài),仍有運(yùn)動(dòng)命令尚未執(zhí)行完成;若C_GtotoSttu()的函式傳回值為GS_DEYNG,表示因呼叫C_DaMoto(),系統(tǒng)目前處于運(yùn)動(dòng)延遲狀態(tài)。下面為使用范例:Stp1:宣告讀取運(yùn)動(dòng)狀態(tài)參數(shù)ntSttu;Stp2:?jiǎn)?dòng)伺服_StSroO(0,AD_INDEX);_StSroO(1,AD_INDEX);Stp3:直線運(yùn)動(dòng),后執(zhí)行運(yùn)動(dòng)狀態(tài)讀取_Lne(20,20,0,0,0,0,g_GroupIdx);12CS運(yùn)控制式庫(kù)例手冊(cè)Stp4:等待_Lne()執(zhí)行完,產(chǎn)生后GS_SOP后方跳出循環(huán),再繼續(xù)執(zhí)行下面的命令wle(_GetotoSttu(g_GroupIdx)=GS_SOP;{…….}Stp5:延遲運(yùn)動(dòng)命令,此時(shí)運(yùn)動(dòng)狀態(tài)為GS_DEING_DaMoto(10000);//dy10000sStp6:再次運(yùn)動(dòng)改變運(yùn)動(dòng)狀態(tài)_Lne(50,50,0,0,0,0,g_GroupIdx);Stp7:當(dāng)按下H鍵,運(yùn)動(dòng)暫停,狀態(tài)呈現(xiàn)GS_HODRt=C_Hodoto(g_nGroupIdx);Stp8:當(dāng)按下C鍵,將繼續(xù)未完成之運(yùn)動(dòng),狀態(tài)呈現(xiàn)GS_UNNINGRt=C_ototo(g_nGroupIdx);prnt(Motonttus:%d\r,ttu);13CS運(yùn)控制式庫(kù)例手冊(cè)8.加、減速段使用時(shí)間設(shè)定相關(guān)函式_Stce()_StDe()_Gte()_GtDe()_StPte()_StPtPDe()_Gtte()_GttPDe()范例程序cStppp內(nèi)容說明一般運(yùn)動(dòng)(包括直線、圓弧、圓運(yùn)動(dòng))與點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)的加、減速時(shí)間默認(rèn)值為300毫秒,但可使用C_Ste()、_StDe()、C_Stte()、_StPtPDe()調(diào)整加減速的時(shí)間使這些運(yùn)動(dòng)有較為平順的加減速過程。不同速度應(yīng)采用不同的加減速時(shí)間使用CL時(shí)使用者需自行設(shè)計(jì)各種速度下的加減速時(shí)間適當(dāng)?shù)募訙p速時(shí)間會(huì)因?yàn)槭褂貌煌鸟R達(dá)與機(jī)構(gòu)而有所差異。加、減速時(shí)間可以利用下面的公式獲得:運(yùn)動(dòng)時(shí)的加速時(shí)間= 要求的速度/要求的加速度運(yùn)動(dòng)時(shí)的減速時(shí)間= 要求的速度/要求的減速度14CS運(yùn)控制式庫(kù)例手冊(cè)9.進(jìn)給速度設(shè)定相關(guān)函式_StedSpd()_GtdSpd()_StPtPSpd()_GttPSpd()范例程序StSpd.pp內(nèi)容說明在進(jìn)行直線、圓弧、圓運(yùn)動(dòng)前需先設(shè)定進(jìn)給速度,所設(shè)定的進(jìn)給速度不應(yīng)超過_StSsxSpd()的設(shè)定值。使用_StdSped()設(shè)定直線圓弧圓螺線運(yùn)動(dòng)的進(jìn)給速度例如呼叫_StedSpd(20,g_GroupIdx)時(shí),表示進(jìn)給速度為20/ec或20nch/c,依所使用的單位而定。使用C_SttPSpd()來(lái)設(shè)定點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)的速度第一個(gè)參數(shù)為”各軸最大速度的百分比再乘以100”范圍從0~100例如執(zhí)行C_SttPSpd(50,g_GroupIdx)時(shí)表示要求各軸的點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)速度為(PM×Pth/Grto)×50%PMPth、Grto定義在機(jī)構(gòu)參數(shù)中。15CS運(yùn)控制式庫(kù)例手冊(cè)10.直線、圓弧、圓、螺線運(yùn)動(dòng)一般運(yùn)動(dòng))相關(guān)函式_Stbsout()_StedSpd()_Lne()_ArXY()_CrceXY()范例程序GnrMoto.pp內(nèi)容說明在完成group、機(jī)構(gòu)與編碼器參數(shù)設(shè)定、啟動(dòng)系統(tǒng)、設(shè)定進(jìn)給速度的上限、開啟伺服回路(使用步進(jìn)馬達(dá)時(shí)不需此動(dòng)作與設(shè)定進(jìn)給速度后即可進(jìn)行直線圓弧圓、螺線運(yùn)動(dòng)。在使用圓弧函式時(shí)需注意給定的參數(shù)是否合理(起始點(diǎn)、參考點(diǎn)與目的點(diǎn)等三點(diǎn)的位置不能在同一直在線。下面為函式使用范例。Stp1:使用絕對(duì)坐標(biāo)型態(tài)表示各軸位置并設(shè)定進(jìn)給速度_Stbsout(g_GroupIdx);_StedSpd(10,g_GroupIdx);Stp2:執(zhí)行直線運(yùn)動(dòng)命令_Lne(10,10,0,0,0,0,g_GroupIdx);Stp3:執(zhí)行圓弧命令,請(qǐng)注意需避免起始點(diǎn)、參考點(diǎn)與目的點(diǎn)在同一直在線Rt=C_ArXY(10,20,20,20,g_GroupIdx);16CS運(yùn)控制式庫(kù)例手冊(cè)if(t=NO_E){/*利用傳回值了解錯(cuò)誤發(fā)生的原因如果參數(shù)錯(cuò)誤則傳回值為AETE_E。*/}可以利用函式的傳回值了解錯(cuò)誤發(fā)生的原因傳回值的意義請(qǐng)參考”MCS運(yùn)動(dòng)控制函式庫(kù)參考手冊(cè)”。行進(jìn)的軌跡如下圖所示。y(10,20)
(20,20)(10,10)(0,0) xStp3:執(zhí)行圓命令_CrceXY(25,20,0,g_GroupIdx);運(yùn)動(dòng)命令的執(zhí)行過程是運(yùn)動(dòng)函式先將運(yùn)動(dòng)命令(OPod)置于各group專屬的運(yùn)動(dòng)命令緩沖區(qū)中L再同時(shí)從不同group的運(yùn)動(dòng)命令緩沖區(qū)中擷取運(yùn)動(dòng)命令依序執(zhí)行。這兩個(gè)動(dòng)作并不是同步動(dòng)作,也就是并不需等到前一筆運(yùn)動(dòng)命令執(zhí)行完成即可將新的運(yùn)動(dòng)命令送到運(yùn)動(dòng)命令緩沖區(qū)中。17CS運(yùn)控制式庫(kù)例手冊(cè)_Lin(10,10,0,0,0,0,0)_ArXY(10,20,20,20,0)_irlXY(25,20,0,0)
available.
OPCode1OPCode2OPCode3
ExecutePut GetAsynchronization若運(yùn)動(dòng)命令緩沖區(qū)已滿,則函式的傳回值為OAND_UFFE_FUL_ER,此筆運(yùn)動(dòng)命令將不被接受預(yù)設(shè)每個(gè)運(yùn)動(dòng)命令緩沖區(qū)擁有10000個(gè)運(yùn)動(dòng)命令儲(chǔ)存空間。上圖顯示對(duì)group0運(yùn)動(dòng)命令緩沖區(qū)的操作過程,可看出屬于同一個(gè)group的運(yùn)動(dòng)命令將被依序執(zhí)行。因?yàn)楦鱾€(gè)group擁有專屬的運(yùn)動(dòng)命令緩沖區(qū),因此可同時(shí)執(zhí)行屬于不同group的運(yùn)動(dòng)命令,更詳細(xì)的說明請(qǐng)參考”MCS運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)。18CS運(yùn)控制式庫(kù)例手冊(cè)11.點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)相關(guān)函式_Stbsout()_StPtPSpd()_PtP()范例程序PtPoto.pp內(nèi)容說明在完成group、機(jī)構(gòu)與編碼器參數(shù)設(shè)定、啟動(dòng)系統(tǒng)、設(shè)定進(jìn)給速度的上限、開啟伺服回路(使用步進(jìn)馬達(dá)時(shí)不需此動(dòng)作)與設(shè)定進(jìn)給速度后,即可執(zhí)行點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)。下面為函式使用范例。Stp1:使用絕對(duì)坐標(biāo)與設(shè)定進(jìn)給速度_Stbsout(g_GroupIdx);_StedSpd(20,g_GroupIdx);Stp2:設(shè)定各軸使用最大速度的20運(yùn)動(dòng),也就是(PM×Pth/Grto)×20%_StPtPSpd(20,g_GroupIdx);Stp3:各軸使用不同動(dòng)的方式運(yùn)動(dòng)至(10,20)_PtP(10,20,0,0,0,0,g_GroupIdx);點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)采用不同動(dòng)的運(yùn)動(dòng)方式也就是各軸使用各自的速度運(yùn)動(dòng)各軸在同19CS運(yùn)控制式庫(kù)例手冊(cè)時(shí)啟動(dòng)后并不一定會(huì)同時(shí)到達(dá)目的點(diǎn)這點(diǎn)與一般運(yùn)動(dòng)不同一般運(yùn)動(dòng)使用同動(dòng)的運(yùn)動(dòng)方式各軸同時(shí)啟動(dòng)后會(huì)同時(shí)到達(dá)目的點(diǎn)下圖為點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)的運(yùn)動(dòng)軌跡此時(shí)各軸的速度相同。y(10,20)(0,0) x20CS運(yùn)控制式庫(kù)例手冊(cè)12.JG運(yùn)動(dòng)相關(guān)函式_StUt()_JogPu()_JogSp()_Jogot()范例程序ogoto.pp內(nèi)容說明_JogPu()使用puse為單位對(duì)特定軸進(jìn)行微動(dòng)動(dòng)作但移動(dòng)的puse數(shù)不能超過2048。C_ogSp()使用單位與一般運(yùn)動(dòng)相同,對(duì)特定軸進(jìn)行吋動(dòng)動(dòng)作。_Jogot()則可運(yùn)動(dòng)至機(jī)構(gòu)參數(shù)所設(shè)定的工作區(qū)間邊界。C_ogSp()與_Jogot()所需的參數(shù)包括速度比例設(shè)定方式與點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)類似下面為使用范例。Stp1:使用m為位移量單位_StUt(UNIT_,g_Groupdex);Stp2:使X軸移動(dòng)100puss_JogPu(0,100,g_GroupIdx);Stp3:使用速度為(PM×Pth/Grto)×10,使X軸移動(dòng)-1m距離_JogSp(-1,40,0,g_GroupIdx);Stp4:使用速度為(PM×Pth/Grto)×10%,使X軸移動(dòng)至工作區(qū)間的右邊界_Jogot(1,10,0,g_GroupIdx);21CS運(yùn)控制式庫(kù)例手冊(cè)13.定位控制相關(guān)函式_StIPoxhcke()_EnbeInPos_StIPoorneEx_GtPoSttus范例程序IPohk.pp內(nèi)容說明本范例程序利用編碼器的計(jì)數(shù)值(實(shí)際機(jī)臺(tái)位置與目標(biāo)位置之誤差檢查每一個(gè)運(yùn)動(dòng)軸是否滿足定位確認(rèn)條件。當(dāng)運(yùn)動(dòng)命令執(zhí)行完成將開始檢視是否滿足定位條件,若檢視時(shí)間超過設(shè)定值如還存在某些運(yùn)動(dòng)軸的位置誤差無(wú)法滿足定位條件則紀(jì)錄此現(xiàn)象并停止執(zhí)行其它運(yùn)動(dòng)命令。使用者可以強(qiáng)制馬達(dá)產(chǎn)生誤差并觀察運(yùn)作情況。此項(xiàng)功能的使用步驟如下:Stp1:設(shè)定定位確認(rèn)最長(zhǎng)的檢查時(shí)間,單位s_StIPoxhcke(1000,g_Groupdex);Stp2:設(shè)定定位控制模式_StIPood(IP_ONETE_OCK,g_GroupIdx);Stp3:設(shè)定各軸誤差值,單位為m或nh_StIPoorneE(0.5,0.5,1000,1000,1000,1000,g_GroupIdx);22CS運(yùn)控制式庫(kù)例手冊(cè)Stp4:?jiǎn)?dòng)定位控制功能_EnbeInPo(g_Groupdx);Stp5:讀取各軸定位控制狀態(tài),正確到位狀態(tài)為0(255)_GtPoSttu(bInPo0, bInPo1, bInPo2, bInPo3, bInPo4,bInPo5,g_Groupdex);Stp6:抓取錯(cuò)誤代碼Errode=C_Gtrrood(g_GroupIdx);23CS運(yùn)控制式庫(kù)例手冊(cè)14.原點(diǎn)復(fù)歸運(yùn)動(dòng)相關(guān)函式_StHoeog()_Hoe()_GtGoHoSttu()_AbortGoHo()范例程序GoHoe.pp內(nèi)容說明原點(diǎn)復(fù)歸的程序?qū)⒁勒赵c(diǎn)復(fù)歸參數(shù)中SYS_HOE_ONFIG的設(shè)定內(nèi)容可以使用C_StHooig()設(shè)定原點(diǎn)復(fù)歸參數(shù)(請(qǐng)參考”CS運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)”。利用C_GtGoHoSttu(可獲得原點(diǎn)復(fù)歸程序是否已經(jīng)完成另外在原點(diǎn)復(fù)歸運(yùn)動(dòng)過程中可呼叫C_AbotGoHoe()強(qiáng)迫停止原點(diǎn)復(fù)歸運(yùn)動(dòng)。目前CL所提供的原點(diǎn)復(fù)歸功能一次只能針對(duì)一張運(yùn)動(dòng)控制卡如需操作多張運(yùn)動(dòng)控制卡則需使用C_GtGoHoSttu(來(lái)確定目前進(jìn)行的原點(diǎn)復(fù)歸運(yùn)動(dòng)已經(jīng)完成才能對(duì)下一張運(yùn)動(dòng)控制卡呼叫_Ho()進(jìn)行原點(diǎn)復(fù)歸的動(dòng)作下面為使用范例:Stp1:設(shè)定原點(diǎn)復(fù)歸參數(shù)SYS_HOE_ONFIG tHooig;tHooig.wode =3; // 設(shè)定原點(diǎn)復(fù)歸模式24CS運(yùn)控制式庫(kù)例手冊(cè)往負(fù)方向做原點(diǎn)復(fù)歸運(yùn)動(dòng)tHootHooig.wDrton=1;//設(shè)定NortHooig.wSsoode=0;//tHooig.Indxout=0;tHooig.dAe=300;//stHooig.dDe=300;//stHooig.dHghSpd=10;///stHooig.dowSpd=2;///stHooig.dOstStp2:設(shè)定原點(diǎn)復(fù)歸參數(shù)=0;or(ORDwannl=0wChnnl<6wChnn++)_StHoeog(&tHoeog,whnn,AD_INDEX);Stp3:原點(diǎn)復(fù)歸,0f表示該軸不需進(jìn)行原點(diǎn)復(fù)歸動(dòng)作_Hoe(0,0,0,0,0,0,AD_INDEX);Stp4:如果有需要可使用此函式,停止原點(diǎn)復(fù)歸運(yùn)動(dòng)_AbortGoHo();Stp5利用函式傳回值判斷原點(diǎn)復(fù)歸運(yùn)動(dòng)是否已經(jīng)完成,Sttus的值若為1,表示原點(diǎn)復(fù)歸運(yùn)動(dòng)已經(jīng)完成Sttus=C_GtGoHoSttu();25CS運(yùn)控制式庫(kù)例手冊(cè)15.運(yùn)動(dòng)暫停、持續(xù)、棄置相關(guān)函式_HodMoto()_Cototo()_AbortotoEx()范例程序tMoto.pp內(nèi)容說明_HodMoto(用來(lái)暫停目前正在執(zhí)行的運(yùn)動(dòng)命令C_ototo()則用來(lái)繼續(xù)執(zhí)行被暫停執(zhí)行的運(yùn)動(dòng)命令因此C_ototo()需與C_Hodoto()搭配使用,且需使用在相同的group中。C_AbototoE()則用來(lái)設(shè)定減速停止的時(shí)間并棄置被暫?;驁?zhí)行中的運(yùn)動(dòng)命令。目前若無(wú)執(zhí)行中的運(yùn)動(dòng)命令,呼叫_HodMoto()時(shí)的函式傳回值將為HOD_ILGEGA_ER;先前若呼叫_HodMoto()不成功,呼叫_Cototo()時(shí)的函式傳回值將為ONTI_IGEGA_ER。無(wú)論目前運(yùn)動(dòng)狀態(tài)為何,呼叫C_AbototoE()皆會(huì)使運(yùn)動(dòng)(減速)停止并清除運(yùn)動(dòng)命令緩沖區(qū)中的庫(kù)存命令。26CS運(yùn)控制式庫(kù)例手冊(cè)16.強(qiáng)迫延遲執(zhí)行運(yùn)動(dòng)命令相關(guān)函式_IntSst()_DaMoto()范例程序DaMoto.pp內(nèi)容說明可以使用C_DaMoto()強(qiáng)迫延遲執(zhí)行下一個(gè)運(yùn)動(dòng)命令,延遲的時(shí)間以ms為計(jì)時(shí)單位;下面的范例中,在執(zhí)行完第一筆運(yùn)動(dòng)命令(ne)后,將延遲3000s才會(huì)再執(zhí)行下一筆運(yùn)動(dòng)命令。Stp1:插值時(shí)間設(shè)為INEPOON_TIERt=C_ItSst(INTEPOON_TIE,trdoig,1);Stp2:開始運(yùn)動(dòng)命令_Lne(10,10,0,0,0,0,g_GroupIdx);Stp3:延遲3000s才執(zhí)行下一筆命令,請(qǐng)觀察運(yùn)動(dòng)狀態(tài)_DaMoto(3000);27CS運(yùn)控制式庫(kù)例手冊(cè)17.速度強(qiáng)制控制相關(guān)函式_StOerrdSpd()_GtOrrdRt()_OvrrdPtPpd()_GttPOrrdt()范例程序OerrdSpd.pp內(nèi)容說明_OvrrdSpd()可用來(lái)設(shè)定直線、圓弧、圓、螺線運(yùn)動(dòng)速度強(qiáng)制比例,所需的參數(shù)為更新速度為原來(lái)速度之百分比×100C_GtOrrdRt(則用來(lái)獲得目前的速度強(qiáng)制比例。下面為使用范例。Stp1:設(shè)定直線、圓弧、圓、螺線運(yùn)動(dòng)的進(jìn)給速度為20/c_StedSpd(20,g_GroupIdx);_Lne(10,10,0,0,0,0,0,g_GroupIdx)Stp2:設(shè)定運(yùn)動(dòng)速度強(qiáng)制比例,也就是目前的速度將變?yōu)?0150%=30m/c_OvrSpd(150,g_GroupIdx);Stp3:讀取強(qiáng)制比例,date應(yīng)等于150date=C_GtOrrdet(g_Groupdx);28CS運(yùn)控制式庫(kù)例手冊(cè)18.軟件過行程檢查與硬件極限開關(guān)檢查相關(guān)函式_StOerChek()_GtOrChek()_EnbeLmitSwtChk()_DsbeLmtSwthChk()_GtitSwthSttu()范例程序hkOpp內(nèi)容說明L提供軟件過行程檢查功能(或稱為軟件極限保護(hù)功能,當(dāng)啟動(dòng)軟件過行程檢查功能后若任一軸的行進(jìn)范圍將超出工作區(qū)間系統(tǒng)將停止運(yùn)動(dòng)(并產(chǎn)生一錯(cuò)誤記錄此時(shí)若要使系統(tǒng)恢復(fù)正常狀態(tài)必須先清除系統(tǒng)中的錯(cuò)誤紀(jì)錄然后才能往反方向移動(dòng)機(jī)構(gòu)參數(shù)中的dHghLitdLowit分別用來(lái)設(shè)定軟件左右極限的位置;_StOerChek()用來(lái)啟動(dòng)與關(guān)閉此項(xiàng)功能,_GtOerChek()則用來(lái)檢查目前的設(shè)定狀態(tài)。下面為使用范例。Stp1:?jiǎn)?dòng)X軸軟件過行程檢視功能_StOerChek(1,0,0,0,0,0,g_GroupIdx);Stp2:OT0~OT5的值若為1表示已設(shè)定過行程檢查功能,否則為0_GtOrChek(OT0, OT1, OT2, OT3, OT4, OT5,g_GroupIdx);29CS運(yùn)控制式庫(kù)例手冊(cè)Stp3:讀取可能產(chǎn)生的錯(cuò)誤訊息Errode=C_Gtrrood(g_GroupIdx);利用_GetErorod()的傳回值可判斷目前是否因系統(tǒng)位置將超出軟件極限而無(wú)法運(yùn)動(dòng)(因內(nèi)部已產(chǎn)生錯(cuò)誤記錄傳回值若為0F301~0F306則依序代表X軸~W軸出現(xiàn)此種情形,此狀況下可依下面范例使系統(tǒng)回復(fù)正常狀態(tài)。Stp4:清除系統(tǒng)中的錯(cuò)誤紀(jì)錄,使系統(tǒng)回復(fù)正常狀態(tài)_CerErro(g_Groupdex);CL也提供硬件極限開關(guān)(itSwt)檢查功能,要使極限開關(guān)能正常運(yùn)作,除了必須正確設(shè)定極限開關(guān)的配線方式外,尚必須呼叫_EnbeLmitSwtChk() , 如 此 OralUpSnorMode 與OralDonSnsoMode的設(shè)定才能生效。但OralUpSnorMode與OralDonSnsoMode如設(shè)定為2,則呼叫_EnbeLitSwthhek()并無(wú)任何意義。若使用C_EbeLmitSwtChk(1),則只有在碰觸到該軸運(yùn)動(dòng)方向的極限開關(guān)時(shí)例如往正方向移動(dòng)且觸到正向極限開關(guān)或往負(fù)方向移動(dòng)且碰觸到負(fù)向極限開關(guān)),才會(huì)停止該Group之運(yùn)動(dòng);若呼叫_EnbeLmtSwthChk(0),則只要碰觸到極限開關(guān)不管行進(jìn)方向),皆會(huì)停止該Group之運(yùn)動(dòng)。利用_GetErorod()的傳回值可判斷目前是否因碰觸到極限開關(guān)而無(wú)法運(yùn)動(dòng)(因內(nèi)部已產(chǎn)生錯(cuò)誤記錄。傳回值若為0F701~0F706,則依序代表X軸~W軸出現(xiàn)此種情形,此狀況下可依下面范例使系統(tǒng)回復(fù)正常狀態(tài)。30CS運(yùn)控制式庫(kù)例手冊(cè). 若之前呼叫:_EnbeLmitSwtChk(0)則:C_erErro()?_DsabemitSwthhck()?反方向退出mitSwth. 若之前呼叫:_EnbeLmitSwtChk(1)則:_CerErro()?反方向退出mitSwth31CS運(yùn)控制式庫(kù)例手冊(cè)19.連續(xù)運(yùn)動(dòng)功能設(shè)定相關(guān)函式_EnbeBend()_DsbeBend()_ChkBend()范例程序Stend.pp內(nèi)容說明Velocity VelocityCommand1
Command2
Command1
Command2Time Time由圖中可以看出開啟平滑運(yùn)動(dòng)功能后的運(yùn)動(dòng)情形第一筆運(yùn)動(dòng)命令在達(dá)到等速段后不經(jīng)減速段,而直接加速至第二筆運(yùn)動(dòng)命令的等速段(如右圖之實(shí)線所示),如此命令的執(zhí)行時(shí)間較快,但各筆命令的連接處會(huì)有軌跡失真的狀況存在。呼叫_Enbeend()與_Dsabeend()可分別開啟與關(guān)閉速度連續(xù)功能呼叫C_hkBend()則可獲得目前的狀態(tài)設(shè)定若函式傳回值為0表示已開啟速度連續(xù)功能;若函式傳回值為1,則表示此時(shí)關(guān)閉速度連續(xù)功能。32CS運(yùn)控制式庫(kù)例手冊(cè)20.讀取與清除錯(cuò)誤狀態(tài)相關(guān)函式_Gtrrood)_CerErro()范例程序ErorSttu.pp內(nèi)容說明系統(tǒng)錯(cuò)誤發(fā)生后若已排除錯(cuò)誤狀況仍必須呼叫_CerEror(來(lái)清除系統(tǒng)中的錯(cuò)誤記錄否則無(wú)法正常繼續(xù)執(zhí)行往后的運(yùn)動(dòng)通常在系統(tǒng)運(yùn)作中使用者應(yīng)隨時(shí)讀取目前的錯(cuò)誤代碼以檢查在系統(tǒng)運(yùn)作時(shí)是否發(fā)生錯(cuò)誤下面為使用范例另外也可參閱軟件過行程檢查與硬件極限開關(guān)檢查此節(jié)關(guān)于這兩個(gè)函式的使用方式。此部分與范例程序不同,使用者可以參考以下寫法去處理錯(cuò)誤產(chǎn)生。if(_GtErorod(g_Groupdex)){/*在此排除錯(cuò)誤狀況*/_CerErro(g_Groupdex)// 清除系統(tǒng)中的錯(cuò)誤記錄}33CS運(yùn)控制式庫(kù)例手冊(cè)21.齒輪齒隙與間隙補(bǔ)償相關(guān)函式_StopPr()_UpdtopPr()范例程序opnt.pp內(nèi)容說明L所提供的齒輪齒隙與間隙補(bǔ)償功能能彌補(bǔ)機(jī)臺(tái)在傳動(dòng)時(shí)因齒輪螺桿制造上的缺陷所造成的誤差,如齒隙誤差、背隙誤差,詳細(xì)的說明請(qǐng)參考S運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)”。34CS運(yùn)控制式庫(kù)例手冊(cè)22.如何完成6軸連續(xù)運(yùn)動(dòng)相關(guān)函式_CrtGroup)_StedSpd()_EnbeBend()_Lne()范例程序SnLne.pp內(nèi)容說明當(dāng)1個(gè)grop已使用C_EbeBend()開啟連續(xù)運(yùn)動(dòng)功能后(滿足路徑與速度連續(xù)條件如多次呼叫C_ne()時(shí)雖能達(dá)到6軸同動(dòng)要求(也就是6軸同時(shí)啟動(dòng)且同時(shí)靜止)但只有前3軸也就是XYZ軸能滿足路徑與速度連續(xù)的條件而后三軸也就是U、V、W軸僅能滿足同動(dòng)要求。如需6軸同運(yùn)且滿足路徑與速度連續(xù)的條件則可使用2個(gè)grou第1個(gè)group負(fù)責(zé)前3軸的軌跡規(guī)劃,而第2個(gè)group負(fù)責(zé)后三軸的軌跡規(guī)劃。但為了滿足6軸同動(dòng)要求,第2個(gè)group的速度可使用第2個(gè)group要求移動(dòng)的距離與第1個(gè)group要求移動(dòng)的距離之比值,再乘上第1個(gè)group的進(jìn)給速度而換算得到。此過程的程序代碼如下,此時(shí)使用者需呼叫nAsnLne()代替使用C_ne()。Stp1:宣告nSncne函式odnSncLne(doue,doue,doue,doueu,douev,douew,douedXYZSpd);35CS運(yùn)控制式庫(kù)例手冊(cè)Stp2:設(shè)定并使用兩個(gè)Groupstg_GroupIdx0=-1;ntg_GroupIdx1=-1;// tgroupprtrs_CoAlGroup();g_GroupIdx0=_CrtGroup0,1,2,-1,-1,-1,AD_INDEX);(g_GroupIdx0<0){prnt(Groupsrterror\n\n);rtur;}g_GroupIdx1=_CrtGroup3,4,5,-1,-1,-1,AD_INDEX);(g_GroupIdx1<0){prnt(Groupsrterror\n\n);rtur;}Stp3:?jiǎn)⒂闷交\(yùn)動(dòng)_EnbeBend(g_GroupIdx0);_EnbeBend(g_GroupIdx1);Stp4:呼叫nSncne函式nAsnLne(10,20,30,40,50,60,10);nAsnLne(40,50,60,10,20,30,10);36CS運(yùn)控制式庫(kù)例手冊(cè)Stp5:nSncLne函式定義odnSncLne(doue,doue,doue,doueu,douev,douew,douedXYZSpd){douedDstn0,dDstn1,dUVSpd;dDstn0=x*x+y*y+z*;if(dDst0&dXYZSpd){dDstn1=u*u+v*v+w*w;// 換算后三軸應(yīng)有的速度dUVSped=dXYZSpd*qrt(dDst1/dDstn0);_StedSpd(dXYZSpd,g_GroupIdx0);// 由group的定義得知,第1個(gè)group(也就是g_Groupdex0)會(huì)將此// 命令由前三軸輸出_Lne(x,,,0,0,0,g_GroupIdx0);_StedSpd(dUVSped,g_GroupIdx1);// 由group的定義得知,第2個(gè)group(也就是g_Groupdex1)會(huì)將此// 命令由后三軸輸出_Lne(u,v,w,0,0,0,g_GroupIdx1);}37CS運(yùn)控制式庫(kù)例手冊(cè)}38CS運(yùn)控制式庫(kù)例手冊(cè)23.編碼器Ecoer計(jì)數(shù)值觸發(fā)中斷服務(wù)函式功能相關(guān)函式_StENoutnE()_StENopu()_EnbeENCopggr()_DsbeENCoprggr()_StENIputt()_GtNue()范例程序ENopr.pp內(nèi)容說明L所提供的編碼器計(jì)數(shù)值觸發(fā)中斷服務(wù)函式功能可設(shè)定編碼器計(jì)數(shù)值的比較值,在開啟此項(xiàng)功能后,當(dāng)編碼器的計(jì)數(shù)值等于設(shè)定的比較值時(shí)(可以使用_GtNue()讀取編碼器的計(jì)數(shù)值),CL將自動(dòng)呼叫使用者串接的中斷服務(wù)函式。下面為使用范例。Stp1:宣告中斷服務(wù)函式od_tdlEN_IS_unto(ENINT_EX*ptNTSou);Stp2:串接中斷服務(wù)函式_StENoutnE(EN_IS_Funto,AD_INDEX);Stp3:設(shè)定比較值為10000puss_StENopu(20000,HANNE_INDEX,AD_INDEX);39CS運(yùn)控制式庫(kù)例手冊(cè)Stp4:開啟計(jì)數(shù)值觸發(fā)中斷服務(wù)函式功能_EnbeENCopggr(HANNE_INDEX,AD_INDEX);_Lne(100,0,0,0,0,0,g_GroupIdx);Stp5:定義中斷服務(wù)例程od_tdlEN_IS_unto(ENINT_EX*ptNTSou){if(ptINSour-OP0)// 判斷是否因第0個(gè)hnnl的比較條件成立而觸發(fā)// 放棄目前正在執(zhí)行與運(yùn)動(dòng)緩沖區(qū)中所有的運(yùn)動(dòng)命令_AbortotoEx(0,g_GroupIdx);EN_IS;_DsbeENCopTrggr(HANNE_INDEX)// 關(guān)閉計(jì)數(shù)值觸發(fā)中斷功能}上面的范例顯示在開啟編碼器計(jì)數(shù)值觸發(fā)中斷服務(wù)函式功能后,將進(jìn)行直線運(yùn)動(dòng),待編碼器的計(jì)數(shù)術(shù)值等于20000pues時(shí),將停止未完成的直線運(yùn)動(dòng)。_AbortotoEx第一參數(shù)設(shè)為0使減速時(shí)間為零可以讓停止后編碼器位置接近20000。40CS運(yùn)控制式庫(kù)例手冊(cè)24.閂鎖Lac)編碼器計(jì)數(shù)值與INDEX訊號(hào)觸發(fā)中斷服務(wù)函式功能相關(guān)函式_StENoutnE()_GtNue()_StENtp(()_StENtSour()_EnbeENIndxrgger()范例程序GtNt.pp內(nèi)容說明L 所提供的閂鎖(t)編碼器計(jì)數(shù)值功能,可使用_StENtSour(指定觸發(fā)條件來(lái)源),在滿足觸發(fā)條件與閂鎖模式后使用_StENtp()設(shè)定觸發(fā)模式,可將編碼器的計(jì)數(shù)值紀(jì)錄在閂鎖緩存器內(nèi),使用C_GtNathVu()可以讀取閂鎖緩存器內(nèi)的紀(jì)錄值。下面為使用范例。Stp1:設(shè)定編碼器計(jì)數(shù)值閂鎖模式EN_TIG_IST 第一次滿足觸發(fā)條件即ath計(jì)數(shù)值不再變動(dòng)EN_TIG_AST 觸發(fā)條件滿足時(shí)即ath計(jì)數(shù)值且隨條件一再滿足即一再ath新的計(jì)數(shù)值_StENtTp(EN_TIG_AST,HANNE_INDEX,AD_INDEX);Stp2:設(shè)定編碼器觸發(fā)源。共有15種觸發(fā)來(lái)源(條件)可做為閂鎖計(jì)數(shù)值的條件。設(shè)定時(shí)可同時(shí)取多個(gè)條件的聯(lián)集,此時(shí)選取編碼器ndex訊號(hào)為觸發(fā)來(lái)源(條件)_StENtSour(N_TIG_INDEX0,HANNE_INDEX,AD_INDEX);41CS運(yùn)控制式庫(kù)例手冊(cè)由上面的范例可以看出使用編碼器INDEX訊號(hào)做為觸發(fā)來(lái)源(條件為了在編碼器INDEX訊號(hào)發(fā)生后,立即使用_GtENtVaue()讀取閂鎖緩存器內(nèi)的紀(jì)錄值,可以使用編碼器INDEX訊號(hào)觸發(fā)中斷函式功能。要使用此項(xiàng)功能首先需串接自訂的中斷服務(wù)函式并開啟。Stp3:宣告中斷服務(wù)函式od_tdlEN_IS_unto(ENINT_EX*ptNTSou);Stp3:串接中斷服務(wù)函式_StENoutnE(EN_IS_Funto,AD_INDEX);Stp4:開啟編碼器ndx訊號(hào)觸發(fā)中斷服務(wù)函式功能_EnbeENIndxrgger(HANNE_INDEX,AD_INDEX);Stp4:定義中斷服務(wù)例程od_tdlEN_IS_unto(ENINT_EX*ptNTSou){if(ptINTour-INDEX0// 判斷是否由INDEX訊號(hào)所觸發(fā){// 讀取閂鎖緩存器內(nèi)的紀(jì)錄值_GtNthu(&Lathu,HANNE_INDEX,AD_INDEX);}}更詳細(xì)的說明請(qǐng)參考”MCS運(yùn)動(dòng)控制函式庫(kù)使用手冊(cè)。42CS運(yùn)控制式庫(kù)例手冊(cè)25.近端接點(diǎn)LocalI訊號(hào)控制與觸發(fā)中斷服務(wù)函式功能相關(guān)函式_StSroO();_StSroO()_EnbePod()_DsbePod()_EnbePod()_GtitSwthSttu()_GtHoSnorSttu()_StIOoutnEx()_StIOggrp()_EnbeLIOggr()范例程序IOggpp內(nèi)容說明L提供對(duì)近端接點(diǎn)(olI/O包括rvoo/ofpotonrdy輸出訊號(hào)的控制函式,另外也提供對(duì)oenor與rdwremitwth輸入訊號(hào)的檢視函式。某些極限開關(guān)輸入接點(diǎn)的訊號(hào)能觸發(fā)使用者自訂的中斷服務(wù)函式可以觸發(fā)中斷服務(wù)函式的極限開關(guān)包括:.T-601/605/6000/600:共7點(diǎn)hnnl0mitSwth+hnnl1mitSwth+hnnl2mitSwth+43CS運(yùn)控制式庫(kù)例手冊(cè)hnnl3mitSwth+hnnl4mitSwth+hnnl5mitSwth+hnnl1mitSwth-.T-400/405/4000/400:共7點(diǎn)hnnl0mitSwth+hnnl1mitSwth+hnnl2mitSwth+hnnl3mitSwth+hnnl0mitSwth-hnnl1mitSwth-hnnl2mitSwth-使用輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式的步驟如下:Stp1:使用_StIOoutnE()串接自訂的中斷服務(wù)函式需先設(shè)計(jì)自訂的中斷服務(wù)函式,函式的宣告必須遵循下列的函式原型:tpdefod(_tdl*IOIS_EX)IOINT_X*)例如自訂的函式可設(shè)計(jì)如下:_tdlLIOFunto(IOINT_EX*ptNTSou){44CS運(yùn)控制式庫(kù)例手冊(cè)// 判斷是否因碰觸到hnnl0mitwth而觸發(fā)此函式if(ptINTSou-DI0){// 碰觸到hnnl0mitwth+時(shí)的處理程序}// 判斷是否因碰觸到hnnl1mitwth而觸發(fā)此函式if(ptINTSou-DI1){// 碰觸到hnnl1mitwth+時(shí)的處理程序}}不可以使用seif(ptINTSou-DI1)”類似的語(yǔ)法,因ptINTSou-DI0與ptNTSour-DI1有可能同時(shí)不為0。接著使用C_StIOoutnEx(LIOFunto)串接自訂的中斷服務(wù)函式。當(dāng)自訂函式被觸發(fā)執(zhí)行時(shí),可以利用傳入自訂函式、被宣告為IOINT_X的ptNTSoue參數(shù),判斷此刻自訂函式被呼叫是因碰觸到哪一個(gè)輸入接點(diǎn)所引起。IOINT_X的定義如下:tpdeftut_IO_INT_X{YTEDI0;YTEDI1;YTEDI2;45CS運(yùn)控制式庫(kù)例手冊(cè)YTEDI3;YTEDI4;YTEDI5;YTEDI6;YTETIE;}IOINT_EX;IOINT_X中各字段的對(duì)應(yīng)接點(diǎn)定義如下:T-601/605/6000/6005T-400/405/4000/4005DI0hnnl0mitSwt+hnnl0mitSwt+DI1hnnl1mitSwt+hnnl1mitSwt+DI2hnnl2mitSwt+hnnl2mitSwt+DI3hnnl3mitSwt+hnnl3mitSwt+DI4hnnl4mitSwt+hnnl0mitSwt-DI5hnnl5mitSwt+hnnl1mitSwt-DI6hnnl0mitSwt-hnnl2mitSwt-這些字段的值如果不為0,表示該字段的對(duì)應(yīng)接點(diǎn)目前有訊號(hào)輸入;例如在LIOFunto()中所輸入的參數(shù)ptNTSour->DI2如果不為0表示碰觸到annl2mitwth。Stp2:使用_StIOggrp()設(shè)定觸發(fā)型態(tài)觸發(fā)型態(tài)可設(shè)定為上緣(sngEdg)觸發(fā)下緣(lngEdg觸發(fā)或是轉(zhuǎn)態(tài)(vl46CS運(yùn)控制式庫(kù)例手冊(cè)hng)觸發(fā)。C_StIOggrp()的輸入?yún)?shù)可為:IO_INT_ISE 上緣觸發(fā)(Dut)IO_INT_L 下緣觸發(fā)IO_INT_EVEL 轉(zhuǎn)態(tài)觸發(fā)Stp3最后使用_EnbeLIOggr()開啟”輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式功能。也可以使用C_DsbeLIOggr()關(guān)閉此項(xiàng)功能47CS運(yùn)控制式庫(kù)例手冊(cè)26.定時(shí)器計(jì)時(shí)終了觸發(fā)中斷服務(wù)函式功能相關(guān)函式_StIOoutnEx();_Ster()_Enbeer()_Enbeerggr()范例程序erggpp內(nèi)容說明利用CL可以設(shè)定TC運(yùn)動(dòng)控制卡上24ts定時(shí)器的計(jì)時(shí)時(shí)間在啟動(dòng)計(jì)時(shí)功能并在計(jì)時(shí)終了時(shí)(也就是定時(shí)器的計(jì)時(shí)值等于設(shè)定值),將觸發(fā)使用者自訂的中斷服務(wù)函式并重新開始計(jì)時(shí)此過程將持續(xù)至關(guān)閉此項(xiàng)功能為止要使用”定時(shí)器計(jì)時(shí)終了觸發(fā)中斷服務(wù)函式功能的步驟如下:Stp1:使用_StIOoutnE()串接自訂的中斷服務(wù)函式如未曾呼叫過C_StIOoutnEx()請(qǐng)參考前面對(duì)此步驟的說明請(qǐng)參考”25.近端接點(diǎn)(oal/O)訊號(hào)控制與觸發(fā)中斷服務(wù)函式功能”此章節(jié));如已呼叫過_StIOoutnEx(則只需在自訂的函式中加入對(duì)傳入?yún)?shù)(ptINTSou)”定時(shí)器計(jì)時(shí)終了字段(TIE的判斷即可,請(qǐng)參考下例:tdlLIOFunto(IOINT_EX*ptNTSou){// 判斷是否因定時(shí)器計(jì)時(shí)終了而觸發(fā)此函式if(ptINTSou-TIE)48CS運(yùn)控制式庫(kù)例手冊(cè){// 定時(shí)器計(jì)時(shí)終了時(shí)的處理程序}Stp2使用設(shè)定_Ster()定時(shí)器之計(jì)時(shí)時(shí)間計(jì)時(shí)單位為Sstmok(25n)Stp3:使用_Enbeerggr()開啟計(jì)時(shí)終了觸發(fā)中斷服務(wù)函式功能Stp4:使用_Enbeer(開啟定時(shí)器計(jì)時(shí)功能49CS運(yùn)控制式庫(kù)例手冊(cè)27.WachDog功能相關(guān)函式_StIOoutnEx()_Ster()_SttDoger()_SttDogtProd)_Enbeer()_EnbetDoger()范例程序tDogpp內(nèi)容說明當(dāng)使用者開啟wthdog功能后必須在wthdog計(jì)時(shí)終了前也就是wthdog的計(jì)時(shí)值等于設(shè)定的比較值前),使用C_rehtDogr()清除wthdog的計(jì)時(shí)內(nèi)容否則一但wthdog的計(jì)時(shí)值等于設(shè)定的比較值時(shí)將發(fā)生rt硬件的動(dòng)作。使用wthdog的步驟如下:Stp1使用設(shè)定C_Ster()定時(shí)器之計(jì)時(shí)時(shí)間計(jì)時(shí)單位為Sstmok(25n)。Stp2:C_SttDoger()設(shè)定wthdog定時(shí)器比較值thdog定時(shí)器比較值為16-t數(shù)值,使用定時(shí)器之計(jì)時(shí)時(shí)間作為teae。也就是說如果使用下列的程序代碼:_Ster(1000000,AD_INDEX);_SttDoger(2000,AD_INDEX);50CS運(yùn)控制式庫(kù)例手冊(cè)此時(shí)表示第0張卡的wthdog定時(shí)器的比較值設(shè)定為(25s×1000000)×2000=50。Stp3:使用_SttDogtPod(設(shè)定rt訊號(hào)持續(xù)時(shí)間可透過本函式可規(guī)劃因wthdog功能所產(chǎn)生rt硬件動(dòng)作的持續(xù)時(shí)間設(shè)定單位為stmok(25)。Stp4:使用_Enbeer(開啟定時(shí)器計(jì)時(shí)功能Stp5:必須在wthdog計(jì)時(shí)終了前,使用C_rehtDogr()清除wthdog的計(jì)時(shí)內(nèi)容。使用者可搭配定時(shí)器計(jì)時(shí)終了觸發(fā)中斷服務(wù)函式”功能,在wthdogrt硬件動(dòng)作前先以警示,并在計(jì)時(shí)中斷服務(wù)函式內(nèi)進(jìn)行必要的處理。51CS運(yùn)控制式庫(kù)例手冊(cè)28.設(shè)定與讀取ReoteIO輸出、入接點(diǎn)訊號(hào)相關(guān)函式_EnbeRIOStoto()_EnbeRIOSveoto()_GtIOputu()_StIOOutputu()范例程序IOt.pp內(nèi)容說明每張TC運(yùn)動(dòng)控制卡擁有兩個(gè)oteI/O卡的接頭(稱為oteI/OSt0與oteI/OSt1統(tǒng)稱為oteI/Otr端)可同時(shí)控制兩張oteI/O卡(或稱為oteI/OSve端)。每張oteI/O卡各提供64個(gè)輸出接點(diǎn)與64個(gè)輸入接點(diǎn)。使用EbeRIOStoto()與EbeRIOSveoto()啟動(dòng)數(shù)據(jù)傳輸功能,下面為使用范例,此時(shí)開啟第一張卡(編號(hào)為0)oteI/OSt0與他的Sve端的數(shù)據(jù)傳輸功能。EbeRIOStoto(IO_SET0,AD_INDEX);EbeRIOSveoto(IO_SET0,AD_INDEX);在完成初始設(shè)定后用低電位(EO-)接觸接點(diǎn),_GtIOputu()即可讀取輸入接點(diǎn)的訊號(hào)狀態(tài);也可以使用_StIOOutputu()設(shè)定輸出接點(diǎn)的訊號(hào)狀態(tài)。52CS運(yùn)控制式庫(kù)例手冊(cè)29.讀取ReoeIO訊號(hào)傳輸狀態(tài)相關(guān)函式_EnbeRIOStoto()_EnbeRIOSveoto()_GtIOsSttu()_GtIOtrttu()_GtIOSavSttu()范例程序IOSttu.pp內(nèi)容說明使用_GtIOsSttu()可以隨時(shí)監(jiān)控各oteI/OSt的數(shù)據(jù)傳輸狀態(tài)。當(dāng)出現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤的情況時(shí),可以使用C_GtIOtrSttu()與_GtIOSavSttu(所獲得的信息獲知傳輸錯(cuò)誤訊息是來(lái)自運(yùn)動(dòng)控制卡或來(lái)自oteIO卡。用 _GetIOsSttu() 、 C_GtIOtrSttu() 與_GtIOSavSttu(所讀取的狀態(tài)如果為1表示處于正常數(shù)據(jù)傳輸狀態(tài)如果為0表示處于數(shù)據(jù)傳輸錯(cuò)誤。下面為使用范例。ODwsSttu;// 讀取傳輸狀態(tài)_GtIOsSttu(wrSttu, IO_SE0,AD_INDEX);53CS運(yùn)控制式庫(kù)例手冊(cè)wsSttus如果為1表示處于正常數(shù)據(jù)傳輸狀態(tài)如果為0表示處于數(shù)據(jù)傳輸錯(cuò)誤。54CS運(yùn)控制式庫(kù)例手冊(cè)30.ReoteIO輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式相關(guān)函式_EnbeRIOStoto()_EnbeRIOSveoto()_StIOoutnE()_StIOggrp()_EnbeRIOIputggr()范例程序IOIputpp內(nèi)容說明每一張oteIO卡前四個(gè)輸入接點(diǎn)(IO_DI0、IO_DI1、IO_DI2、IO_DI3)的訊號(hào)可觸發(fā)使用者自訂的中斷服務(wù)函式使用輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式”的步驟如下:Stp1:使用_StIOoutneE()串接自訂的中斷服務(wù)函式需先設(shè)計(jì)自訂的中斷服務(wù)函式,函式的宣告必須遵循下列的定義:tpdefod(_tdl*IOIS_EX(IOIN_EX*)例如自訂的函式可設(shè)計(jì)如下:_tdlRIOFunto(IOINT_X*ptNTSour){55CS運(yùn)控制式庫(kù)例手冊(cè)// 判斷是否由St0的DgtlIput0所觸發(fā)if(ptINTSou-SE0_DI0){// DgtlIput0訊號(hào)改變時(shí)的處理程序}}接著使用C_StIOoutnE()串接自訂的中斷服務(wù)函式,此函式的原型如下,其中pnIORoutne為使用者自訂中斷服務(wù)函式的函式指標(biāo),例如RIOFunto:nt_StIOoutneE(IOIS_EXpnIOoutn,ODwrdIdex)Stp2:設(shè)定oteI/ODgtlIput訊號(hào)觸發(fā)中斷服務(wù)函式的方式使用C_StIOggrp()設(shè)定oteI/ODgtlIput訊號(hào)觸發(fā)中斷服務(wù)函式的方式為「前緣觸發(fā)「后緣觸發(fā)」或「轉(zhuǎn)態(tài)觸發(fā)。Stp3:使用C_EbeRIOIputgger()開啟輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式的功能下面為使用_EnbeIOInputggr()的范例此時(shí)開啟oteI/OSt0輸入接點(diǎn)訊號(hào)觸發(fā)中斷服務(wù)函式的功能。C_EbeRIOIputgger(IO_SE0,AD_INDEX);56CS運(yùn)控制式庫(kù)例手冊(cè)31.ReoteIO數(shù)據(jù)傳輸錯(cuò)誤觸發(fā)中斷服務(wù)函式相關(guān)函式_EnbeRIOStoto()_EnbeRIOSveoto()_StIOoutnE()_EnbeRIOsggr()范例程序IOEropp內(nèi)容說明除了可以使用_GetIOsSttu()、_GtIOstrSttu()與_GtIOSavSttu(隨時(shí)監(jiān)控oteIO的數(shù)據(jù)傳輸狀態(tài)外也可在數(shù)據(jù)傳輸錯(cuò)誤時(shí)觸發(fā)使用者自訂的中斷服務(wù)函式此項(xiàng)功能提供使用者實(shí)時(shí)處理數(shù)據(jù)傳輸錯(cuò)誤的現(xiàn)象。此項(xiàng)功能的使用步驟如下:Stp1:使用_StIOoutneE()串接自訂的中斷服務(wù)函式需先設(shè)計(jì)自訂的中斷服務(wù)函式,函式的宣告必須遵循下列的定義:tpdefod(_tdl*IOIS_EX(IOIN_EX*)例如自訂的函式可設(shè)計(jì)如下:_tdlRIOFunto(IOINT_X*ptNTSour){57CS運(yùn)控制式庫(kù)例手冊(cè)// 判斷是否St0發(fā)生數(shù)據(jù)傳輸錯(cuò)誤if(ptINTSou-SE0_I){// 數(shù)據(jù)傳輸錯(cuò)誤發(fā)生時(shí)的處理程序}}接著使用C_StIOoutnE()串接自訂的中斷服務(wù)函式,此函式的原型如下其中pnIORoutne為使用者自訂中斷服務(wù)函式的函式指標(biāo)例如RIOFunto。nt_StIOoutneE(IOIS_EXpnIOoutn,ODwrdIdex)其中pnIORoutne為使用者自訂中斷服務(wù)函式的函式指標(biāo),例如RIOFunton。Stp2使用_EnbeIOrrggr(開啟數(shù)據(jù)傳輸錯(cuò)誤觸發(fā)中斷服務(wù)函式功能下面為使用_EnbeRIOIputggr()的范例此時(shí)開啟oteI/OSt0數(shù)據(jù)傳輸錯(cuò)誤觸發(fā)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 榆樹幼兒舞蹈課程設(shè)計(jì)
- 物流學(xué)課程設(shè)計(jì)
- 快速移動(dòng)射擊課程設(shè)計(jì)
- 2024再婚雙方離婚協(xié)議書范本:共同子女撫養(yǎng)及教育安排3篇
- 粒狀巧克力課程設(shè)計(jì)
- 水文預(yù)報(bào)課程設(shè)計(jì)結(jié)論
- 電工電子課程設(shè)計(jì)電子鐘
- 糧食通風(fēng)課程設(shè)計(jì)
- 益智玩具小班課程設(shè)計(jì)
- 環(huán)境監(jiān)測(cè)課程設(shè)計(jì)河流篇
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 高標(biāo)準(zhǔn)農(nóng)田輸配電工程施工方案與技術(shù)措施
- 外來(lái)人員車輛入廠安全須知
- 小學(xué)校本課程-尋覓沉睡的寶船教學(xué)課件設(shè)計(jì)
- 2022-2024學(xué)年校方責(zé)任保險(xiǎn)統(tǒng)保方案
- 食材供應(yīng)鏈行業(yè)市場(chǎng)分析ppt
- 跟師臨診抄方心得體會(huì)
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)2023
- 年同等學(xué)歷考研申碩綜合科復(fù)習(xí)指導(dǎo)(教育心理學(xué))課件
- 線段角動(dòng)點(diǎn)問題
- 【課件】沉心靜氣打贏最后一仗 課件-2022-2023學(xué)年高中主題班會(huì)
評(píng)論
0/150
提交評(píng)論