愛伊米

Q程式設計介紹及例程

1

Q程式設計介紹

SCL指令的使用已經有很多年的歷史。Q程式是建立在SCL指令基礎之上的一個新的平臺,擴充套件了SCL命令的使用,允許使用者建立與儲存SCL指令。這些程式可以儲存在驅動器的非易失性儲存器中,驅動可以脫離主機獨立執行這些程式。Q程式為系統設計提供了高度的靈活性和強大的功能。主要特點如下:

運動控制(例如FL、FP、SH等)

執行駐留程式

多工處理(請參閱MT指令)

條件判斷(例如OI、TI等指令)

數學運算(例如R+、R-、R*、R/、R|、R&等指令)

暫存器操作(例如RX、RM等指令)

1個Q程式支援多達12個程式段,每個程式段最多可以編寫62條指令。

2

參考例程

以下內容給出了Q程式設計的參考例程,並對這些指令逐條進行了解釋,Q程式設計中所有指令均為快取指令(Buffered Commands)

1

點到點相對運動(Feed to Length)

Q程式設計介紹及例程

FL(Feed to Length)指令用來完成點到點相對位置運動,當執行該指令時,電機將按照設定的加速度(AC),減速度(DE)及執行速度(VE),完成一段固定的相對位置距離(DI)。電機轉動的方向由DI指令的正負極性決定。比如,DI32000 代表電機順時針轉動32000步(或微步),而DI-32000代表電機逆時針轉動32000步(或微步)。上圖中列出了一個參考例程,Q程式透過WI指令首先等待輸入口3接收一個下降沿觸發訊號,如果條件滿足,電機將按照20 轉/秒的轉速,轉動4圈;如果條件不滿足,程式將一直停留在WI指令處等待輸入口3接收正確的觸發訊號為止。

2

點到點絕對運動(Feed to Position)

Q程式設計介紹及例程

FP(Feed to Position)指令用來完成點到點絕對位置運動,當執行該指令時,電機將按照設定的加速度(AC),減速度(DE)及執行速度(VE),完成一段絕對位置距離(DI)。DI指令代表目標絕對位置,電機轉動方向不由其正負極性決定,而由電機當前絕對位置與目標絕對位置來決定。上圖中列出了一個參考例程,Q程式透過WI指令首先等待輸入口3接收一個下降沿觸發訊號,如果條件滿足,電機將按照20 轉/秒的轉速,轉動4圈,然後等待1秒(WT指令),然後電機以20 轉/秒的轉速回到絕對位置0點;如果條件不滿足,程式將一直停留在WI指令處等待輸入口3接收正確的觸發訊號為止。

SP(Set Position)指令用來設定電機當前的絕對位置,如傳送“SP0”指令,將電機當前位置設為絕對位置零點。注意,SP指令設定的引數是以編碼器Encoder Counts作為基本單位的,比如一個裝有500線編碼器的電機,一圈有2000個Encoder Counts,如傳送“SP5000”指令,將電機當前位置設為以絕對位置零點順時針方向2。5圈的位置。

3

運動到感測器位置(Feed to Sensor)

FS(Feed to Sensor)指令使電機以一個固定速度轉動,直到一個輸入口的電平狀態滿足觸發條件,電機減速,運動停止。運動引數由AC,DE,VE及DI指令決定,注意DI指令在FS指令執行時代表輸入口電平狀態滿足觸發條件後,電機減速到0的運動距離,注意DI設定的減速具體必須大於最小減速距離Dm,最小減速距離由DE,VE,EG指令決定,計算公式如下,其中V代表VE設定值,R代表EG設定值,D代表DE設定值:

注意:

當DI設定值大於最小減速距離Dm時,電機接收到輸入口觸發電平狀態(找到感測器)後,會繼續以當前速度向前運動(DI-Dm)的距離,然後以DE設定的減速度減速,直到完成Dm的減速距離。同時,DI指令也決定了電機剛開始運動的方向,比如,DI8000 代表執行FS指令後,電機順時針轉動,而DI-8000代表執行FS指令後,電機逆時針轉動。輸入口電平狀態分為H(高電平),L(低電平),R(上升沿),F(下降沿)這幾種狀態。

