6.PMAC下位機-下位機程式設計
阿新 • • 發佈:2019-02-02
PMAC的下位機程式設計包括三種程式:命令序列程式、運動(Program)程式和PLC程式。
如下圖,PMAC中編寫程式,直接在File->new新建檔案會開啟編輯器,所有檔案為PMC字尾。
檢視當前程式可以在File->Uplaod Programs檢視當前已有的Program程式和PLC程式及他們的編號、狀態。
。
如下圖,勾選Show Message Window,開啟Mesage視窗
如下圖,在Message視窗可以可以看到當前程式是否有錯誤等,類似C語言編譯過程。
命令序列經常和PLC程式及運動Program程式混用,下面會說明。
PLC程式:
一般我們讓PLC程式始終在後臺執行,掃描指定的狀態,這裡我們在download PLC的時候就激活了PLC程式。這樣當在terminal中輸入&1b40r執行運動程式時,一旦p1=2,PLC可預設為立即掃描到該狀態,這時候就會終止該程式。 這裡本來運動程式會執行兩個迴圈,但是由於PMAC的Lookhead的功能,這裡只運行了一個迴圈就中止程式了,先留個懸念,馬上講到。
如下圖,PMAC中編寫程式,直接在File->new新建檔案會開啟編輯器,所有檔案為PMC字尾。
檢視當前程式可以在File->Uplaod Programs檢視當前已有的Program程式和PLC程式及他們的編號、狀態。
1.命令序列程式
上節講到,PMAC卡中可以使用手動操作,在命令列設定引數狀態、控制電機等,但是它一次只能傳送一條命令,那麼為了一次性執行多個命令序列,即可在PMC程式中如下編寫:i620=200
i621=20
i622=10
#6j/
這裡先設定6軸電機的運動引數,然後啟用電機,類似的寫法經常用於PMAC引數的初始化中。
程式編寫完成後,點選Download按鈕,命令系列程式在下載的過程中就會執行如下圖,勾選Show Message Window,開啟Mesage視窗
如下圖,在Message視窗可以可以看到當前程式是否有錯誤等,類似C語言編譯過程。
命令序列經常和PLC程式及運動Program程式混用,下面會說明。
2.運動(Program)程式
為了便於編寫運動程式,PMAC中使用一個座標系的概念,比如有6號電機和8號電機,我們在一個的座標系下將其分別對映到X和Y座標,如下所示這樣我們程式設計的時候,可以直接把當前運動想成現實座標系的運動,實際行我們在程式中指定X運動1個單位就是電機運動819.2個脈衝,換算成軸的運動距離就是1mm,這樣編寫程式簡潔易懂。 標準運動程式的模板如下:&1 #6->819.2Y ;機械手Y向,單位mm,(819.2=8192/10,絲桿導程為10mm) #8->819.2X ;機械手X向,單位mm,(819.2=8192/10,絲桿導程為10mm)
&1 ;座標系為1
CLOSE ;確認所有緩衝區被關閉
OPEN PROG 40 ;程式號為40
CLEAR
;;;;;;;;;;;;;;;;;;;;;運動程式主體-開始
;;;;;;;;;;;;;;;;;;;;;運動程式主體-結束
CLOSE
這些指令都是命令指令,所以他們都是在程式下載的時候執行,之間的運動程式主體會被寫到特定的緩衝區,但是在這時候程式是不執行的。
下面寫編寫一個簡單的程式,如下:
注意這裡,使用命令序列完成了軸的定義和電機的啟用,但是中間的兩行運動程式程式碼只是被寫到對應的緩衝區,還沒有執行。在terminal視窗輸入命令&1b40r程式才執行。注意一個座標系下關聯的所有電機必須都啟用,運動程式才能正常執行。在實際中,軸的定義和電機的啟用最好放到單獨的命令序列檔案中。 下面是一個比較複雜的程式:&1 CLOSE ;確認所有緩衝區被關閉 #6->819.2X ;機械手X向,單位mm,(819.2=8192/10,絲桿導程為10mm) #8->819.2Y ;機械手Y向,單位mm,(819.2=8192/10,絲桿導程為10mm) #6j/ #8j/ OPEN PROG 40 CLEAR INC ;增量運動模式 X(10) Y(10) ;X正方向前進10mm,Y正方向前進10mm CLOSE
&1
CLOSE ;確認所有緩衝區被關閉
#6->819.2X ;機械手X向,單位mm,(819.2=8192/10,絲桿導程為10mm)
#8->819.2Y ;機械手Y向,單位mm,(819.2=8192/10,絲桿導程為10mm)
#6j/
#8j/
OPEN PROG 40
CLEAR
;運動引數設定
TA(200) ;ms
TS(20) ;ms
F(50) ;mm/s
ABS ;絕對模式
Linear ;直線運動
p1 = 0
While (p1 < 10)
F(50)
X(30) Y(10)
F(10)
X(10) Y(30)
If (p1 > 2)
Return
EndIf
p1=p1+1
EndWhile
CLOSE
上面程式的含義就是從當前位置以速度50mm/s直線運動到絕對座標(30,10)的位置,再從當前位置以速度10mm/s直線運動到絕對座標(10,30)的位置,如此迴圈,如果沒有If語句的話,迴圈10次,但是這裡加了If語句就只迴圈2次了。
基本的運動程式就是這樣,再複雜的運動程式都是在此基礎上延伸出來的。各種運動指令請查PMAC Software Manual手冊,相應的程式編寫請查PMAC User Manual手冊。3.PLC運動程式
在電氣系統中,PLC是經常用的控制元件,就是有快速的掃描各個狀態,對掃描到的狀態變化做相應的處理。他的實時性非常高,簡潔可靠。在PMAC中有模擬PLC的功能。 同樣對於運動程式中的最後一個例項功能,改寫如下: 運動程式:&1
CLOSE ;確認所有緩衝區被關閉
#6->819.2X ;機械手X向,單位mm,(819.2=8192/10,絲桿導程為10mm)
#8->819.2Y ;機械手Y向,單位mm,(819.2=8192/10,絲桿導程為10mm)
#6j/
#8j/
OPEN PROG 40
CLEAR
TA(200) ;ms
TS(20) ;ms
F(50) ;mm/s
ABS ;絕對模式
Linear ;直線運動
p1 = 0
While (p1 < 10)
F(50)
X(30) Y(10)
F(10)
X(10) Y(30)
p1=p1+1
EndWhile
CLOSE
PLC程式:
OPEN PLC 20
CLEAR
If (p1 = 2)
COMMAND "&1b40a"
EndIf
CLOSE
enable plc 20
一般我們讓PLC程式始終在後臺執行,掃描指定的狀態,這裡我們在download PLC的時候就激活了PLC程式。這樣當在terminal中輸入&1b40r執行運動程式時,一旦p1=2,PLC可預設為立即掃描到該狀態,這時候就會終止該程式。 這裡本來運動程式會執行兩個迴圈,但是由於PMAC的Lookhead的功能,這裡只運行了一個迴圈就中止程式了,先留個懸念,馬上講到。