現代的可編程計算機控制器(PCC)已經發展到以微處理器為基礎、高度集成化的工業控制裝置。它是計算機技術與工業控制技術相結合的控制設備,可廣泛應用于各種機械,如金屬切削機床、金屬成型機床、裝配機械、機器人和電梯以及與工業計算機、以太網等相連構成整個工廠的自動控制系統[1,2] 。從廣義上來說, PCC也是一種計算機控制系統,只不過它比一般的計算機具有更強的與工業過程相連接的接口和更直接的適用于控制要求的編程語言。同時,PCC也具有一般可編程控制器的特點。也可采用面向控制過程,面向問題的簡單而直觀的控制型語句,直接表達被控對象的動作及輸入輸出關系。
1 可編程計算機控制器
20世紀90年代,可編程控制器技術隨著計算機技術、網絡通信技術、自動控制技術的飛速發展而不再是傳統意義上的可編程控制器,由于其數學處理能力、網絡通信能力、智能控制能力等得到發展,因此, 1994年開始被稱為可編程計算機控制器(PCC)。隨著PCC的不斷發展,它與3C(Comput-er ,Control ,Communication) 逐漸融為一體。目前的PCC已從小規模的單機順序控制,發展到包括過程控制、位置控制等場合的所有控制領域,并能組成工廠自動化的PCC綜合控制系統[3]。
2 PCC的CAN總線
傳統的串行通信傳輸方式包括RS-232 、RS-485等。RS-232是點對點的通信方式,傳送速度比較慢,距離比較短; RS-485的數據信號采用差分傳輸方式,傳送速度較快,但由于通信結構采用單主站總線訪問形式,應用有一定的局限性[4]。CAN的應用范圍現已遍及工廠自動化、機床、醫療設備、建筑環境控制,從高速網絡到低成本的多線路網絡。CAN總線具有強有力的錯誤檢測能力及差分驅動功能,速度快、傳送距離長等優點。CAN具有下列主要特性:多主站依據優先權進行總線訪問;無破壞性的基于優先權的仲裁;借助接收濾波的多地址幀傳送;遠程數據請求;配置靈活性;全系統數據相容性;錯誤檢測和出錯信息;發送期間若丟失仲裁或由于出錯而遭破壞的幀可自動重發送;暫時錯誤和永久性故障節點的判別以及故障節點的自動脫離[5]205 。相對傳統傳輸方式, PCC中采用CAN總線實現變量傳輸,具有的傳輸距離遠、準確率高以及傳送速率快等特點,編程簡單,修改容易,十分利于工程應用。
3 PCC實現單變量的傳輸
CAN總線進行數據通信時,用CANopen( )進行初始化,用CANwrite( )以及CANread( )實現兩個站點間單變量的傳輸[5]207 。
兩個PCC站點的站號分別為100 ,200;波特率為50 。站點200為寫數據, 站點100為接收數據,在循環程序部分對CAN 接口進行編程如下:
CANopen(1,50,8,adr(error - adr),"CAN",0,us-ident,rc-open)
CANwrite(1,us-ident,200,adr(wr-dat),8,rc-write)
CANread(1,us-ident,100,adr(rd-dat),rd-len ,rc-read)
在WA TCH 窗口進行變量調試。當站點200里面發送單變量數據時,站點100里面就能馬上讀到該變量數據,這樣就實現了單變量的傳輸。
4 PCC實現變量表的傳輸
CAN總線實現變量表傳輸,需先在數據文件中進行變量表的定義,定義每個變量的變量地址、變量名、變量使能以及讀寫標志。
在初始化程序部分先給變量表中的變量以及使能變量賦初值(初值皆為0),然后對CAN接口進行初始化,處理方法與傳輸單變量一致,在初始化程序中調用CANopen()既可。使用DA-ident 函數,獲得變量表cantable 的地址,如果地址為0(使用ifendif 語句實現) 則執行DA-info函數,獲得變量表的相關信息(如首地址,數據長度,內存變量類型等)用CANdftab()[5]210 創建一個包含CAN總線數據的變量列表,用戶可以通過事件變量(事件過程變量) 來進行數據讀寫。在寫數據時,如果事件變量設為1 ,則發送變量數據;在CAN信息發送后,事件變量復位為0。當讀數據時,此事件變量值設為1 。為了避免循環時間的問題,該功能僅在任務的初始化子程序中調用。周期性的讀、寫操作是由功能函數CANrwtab()[5]214進行處理的。
在循環程序部分將本站點的使能變量置1 ,用CANrwtab()對CAN接口進行讀寫操作,實現變量表傳輸。該功能處理由上一個功能函數定義的變量列表,且必須對其在循環任務中進行調用。如果總線沒有準備好,則CAN控制器在每一次調用次功能時,重新初始化。
CAN總線實現兩個站點間變量表的傳輸。其中,兩個站點的站號分別為100 ,200;波特率50;
定義變量表由2個整型變量構成。
(1)變量表數據文件(以2個整型變量的定義為例) :
$0000 0100 ," can-01-int-1 " ," ev-can-01-int-1 " , $0000001
$0000 0101 ," can-01-int-2 " ," ev-can-01-int-2 " , $0000001
$0000 0200 ," can-02-int-1 " ," ev-can-02-int-1 " , $0000000
$0000 0201 ," can-02-int-2 " ," ev-can-02-int-2 " , $0000000
(2) 初始化程序:
①給變量表中的所有變量以及使能變量賦初值(初值皆為0)
can-01-int-1= 0
ev-can-01-int-1= 0
②加入CANopen 函數打開CAN 總線
CANopen(1,50,8 , adr(error-adr) ,"CAN",0,us-ident,rc-open)
③加入DA-iden 函數,獲得變量表cantable的地址,返回到rc-ident中
rc-ident= DA -ident("cantab",0 ,adr(mo-ident))
④如果rc-ident=0(if endif ) 則執行DA-info函數,獲得變量表的相關信息(如首地址,數據長度,內存變量類型等),返回到rc-info 中
if rc-ident =0 then
rc-info= DA-info(mo-ident,adr(start-adr ),adr (da-len),adr(memory-type) )
endif
⑤加入CANdftab函數,定義變量表相關信息(如變量個數8個,錯誤返回值rc-tab-ident 等) 。
(3) 循環程序:
①本站點的使能變量置1 。
ev-can-01-int-1 =1
ev-can-01-int-2 =1
②如果rc-tab-ident= 0(if endif ) 則執行CANrwtab 函數,使得變量表能夠在兩個站點間進
行讀寫操作
If rc-tab-ident= 0 then
CANrwtab(1,us-ident,start-ad ,32,tab -ident ,rc-tab-ident)
endif
在WA TCH 窗口進行變量調試。給站點100的兩個變量can-01-int-1,can-01-int-2 賦值10
與20 , 站點200里面的參數can-02-int-1,can-02-int-2 馬上可讀到10與20 這個兩個數,反之亦
然,這樣就實現了變量表的傳輸。
5 結 語
PCC在CAN總線的通信中具有強大的功能,本文針對兩臺PCC之間變量的傳遞進行了研究,其
研究方法可擴展到多站點多變量的參數傳遞。另外,PCC還可以自行編寫通訊協議來實現數據的傳
輸。
參考文獻
[1] 貝加萊工業自動化有限公司. 貝加萊工業自動化B &R2000 可編程計算機技術AU TOMATION STUDIO 培訓手冊[M] . 2001 :2-5.
[2 ] 貝加萊工業自動化有限公司. 貝加萊工業自動化軟件及硬件技術手冊[M] . 2001 :3-10.
[3 ] 齊蓉,肖維萊. 可編程計算機控制技術[M] .北京:電子工業出版社,2005 :2-3.
[4 ] 齊蓉. 可編程計算機控制器原理及應用[M] .西安:西北工業大學出版社,2002 :8210.
[5 ] 鄔寬明. CAN 總線原理和應用系統設計[M] .北京:北京航空航天大學出社,1996 :205-215.
作者簡介:胡 江(1975) ,男,助理實驗師,專業方向:電氣控制及自動化。