基于Modbus協(xié)議的RS485總線通訊機(jī)設(shè)計(jì)原理及應(yīng)用
摘要:該文詳細(xì)論述了基于Modbus協(xié)議的RS485總線通訊機(jī)設(shè)計(jì)原理及應(yīng)用。物理結(jié)構(gòu)上包括上位機(jī)、主站、和多個從站節(jié)點(diǎn)。在上位機(jī)與各從站節(jié)點(diǎn)間增加主站,承擔(dān)上位機(jī)的輪詢工作,使上位機(jī)從繁忙的通信工作中解放出來,并能夠提高系統(tǒng)獨(dú)立性,加快系統(tǒng)從故障中恢復(fù)的速度。軟件方面基于Modbus協(xié)議,并且添加CRC校驗(yàn),從而有效地提高了系統(tǒng)的可靠性、安全性。本設(shè)計(jì)已成功應(yīng)用于某監(jiān)獄門禁控制系統(tǒng)。
現(xiàn)場總線被譽(yù)為自動化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)。在總線種類多樣化的今天,Modbus技術(shù)以其先進(jìn)性、開放性、成熟性使得基于Modbus串行鏈路通信的設(shè)備得到了廣泛的使用,Modbus通信有3種方式:串行鏈路、TCP/IP和ModbusPLUS。本文的研究對象是基于串行鏈路主從式通信結(jié)構(gòu)的設(shè)備。在這種總線網(wǎng)絡(luò)中,系統(tǒng)間的通信一般采取上位機(jī)輪詢各節(jié)點(diǎn)的方式,即上位機(jī)對各節(jié)點(diǎn)不間斷地進(jìn)行輪詢,當(dāng)輪詢到某節(jié)點(diǎn)時(shí),上位機(jī)與此節(jié)點(diǎn)在一定時(shí)間間隔內(nèi)互相交換信息。但是當(dāng)節(jié)點(diǎn)數(shù)目眾多時(shí),出于系統(tǒng)響應(yīng)及時(shí)性的要求,上位機(jī)對各節(jié)點(diǎn)輪詢的時(shí)間間隔需要盡可能短,而這樣,輪詢工作將會給上位機(jī)造成沉重的負(fù)擔(dān),占用其較多的CPU資源,使得上位機(jī)不能專注于完成數(shù)據(jù)處理,同時(shí)導(dǎo)致系統(tǒng)的可靠性與安全性降低。
基于此原因,本文提出一種針對串行鏈路的新方法,在上位機(jī)與各節(jié)點(diǎn)之間增加一個通訊機(jī)(為不至于和各節(jié)點(diǎn)混淆,本文稱其為主站),并給出了基于此主站的上位PC機(jī)與各節(jié)點(diǎn)(該系統(tǒng)稱各節(jié)點(diǎn)為從站)的通信流程以及此主站的主程序流程。
1系統(tǒng)的硬件環(huán)境設(shè)計(jì)系統(tǒng)硬件環(huán)境主要包括以下幾個模塊:上位機(jī)、主站、從站。對于串行鏈路的Modbus系統(tǒng),其物理接口可以選用RS232或RS485。最常用的接口是RS485兩線制接口。本系統(tǒng)中的上位機(jī)采用PC機(jī),其物理接口為RS232接口,而主站的物理接口為RS485接口。所以PC機(jī)不能直接連接RS485接口,必須在主站與PC機(jī)間進(jìn)行RS232與RS485轉(zhuǎn)換。通過RS232/RS485轉(zhuǎn)換電路將PC機(jī)串口RS232信號轉(zhuǎn)換成RS485信號。
圖1硬件框圖
綜上所述,主站和從站硬件的總體設(shè)計(jì)如圖1所示,主站與上位機(jī)的通信采用RS232的方式,主站與各節(jié)點(diǎn)間的通信采用RS485的方式。從站把來不及傳到PC機(jī)的數(shù)據(jù)暫時(shí)放到FLASN存儲區(qū)中。從站和FLASH存儲器間通過SPI通訊。
2網(wǎng)絡(luò)通訊協(xié)議 2.1Modbus協(xié)議簡介Modbus串行鏈路協(xié)議是一個主站-從站協(xié)議,Modbus應(yīng)用層報(bào)文傳輸協(xié)議提供了總線或網(wǎng)絡(luò)上連接的設(shè)備之間的客戶機(jī)/服務(wù)器通信。在Modbus串行鏈路上,主節(jié)點(diǎn)提供客戶機(jī)的功能,而子節(jié)點(diǎn)則作為服務(wù)器。由于Modbus協(xié)議具有幀格式結(jié)構(gòu)、傳輸方式、功能及內(nèi)容簡單、傳輸效率高等優(yōu)點(diǎn),近年來在控制系統(tǒng)中得到了廣泛的應(yīng)用。本論文所涉及的Modbus協(xié)議,是在采用串行鏈路的RTU模式標(biāo)準(zhǔn)協(xié)議的基礎(chǔ)上,結(jié)合實(shí)際應(yīng)用,擴(kuò)展了其幀格式結(jié)構(gòu)和范圍。
主機(jī)傳輸?shù)拿顖?bào)文如下:
ADOD0D1…DXCRC1CRC2
說明:
ADO:目標(biāo)地址,即站點(diǎn)地址(或稱網(wǎng)絡(luò)設(shè)備地址)。
D0-DX:報(bào)文內(nèi)容,X最大為255,(不含CRC1,CRC2)
CRC1,CRC2:CRC校驗(yàn)結(jié)果。Modbus-RTU協(xié)議采用CRC-16(16位循環(huán)冗余校驗(yàn)碼)校驗(yàn)方法,包含16位二進(jìn)制。CRC校驗(yàn)碼由發(fā)送端計(jì)算,放置于發(fā)送信息的尾部。接收端重新計(jì)算接收到的信息的校驗(yàn)碼,并與接收到的校驗(yàn)碼相比較,如果二者不相符,則表明通訊出錯。