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