Q編程介紹及例程
Q編程介紹
SCL指令的使用已經(jīng)有很多年的歷史。Q程序是建立在SCL指令基礎(chǔ)之上的一個(gè)新的平臺(tái),擴(kuò)展了SCL命令的使用,允許用戶創(chuàng)建與存儲(chǔ)SCL指令。這些程序可以保存在驅(qū)動(dòng)器的非易失性存儲(chǔ)器中,驅(qū)動(dòng)可以脫離主機(jī)獨(dú)立運(yùn)行這些程序。Q程序?yàn)橄到y(tǒng)設(shè)計(jì)提供了高度的靈活性和強(qiáng)大的功能。主要特點(diǎn)如下:• 運(yùn)動(dòng)控制(例如FL、FP、SH等)
• 執(zhí)行駐留程序
• 多任務(wù)處理(請(qǐng)參閱MT指令)
• 條件判斷(例如OI、TI等指令)
• 數(shù)學(xué)運(yùn)算(例如R+、R-、R*、R/、R|、R&等指令)
• 寄存器操作(例如RX、RM等指令)
1個(gè)Q程序支持多達(dá)12個(gè)程序段,每個(gè)程序段最多可以編寫62條指令。
Q Programmer 軟件下載
參考例程
以下內(nèi)容給出了Q編程的參考例程,并對(duì)這些指令逐條進(jìn)行了解釋,Q編程中所有指令均為緩存指令(Buffered Commands)點(diǎn)到點(diǎn)相對(duì)運(yùn)動(dòng)(Feed to Length)
FL(Feed to Length)指令用來完成點(diǎn)到點(diǎn)相對(duì)位置運(yùn)動(dòng),當(dāng)執(zhí)行該指令時(shí),電機(jī)將按照設(shè)定的加速度(AC),減速度(DE)及運(yùn)行速度(VE),完成一段固定的相對(duì)位置距離(DI)。電機(jī)轉(zhuǎn)動(dòng)的方向由DI指令的正負(fù)極性決定。比如,DI32000 代表電機(jī)順時(shí)針轉(zhuǎn)動(dòng)32000步(或微步),而DI-32000代表電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)32000步(或微步)。上圖中列出了一個(gè)參考例程,Q程序通過WI指令首先等待輸入口3接收一個(gè)下降沿觸發(fā)信號(hào),如果條件滿足,電機(jī)將按照20 轉(zhuǎn)/秒的轉(zhuǎn)速,轉(zhuǎn)動(dòng)4圈;如果條件不滿足,程序?qū)⒁恢蓖A粼赪I指令處等待輸入口3接收正確的觸發(fā)信號(hào)為止 點(diǎn)到點(diǎn)絕對(duì)運(yùn)動(dòng)(Feed to Position)
FP(Feed to Position)指令用來完成點(diǎn)到點(diǎn)絕對(duì)位置運(yùn)動(dòng),當(dāng)執(zhí)行該指令時(shí),電機(jī)將按照設(shè)定的加速度(AC),減速度(DE)及運(yùn)行速度(VE),完成一段絕對(duì)位置距離(DI)。DI指令代表目標(biāo)絕對(duì)位置,電機(jī)轉(zhuǎn)動(dòng)方向不由其正負(fù)極性決定,而由電機(jī)當(dāng)前絕對(duì)位置與目標(biāo)絕對(duì)位置來決定。上圖中列出了一個(gè)參考例程,Q程序通過WI指令首先等待輸入口3接收一個(gè)下降沿觸發(fā)信號(hào),如果條件滿足,電機(jī)將按照20 轉(zhuǎn)/秒的轉(zhuǎn)速,轉(zhuǎn)動(dòng)4圈,然后等待1秒(WT指令),然后電機(jī)以20 轉(zhuǎn)/秒的轉(zhuǎn)速回到絕對(duì)位置0點(diǎn);如果條件不滿足,程序?qū)⒁恢蓖A粼赪I指令處等待輸入口3接收正確的觸發(fā)信號(hào)為止。 SP(Set Position)指令用來設(shè)置電機(jī)當(dāng)前的絕對(duì)位置,如發(fā)送“SP0”指令,將電機(jī)當(dāng)前位置設(shè)為絕對(duì)位置零點(diǎn)。注意,SP指令設(shè)置的參數(shù)是以編碼器Encoder Counts作為基本單位的,比如一個(gè)裝有500線編碼器的電機(jī),一圈有2000個(gè)Encoder Counts,如發(fā)送“SP5000”指令,將電機(jī)當(dāng)前位置設(shè)為以絕對(duì)位置零點(diǎn)順時(shí)針方向2.5圈的位置。 運(yùn)動(dòng)到傳感器位置(Feed to Sensor)
FS(Feed to Sensor)指令使電機(jī)以一個(gè)固定速度轉(zhuǎn)動(dòng),直到一個(gè)輸入口的電平狀態(tài)滿足觸發(fā)條件,電機(jī)減速,運(yùn)動(dòng)停止。運(yùn)動(dòng)參數(shù)由AC,DE,VE及DI指令決定,注意DI指令在FS指令執(zhí)行時(shí)代表輸入口電平狀態(tài)滿足觸發(fā)條件后,電機(jī)減速到0的運(yùn)動(dòng)距離,注意DI設(shè)定的減速具體必須大于最小減速距離Dm,最小減速距離由DE,VE,EG指令決定,計(jì)算公式如下,其中V代表VE設(shè)定值,R代表EG設(shè)定值,D代表DE設(shè)定值:
注意:當(dāng)DI設(shè)定值大于最小減速距離Dm時(shí),電機(jī)接收到輸入口觸發(fā)電平狀態(tài)(找到傳感器)后,會(huì)繼續(xù)以當(dāng)前速度向前運(yùn)動(dòng)(DI-Dm)的距離,然后以DE設(shè)定的減速度減速,直到完成Dm的減速距離。同時(shí),DI指令也決定了電機(jī)剛開始運(yùn)動(dòng)的方向,比如,DI8000 代表執(zhí)行FS指令后,電機(jī)順時(shí)針轉(zhuǎn)動(dòng),而DI-8000代表執(zhí)行FS指令后,電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)。輸入口電平狀態(tài)分為H(高電平),L(低電平),R(上升沿),F(xiàn)(下降沿)這幾種狀態(tài)。 上圖中列出了一個(gè)參考例程,Q程序通過WI指令首先等待輸入口3接收一個(gè)下降沿觸發(fā)信號(hào),如果條件滿足,取消限位功能,電機(jī)以5轉(zhuǎn)/秒的轉(zhuǎn)速順時(shí)針方向轉(zhuǎn)動(dòng),直到輸入口7接收到一個(gè)高電平觸發(fā)狀態(tài),驅(qū)動(dòng)器找到了傳感器,于是以DE設(shè)定的減速度,DI設(shè)定的減速距離完成減速到0。然后電機(jī)等待1秒鐘,隨后以20轉(zhuǎn)/秒的速度運(yùn)行到絕對(duì)位置零點(diǎn)處,打開限位功能。 循環(huán)(Looping)
用戶可以通過兩種方式來實(shí)現(xiàn)程序的循環(huán)。第一種使用QG(Queue Goto)指令,設(shè)置QG參數(shù)使程序回到設(shè)定的行數(shù)。下圖中列出了一個(gè)參考例程,在FL指令后等待時(shí)間0.5秒(WT0.5),然后使用QG指令,使程序回到第一行重新執(zhí)行,實(shí)現(xiàn)不斷循環(huán)。
第二種方法是使用QR(Queue Repeat)指令,QR指令指明跳轉(zhuǎn)到哪一行和循環(huán)次數(shù)。下圖中列出了一個(gè)參考例程,QR指令表示跳轉(zhuǎn)到第二行,參數(shù)為3,即循環(huán)次數(shù)由用戶自定義寄存器3中的值決定,在這里RX指令寫入數(shù)值5到自定義寄存器3, 所以程序循環(huán)執(zhí)行5次。
跳轉(zhuǎn)(Jumping)
程序跳轉(zhuǎn)由QJ(Queue Jump)指令實(shí)現(xiàn),跳轉(zhuǎn)和循環(huán)不同,跳轉(zhuǎn)主要判斷條件是否滿足,即跳轉(zhuǎn)指令通常和TI(輸入檢測(cè)),TR(寄存器檢測(cè)),CR(寄存器比較)指令配合使用。下圖中列出了一個(gè)參考例程,有兩種可能的運(yùn)動(dòng),順時(shí)針旋轉(zhuǎn),當(dāng)輸入信號(hào)5有效時(shí)(低電平有效)電機(jī)開始逆時(shí)針旋轉(zhuǎn),加速度300,減速度450,速度18.5,兩種運(yùn)動(dòng)間有0.25秒的等待時(shí)間。然后,檢測(cè)X5信號(hào)的狀態(tài),當(dāng) X5信號(hào)有效時(shí)(True),程序跳轉(zhuǎn)到第10行,開始逆時(shí)針旋轉(zhuǎn),如果X5信號(hào)為高時(shí)程序直接到第7行進(jìn)行順時(shí)針旋轉(zhuǎn),執(zhí)行完后回到第一行進(jìn)行循環(huán)。
