【摘要】針對PLC程序設(shè)計中Modbus通信存在數(shù)據(jù)丟失和通信效率低的問題,提出了一種兼顧重要數(shù)據(jù)和通信效率的優(yōu)化方法,包括劃分數(shù)據(jù)優(yōu)先級和定時中斷控制發(fā)送周期兩個部分,實踐表明,此方法有利于保證重要數(shù)據(jù)的實時性和提高通信帶寬利用率。
【關(guān)鍵詞】PLC;Modbus;數(shù)據(jù)丟失;通信效率;定時中斷
引言
PLC是一種專為在工業(yè)環(huán)境應用而設(shè)計的數(shù)字運算電子系統(tǒng),它將計算機技術(shù)、自動控制技術(shù)和通訊技術(shù)融為一體,成為實現(xiàn)單機、車間、工廠自動化的核心設(shè)備,具有可靠性高、抗干擾能力強、組合靈活、編程簡單、維修方便等諸多優(yōu)點[1]。隨著控制技術(shù)的不斷發(fā)展,控制系統(tǒng)的規(guī)模也在逐步擴大,通訊技術(shù)成為大規(guī)??刂葡到y(tǒng)的一個支撐。在大規(guī)??刂葡到y(tǒng)或分散式控制系統(tǒng)中,多個主機之間或者主機與分機之間有大量數(shù)據(jù)進行通信[2]。
在PLC的通信中,Modbus協(xié)議是一種常用的通信協(xié)議。Modbus最早由Modicon公司提出,由于其簡單、可靠,被廣大現(xiàn)場技術(shù)人員廣泛接受。當前市場中多數(shù)PLC產(chǎn)品都支持Modbus協(xié)議。Modbus協(xié)議是主從式協(xié)議,通信由主站發(fā)起,從站根據(jù)主站的命令進行數(shù)據(jù)應答,從站不能發(fā)起通信。Modbus的這種特點決定了其通信實時性低于CAN等多主協(xié)議,但其單次通信數(shù)據(jù)量大的特點在一定程度上可以彌補這一不足。在實際操作中,如果主站是PLC,其通信的數(shù)據(jù)和發(fā)起通信的時間是由控制程序決定的,是隨機的,在控制程序的循環(huán)運行中,在某些時刻可能通信數(shù)據(jù)量大,而在其他時刻可能沒有數(shù)據(jù),這會造成帶寬資源利用不均勻,在數(shù)據(jù)量大的時候通信擁擠,導致數(shù)據(jù)丟失和通信不穩(wěn)定。為了解決這一問題,本文提出了一種在PLC程序設(shè)計中提高Modbus通信效率的優(yōu)化方法。
1.Modbus協(xié)議簡介
Modbus通信協(xié)議具有開放性好、易實現(xiàn)、擴展性好、可靠性高等優(yōu)點, 因而具有廣闊的應用前景,被越來越多的設(shè)備廠商所支持。不同廠商生產(chǎn)的控制設(shè)備可以連成Modbus工業(yè)網(wǎng)絡,由Modbus通信的主站對 現(xiàn)場設(shè)備和儀表進行遠程監(jiān)控,實現(xiàn)非常好的監(jiān)控效果和系統(tǒng)性能[3]。
Modbus沒有規(guī)定物理層,它只規(guī)定了可以被通信節(jié)點識別的數(shù)據(jù)結(jié)構(gòu)。Modbus規(guī)定了數(shù)據(jù)的結(jié)構(gòu)、命令和應答的形式,數(shù)據(jù)通信采用主從方式,主站可以向特定的從站發(fā)起讀寫命令,也可以向所有從站發(fā)起廣播命令。在同一個通信網(wǎng)絡中,所有通信節(jié)點(包括主站和從站)都必須設(shè)置相同的通信參數(shù),包括波特率、數(shù)據(jù)位、停止位和校驗位,而字符超時、回復超時等保護參數(shù)每個通信節(jié)點可以不盡相同。
Modbus通信模式分為ASCII和RTU兩種,兩者的不同主要在于數(shù)據(jù)格式,兩者的數(shù)據(jù)格式分別如表1和表2所示。
表1
位置 起始位 設(shè)備地址 功能碼 數(shù)據(jù) LRC校驗 結(jié)束符
字符
個數(shù) 1 2 3 n 2 2
表2
位置 起始位 設(shè)備地址 功能碼 數(shù)據(jù) CRC校驗 結(jié)束符
位數(shù) 靜止時段 8bit 8bit N*8bit 2*8bit 靜止時段
Modbus功能碼可以是1-255范圍內(nèi)任何整數(shù)值,有些功能碼適用于所有的通信設(shè)備,有些則只適用于特定的控制器,還有一些用于功能的擴展。
2.PLC程序中Modbus通信存在的問題
(1)數(shù)據(jù)丟失
數(shù)據(jù)丟失,也就是通常說的丟幀現(xiàn)象。PLC程序按照循環(huán)掃描方式執(zhí)行,對于同一個Modbus物理通信接口,在同一個掃描周期內(nèi)只能執(zhí)行一個Modbus命令,即便控制程序在同一個掃描周期發(fā)起了多個Modbus命令,也只有一個被執(zhí)行,當然,這也與每個PLC廠家的通信處理機制有關(guān),有的廠家提供了比較大的通信緩存,但如果通信幀數(shù)超出了緩存的范圍,也會丟幀。PLC特定的開發(fā)方式是造成這種問題的主要原因,PLC程序的編寫調(diào)試屬于在PLC編程軟件平臺下的二次開發(fā),不像單片機可以進行底層代碼級的開發(fā),因此,用戶只能利用PLC編程軟件提供的操作命令對Modbus進行操作,而無法監(jiān)視通信底層的狀態(tài),在很大程度上存在不確定性。必須建立適用于PLC程序的Modbus通信策略,以保證Modbus通信的確定性。
(2)帶寬利用率低
在PLC程序掃描周期長、Modbus通信數(shù)據(jù)量大、通信速率高的情況下,這種情況尤為突出。以掃描周期為40ms,通信速率為115.2kbps(串口數(shù)據(jù)無校驗),每次通信讀取60個字,采用RTU模式為例來說明。由于讀取數(shù)據(jù)的命令數(shù)據(jù)相對少,主要數(shù)據(jù)量在于從站的回復數(shù)據(jù),因此只計算回復的數(shù)據(jù)來說明問題,以表2中的數(shù)據(jù)格式進行估算。總數(shù)據(jù)量為:8+8+120*8+2*8=992bit,除以通信速率得到所用時間為8.6ms。在這種情況下,帶寬利用情況如圖1所示。從圖1中可以看出,由于掃描周期長、而每個掃描周期只能處理一個Modbus命令,導致Modbus總線看似空閑,實際上有大量重要數(shù)據(jù)沒有被及時發(fā)送出來。
圖1 通信帶寬利用情況
綜上,如果不對PLC程序中的Modbus通信優(yōu)化處理,會對通信的穩(wěn)定性和通信效率造成大的影響。
3.提高PLC程序Modbus通信效率的方法
針對PLC程序設(shè)計中存在的Modbus通信不確定和帶寬利用率低等問題,本文提出一種程序優(yōu)化方法,分為兩個部分。
(1)劃分數(shù)據(jù)優(yōu)先級
Modbus通信可能包含多幀數(shù)據(jù),根據(jù)實際需求,每個幀用途各不相同,有讀取設(shè)備信息的,有控制設(shè)備啟停的,有控制設(shè)備急停的,用戶可以根據(jù)用途的不同,區(qū)分各個數(shù)據(jù)幀的發(fā)送優(yōu)先級。以表3為例,從安全第一的角度考慮,讀取設(shè)備狀態(tài)的數(shù)據(jù)優(yōu)先級最低,控制設(shè)備啟停的數(shù)據(jù)優(yōu)先級中等,控制設(shè)備急停的數(shù)據(jù)優(yōu)先級最高,在程序設(shè)計中,應保證高優(yōu)先級的數(shù)據(jù)優(yōu)先發(fā)送。
表3
數(shù)據(jù)含義 優(yōu)先級
讀取設(shè)備狀態(tài) 低
控制設(shè)備啟停 中
控制設(shè)備急停 高
(2)利用中斷控制發(fā)送周期。
實際應用中,總共需要發(fā)送的數(shù)據(jù)幀可能會有幾十個甚至更多,每個數(shù)據(jù)幀都要分配一個優(yōu)先級,在一個掃描周期中,即便是最高優(yōu)先級的數(shù)據(jù)發(fā)送成功了,但次高優(yōu)先級的數(shù)據(jù)就可能出現(xiàn)延遲發(fā)送的情況,同樣會影響系統(tǒng)的實時性。因此,控制數(shù)據(jù)發(fā)送周期是必要的。采用PLC中的定時中斷功能,定時按照優(yōu)先級的高低發(fā)送數(shù)據(jù),定時中斷不受掃描周期的影響。例如,在40ms的掃描周期下,采用10ms的定時中斷,每個掃描周期可以發(fā)送4幀數(shù)據(jù),相比較優(yōu)化之前,大大提高了通信效率。
4.結(jié)語
針對PLC程序設(shè)計中Modbus通信存在數(shù)據(jù)丟失和通信效率低的問題,本文提出了一種優(yōu)化方法,首先對數(shù)據(jù)幀劃分優(yōu)先級,保證重要數(shù)據(jù)優(yōu)先發(fā)送,其次采用定時中斷控制數(shù)據(jù)發(fā)送周期,保證通信效率。此方法已在實際應用中得到驗證,對于PLC編程有一定的參考意義。
參考文獻
[1]鄧高壽,潘宏俠.PLC在工業(yè)自動化控制領(lǐng)域中的應用及發(fā)展[J].機械管理開發(fā),2006(3):99-100.
[2]鄧志君,梁松峰. 基于RS485接口Modbus協(xié)議的PLC與多機通訊[J].單片機開發(fā)與應用,2010,26(3-2):107-108.
[3]何志勇,張茂青,錢偉清.PLC主站對Modbus網(wǎng)絡的監(jiān)控方法[J].計算機網(wǎng)絡與通信,2007,29(2):26-28.
作者簡介:梅奕(1973—),女,江蘇常州人,碩士,助理實驗師,主要研究方向:電氣自動化技術(shù)。