侯海燕
(無(wú)錫科技職業(yè)學(xué)院軟件與服務(wù)外包學(xué)院,江蘇 無(wú)錫214028)
工業(yè)控制已從單機(jī)控制走向集中監(jiān)控、集散控制,如今已進(jìn)入網(wǎng)絡(luò)時(shí)代,工業(yè)控制器連網(wǎng)也為網(wǎng)絡(luò)管理提供了方便。ModBus就是工業(yè)控制器的網(wǎng)絡(luò)協(xié)議中的一種,通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。基于上述原理,本項(xiàng)目的伺服電機(jī)聯(lián)動(dòng)控制系統(tǒng)擬采用ModBus RTU通信協(xié)議進(jìn)行數(shù)據(jù)通信,控制多路PMW輸出,達(dá)到能夠同時(shí)對(duì)多臺(tái)電機(jī)聯(lián)動(dòng)控制的目的。傳輸介質(zhì)采用無(wú)線介質(zhì),延長(zhǎng)了通信距離,在工業(yè)應(yīng)用中日趨廣泛。
本項(xiàng)目利用上位機(jī)和多個(gè)多路PMW輸出級(jí)聯(lián)控制板卡相連,設(shè)計(jì)實(shí)現(xiàn)基于ModBus協(xié)議的上位機(jī)軟件,監(jiān)控、調(diào)整、微調(diào)多路PMW輸出,可廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。
控制板卡采用自主研發(fā)的NMA_BPC1000同步控制器模塊,主要用于控制多個(gè)變頻器,單個(gè)控制模塊具備12路DA信號(hào)輸出。采用GY-12DA同步控制器模塊,通過(guò)RS485通訊與PLC或電腦連接,產(chǎn)生0~10VDC模擬量輸出。其板載資源包括:1路RS485接口,支持ModBus-RTU協(xié)議;12路DA輸出,輸出幅度0~10V;支持多個(gè)ModBus從站站點(diǎn)設(shè)置,最多支持9個(gè)站點(diǎn);正常工作電壓+24VDC,輸入電壓范圍+22VDC~+26VDC,功耗4W。
本控制器具備1路RS485接口、電源輸入接口及DA輸出接口3中電氣接口,其各自連接器在板上分布如下圖1所示:
圖1 NMA_BPC1000電氣連接示意圖
GY_12DA支持ModBus-RTU協(xié)議,其讀寫操作支持單寄存器寫(06功能碼)、多寄存器讀(03功能碼)、多寄存器寫(10功能碼)。其控制寄存器及說(shuō)明如下:
表1 NMA1000_BPC1000控制寄存器
1.2.1 電壓設(shè)置寄存器(0x0~0xB)
ModBus寄存器地址0x0~0xB為用戶讀寫設(shè)置地址,用來(lái)被用戶寫入DA輸出值用,輸入值范圍為0~5000,對(duì)應(yīng)輸出電壓為0V~10.00V。
此寄存器初始值為0。
1.2.2 電壓滿度微調(diào)寄存器(0x1000~0x100B)
ModBus寄存器地址0x1000~0x100B為維護(hù)及微調(diào)參數(shù)地址,用來(lái)對(duì)滿度的輸出電壓10.00V進(jìn)行微調(diào)使用,輸入值范圍為-10~10。此寄存器初始值在出廠前由廠家進(jìn)行調(diào)整完畢,用戶一般情況下禁止操作。此寄存器不可反復(fù)進(jìn)行寫入操作,用戶調(diào)整完參數(shù)后應(yīng)關(guān)閉此寄存器的寫入操作,否則,將降低控制器的使用壽命。
ModBus是一種廣泛應(yīng)用于工業(yè)控制領(lǐng)域的標(biāo)準(zhǔn)通信協(xié)議,ModBus協(xié)議定義的是一種數(shù)據(jù)幀結(jié)構(gòu),獨(dú)立于物理層介質(zhì),所以控制器能夠識(shí)別和使用,而不管設(shè)備通信的網(wǎng)絡(luò)類型,具有良好的適用性。當(dāng)ModBus協(xié)議應(yīng)用在標(biāo)準(zhǔn)ModBus網(wǎng)絡(luò).將被直接傳送;如果應(yīng)用在其他網(wǎng)絡(luò),ModBus協(xié)議將被封裝到該網(wǎng)絡(luò)的通信數(shù)據(jù)幀結(jié)構(gòu)中發(fā)送。
ModBus通訊協(xié)議支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備。ModBus協(xié)議連接工控設(shè)備可形成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。RS-485是一個(gè)多引出線接口,這個(gè)接口可以有多個(gè)驅(qū)動(dòng)器和接收器,可以實(shí)現(xiàn)一臺(tái)PC與多臺(tái)單片機(jī)之間的串行通信。而且RS-485的最長(zhǎng)傳輸距離可達(dá)1200m,適合于遠(yuǎn)距離傳輸。本項(xiàng)目需要實(shí)現(xiàn)多站點(diǎn)通信,采用Rs-485串口通信標(biāo)準(zhǔn)。
本項(xiàng)目依據(jù)ModBus RTU模式協(xié)議,該協(xié)議特點(diǎn)有使用CRC校驗(yàn),數(shù)據(jù)幀的開頭和結(jié)尾都使用不少于3個(gè)半字符的時(shí)間間隔作為標(biāo)志,數(shù)據(jù)幀的發(fā)送必須是一個(gè)連續(xù)的數(shù)據(jù)流,不允許中途停頓。
ModBus數(shù)據(jù)幀包括幾個(gè)部分,地址、功能碼、校驗(yàn)碼等。其中地址指的是從站棧號(hào),取值為1-9,0為廣播地址。功能碼表示上位機(jī)要求從站執(zhí)行何種操作。GY_12DA功能碼有單寄存器寫(06功能碼)、多寄存器讀(03功能碼)、多寄存器寫(10功能碼)。從站收到上位機(jī)的功能碼后,如果一切正常,將原樣返回功能碼,否則,將返回錯(cuò)誤代碼。提示上位機(jī)有錯(cuò)誤發(fā)生。數(shù)據(jù)足請(qǐng)求和響應(yīng)的主要內(nèi)容。當(dāng)上位機(jī)向從站請(qǐng)求讀取寄存器內(nèi)容時(shí),數(shù)據(jù)將包括寄存器的起始地址及讀取的寄存器個(gè)數(shù)。寄存器是從站存放數(shù)據(jù)的地方,它的起始地址是從l開始的。但是上位機(jī)計(jì)算是由0開始的.所以對(duì)應(yīng)的實(shí)際寄存器地址應(yīng)該加l。從站回送響應(yīng)的數(shù)據(jù)包括數(shù)據(jù)長(zhǎng)度、實(shí)際采集的數(shù)據(jù)。數(shù)據(jù)長(zhǎng)度只是計(jì)算數(shù)據(jù)區(qū)的長(zhǎng)度,并不管其他部分的長(zhǎng)度。如果從站出現(xiàn)異常,數(shù)據(jù)就返回錯(cuò)誤代碼(Exception code),說(shuō)明發(fā)生何種錯(cuò)誤。
CRC校驗(yàn)即循環(huán)冗余校驗(yàn),是一個(gè)16位字,加入到數(shù)據(jù)幀時(shí)CRC是低位在前,高位在后。
表2 ModBus數(shù)據(jù)幀格式
本系統(tǒng)單片機(jī)采用的是GY-12DA同步控制器模塊,程序采用C語(yǔ)言編寫。從實(shí)時(shí)性考慮,下位機(jī)的通信程序采用的是中斷方式。該控制系統(tǒng)支持多點(diǎn)通信,最大支持9個(gè)站點(diǎn),站點(diǎn)號(hào)選擇開關(guān)E1采用旋轉(zhuǎn)編碼器實(shí)現(xiàn),旋轉(zhuǎn)編碼器支持0~9共10個(gè)編碼,其中0號(hào)編碼為模塊維護(hù)使用,編碼1~9代表ModBus站點(diǎn)號(hào)1~9。
下位機(jī)通信終端程序流程圖見圖3,首先進(jìn)行系統(tǒng)初始化(圖2),其中需要對(duì)ModBus協(xié)議初始化和使能,3個(gè)定時(shí)器初始化,一個(gè)定時(shí)器控制4路PMW信號(hào),從而控制12路PMW輸出。檢測(cè)RS485接口是否收到數(shù)據(jù),啟動(dòng)ModBus定時(shí)器,檢測(cè)是否接受到ModBus數(shù)據(jù)幀,如果數(shù)據(jù)幀在確定范圍內(nèi),進(jìn)行CRC校驗(yàn),如果從站地址正好是當(dāng)前站號(hào),檢測(cè)功能碼是否存在,實(shí)現(xiàn)讀寫功能。
圖2 系統(tǒng)初始化
圖3 系統(tǒng)控制流程
本文提出并設(shè)計(jì)了一種多路PMW控制板卡的設(shè)計(jì)與實(shí)現(xiàn)方案,可以適用于PC機(jī)和多個(gè)板卡之間的串行通信控制系統(tǒng)中,該控制板卡采用RS-485總線標(biāo)準(zhǔn),半雙工傳輸方式。下位機(jī)充分利用ModBus協(xié)議原理設(shè)計(jì)實(shí)現(xiàn)PMW多路控制輸出,測(cè)試表明,該設(shè)計(jì)方案可行。
[1]王有緒,許杰.PIC系列單片機(jī)接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2001,5:136-160.
[2]楊旭雷,張浩.基于RS485總線的測(cè)控系統(tǒng)串行通信協(xié)議及軟硬件實(shí)現(xiàn)[J].電氣自動(dòng)化,2002(2):28-31.