1、開發(fā)背景
隨著自動(dòng)化程度日益提高,對(duì)單臺(tái)變頻器的控制在許多場(chǎng)合已經(jīng)不能滿足生產(chǎn)的要求,必須對(duì)多臺(tái)變頻器進(jìn)行協(xié)調(diào)控制,因此變頻調(diào)速技術(shù)也逐漸朝著網(wǎng)絡(luò)化的方向發(fā)展。為適應(yīng)這一發(fā)展方向的需要,各大公司相繼推出了帶有標(biāo)準(zhǔn)通訊接口的通用變頻器,為用戶設(shè)計(jì)滿足工業(yè)現(xiàn)場(chǎng)需求的控制系統(tǒng)帶來(lái)了極大的方便。但是只有極少數(shù)公司的變頻器支持標(biāo)準(zhǔn)的通信協(xié)議<例如:PROFIBUC、 CANBUS 等),實(shí)際控制系統(tǒng)有時(shí)會(huì)要求與不支持標(biāo)準(zhǔn)通信協(xié)議的變頻器通信,普通的PLC 也不具備與第三方產(chǎn)品通信的能力,造成系統(tǒng)集成的巨大困難。讓開發(fā)人員從底層開發(fā)通信協(xié)議是一項(xiàng)復(fù)雜且工作量相當(dāng)大的工作,而且系統(tǒng)的可靠性也難以得到保證。基于上述問(wèn)題,貝加萊2005系列 PCC(可編程計(jì)算機(jī)控制器)產(chǎn)品除了支持標(biāo)準(zhǔn)的通信協(xié)議之外, 還向用戶提供了用于與第三方產(chǎn)品通信的協(xié)議開發(fā)工具———幀驅(qū)動(dòng)器,用戶只需要了解第三方產(chǎn)品的通信協(xié)議細(xì)節(jié)<包括信息幀格式的組成等>,并用幀驅(qū)動(dòng)器寫出與第三方產(chǎn)品通信協(xié)議一樣的通信規(guī)約,就可方便地實(shí)現(xiàn)PCC與第三方產(chǎn)品之間的通信。
本文利用PCC的幀驅(qū)動(dòng)器,成功地實(shí)現(xiàn)了PCC 對(duì)多臺(tái)變頻器的網(wǎng)絡(luò)控制,并且PCC 可以作為上層網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),以實(shí)現(xiàn)全廠的網(wǎng)絡(luò)化和自動(dòng)化。Driveframe 是一個(gè)運(yùn)行在PLC 里面的函數(shù)庫(kù),系統(tǒng)的串行通信程序是用B&R Automation StudioTM下的Automation Basic來(lái)開發(fā)的,作為完整的任務(wù)模塊可以添加到任何其它復(fù)雜項(xiàng)目中,不僅能提高系統(tǒng)的可靠性,而且可以提高代碼的可重用性,縮短項(xiàng)目的開發(fā)周期,使項(xiàng)目開發(fā)人員能夠方便進(jìn)行系統(tǒng)集成。為了擴(kuò)大串行通信的有效傳輸距離,提高通信傳輸速率,增強(qiáng)抗干擾能力,采用RS—422/485 串行總線通信標(biāo)準(zhǔn)。
2、系統(tǒng)的總體設(shè)計(jì)
變頻器采用西門子的Micro Master變頻器,PCC采用貝加萊的B&R2003。PCC 通過(guò)RS-485網(wǎng)絡(luò)與多個(gè)變頻器相連接,最多可達(dá)32 臺(tái),波特率為10Mb/s時(shí),通信距離為15m;波特率為100Kb/s 時(shí),通信距離可達(dá)1200m。每臺(tái)變頻器被賦予各自獨(dú)立的地址碼用以識(shí)別身份,這樣,PCC 便能通過(guò)RS-485接口,對(duì)掛在總線的所有變頻器進(jìn)行控制操作。
3、利用PCC控制變頻器
3.1變頻器的串行通訊協(xié)議
西門子Micromaster變頻器在遠(yuǎn)程通訊時(shí),遵循西門子的USS 通信協(xié)議。USS 通信協(xié)議由一個(gè)雙向信息表組成;接受來(lái)自遠(yuǎn)程主機(jī)發(fā)送的控制信息,并反饋信息給主機(jī)作為已接收信息后的應(yīng)答。其報(bào)文結(jié)構(gòu)包含了參數(shù)數(shù)據(jù)和過(guò)程數(shù)據(jù),前者用于改變變頻器的參數(shù),后者用于快速刷新變頻器的過(guò)程數(shù)據(jù),如啟動(dòng)停止、速度給定、力矩給定等。USS 協(xié)議的數(shù)據(jù)報(bào)文由14 個(gè)字節(jié)組成。每個(gè)字節(jié)采用2 位16 進(jìn)制數(shù)的形式,遵循UART 格式:1 個(gè)起始位,8 個(gè)數(shù)據(jù)位,1 個(gè)偶校驗(yàn)位和1個(gè)停止位。變頻器接收數(shù)據(jù)的通信協(xié)議如下:
STX 為起始字符,02H;LGE為發(fā)送字節(jié)數(shù), 對(duì)于Micro Master為0CH(12)個(gè)字節(jié);ADR 為變頻器的地址碼,取值范圍為0~31 (bit0-4位),bit5 為1 時(shí)為廣播發(fā)送;PKE 為16 位的字,用來(lái)控制變頻器的運(yùn)行參數(shù)設(shè)置。各bit 的含義如下:
對(duì)于Micromaster變頻器,控制位為0001 時(shí),讀變頻器的參數(shù),控制位為0010 時(shí),寫參數(shù)到變頻器的RAM和EEPROM,Bit11未用,置為0:IND為16 位的字,未用,置為0:VAL為16位的變頻器參數(shù)值,與PKE 一起將運(yùn)行參數(shù)寫入到變頻器中;STW 為16位的字,用來(lái)控制變頻器的運(yùn)行動(dòng)作;HSW 為16 位的字, 用來(lái)控制變頻器的輸出頻率, 滿頻時(shí)的值為16384(4000H)對(duì)應(yīng)100%的輸出頻率,最大值為32767(8000H)對(duì)應(yīng)200%的輸出頻率,當(dāng)取值為:32768~65535 時(shí),表示反向的輸出頻率從0~200%變化,電機(jī)反轉(zhuǎn);BCC 為校驗(yàn)字節(jié),是前面所有字節(jié)的異或和。
同時(shí),變頻器也向PCC 回送數(shù)據(jù)報(bào)文,其通信協(xié)議如下:
與PCC向變頻器發(fā)送的數(shù)據(jù)報(bào)文相比,變頻器回送的數(shù)據(jù)報(bào)文只是以ZSW 代替了STW,HIW 代替了HSW,其余字節(jié)的含義是一樣的。ZSW 是16 位的狀態(tài)字,用來(lái)表示變頻器的當(dāng)前運(yùn)行狀態(tài);HIW 也是16 位的字,代表變頻器的輸出頻率,其意義與HSW 是一樣的。
3.2 PCC 幀驅(qū)動(dòng)器的配置
PCC 是貝加萊公司于1994 年推出的新一代硬件平臺(tái),它是集計(jì)算機(jī)技術(shù)、通訊技術(shù)和控制技術(shù)(3C技術(shù))于一體的新型控制裝置。PCC 的一個(gè)顯著特點(diǎn)是其具有強(qiáng)大的網(wǎng)絡(luò)通信能力,除了標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議外,通過(guò)幀驅(qū)動(dòng)器可以很容易地制作任意第三家的串行通信協(xié)議。利用幀驅(qū)動(dòng)器編寫串行通信程序比傳統(tǒng)的通信編程方法要容易得多, 它的命令包括如下。FRM-xopen:初始化接口,為幀驅(qū)動(dòng)器分配緩存,安裝相關(guān)的中斷處理程序。FRN-read:讀數(shù)據(jù)并將其放在讀緩存區(qū)。FRM-RBUF:釋放讀緩存區(qū)。FRM-GBUF:申請(qǐng)寫緩存區(qū)。FRM-WRITE:將數(shù)據(jù)寫入寫緩存區(qū)。FRM-ROBUF:釋放寫緩存區(qū)。FRM-CLOSE:接口通信結(jié)束。FRM-ctrl:接口控制。串口在使用前必須初始化,設(shè)置串口操作所需要的參數(shù), 這樣在程序初始化部分需要使用
FRM-xopen(enable,adr(device),adr(mode),adr(config),status,ident)函數(shù)來(lái)初始化串口。參數(shù)mode, 是用來(lái)定義接口參數(shù)的字符串地址,其字符串格式為:
“[(TYPE)],[(BAUD)],[(PARITY)],[(DATABIT)],[(STOPBIT)],[(OPTION)]”TYPE為通信接口的類型,BAUD為波特率,PARITY 為校驗(yàn)類型,DATABIT為數(shù)據(jù)位個(gè)數(shù),STOPBIT為停止位個(gè)數(shù),OPTION 為可定義硬件握手。
3.3 程序?qū)崿F(xiàn)
PCC的軟件可分為系統(tǒng)軟件和應(yīng)用軟件兩大類。PCC 的操作系統(tǒng)是系統(tǒng)軟件的核心,是一個(gè)分時(shí)多任務(wù)的操作系統(tǒng)。一個(gè)完整的復(fù)雜項(xiàng)目可分成多個(gè)獨(dú)立的任務(wù)來(lái)完成,每個(gè)任務(wù)都是獨(dú)立的程序,有各自的循環(huán)時(shí)間,可以完成各種不同的功能,真正實(shí)現(xiàn)了軟件的模塊化設(shè)計(jì)。此外PCC 還提供了大量系統(tǒng)模塊和應(yīng)用函數(shù),系統(tǒng)模塊可以在需要的時(shí)候方便地加載至操作系統(tǒng)中,應(yīng)用函數(shù)可以根據(jù)用戶及應(yīng)用程序的需要,模塊式地添加到PCC 的軟件系統(tǒng)中。應(yīng)用軟件是指用戶的應(yīng)用程序。PCC以PC機(jī)作為在線編程開發(fā)工具,其編程語(yǔ)言不僅可以采用常規(guī)PLC的梯形圖(LAD)和指令表(STL),而且還可采用面向控制的結(jié)構(gòu)化高級(jí)語(yǔ)言(例如B&R Automation Basic 、C語(yǔ)言)。
本系統(tǒng)采用B&R Automation Basic 作為編程語(yǔ)言,系統(tǒng)采用2 個(gè)任務(wù)層來(lái)完成通信功能。負(fù)責(zé)通信的任務(wù)(任務(wù)1)工作在標(biāo)準(zhǔn)任務(wù)層TC#4,掃描周期為100ms;負(fù)責(zé)循環(huán)設(shè)置各變頻器參數(shù)和頻率的任務(wù)(任務(wù)2)工作在標(biāo)準(zhǔn)任務(wù)層TC#1,掃描周期為10ms,優(yōu)先級(jí)高于任務(wù)1。在運(yùn)行程序之前,須將模塊“dvframe.br”下載到CC,以實(shí)現(xiàn)對(duì)幀驅(qū)動(dòng)器的管理。
3.3.1 初始化接口
串口初始化程序必須放在程序的初始化部分,即僅在首次掃描時(shí)運(yùn)行初始化程序。本例設(shè)置串口參數(shù)為:RS-485 接口,波特率9600b/s,1 個(gè)偶校驗(yàn)位,8 個(gè)數(shù)據(jù)位,1 個(gè)停止位。設(shè)置
如下:(* initprogram*) myconfig.ldle=2;最大字節(jié)間隔時(shí)間;設(shè)置串口初始化參數(shù)FRM-xopen(1, “SS2.IF2”, “RS485,9600,E,8,1”,adr(my-config),status,ident)enable=1
3.3.2 向變頻器寫數(shù)據(jù)
串口初始化成功后,就可以通過(guò)幀驅(qū)動(dòng)器的寫命令向串口寫數(shù)據(jù),以實(shí)現(xiàn)對(duì)變頻器的控制和監(jiān)測(cè)。程序如下:
If(status=0)and(enable=1)then:// 串口初始化成功
FRM-gbuf(enable,ident,g-stst,buffer,buflng)://獲得寫緩沖區(qū)
If(g-stat=0)then enable=0 write=1:// 允許寫操作
endif endif outbufaccessbuffer:// 獲得指向?qū)懢彌_區(qū)的指針;向?qū)懢彌_區(qū)寫數(shù)據(jù),其中(ADR~HSW1)為全局變量
outbuf[0]=$02:// 起始字符
outbuf[1]=$0c://數(shù)據(jù)長(zhǎng)度字符outbuf[2]=ADR:// 變頻器地址outbuf[3]=PKEh:// 變頻器參數(shù)
outbuf[4]=PKElotbuf[5]=$00outbuf[6]= $00outbuf[7]=VALh]:// 變頻器參數(shù)值outbuf[8] =VALloutbuf[9] =STWh:// 變頻器運(yùn)行參數(shù)
outbuf[10] =STWloutbuf[11] =HSWh:// 變頻器輸出頻率
outbuf[12]=HSWl://計(jì)算效驗(yàn)和
bcc=02 loop j=1 12 do
bcc=bcc×oroutbuf[j]loopoutbuf[13] =bccoing=14:// 定義寫緩沖區(qū)的長(zhǎng)度
if(write=1)then FRM-write(1,ident,adr(outbul),olng,w-stat) ://向串口寫數(shù)據(jù)
write=0
if(w-stat<>0)then FRM-write(1,ident,adr(outbul),olng,rostat):// 釋放寫緩沖區(qū)
endif
endif
3.3.3從變頻器讀數(shù)據(jù)
由于USS 通信協(xié)議由一個(gè)雙向信息表組成,在向變頻器寫完數(shù)據(jù)后,須通過(guò)幀驅(qū)動(dòng)器的讀指令來(lái)讀取變頻器的返回報(bào)文。程序如下:
FRM-read(1,ident,r-stat,r-buf,rbuflng)://從串口讀數(shù)據(jù)
If(r-stat=0)then memcpy(adr(mybuf),r-buf,rbuflng)://保存讀緩沖區(qū)中的數(shù)據(jù)FRM-rbuf(1,ident,r-buf,rbuflng,rbstat)://釋放讀緩沖區(qū)
4 結(jié)束語(yǔ)
本文利用PCC的幀驅(qū)動(dòng)器和Micromaster變頻器的串行通信功能,實(shí)現(xiàn)了PCC對(duì)多臺(tái)變頻器的網(wǎng)絡(luò)控制,并能實(shí)時(shí)監(jiān)測(cè)各變頻器的運(yùn)行狀態(tài),從根本上增強(qiáng)了系統(tǒng)可靠性,提高了生產(chǎn)效益。采用B&R Automation Basic 開發(fā)的串行通信程序,并在實(shí)踐中取得良好的運(yùn)行效果。該程序具有通用性,針對(duì)不同的通信協(xié)議,只需做簡(jiǎn)單的修改,就可以模塊式地添加到其它復(fù)雜項(xiàng)目中,既可提高系統(tǒng)的可靠性,又可縮短項(xiàng)目的開發(fā)周期。將該方法與新型控制理論相結(jié)合,可實(shí)現(xiàn)高精度的同步傳動(dòng)和多電機(jī)協(xié)調(diào)控制。