上圖中列出了一個參考例程,Q程式透過WI指令首先等待輸入口3接收一個下降沿觸發訊號,如果條件滿足,取消限位功能,電機以5轉/秒的轉速順時針方向轉動,直到輸入口7接收到一個高電平觸發狀態,驅動器找到了感測器,於是以DE設定的減速度,DI設定的減速距離完成減速到0。然後電機等待1秒鐘,隨後以20轉/秒的速度執行到絕對位置零點處,開啟限位功能。

4

迴圈(Looping)

使用者可以透過兩種方式來實現程式的迴圈。第一種使用QG(Queue Goto)指令,設定QG引數使程式回到設定的行數。下圖中列出了一個參考例程,在FL指令後等待時間0。5秒(WT0。5),然後使用QG指令,使程式回到第一行重新執行,實現不斷迴圈。

Q程式設計介紹及例程

第二種方法是使用QR(Queue Repeat)指令,QR指令指明跳轉到哪一行和迴圈次數。下圖中列出了一個參考例程,QR指令表示跳轉到第二行,引數為3,即迴圈次數由使用者自定義暫存器3中的值決定,在這裡RX指令寫入數值5到自定義暫存器3, 所以程式迴圈執行5次。

5

跳轉(Jumping)

程式跳轉由QJ(Queue Jump)指令實現,跳轉和迴圈不同,跳轉主要判斷條件是否滿足,即跳轉指令通常和TI(輸入檢測),TR(暫存器檢測),CR(暫存器比較)指令配合使用。下圖中列出了一個參考例程,有兩種可能的運動,順時針旋轉,當輸入訊號5有效時(低電平有效)電機開始逆時針旋轉,加速度300,減速度450,速度18。5,兩種運動間有0。25秒的等待時間。然後,檢測X5訊號的狀態,當 X5訊號有效時(True),程式跳轉到第10行,開始逆時針旋轉,如果X5訊號為高時程式直接到第7行進行順時針旋轉, 執行完後回到第一行進行迴圈。

Q程式設計介紹及例程

6

程式呼叫(Calling)

程式呼叫是在不同的程式段(Segment)之間實現的。QC(Queue Call)指令允許使用者結束一個當前程式段,呼叫另一個程式段,執行完後,回到執行呼叫指令的第一個程式段。這樣,使用者可以把需要多次迴圈的程式單獨放到一個段中進行呼叫,以減少迴圈的次數和降低程式結構的複雜度。下圖中列出了一個參考例程,由第1程式段(Segment 1)和第2程式段(Segment 2)組成:

Q程式設計介紹及例程

第1程式段在第6、10行呼叫第2程式段,第2程式段中設定Y1低電平輸出,等待0。25秒,設定Y2低電平輸出,等待0。25秒。然後設定Y2高電平輸出,等待0。25秒,設定Y1高電平輸出,回到第1程式段,繼續執行第1程式段內後續指令。

7

多工處理(Multi-tasking)

多工處理模式(MT1)允許程式在執行執行指令(如FL,FP,CJ,FS等)時,同時執行其他指令,而不需要等待前一個執行指令的結束。在單任務處理模式(MT0)下,Q程式是順序執行的,即執行下一條指令會等待上一條指令的結束。例如,FL指令後是SO指令,那麼驅動器在FL指令結束後才會設定輸出。當開啟多工處理模式(MT1),Q程式執行執行指令的同時會執行後面的指令。例如,上面的FL,SO指令,執行多工處理,驅動器開始執行並且立即執行輸出設定,不需要等待FL指令執行完畢。多工處理由MT指令設定,MT1為多工處理開啟,MT0為多工處理關閉(單任務處理模式)。

Q程式設計介紹及例程

例如上圖所示,當MT=1,驅動器執行FL指令,等待0。5秒後設置輸出口Y1為低電平,不需要等待FL指令結束後,再等待0。5秒才輸出低電平。以上是一個最基本的例子,如果您嘗試對您的驅動器進行程式設計,請儘量保證DI值足夠大以觀察不同的指令執行後的區別。注意,因為電機不能同時執行兩種運動,即使多工處理開啟後,運動指令還是會有先後順序。例如,多工處理開啟後,程式中連續有兩種執行指令,那麼驅動器還是會等待第一條指令完成後執行下一條指令。

END