時(shí)間:2012年4月21日 來源:互聯(lián)網(wǎng) 關(guān)鍵詞: Modbus-RTU 三菱 PLC ABB 變頻器 ABB變頻器 

 

  0 引言  Modbus協(xié)議是由美國MODICON(莫迪康)公司于20世紀(jì)80年代末開發(fā),有Modbus-RTU、Modbus-ASCII和Modbus-TCP 3種通信方式,其中Modbus-RTU、Modbus-ASCII使用RS-232、RS-422和RS-485串行接口進(jìn)行傳輸。 Modbus協(xié)議具有良好兼容性和開放性,為各產(chǎn)商生產(chǎn)的工業(yè)控制器(如工控機(jī)、PLC、變頻器和各種智能儀器儀表等)所采用,用于控制器相互之間、控制器(經(jīng)網(wǎng)絡(luò))與其它設(shè)備之間的通信。常用的變頻器品牌如ABB、三菱、海利普、東芝、LS、臺(tái)達(dá)和安邦信等都兼容Modbus-RTU通信協(xié)議,這為變頻器使用功能的擴(kuò)展提供了空間,也為以電動(dòng)機(jī)為重要執(zhí)行元件的工業(yè)自動(dòng)化控制系統(tǒng)的進(jìn)一步發(fā)展提供了有力支持?! ? Modbus-RTU協(xié)議信息幀  1.1 Modbus-RTU協(xié)議信息幀格式  Modbus-RTU協(xié)議常用功能信息幀格式如下:  Modbus協(xié)議通  

  信采用主從通信技術(shù),允許主機(jī)與一臺(tái)或多臺(tái)從機(jī)通信。每次通信均由主機(jī)通過信息幀發(fā)出請求信息,從機(jī)收到正確無誤的請求信息后,通過響應(yīng)信息幀返回相應(yīng)的數(shù)據(jù)或狀態(tài)信息以響應(yīng)主機(jī)請求。信息幀是主機(jī)與從機(jī)之間進(jìn)行Modbus-RTU協(xié)議通信的基礎(chǔ),由地址信息、功能信息、數(shù)據(jù)信息和錯(cuò)誤校驗(yàn)信息4個(gè)部分按一定順序組成,各信息數(shù)據(jù)分別存放在8位十六進(jìn)制字節(jié)中?! 臋C(jī)地址是從機(jī)唯一的通信地址,可設(shè)定值為1~247,0為主機(jī)對全部從機(jī)進(jìn)行廣播,從機(jī)不響應(yīng)。功能代碼是主機(jī)對從機(jī)的要求,從機(jī)根據(jù)要求執(zhí)行相關(guān)動(dòng)作。Modbus-RTU協(xié)議支持技術(shù)規(guī)范中規(guī)定從零開始尋址空間,所以在設(shè)定從機(jī)Modbus-RTU協(xié)議分配的保持寄存器開始地址時(shí),實(shí)際的地址是設(shè)定開始地址的數(shù)值加上1?! ?.2 出錯(cuò)校驗(yàn)CRC碼  Modbus-RTU協(xié)議為保證主機(jī)和從機(jī)之間的通信信息完整正確,在信息幀中加入出錯(cuò)校驗(yàn)CRC碼。出錯(cuò)校驗(yàn)CRC碼使用16位循環(huán)冗余的方法,占用2個(gè)字節(jié),包含了一個(gè)16位的二進(jìn)制值。CRC值由主機(jī)計(jì)算出來附加到信息幀上,從機(jī)在接收信息時(shí)重新計(jì)算CRC值,然后與接收到的CRC值進(jìn)行比較,如果這兩個(gè)值不相等,說明信息幀有錯(cuò)誤。在自動(dòng)控制系統(tǒng)中,各種通信信息在傳輸中經(jīng)常受到電噪聲、電磁干擾以及其它干擾,數(shù)據(jù)和控制指令可能會(huì)發(fā)生一些改變,使控制系統(tǒng)產(chǎn)生異常。Modbus-RTU通信協(xié)議在信息幀中加入出錯(cuò)校驗(yàn)CRC碼,能夠保證從機(jī)不去響應(yīng)或執(zhí)行在傳輸過程中發(fā)生改變的數(shù)據(jù)和指令信息,大大提高了系統(tǒng)的安全性和效率。生成16位循環(huán)冗余出錯(cuò)校驗(yàn)CRC碼的步驟如下:  (1)設(shè)置一個(gè)值為H0FFFF(即全部位均為1)的16位寄存器,稱之為CRC寄存器。  (2)把第一個(gè)8位字節(jié)與CRC寄存器低位進(jìn)行異或運(yùn)算。將運(yùn)算結(jié)果儲(chǔ)存在CRC寄存器中?! ?3)把CRC寄存器中的位向右(低位方向)移一位,最高位用0填補(bǔ),檢查最低位的值?! ?4)如果最低位的值是0,則重復(fù)第(3)步;如果最低位的值是1,則將CRC寄存器與多項(xiàng)式HA001(1010000000000001)進(jìn)行異或運(yùn)算?! ?5)重復(fù)上述第(3)步和第(4)步,直至CRC寄存器共向右移8位,這時(shí)一個(gè)8位字節(jié)的數(shù)據(jù)處理完成?! ?6)重復(fù)上述第(2)步到第(5)步,進(jìn)行下一個(gè)8位字節(jié)的處理?! ?7)重復(fù)上述第(2)步到第(6)步,直到將信息幀所有字節(jié)均與這個(gè)CRC寄存器進(jìn)行過異或運(yùn)算?! ?8)最后這個(gè)16位CRC寄存器中的值即為2個(gè)字節(jié)CRC校驗(yàn)碼。  三菱FX1N系列PLC生成CRC碼的程序如圖1所示?!?/p>

   圖1 生成出錯(cuò)校驗(yàn)CRC碼的PLC程序  2 Modbus協(xié)議通信系統(tǒng)組成  Modbus-RTU協(xié)議通信系統(tǒng)組成如圖2所示,由ABB ACS510系列變頻器、三菱FX1N系列PLC和三菱FX1N-485-BD通信板組成。PLC通過RS-485通信板用屏蔽雙絞線連接到變頻器內(nèi)置RS-485接口上,構(gòu)成Modbus-RTU協(xié)議通信的傳輸通道。根據(jù)控制系統(tǒng)的作用和目的,在變頻器上設(shè)定好Modbus-RTU協(xié)議通信參數(shù)和其它相關(guān)參數(shù),并向PLC中輸入已編寫好的包含Modbus-RTU協(xié)議通信程序在內(nèi)的控制程序后,PLC和變頻器之間就可以進(jìn)行Modbus-RTU協(xié)議通信?! odbus-RTU協(xié)議通信使用專用的信息幀,在主機(jī)PLC與從機(jī)變頻器之間進(jìn)行串行通信。PLC發(fā)出查詢信息幀,變頻器接收到正確的查詢信息后向PLC返回發(fā)送響應(yīng)信息幀,并執(zhí)行查詢信息幀所要求的功能。當(dāng)變頻器接收到異常的查詢信息時(shí),就返回錯(cuò)誤響應(yīng)信息幀或者不返回響應(yīng)信息幀,同時(shí)不執(zhí)行查詢信息要求的功能。信息幀具有讀取數(shù)據(jù)和寫入數(shù)據(jù)的功能,使PLC不僅能夠?qū)懭牖蜃x取變頻器的參數(shù),還可以對變頻器發(fā)出控制指令并確認(rèn)其運(yùn)行狀態(tài),這樣PLC就可以全方位監(jiān)控變頻器的運(yùn)行。 

   圖2 變頻器與PLC間Modbus協(xié)議通信組成  3 ABB變頻器通信參數(shù)設(shè)置  為確保ABB變頻器與PLC之間的Modbus-RTU協(xié)議通信正常暢通,需要對變頻器的相關(guān)參數(shù)進(jìn)行設(shè)定,如表1所示。ABB ACS510系列變頻器需要設(shè)置與Modbus-RTU協(xié)議通信相關(guān)參數(shù)組:Group98可選件,激活Modbus-RTU協(xié)議RS-485串行傳輸通信;Group53內(nèi)置通信協(xié)議,定義內(nèi)置現(xiàn)場總線(EFB)通信協(xié)議的配置;Group16系統(tǒng)控制,定義系列系統(tǒng)控制參數(shù)(如鎖定、復(fù)位和使能控制等);Group14繼電器輸出,設(shè)定每個(gè)輸出繼電器動(dòng)作條件;Group13模擬輸入,設(shè)定模擬輸入的限幅值和濾波時(shí)間;Group11給定選擇,選擇、設(shè)定外部給定1、2的來源和性質(zhì);Group10輸入指令,定義控制起動(dòng)、停止和方向的外部控制源,電機(jī)方向鎖定或允許電機(jī)正反轉(zhuǎn)。其它變頻器參數(shù)根據(jù)電機(jī)的工作環(huán)境、使用用途等因素進(jìn)行設(shè)定。  表1 變頻器Modbus-RTU協(xié)議通信參數(shù)設(shè)定值  

  4 PLC程序設(shè)計(jì)  三菱FX系列PLC通過RS-485串行通信傳輸方式與變頻器進(jìn)行Modbus-RTU協(xié)議通信,RS串行數(shù)據(jù)傳送功能指令是FX系列PLC進(jìn)行發(fā)送和接收串行數(shù)據(jù)的功能指令。在RS功能指令驅(qū)動(dòng)前,要對RS功能指令通信數(shù)據(jù)傳送格式的特殊數(shù)據(jù)寄存器D8120進(jìn)行設(shè)定。設(shè)定值是與ABB ACS510系列變頻器的通信參數(shù)設(shè)定相對應(yīng)的H0C99,即RS-485接口,無起始符和終止符,傳送速度19200bps,2位停止位,無奇偶性,數(shù)據(jù)長度為8位。Modbus-RTU協(xié)議通信信息幀中的信息和數(shù)據(jù)是以8位字節(jié)形式傳送的,要使PLC中的8位處理模式特殊輔助繼電器M8161保持常通?! ∶看斡肦S功能指令發(fā)送數(shù)據(jù)的同時(shí),要用脈沖指令置位串行通信發(fā)送標(biāo)志特殊輔助繼電器M8122,發(fā)送結(jié)束后M8122將自動(dòng)復(fù)位。在串行通信接收完成標(biāo)志特殊輔助繼電器M8123觸點(diǎn)動(dòng)作前,先要將RS功能指令接收的數(shù)據(jù)傳送到其它的PLC數(shù)據(jù)寄存器中,再對接收完成標(biāo)志M8122進(jìn)行復(fù)位。PLC通過RS功能指令接收到從變頻器返回來的數(shù)據(jù),分別存放在高、低位數(shù)據(jù)寄存器中,因此要對接收到的數(shù)據(jù)進(jìn)行合成處理,并將其傳送到另外的數(shù)據(jù)寄存器中存放。ABB ACS系列變頻器還支持H17(或者23)讀/寫多個(gè)保持寄存器功能碼指令,即由H3(或者3)讀保持寄存器功能碼指令和H10(或者16)寫多個(gè)保持寄存器功能碼指令合成的一個(gè)復(fù)合功能碼指令。在編寫與ABB變頻器的Modbus-RTU協(xié)議通信程序時(shí),采用H17(或者23)讀/寫多個(gè)保持寄存器功能碼指令,可以大大簡化通信程序,提高編程效率?! ?結(jié)語  變頻器與PLC之間的Modbus-RTU協(xié)議通信,改變了以往變頻器單純接受PLC發(fā)出的開關(guān)指令和模擬信號(hào)的模式,使變頻器幾乎所有輸入控制信息和數(shù)據(jù)均可來自現(xiàn)場總線。同時(shí),變頻器根據(jù)PLC的要求,將當(dāng)前運(yùn)行數(shù)據(jù)和狀態(tài)傳回給PLC,并通過PLC上傳到自動(dòng)控制系統(tǒng)中的顯示終端、上位機(jī),或者由PLC通過網(wǎng)絡(luò)上傳到中央控制系統(tǒng)。這為工業(yè)控制從單機(jī)控制走向集中監(jiān)控、集散控制,以及工業(yè)控制器聯(lián)網(wǎng)進(jìn)行網(wǎng)絡(luò)化監(jiān)控管理提供了進(jìn)一步的支持。  參考文獻(xiàn)  [1] ABB公司. ACS510用戶手冊.2007  [2] 三菱公司.FX1N系列微型可編程控制器使用手冊.1999  [3] 廖常初.PLC編程及應(yīng)用[M].北京: 機(jī)械工業(yè)出版社, 2002