侯海燕
(無錫科技職業學院軟件與服務外包學院,江蘇 無錫214028)
工業控制已從單機控制走向集中監控、集散控制,如今已進入網絡時代,工業控制器連網也為網絡管理提供了方便。ModBus就是工業控制器的網絡協議中的一種,通過此協議,控制器相互之間、控制器經由網絡和其它設備之間可以通信。基于上述原理,本項目的伺服電機聯動控制系統擬采用ModBus RTU通信協議進行數據通信,控制多路PMW輸出,達到能夠同時對多臺電機聯動控制的目的。傳輸介質采用無線介質,延長了通信距離,在工業應用中日趨廣泛。
本項目利用上位機和多個多路PMW輸出級聯控制板卡相連,設計實現基于ModBus協議的上位機軟件,監控、調整、微調多路PMW輸出,可廣泛應用在從測量、通信到功率控制與變換的許多領域中。
控制板卡采用自主研發的NMA_BPC1000同步控制器模塊,主要用于控制多個變頻器,單個控制模塊具備12路DA信號輸出。采用GY-12DA同步控制器模塊,通過RS485通訊與PLC或電腦連接,產生0~10VDC模擬量輸出。其板載資源包括:1路RS485接口,支持ModBus-RTU協議;12路DA輸出,輸出幅度0~10V;支持多個ModBus從站站點設置,最多支持9個站點;正常工作電壓+24VDC,輸入電壓范圍+22VDC~+26VDC,功耗4W。
本控制器具備1路RS485接口、電源輸入接口及DA輸出接口3中電氣接口,其各自連接器在板上分布如下圖1所示:

圖1 NMA_BPC1000電氣連接示意圖
GY_12DA支持ModBus-RTU協議,其讀寫操作支持單寄存器寫(06功能碼)、多寄存器讀(03功能碼)、多寄存器寫(10功能碼)。其控制寄存器及說明如下:

表1 NMA1000_BPC1000控制寄存器
1.2.1 電壓設置寄存器(0x0~0xB)
ModBus寄存器地址0x0~0xB為用戶讀寫設置地址,用來被用戶寫入DA輸出值用,輸入值范圍為0~5000,對應輸出電壓為0V~10.00V。
此寄存器初始值為0。
1.2.2 電壓滿度微調寄存器(0x1000~0x100B)
ModBus寄存器地址0x1000~0x100B為維護及微調參數地址,用來對滿度的輸出電壓10.00V進行微調使用,輸入值范圍為-10~10。此寄存器初始值在出廠前由廠家進行調整完畢,用戶一般情況下禁止操作。此寄存器不可反復進行寫入操作,用戶調整完參數后應關閉此寄存器的寫入操作,否則,將降低控制器的使用壽命。
ModBus是一種廣泛應用于工業控制領域的標準通信協議,ModBus協議定義的是一種數據幀結構,獨立于物理層介質,所以控制器能夠識別和使用,而不管設備通信的網絡類型,具有良好的適用性。當ModBus協議應用在標準ModBus網絡.將被直接傳送;如果應用在其他網絡,ModBus協議將被封裝到該網絡的通信數據幀結構中發送。
ModBus通訊協議支持傳統的RS-232、RS-422、RS-485和以太網設備。ModBus協議連接工控設備可形成工業網絡,進行集中監控。RS-485是一個多引出線接口,這個接口可以有多個驅動器和接收器,可以實現一臺PC與多臺單片機之間的串行通信。而且RS-485的最長傳輸距離可達1200m,適合于遠距離傳輸。本項目需要實現多站點通信,采用Rs-485串口通信標準。
本項目依據ModBus RTU模式協議,該協議特點有使用CRC校驗,數據幀的開頭和結尾都使用不少于3個半字符的時間間隔作為標志,數據幀的發送必須是一個連續的數據流,不允許中途停頓。
ModBus數據幀包括幾個部分,地址、功能碼、校驗碼等。其中地址指的是從站棧號,取值為1-9,0為廣播地址。功能碼表示上位機要求從站執行何種操作。GY_12DA功能碼有單寄存器寫(06功能碼)、多寄存器讀(03功能碼)、多寄存器寫(10功能碼)。從站收到上位機的功能碼后,如果一切正常,將原樣返回功能碼,否則,將返回錯誤代碼。提示上位機有錯誤發生。數據足請求和響應的主要內容。當上位機向從站請求讀取寄存器內容時,數據將包括寄存器的起始地址及讀取的寄存器個數。寄存器是從站存放數據的地方,它的起始地址是從l開始的。但是上位機計算是由0開始的.所以對應的實際寄存器地址應該加l。從站回送響應的數據包括數據長度、實際采集的數據。數據長度只是計算數據區的長度,并不管其他部分的長度。如果從站出現異常,數據就返回錯誤代碼(Exception code),說明發生何種錯誤。
CRC校驗即循環冗余校驗,是一個16位字,加入到數據幀時CRC是低位在前,高位在后。

表2 ModBus數據幀格式
本系統單片機采用的是GY-12DA同步控制器模塊,程序采用C語言編寫。從實時性考慮,下位機的通信程序采用的是中斷方式。該控制系統支持多點通信,最大支持9個站點,站點號選擇開關E1采用旋轉編碼器實現,旋轉編碼器支持0~9共10個編碼,其中0號編碼為模塊維護使用,編碼1~9代表ModBus站點號1~9。
下位機通信終端程序流程圖見圖3,首先進行系統初始化(圖2),其中需要對ModBus協議初始化和使能,3個定時器初始化,一個定時器控制4路PMW信號,從而控制12路PMW輸出。檢測RS485接口是否收到數據,啟動ModBus定時器,檢測是否接受到ModBus數據幀,如果數據幀在確定范圍內,進行CRC校驗,如果從站地址正好是當前站號,檢測功能碼是否存在,實現讀寫功能。

圖2 系統初始化

圖3 系統控制流程
本文提出并設計了一種多路PMW控制板卡的設計與實現方案,可以適用于PC機和多個板卡之間的串行通信控制系統中,該控制板卡采用RS-485總線標準,半雙工傳輸方式。下位機充分利用ModBus協議原理設計實現PMW多路控制輸出,測試表明,該設計方案可行。
[1]王有緒,許杰.PIC系列單片機接口技術及應用系統設計[M].北京:北京航空航天大學出版社,2001,5:136-160.
[2]楊旭雷,張浩.基于RS485總線的測控系統串行通信協議及軟硬件實現[J].電氣自動化,2002(2):28-31.