成人精品av一区二区三区_亚洲国产精品久久无码中文字_欧美黑人xxxx性高清版_欧美老熟妇xb水多毛多

modbus協(xié)議8篇

時間:2022-03-09 22:24:46

緒論:在尋找寫作靈感嗎?愛發(fā)表網(wǎng)為您精選了8篇modbus協(xié)議,愿這些內(nèi)容能夠啟迪您的思維,激發(fā)您的創(chuàng)作熱情,歡迎您的閱讀與分享!

modbus協(xié)議

篇1

關(guān)鍵詞:STC89C52 通訊協(xié)議 Delphi Firbird

1節(jié)點設(shè)計以及網(wǎng)絡(luò)組成

1.1本系統(tǒng)主控芯片采用宏晶科技STC89C52單片機,與其它CPU芯片相比,具有顯著特點,加密性強,超低功耗,速度快,可靠性高,驅(qū)動能力強,抗靜電和抗干擾能力強。

1.2DS18B20傳感器

DS18B20是美國DALLAS公司生產(chǎn)的一線式數(shù)字式溫度計芯片,它具有結(jié)構(gòu)簡單,不需外接元件,測量溫度范圍在-55°C—+125°C之間。采用一根I/O數(shù)據(jù)線既可供電又可傳輸數(shù)據(jù)、并可由用戶設(shè)置溫度報警界限等特點,可廣泛用于食品庫、冷庫、糧庫等需要控制溫度的地方。

1.3網(wǎng)絡(luò)節(jié)點設(shè)計

網(wǎng)絡(luò)節(jié)點結(jié)構(gòu)示意圖

1.4網(wǎng)絡(luò)組成

該控制網(wǎng)由PC機和若干分節(jié)點組成,PC機主要負(fù)責(zé)輪詢各分站點數(shù)據(jù),發(fā)送請求數(shù)據(jù)包和控制數(shù)據(jù)包,然后分節(jié)點判斷數(shù)據(jù)包,根據(jù)相應(yīng)的指令通過RS232接口把數(shù)據(jù)發(fā)送給PC機,最大站點數(shù)可設(shè)50個節(jié)點,PC機對采集的數(shù)據(jù)進行分析處理。

2 控制網(wǎng)絡(luò)通訊協(xié)議

2.1簡單節(jié)點流程示意圖

本控制網(wǎng)采用同一程序,通過面板按鍵設(shè)置本機的分節(jié)點地址,節(jié)點開始上電,CPU開始初始化I/O、串口等模塊,接著根據(jù)設(shè)置的參數(shù)讀取操作站點,從而執(zhí)行相應(yīng)的程序并分析數(shù)據(jù),數(shù)據(jù)正確,進行正常顯示,否則PC機根據(jù)不同的報警信息發(fā)出聲光報警。

簡單節(jié)點流程示意圖如下

2.2數(shù)據(jù)包格式

通訊參數(shù):波特率:1200,數(shù)據(jù)位為1,數(shù)據(jù)位為8,停止位為1,校驗位為1,方式采用主從式通訊,計算機為主機,各下位分機為從機。主機先發(fā)數(shù)據(jù)請求命令,只有符合地址條件的從機才回傳或接收數(shù)據(jù),在數(shù)據(jù)傳輸中,為提高系統(tǒng)的可靠性和實用性,要求傳送的數(shù)據(jù)包盡可能短,并且傳送的信息量要大。

2.2.1請求數(shù)據(jù)包

本數(shù)據(jù)包用于PC機向分節(jié)點請求數(shù)據(jù)使用。請求數(shù)據(jù)包格式如下:長度為4個字節(jié)數(shù),首位碼、讀標(biāo)志、目的地址、數(shù)據(jù)量均為一個字節(jié)數(shù)。

2.2.2回送數(shù)據(jù)

本數(shù)據(jù)包用于分節(jié)點發(fā)送PC機所請求的數(shù)據(jù),回送的數(shù)據(jù)包長度可以根據(jù)發(fā)送的指令而變,根據(jù)PC機發(fā)送的請求,數(shù)據(jù)包回送PC機所請求的數(shù)據(jù)。

回送數(shù)據(jù)包格式如下:首位碼、地址均為1個字節(jié)數(shù),回送數(shù)據(jù)根據(jù)發(fā)送指令確定字節(jié)數(shù),備用字節(jié)、校驗碼為兩個字節(jié)數(shù)。

2.2.3控制數(shù)據(jù)包

本數(shù)據(jù)包主要用于PC機向分節(jié)點發(fā)送數(shù)據(jù)使用??刂茢?shù)據(jù)包格式如下:長度為5個字節(jié)數(shù),首位碼、寫標(biāo)志、目的地址均為1個字節(jié)數(shù),數(shù)據(jù)量為2個字節(jié)數(shù)。

2.2.4協(xié)議的實現(xiàn)及應(yīng)用

在設(shè)計基于RS-485的分布式測控系統(tǒng)時,在上位機呼叫下位機地址之后就可以利用本協(xié)議的規(guī)范來設(shè)計具體的通信流程。 基于本協(xié)議的通信可以有兩種機制。一種是面向握手的,即每發(fā)出一幀,總是要等待確認(rèn)幀,否則將認(rèn)為是通信出錯。這是一種可靠的通信方式,適合傳輸系統(tǒng)命令和一些非常重要的系統(tǒng)參數(shù)。另一種是無握手的,即發(fā)送方假設(shè)接收方總是接收正確,從而無須等待確認(rèn)幀就不停地發(fā)送,適合大量前端采集數(shù)據(jù)的發(fā)送。這種機制的優(yōu)點是發(fā)送過程簡 單、快速,缺點是不能保證傳輸過程的可靠性。

本協(xié)議利用握手通訊方式已經(jīng)成功地運用到多個冷庫、糧庫監(jiān)測系統(tǒng)中,不僅簡化了通信程序的設(shè)計,而且保證了通信的高效和可靠。下位機負(fù)責(zé)現(xiàn)場的溫度的采樣和存儲,上位機負(fù)責(zé)循環(huán)呼叫下位機,以了解現(xiàn)場情況是否正常,并且每隔一定時間收集下位機存儲的數(shù)據(jù)并對數(shù)據(jù)進行分析管理。

2.3通訊的可靠性

本系統(tǒng)采用主從結(jié)構(gòu),利用PC機輪詢各節(jié)點,能有效解決網(wǎng)絡(luò)沖突問題。傳輸數(shù)據(jù)增加了冗余,并且在所傳送的數(shù)據(jù)中進行了硬件的循環(huán)冗余校驗。

3 結(jié)束語

本系統(tǒng)上位機軟件采用Delphi開發(fā),數(shù)據(jù)庫采用Firbird,上位機設(shè)計分為組態(tài)部分和監(jiān)控運行部分,可視化直觀的界面操作,組態(tài)方便,可根據(jù)分節(jié)點所接傳感器數(shù)量不同,自由分配通道,利用上位機強大的數(shù)據(jù)處理能力,進行數(shù)據(jù)分析和處理,可對各節(jié)點進行數(shù)據(jù)顯示、上下限報警、實時趨勢顯示,具有很大的實際應(yīng)用價值。

參考文獻:

篇2

關(guān)鍵詞 MODBUS協(xié)議;DCS系統(tǒng);PLC系統(tǒng);通訊應(yīng)用

中圖分類號TN91 文獻標(biāo)識碼A 文章編號 1674-6708(2013)82-0188-02

DCS系統(tǒng)以及PLC系統(tǒng)以其獨特優(yōu)勢而被各行各業(yè)廣泛應(yīng)用,為實現(xiàn)生產(chǎn)的經(jīng)濟高效、節(jié)能環(huán)保提供了可靠的基礎(chǔ)保障。但DCS系統(tǒng)與PLC系統(tǒng)之間的通訊始終是工程生產(chǎn)的重點問題,本文對MODBUS協(xié)議基礎(chǔ)上,實現(xiàn)DCS系統(tǒng)與PLC系統(tǒng)之間的通訊進行分析與探討,以其對工程生產(chǎn)提供幫助。

1 系統(tǒng)組成

1.1 通訊系統(tǒng)

Modbus通訊協(xié)議是一種通用的電子控制器應(yīng)用語言,可利用網(wǎng)絡(luò)或其它設(shè)備實現(xiàn)控制器之間的通訊,Modbus協(xié)議可以在忽略控制器通信方式的前提下,對其所能認(rèn)識與使用的消息結(jié)構(gòu)做出定義,是一個通用的工業(yè)標(biāo)準(zhǔn),它還對控制器與其他設(shè)備之間的訪問請求與過程進行描述,可以偵測錯誤信息并進行記錄。并且,Modbus協(xié)議還制定了公共內(nèi)容格式及消息域格局,控制器可設(shè)置為RTU或ASCII中任一種傳輸模式,用戶可在標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò)通信中選擇所需模式及串口參數(shù),Modbus網(wǎng)絡(luò)上所有設(shè)備在控制器配置時,都應(yīng)將傳輸模式以及串口通信參數(shù)選擇一致。本文基于RS485協(xié)議來實現(xiàn)DCS與PLC之間的數(shù)據(jù)共享,可通過DCS控制PLC,也可將PLC的數(shù)據(jù)上傳到DCS。實際操作時,可將一塊MODBUS轉(zhuǎn)DP通訊模塊增加于DCS控制器下方,以使維護與控制簡單方便,而基于MODBUS協(xié)議,此通訊模塊可作為通訊主站,實現(xiàn)與現(xiàn)場PLC間的通訊,也可基于Pmfibus-DP協(xié)議并作為從站,實現(xiàn)與DCS系統(tǒng)的掛接。

1.2 DCS系統(tǒng)

集散控制系統(tǒng)DCS是以通信網(wǎng)絡(luò)為連接紐帶并包括過程監(jiān)控級與控制級的多級計算機系統(tǒng),它將計算機技術(shù)、控制技術(shù)、通訊技術(shù)以及顯示技術(shù)等有機結(jié)合起來。本文DCS系統(tǒng)采用的是和利時MACS V控制系統(tǒng),不僅可以實現(xiàn)集中操作而分散控制,還可以分級進行管理,組態(tài)及其方便且配置較為靈活。

1.3 PLC系統(tǒng)

因工業(yè)化發(fā)展需求而產(chǎn)生的PLC數(shù)字運算操作系統(tǒng),它利用可編程存儲將定時計數(shù)、順序控制及邏輯運算等操作指令存儲起來,再經(jīng)由數(shù)字模擬輸入與輸出對機械設(shè)備或生產(chǎn)過程進行控制??删幊炭刂破髋c相關(guān)設(shè)備的選擇應(yīng)從其功能原則設(shè)計擴充簡便為切入點,選擇易與工業(yè)控制系統(tǒng)形成整體的設(shè)備,而且維護與控制也較為簡便。本文PLC系統(tǒng)是由三套和利LK207、一套GE的IC200以及一套西門子S7-200組成。

2 系統(tǒng)組態(tài)

2.1 硬件組態(tài)

將通訊線自各PLC串口引出,并將其與MODBUS轉(zhuǎn)PROFIBUS-DP協(xié)議轉(zhuǎn)換模塊的MODBUS接口連接。

2.2 軟件組態(tài)

1)DCS系統(tǒng)組態(tài)。將MODBUS轉(zhuǎn)PROFIBUS-DP協(xié)議轉(zhuǎn)換模塊中的GSD文件拷貝至MACS V系統(tǒng)的相應(yīng)安裝目錄,再打開MACS V系統(tǒng)的控制器組態(tài)文件與工程,將此模塊添加于硬件組態(tài)中,然后打開模塊屬性對通訊參數(shù)波特率等進行設(shè)置,再基于PLC讀寫數(shù)據(jù)對MODBUS讀寫數(shù)據(jù)塊進行合理添加,數(shù)據(jù)塊屬性設(shè)置取決于數(shù)據(jù)起始地址及PLC地址。以各自地址以及PLC讀寫變量進行添加于程序中的子程序編寫以及變量添加,然后對編譯進行保存。將PLC變量至工藝畫面添加至打開的MACS V畫面的組態(tài)程序并保存,然后下裝于操作員站,而將PLC傳過來的量程或信號類型等變量屬性添加至打開的MACS V數(shù)據(jù)庫的組態(tài)程序,再聯(lián)編并將其下裝于服務(wù)器;

2)PLC系統(tǒng)組態(tài)。本文以GE公司的IC200型PLC來說明該系統(tǒng)組態(tài)。將GE PLC編程軟件打開并對PLC Port(2) 進行設(shè)置,然后利用網(wǎng)絡(luò)將小酒改后的設(shè)置內(nèi)容下至PLC。

3 系統(tǒng)常見故障的判斷與排除

若DCS系統(tǒng)與PLC系統(tǒng)之間的數(shù)據(jù)通訊正常,則對故障隱患的判斷可通過模塊狀態(tài)指示燈來實現(xiàn),可從模塊上的數(shù)據(jù)傳送與接收指示及錯誤狀態(tài)表示對,作通訊狀態(tài)進行判斷并對故障進行診斷。而若DCS與PLC之間的數(shù)據(jù)通訊為不正常狀態(tài),則DCS系統(tǒng)畫面所顯示的數(shù)據(jù)不正常,模塊狀態(tài)指示燈有錯誤狀態(tài)顯示。對此,應(yīng)對硬件錯誤及軟件錯誤進行依次檢查并排除故障。硬件方面,應(yīng)使用DP電纜,接線時切忌將正負(fù)極性接反,模塊選型時也要注意選擇有較高的使用信譽度且實用效果較好的產(chǎn)品,由于兼容性差異的問題,兩次以上的接口轉(zhuǎn)換情況應(yīng)盡量避免。而軟件方面,首先要保持一致的DCS與PLC間的通訊速率,最好使用無校驗而減少奇偶校驗,其次要確保DCS與OLC系統(tǒng)的通訊數(shù)據(jù)地址合理有效,若有地址錯位狀況,可通過DCS系統(tǒng)設(shè)置來解決。

4 結(jié)論

綜上所述,在實現(xiàn)DCS系統(tǒng)與PLC系統(tǒng)之間的通訊中應(yīng)用MODBUS協(xié)議,可以取得良好成效,即是說,基于MODBUS協(xié)議的DCS與PLC通訊的實現(xiàn),具有穩(wěn)定的通訊性能,可以為工藝監(jiān)控提供可靠技術(shù)支持,為工程生產(chǎn)創(chuàng)造良好的條件,有效實現(xiàn)生產(chǎn)的節(jié)能減排、經(jīng)濟高效。

參考文獻

[1]趙釗.基于Modbus協(xié)議的DCS系統(tǒng)與PLC系統(tǒng)的通訊[J].節(jié)能技術(shù),2011(4).

[2]王剛,王玉琪,王冰.用Modbus協(xié)議實現(xiàn)DCS與PLC之間的串行通訊[J].自動化技術(shù)與應(yīng)用,2010(4).

篇3

關(guān)鍵詞:Modbus 數(shù)據(jù)讀取 工業(yè)控制 網(wǎng)絡(luò)通信

中圖分類號:TP274.2 文獻標(biāo)識碼:A 文章編號:1007-9416(2012)11-0049-02

Modbus是一種工業(yè)上開放的現(xiàn)場總線協(xié)議,是目前通用的工業(yè)標(biāo)準(zhǔn)之一。該協(xié)議能夠使得各個廠家之間的控制設(shè)備能夠相互通信和進行數(shù)據(jù)傳輸,在工業(yè)過程控制中具有廣泛地應(yīng)用[1]。Modbus協(xié)議包含三種模式,即Modbus TCP、Modbus RTU和Modbus ASCII模式[2]。本文在研究Modbus TCP協(xié)議模式的基礎(chǔ)上,設(shè)計了一種基于TCP/IP的Modbus的數(shù)據(jù)讀取功能。通過該讀取功能,用戶可以在PC機上可以讀取PLC控制器上的數(shù)據(jù)。

1、Modbus TCP/IP協(xié)議數(shù)據(jù)幀的格式

由于Modbus TCP/IP協(xié)議運行于TCP/IP協(xié)議上,因此Modbus TCP/IP協(xié)議的數(shù)據(jù)幀被封裝于TCP/IP協(xié)議數(shù)據(jù)幀中的數(shù)據(jù)單元中,作為TCP/IP協(xié)議中的數(shù)據(jù)部分發(fā)送給各種控制設(shè)備;支持Modbus協(xié)議的控制設(shè)備收到Modbus請求之后,根據(jù)請求的內(nèi)容將結(jié)果返回給客戶端。本文所設(shè)計基于Modbus TCP/IP的數(shù)據(jù)請求和響應(yīng)幀格式如下圖所示。

事務(wù)元標(biāo)識符:該標(biāo)識符用于事務(wù)處理的配對,該域中的內(nèi)容為用戶自行設(shè)定,如可以將每一幀的編號放在該域中。

協(xié)議標(biāo)識符:該標(biāo)識符用于系統(tǒng)內(nèi)的多路復(fù)用,當(dāng)使用的Modbus協(xié)議時,該值為0。

長度:該域中的數(shù)值表示后繼域內(nèi)容的字節(jié)數(shù),包括單元標(biāo)識符和協(xié)議數(shù)據(jù)單元。

單元標(biāo)識符:為了系統(tǒng)內(nèi)路由,使用這個域。在服務(wù)器的響應(yīng)幀內(nèi)容中服務(wù)器必須使用相同的值返回該域的內(nèi)容。

本文設(shè)計的讀寫功能所用到的Modbus功能碼的定義如下表所示。

表 Modbus功能碼

協(xié)議的數(shù)據(jù)單元包括功能碼和數(shù)據(jù)兩部分。本文以讀取2個寄存器的數(shù)據(jù)為例來說明該部分幀格式的設(shè)置。

功能碼:讀寫多個寄存器的功能碼為03,該域大小為1字節(jié)。

數(shù)據(jù):數(shù)據(jù)部分包含讀起始地址和讀的數(shù)量。本文從起始地址開始連續(xù)讀取2個寄存器的內(nèi)容,因此讀起始地址為0,該域大小為2字節(jié);讀的數(shù)量為2,該域大小為2字節(jié)。

2、數(shù)據(jù)讀取功能的實現(xiàn)

本文在上一節(jié)設(shè)計的數(shù)據(jù)幀格式的基礎(chǔ)上,使用VC++ 2010實現(xiàn)了基于Modbus TCP/IP的數(shù)據(jù)讀取功能,并使用MODBUS Simulator作為Modbus的TCP服務(wù)器。

數(shù)據(jù)請求的主要代碼如下:

MODBUS Simulator的地址0000-0001寫入了67.5。如圖2-2所示。

在數(shù)據(jù)讀取客戶端中,首先點擊“連接服務(wù)器”按鈕,客戶端提示連接服務(wù)器成功后,點擊“啟動定時器”按鈕,則客戶端開始周期性地從Modbus服務(wù)器中讀取數(shù)據(jù),并顯示在客戶端上。

3、結(jié)語

本文在研究Modbus TCP/IP協(xié)議的基礎(chǔ)上設(shè)計基于Modbus協(xié)議的數(shù)據(jù)讀取的數(shù)據(jù)幀格式,并使用VC++ 2010實現(xiàn)了該數(shù)據(jù)幀的數(shù)據(jù)讀取功能。通過該讀取功能,用戶可以在PC機上可以讀取PLC控制器上的數(shù)據(jù)。

參考文獻

篇4

[關(guān)鍵詞] Modbus; 監(jiān)控; 功能碼

1 引言

在油庫和各種石化單位,定量裝車作業(yè)十分繁忙,裝車操作過程又要求相對精確。更加重要的是,涉及石化產(chǎn)品具有一定危險性。為了提高了裝車精度和效率,降低損耗,減輕工人的勞動強度,同時盡可能保證安全作業(yè),本文設(shè)計了基于Modbus協(xié)議的定量裝車自動監(jiān)控系統(tǒng),并交付某公司使用。實際應(yīng)用表明系統(tǒng)監(jiān)控畫面直觀,人員操控方便,具備一定的主動安全保障能力。

2 Modbus協(xié)議

Modbus通信協(xié)議是美國Modicon公司開發(fā)的一種通信協(xié)議,它采用Master/Slave方式工作,一個主站可以連接多個從站,從站只能根據(jù)主站的請求作出相應(yīng)的應(yīng)答。它是一種開放、標(biāo)準(zhǔn)、免收許可費的通信協(xié)議。目前該協(xié)議已經(jīng)廣泛應(yīng)用于自動化控制和測控儀表,并且已經(jīng)成為我國工業(yè)自動化網(wǎng)絡(luò)協(xié)議規(guī)范的國家標(biāo)準(zhǔn)之一。

Modbus協(xié)議有2種傳輸模式,即RTU模式和ASCII模式,相對于ASCII模式,RTU模式表達相同的信息需要較少的位數(shù),且在相同通信速率下具有更大的數(shù)據(jù)流量,因此本系統(tǒng)選用該模式完成設(shè)計與實現(xiàn)。

Modbus協(xié)議的采用LRC和CRC兩種校驗?zāi)J絹肀WC控制命令傳輸無誤。本文采用CRC-16校驗方式,該方式會根據(jù)當(dāng)前發(fā)送或接收的命令字節(jié)碼,計算對應(yīng)的2個字節(jié)的CRC校驗碼。并將其加到命令字節(jié)碼之后一并發(fā)送,組合之后的命令字節(jié)碼格式為:

系統(tǒng)在實現(xiàn)過程中,考慮到最終將會采用普通的X86系列PC機作為監(jiān)控終端,而該型機都是big-endian方式做多字節(jié)數(shù)據(jù)存儲,與Modbus協(xié)議要求的little-endian剛好相反, CRC的計算結(jié)果必須滿足這一要求。本文稍微調(diào)整了CRC-16校驗碼的產(chǎn)生方式如下:

Step1:將0xFFFF裝入CRC寄存器;

Step2:將命令字節(jié)碼的第一個字節(jié)與CRC寄存器異或,結(jié)果存放在CRC寄存器中;

Step3:CRC寄存器右移1位,高位填充0;

Step4:檢查CRC寄存器的最低有效位,如果該位為0,則重復(fù)Step3;如果該位為1,則將CRC寄存器的值與0xA001異或;

Step4:重復(fù)Step3和4,直到完成8次移位之后,完成命令字節(jié)碼中的對一個字節(jié)的處理;

Step5:對命令字節(jié)碼的下一個字節(jié)重復(fù)Step2到Step5的處理,直到所有的字節(jié)都處理完成為止;

Step6:最終CRC寄存器中的內(nèi)容就是該條命令字節(jié)碼對應(yīng)的CRC校驗值;

例如,某命令字節(jié)數(shù)據(jù)[ 1 | 15 | 0 25 | 0 12 | 2 | 168 3 | 216 120 ]的含義為:給1號地址設(shè)備15號命令(寫多個線圈),從它的25號起始地址開始(0 25),連續(xù)寫12個線圈(0 12),寫入內(nèi)容為命令數(shù)據(jù)區(qū)的1010 1000 0011(168 3),根據(jù)命令計算出CRC校驗碼為(216 120)。

3 系統(tǒng)工作原理

本系統(tǒng)采用典型的RS232/485總線將上位機服務(wù)器端、上位機客戶端以及各個下位機組成一個工業(yè)可控以太網(wǎng),各下位機選取符合Modbus plus規(guī)范的相關(guān)設(shè)備,便于直接獲取的操作過程中的各種數(shù)據(jù)信息,并封裝成協(xié)議標(biāo)準(zhǔn)進行傳輸和通訊。主操作界面如圖1所示。

系統(tǒng)工作原理框架如下:

(1)下位機通過傳感器采集溫度計、流量計、比重計等相關(guān)數(shù)據(jù),并封裝成Modbus協(xié)議格式數(shù)據(jù)供上位機客戶端查詢。

(2)上位機客戶端通過串口和橋接器連接各個下位機,利用多線程串口讀取函數(shù)主動進行數(shù)據(jù)收集,下位機按照上位機客戶端的要求回傳相應(yīng)數(shù)據(jù)。然后,上位機客戶端將收到的數(shù)據(jù)按功能碼進行解析,并以圖例、表格、文本等多種形式實時顯示和記錄。

(3)上位機服務(wù)器端通過TCP/IP網(wǎng)絡(luò)與各個上位機客戶端相連,對多個上位機客戶端的狀態(tài)信息進行收集、分析和存檔,并通過主動發(fā)送命令的方式給上位機指令,進而通過上位機客戶端給下位機下達控制命令,達到“監(jiān)視――控制”雙功能。

4 軟件系統(tǒng)設(shè)計

上位機服務(wù)器通過接收Modbus請求,與上位機客戶端進行交互,并對操作過程實時監(jiān)控,利用成熟的數(shù)據(jù)庫管理系統(tǒng),接收、存儲、處理和備份整個過程中產(chǎn)生的所有數(shù)據(jù),為客戶提供服務(wù),并為進一步的數(shù)據(jù)分析提供歷史依據(jù)。上位機服務(wù)器端主要功能包括:

(1)系統(tǒng)管理:該模塊包括了各類管理員,操作人員的用戶注冊,授權(quán)和管理等等,防止非法操作人員惡意登錄造成操作失誤,也避免非授權(quán)操作員隨意更改系統(tǒng)工作參數(shù)可能造成系統(tǒng)運行偏差。

(2)數(shù)據(jù)庫管理:該部分模塊選擇成熟的數(shù)據(jù)庫管理系統(tǒng)SQL Server2005對整個系統(tǒng)運行過程中所需要記錄的所有數(shù)據(jù)信息就行存儲和管理,為整個系統(tǒng)的運行和監(jiān)控提供可靠的數(shù)據(jù)支持;

(3)系統(tǒng)工作狀態(tài)顯示:該模塊負(fù)責(zé)以圖像模擬顯示多種數(shù)據(jù)狀態(tài),有利于管理人員實時監(jiān)控各下位機客戶端的操作情況。并且提供多種顯示圖像幫助管理人員分析各種操作情況,這是系統(tǒng)的核心功能之一, 在實現(xiàn)獲取個下位機狀態(tài)之后,對下位機進行直接控制是系統(tǒng)必需的核心功能之一,雖然在實際裝車控制中主要使用的功能碼只有2、4、15、16號命令,但是本系統(tǒng)實現(xiàn)了全部Modbus功能碼,便于今后對新設(shè)備的擴充。。

(4)Modbus協(xié)議命令:該模塊能夠按照標(biāo)準(zhǔn)的Modbus協(xié)議,接收來自上位機客戶端傳送來的Modbus請求,完成數(shù)據(jù)采集、數(shù)據(jù)分析和數(shù)據(jù)存儲工作,是系統(tǒng)工作狀態(tài)顯示實現(xiàn)的基礎(chǔ);

(5)安全警報功能:授油工作本身是具備一定危險性的工作,安全責(zé)任事故問題必須引起足夠的重視??梢愿鶕?jù)各種系統(tǒng)狀況進行報警處理,保證系統(tǒng)工作狀態(tài)安全可靠,避免業(yè)務(wù)事故的發(fā)生,并且具備自動報警信息記錄功能,收集歷史上曾經(jīng)出現(xiàn)的安全事故信息,為安全人員分析發(fā)現(xiàn)安全事故規(guī)律,查找安全隱患提供數(shù)據(jù)支撐。

上位機客戶端能有效地按照預(yù)定訂單號自動完成裝車作業(yè),或者在操作員的控制下,進行控制參數(shù)設(shè)置,定量控制、數(shù)據(jù)采集、業(yè)務(wù)受理和報表打印等具體業(yè)務(wù)。上位機客戶端主要功能包括:

(1)實時授油監(jiān)視:該模塊負(fù)責(zé)實時動畫模擬顯示整個下位機控制分組內(nèi)所有鶴管的出油狀況,及相關(guān)關(guān)鍵參數(shù)數(shù)值顯示。例如:發(fā)油訂單號、車號、油品類型、參數(shù)設(shè)定、誤差范圍等等;

(2)強制發(fā)油控制:該模塊在特殊情況下,可以人為指定操作指令,以取代自動發(fā)油過程,控制啟動發(fā)油、暫停發(fā)油、恢復(fù)發(fā)油、強制結(jié)束等方式來進行特殊操作,擴展控制功能,更加適應(yīng)實際操作的變化;

(3)業(yè)務(wù)計劃管理:該模塊下,客戶可以根據(jù)預(yù)約過的訂單號,自動完成裝車過程。也可以在沒有訂單號的情況下,有操作人員生成新的裝車業(yè)務(wù),并進行結(jié)算;

(4)業(yè)務(wù)查詢:該模塊按照操作員和客戶要求的方式(諸如進行訂單號、裝車時間、油品類型、裝車單位、操作員編號等等)進行多種關(guān)鍵字查詢和統(tǒng)計功能,并且自動生成相關(guān)聯(lián)報表。

(5)打印功能:其自定義打印功能,更加貼近實用,可以由用戶自主選擇打??;

5 結(jié)論

本設(shè)計采用OOAD思想,用UNL建模,并使用Borland C++作為開發(fā)工具,規(guī)范化的設(shè)計和編程過程,以及大量集成的成熟控件足以支撐本軟件系統(tǒng)的快速開發(fā)。結(jié)果表明,軟件系統(tǒng)既可以對標(biāo)準(zhǔn)Modbus功能碼進行調(diào)試,也可以對自定義功能碼進行設(shè)置,還可以實時監(jiān)測和控制下位機狀態(tài),并結(jié)合數(shù)據(jù)庫功能記錄所有關(guān)鍵操作和核心設(shè)備配置參數(shù)信息,保障差錯恢復(fù)。系統(tǒng)運行穩(wěn)定可靠,使用簡明方便,很好地滿足項目要求。

[參考文獻]

[1] AEG Schneider Automatic Inc. Modicon IBM host based devices user’s guide Apr.1996

[2] 張克涵,張呼和,顧李馮.VC環(huán)境下的電機狀態(tài)監(jiān)測軟件設(shè)計[J].測控技術(shù)2012年第31卷第2期

[3] 呂國芳,唐海龍,李進.基于ModbusRTU的串口調(diào)試軟件的實現(xiàn)[J].計算機技術(shù)與發(fā)展 2009年第19卷第9期

[4] 袁輝,李延香.基于Modbus通訊協(xié)議數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].科技咨詢導(dǎo)報 2007 No.19

[5] 陳柏金.通過串行口訪問modbus現(xiàn)場控制網(wǎng)絡(luò)[J].微計算機信息 2003.19(1)

[6] 王念春.基于Modbus的PC與下位機PLC間的通信程序[J].自動化儀表 第22卷第8期 2001年8月

[7] 徐濤,閆科.基于Modbus協(xié)議的串行接口實現(xiàn)與DCS通訊[J].工業(yè)控制計算機 2002年4月

[8] 羅朝霞,張高記.基于TMS320F240TA DPS的Modbus通信協(xié)議的實現(xiàn)[J].微計算機信息2005.21(72)138-139

[9] 房傳禮,李建華.基于Modbus協(xié)議的大屏幕在線監(jiān)視系統(tǒng)設(shè)計[J].自動化與儀表 2010年7月

[10] 盧文俊,冷杉.基于Modbus協(xié)議的控制器遠程監(jiān)控系統(tǒng)[J].電力自動化設(shè)備 2003年第23卷第6期

[11] 甑君,衛(wèi)強,于耀.應(yīng)用多線程技術(shù)實現(xiàn)串行通信與信號采集識別的同步[J].計算機工程 2003(10)196-197

[12] 李俊,徐紅兵.基于Modbus協(xié)議的汽輪機保護系統(tǒng)通訊設(shè)計[J].自動化與儀表 2006年7月

[13] 方羽,梁廣瑞.基于uCOS的Modbus協(xié)議的實現(xiàn).裝備制造技術(shù)[J] 2009年第1期

篇5

關(guān)鍵詞:智能調(diào)壓器;串口服務(wù)器; MODBUS協(xié)議

中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)27-0197-03

Abstract: In this paper, it mainly implements a gas pressure controlling system, containing of five intelligent regulators and one host computer, in which each intelligent regulator connects with the host computer via a port. This system provides our customers with an efficient integrative solutions that realizes unified controlling management of five regulators by one host computer. Specifically, this system uses MODBUS communication protocol to realize the communication between each regulator and host computer. Additionally, users can remote access control, and query or control the state of regulators on time.

Key words: Intelligent regulators; Serial port server; MODBUS communication protocol

本課題來源于某燃氣設(shè)備公司的一個項目,首先先對該項目進行簡要的介紹。該燃氣公司目前擁有五臺智能調(diào)壓器,如圖1所示。該調(diào)壓器擁有五種功能,分別是流量測量、本地或遠程出口壓力設(shè)定、流量限制、遠程監(jiān)控和終端用戶管理。它的優(yōu)點是功能多,且只需要一個電源。

每臺智能調(diào)壓器通過串口與上位機通訊,現(xiàn)在需要實現(xiàn)了一個高效整合解決方案,通過一臺上位機對五臺調(diào)壓器的統(tǒng)一控制管理,并且用戶可以遠程對其進行訪問控制,即時地查詢和控制調(diào)壓器的狀態(tài)。

1 方案綜述

1.1 硬件實現(xiàn)方案

由于每臺智能調(diào)壓器都是通過串口和上位機一對一連接,而上位機只有一個串口,所以想要用一臺上位機實現(xiàn)對五臺設(shè)備的集體控制,首先要解決硬件連接上的問題。

我們的解決方案是使用一個串口服務(wù)器[1]。串口聯(lián)網(wǎng)服務(wù)器讓傳統(tǒng)的RS-232/422/485設(shè)備立即聯(lián)網(wǎng),利用基于TCP/IP的串口數(shù)據(jù)流傳輸?shù)膶崿F(xiàn)來控制管理[2]。串口服務(wù)器擁有多個串口,并且通過以太網(wǎng)與上位機連接,在上位機上虛擬多個串口,實現(xiàn)了一帶多的功能。

本課題所使用的串口服務(wù)器可以同時和八臺設(shè)備連接通信,很好地解決了硬件上的問題。

1.2 軟件實現(xiàn)方案

硬件的問題通過串口服務(wù)器比較容易地解決了,下面重點在于軟件上的實現(xiàn)。

首先,需要在調(diào)壓器和上位機間建立通信,由于通過串口服務(wù)器,上位機具備了多個虛擬串口,所以可以直接使用傳統(tǒng)的一對一通訊協(xié)議。在本系統(tǒng)中,我們使用MODBUS通訊協(xié)議中的命令3,命令6和命令16,來實現(xiàn)上位機對調(diào)壓器的讀多個寄存器,寫單個寄存器和寫多個寄存器的功能。

其次,為了實現(xiàn)多個用戶遠程的訪問控制調(diào)壓器,我們使用SQL SERVER 2008數(shù)據(jù)庫作為中間媒介,現(xiàn)場的上位機通過串口服務(wù)器實時采集各個調(diào)壓閥的狀態(tài),并存入數(shù)據(jù)庫中, 而用戶可以使用我們提供的應(yīng)用程序在任何地方訪問數(shù)據(jù)庫,讀取數(shù)據(jù),從而遠程監(jiān)測燃氣壓力控制系統(tǒng)的狀態(tài)。同理,遠程用戶可以將控制命令寫入數(shù)據(jù)庫,而現(xiàn)場上位機將這些命令從數(shù)據(jù)庫讀出,并轉(zhuǎn)發(fā)給各個調(diào)壓器。

最后,根據(jù)權(quán)限的高低依次設(shè)計Admin、Controller、Observer三種用戶角色,所有遠程用戶必須使用賬戶密碼進行登錄,根據(jù)不同的權(quán)限進行不同的操作,這樣可以保證系統(tǒng)的安全性。

2 MODBUS協(xié)議簡介

MODBUS是OSI模型第7層上的應(yīng)用層報文傳輸協(xié)議,它在連接至不同類型總線或網(wǎng)絡(luò)的設(shè)備之間提供客戶機/服務(wù)器通信[3]。MODBUS協(xié)議定義了一個與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU)。特定總線或網(wǎng)絡(luò)上的MODBUS協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域,如圖2所示。

在本系統(tǒng)中,功能碼代表了上位機向調(diào)壓器指示的操作類型。根據(jù)需求,我們使用到了功能碼3,6和16,下文將簡單介紹這三種功能碼。

2.1功能碼3

功能碼3用于讀取寄存器連續(xù)快的內(nèi)容,上位機通過這條命令,結(jié)合地址表,采集調(diào)壓器當(dāng)前狀態(tài)。功能碼3的請求報文,如圖3所示。

2.2 功能碼6

功能碼6將某個值寫入遠程設(shè)備的單個寄存器中,上位機通過這條命令,結(jié)合地址表,設(shè)定調(diào)壓器的狀態(tài)。在本系統(tǒng)中,我們并未直接實現(xiàn)功能碼6,而是將功能碼6作為功能碼16的一種特殊情況。

2.3 功能碼16

功能碼16用于將多個值寫入遠程設(shè)備的連續(xù)寄存器塊中,上位機通過這條命令,結(jié)合地址表,連續(xù)設(shè)定調(diào)壓器的多個狀態(tài)。特別地,將寄存器數(shù)量設(shè)為1,即可作為功能碼6的實現(xiàn),用于設(shè)定單個狀態(tài)值。功能碼16的請求報文,如圖4所示。

3 上位機控制程序

上位機控制程序是在現(xiàn)場的上位機的一個進程,由它對整個系統(tǒng)進行實時的控制。主要有以下兩個功能:

1)運行時不斷更新調(diào)壓器監(jiān)測數(shù)據(jù)到數(shù)據(jù)庫中,供遠程用戶從數(shù)據(jù)庫中讀取。

2)從數(shù)據(jù)庫的命令表項里讀取遠程用戶命令并執(zhí)行。

上位機控制程序使用定時器的方式,每5秒調(diào)用已實現(xiàn)并封裝的MODBUS協(xié)議的接口,采集各個調(diào)壓器的狀態(tài),并且使用[4]將當(dāng)前狀態(tài)更新到數(shù)據(jù)庫的CURRENT_STATUS表,如表1所示。這張表里永遠只有一條數(shù)據(jù),這樣遠程用戶通過不斷的讀取這張表里的第一行數(shù)據(jù),就可以實時監(jiān)控系統(tǒng)狀態(tài)。

其次,上位機控制程序使用從數(shù)據(jù)庫中的COMMAND_TABLE表中讀取遠程用戶的命令,如表2所示。上位機控制程序通過表中DONE字段判斷這條命令是否已執(zhí)行,對于未執(zhí)行命令,上位機程序調(diào)用MODBUS庫接口,根據(jù)命令類型,調(diào)壓器編號去設(shè)定調(diào)壓器狀態(tài)。

4 數(shù)據(jù)庫表項和用戶角色

4.1 數(shù)據(jù)庫表項

在本系統(tǒng)中,數(shù)據(jù)庫用來實現(xiàn)遠程用戶對調(diào)壓器的監(jiān)測和間接控制以及存放歷史數(shù)據(jù)。在數(shù)據(jù)庫中設(shè)置了四張表,分別是:

1) 歷史信息表:用于記錄實時采集的系統(tǒng)數(shù)據(jù),采用月表的形式,在每月固定時間新建一張。

2) 當(dāng)前信息表:實時記錄當(dāng)前調(diào)壓器的狀態(tài)。

3) 命令表:用于特定權(quán)限用戶寫入命令,上位機控制程序從中讀取命令并執(zhí)行。

4) 用戶表:admin用戶使用,記錄用戶信息,每注冊一個新用戶增加一個表項。

歷史信息表和當(dāng)前信息表都只提供給遠程用戶讀取功能,而由上位機控制程序更新(寫入)。由于有五臺智能調(diào)壓器,每臺調(diào)壓器都擁有各自獨立的歷史信息表和當(dāng)前信息表。

4.2 用戶角色

根據(jù)安全性的需要,用戶分為以下三種:

1) Admin用戶:擁有最高權(quán)限,主要用于管理其他用戶??梢栽L問數(shù)據(jù)庫中所有表,只有admin能訪問用戶表。

2)Controller用戶:既可以查看歷史信息和當(dāng)前狀態(tài),即讀取數(shù)據(jù)庫中五臺設(shè)備的歷史信息表和當(dāng)前信息表,也可以寫控制命令到命令表,提供給上位機控制程序執(zhí)行,對調(diào)壓器進行遠程控制。

3)Observer用戶:權(quán)限最低,作為觀察用戶,只能訪問歷史信息表和當(dāng)前信息表,不能訪問命令表,即不能對調(diào)壓器進行控制[5]。

5 結(jié)論

本文實現(xiàn)了一個高效整合的燃氣壓力控制系統(tǒng),硬件上使用串口服務(wù)器擴展硬件上位機的串口,實現(xiàn)一帶多的功能。通訊上,使用MODBUS通訊協(xié)議,實現(xiàn)了協(xié)議中的功能碼3,功能碼6和功能碼16。使用SQL SERVER 2008數(shù)據(jù)庫作為中間媒介,實現(xiàn)了遠程監(jiān)測和控制的功能。安全性上,根據(jù)權(quán)限的高低依次設(shè)計Admin、Controller、Observer三種用戶角色,保證了控制系統(tǒng)的安全性。

參考文獻:

[1] 董小吉. 利用NPORT串口服務(wù)器組網(wǎng)解決方案[J]. 治淮, 2006(1):41-42.

[2] 王雙慶, 邢建春, 王平,等. 基于NPort串口服務(wù)器的人防工程智能設(shè)備集成[J]. 工業(yè)控制計算機, 2008(8):8-10.

[3] 潘洪躍. 基于MODBUS協(xié)議通信的設(shè)計與實現(xiàn)[J]. 計量技術(shù), 2002(4):35-36.

篇6

關(guān)鍵詞:modbus;一致性測試;自動化;用例生成器

中圖分類號:tp393.09文獻標(biāo)識碼:a

文章編號:1004-373x(2010)01-171-03

automation of modbus conformance testing

zhao jian

(northwest airtraffic management bureau,xi′an,710082,china)

abstract:the existing modbus protocol conformance testing method has following problem: there is not automatictesting method for it,and this brings negative impact on the effectiveness of test.in order to solve this problem,the architecture of automation method for modbus protocol conformance testing,the architecture includes test case generation and test result analyzer.the automatic conformance testing system based on the architecture is realized.in practice,the system found a number of hidden modbus conformance errors,this proves that the availability and effectiveness of the method.

keywords:modbus;conformance testing;automation;test case generation

0 引 言

modbus協(xié)議已經(jīng)成為一種事實的工業(yè)標(biāo)準(zhǔn),但modbus設(shè)備間的一致性、互操作性較差,是制約modbus發(fā)展的瓶頸。為了解決modbus協(xié)議的一致性和互操作性問題,國內(nèi)外的研究機構(gòu)展開了深入的研究并取得了一些成果。

在modbus-ida國際組織的支持下,進行modbus一致性測試的實驗室陸續(xù)建立。目前,在國外得到modbus-ida國際組織授權(quán)的modbus一致性測試實驗室僅有兩處:一處是位于美國密歇根大學(xué)的modbus tcp一致性測試實驗室;另一處為設(shè)在該課題所在機械工業(yè)儀器儀表綜合技術(shù)經(jīng)濟研究所的modbus serial line/tcp一致性測試實驗室,它是獨立于產(chǎn)品制造商的第三方測試機構(gòu)[1,2]。國外其他研究機構(gòu)對modbus測試系統(tǒng)的研究處于發(fā)展階段,modbus測試系統(tǒng)被應(yīng)用到火電廠、電力監(jiān)控系統(tǒng)、控制系統(tǒng)安全認(rèn)證中,但都未形成一致性和互操作測試標(biāo)準(zhǔn)和自動化方法[3-6]。

在國內(nèi)對進行modbus一致性和互操作性測試研究的機構(gòu)主要有:北京交通大學(xué)的研究人員開展了modbus串行鏈路協(xié)議一致性測試系統(tǒng)的研發(fā)工作[7,8];開普電器檢測研究院在modbus協(xié)議一致性測試方面有多年的經(jīng)驗,已加入modbus-ida協(xié)會[9]。

總得來說,國外在modbus協(xié)議的一致性和互操作性測試的研究已經(jīng)取得了一定的成果,并形成了一些測試系統(tǒng),但國內(nèi)用戶分享成果的代價較大,并且無法進行modbus設(shè)備的互操作性測試,并且尚未形成測試自動化方法;國內(nèi)的研究已經(jīng)起步并取得了一些初步研究成果,但在國內(nèi)尚未形成測試標(biāo)準(zhǔn)和測試自動化方法。

為了克服目前研究中所存在的問題,本文主要研究modbus協(xié)議的一致性測試的自動化方法,測試的自動化方法主要包括測試用例的自動生成和測試結(jié)果的自動分析兩方面,限于篇幅對測試結(jié)果的自動分析方法不予展開論述,主要論述測試用例的自動生成方法。

1 一致性測試的基本原理

協(xié)議測試?yán)碚摻?jīng)過幾十年的發(fā)展,在許多方面都取得了很大的進展,其中最成熟的是協(xié)議一致性測試的理論,主要代表是iso制定的國際標(biāo)準(zhǔn)iso/iec-9646:協(xié)議一致性測試的方法和框架。圖1是一致性測試的基本示意圖。iut(implementation under test)是根據(jù)規(guī)范的具體實現(xiàn),是一個內(nèi)部不可見的實體;規(guī)范(speciflcation)以某種形式化語言或者自然語言描述,但不管怎樣的描述形式,其根本都是一個擴展自動機模型;測試儀(tester)根據(jù)規(guī)范為iut產(chǎn)生一組測試序列 (test sequence),然后觀察iut的外部行為是否符合規(guī)范的描述[7,8]。

圖1 一致性測試原理示意圖

目前的實際工程測試中,測試序列主要是由少數(shù)專家憑借經(jīng)驗制定的。因為原始的規(guī)范通常都是自然語言描述的,不同的實現(xiàn)者在使用形式化語言建模的過程中,就可能產(chǎn)生了一個一致性問題:原始規(guī)范和形式化規(guī)范之間可能在語義上產(chǎn)生偏差。根據(jù)這樣衍生的形式化描述產(chǎn)生的測試序列不能作為判斷是否通過一致性測試的依據(jù)。

對于一致性測試的過程,大約需要分五個步驟來完成[8],圖2是一致性測試的過程。

圖2 一致性測試的過程

第一步,分析測試需求。也就是說,分析相應(yīng)的標(biāo)準(zhǔn)或規(guī)范,從中找出一組測試標(biāo)準(zhǔn),建立用于實現(xiàn)的一致性描述pics(protocol implement conformance statement)。每個pics應(yīng)該盡可能的簡單并且僅僅集中在一個原子功能上,測試標(biāo)準(zhǔn)之間要做到不相抵觸。

第二步,在pics上增加一些用于測試實現(xiàn)的協(xié)議實現(xiàn)額外信息pixit(protocol implementation extra information statement),pics和pixit就組成用于測試實現(xiàn)的一致性信息citi(conformanee information for testing the implementation)。

第三步,基于citi,生成一組抽象的測試用例atc(abstract test case)的集合——抽象測試套件ats(abstract test suite)。

第四步,對各atc中的參數(shù)選擇合適的輸入值以及相應(yīng)的“預(yù)測結(jié)果”,得到可執(zhí)行的測試用例etc(executable test case)的集合——可執(zhí)行的測試套件ets(executable test suite)。當(dāng)然,生成的可執(zhí)行測試套件是與所處的測試平臺是密切相關(guān)的。

第五步,對被測單元uut(unit under test)執(zhí)行etc的時候,被測單元的測試過程將會產(chǎn)生一個“通過”或“失敗”的報告。報告“失敗”即未能通過測試則意味著與規(guī)范不一致。

2 一致性自動化測試方法

目前測試過程中的“生成ets”、“測試uut”等工作步驟中實現(xiàn)了簡單的測試系統(tǒng),能夠?qū)σ恍┕ぷ鲗崿F(xiàn)自動化,如根據(jù)手工輸入的modbus協(xié)議的從站號、功能號、地址等參數(shù)生成測試用例,能夠自動執(zhí)行測試用例并生成簡要測試報告。但這些測試過程存在以下問題:測試用例的生成需要大量的人為干預(yù);另外,測試結(jié)果只是簡要的測試報告,沒有更進一步的分析報告,以幫助用戶更容易地確定問題所在。

如圖2虛線框部分所示,“生成ets”、“測試uut”等工作步驟可以實現(xiàn)測試自動化。自動化后的體系結(jié)構(gòu)如圖3所示。其中可視化用例設(shè)計器、測試用例生成器完成測試用例的自動生成工作;測試結(jié)果分析器完成測試結(jié)果的自動分析工作。限于篇幅對測試結(jié)果的自動分析方法不予展開論述,主要論述測試用例的自動生成方法。

圖3 一致性測試過程的自動化示意圖

通常在一致性測試過程中,測試用例的設(shè)計和生成是軟件測試的關(guān)鍵任務(wù)和難點,據(jù)統(tǒng)計,約有40%一致性測試開銷用于設(shè)計和生成測試用例上。長期以來,測試用例的設(shè)計和生成主要依靠手工完成,這意味著要求測試人員具有相當(dāng)?shù)慕?jīng)驗和較高的專業(yè)水平。因此,實際工程中的測試用例生成往往帶有很大的盲目性,主要依靠直覺經(jīng)驗產(chǎn)生測試用例,這導(dǎo)致測試用例數(shù)量多,測試效果差,測試成本居高不下。另外,如何生成最能發(fā)現(xiàn)被測系統(tǒng)(或程序)存在問題的測試用例,如何能用最少的測試用例實現(xiàn)足夠大的覆蓋率,也是測試人員一直追求的目標(biāo)。這些問題的解決方案就是測試用例的自動生成[10]。

2.1 測試用例的自動生成方法的體系結(jié)構(gòu)

圖3中的測試用例自動生成器是測試用例自動生成工作的核心。其體系結(jié)構(gòu)如圖4所示。

其中用例設(shè)計描述是描述用例特性的文本,根據(jù)所選擇的算法不同而描述方式也不同:如采用“基于形式規(guī)格說明的方法”則用z,vdm,obj,larch [11]等語言來描述,如采用“組合覆蓋方法”則用xml腳本來描述。

圖4 測試用例自動生成器的體系結(jié)構(gòu)

算法適配器為各種算法提供接口,它向上為描述解析器提供算法支持服務(wù),向下解釋各種算法,使得體系結(jié)構(gòu)能夠兼容多種算法而增強體系結(jié)構(gòu)的擴展性和適用范圍。

描述解析器基于算法適配器來分析用例設(shè)計描述,將描述統(tǒng)一轉(zhuǎn)換成用例生成器可識別的內(nèi)部描述形式,然后傳遞給用例生成器。

用例生成器獲得來自描述解析器的內(nèi)部描述,并根據(jù)描述自動生成可執(zhí)行測試用例。可執(zhí)行的測試用例支持多種形式存儲,如內(nèi)存存儲、文件存儲、數(shù)據(jù)庫存儲等,具體的存儲格式隨用例執(zhí)行器的需求而變。

2.2 測試用例的自動生成方法的實現(xiàn)

為了驗證體系結(jié)構(gòu)的合理性和有效性,基于microsoft vc 6.0 sp6、modbus activex控件、“分類樹方法”、cte xl(classification tree editor extended logics)實現(xiàn)了modbus協(xié)議一致性測試的自動化系統(tǒng)。

其中cte xl是我們系統(tǒng)中的可視化用例設(shè)計器,它是一個語法控制的、可視化、圖形化的編輯器。幫助我們更加有效地使用分類樹方法進行測試用例的設(shè)計。

分類樹方法是黑盒測試中的一種部分測試方法,由grochtmann 和grinun 提出,后又由chen 和poon 改進[11],它是一種有效的功能測試方法。分類樹方法的基本思想是: 首先逐層劃分測試對象的輸入域,然后將劃分的獨立的類結(jié)合為無冗余的測試用例,這些測試用例覆蓋了整個輸入數(shù)據(jù)域。

算法適配器、描述解析器、用例生成器、分類樹方法均使用microsoft vc 6.0 sp6實現(xiàn)。

modbus activex控件用來執(zhí)行用例并生成測試報告。該控件具有多線程、多任務(wù)、多優(yōu)先級等特性,支持modbus serial line/tcp通信協(xié)議,支持rtu和ascii兩種通信模式,具有良好的性能。

系統(tǒng)實際使用時,首先用cte xl構(gòu)建用例設(shè)計,也就是生成z語言描述的規(guī)格說明,然后描述解析器解析該規(guī)格說明并生成測試用例模板(系統(tǒng)內(nèi)部格式),交由用例生成器生成可執(zhí)行的測試用例,最后由modbus activex控件用來執(zhí)行用例并生成測試報告。人工參與的部分只是在第一步,即用cte xl構(gòu)建用例設(shè)計,其余部分均自動完成,大大降低測試人員的工作量,提高了測試工作的效率和客觀性。

該實現(xiàn)已經(jīng)被應(yīng)用到“山東石油化工廠裝車管理系統(tǒng)”中用來測試管理系統(tǒng)和油氣批量控制儀之間modbus通信,也被應(yīng)用到“長慶單井計量信息系統(tǒng)”中用來測試信息系統(tǒng)和plc之間的modbus通信,限于篇幅測試過程不贅述,經(jīng)過測試發(fā)現(xiàn)了一些隱藏的modbus一致性問題并且便于使用,提高了一致性測試有效性和客觀性,同時增強了產(chǎn)品的可靠性和可用性,也證明了本文所論述的一致性測試自動化方法的有效性和實用性。

3 結(jié) 語

在分析了現(xiàn)有modbus協(xié)議一致性測試中存在的問題后,本文提出了一致性測試的自動化方法,基于這個方法設(shè)計并實現(xiàn)了一致性測試系統(tǒng),在實際應(yīng)用中該系統(tǒng)發(fā)現(xiàn)一些隱藏的modbus一致性問題,提高了modbus一致性測試的有效性和客觀性,證明了該方法的有效性和實用性。目前該方法的實現(xiàn)基于分類樹方法,下一步將研究其他測試用例自動生成方法,使其進一步完善。

編輯整理

參考文獻

篇7

關(guān)鍵詞:MODBUS PLC 變頻器

中圖分類號:TP273 文獻標(biāo)識碼:A 文章編號:1007-9416(2012)02-0072-02

1、引言

MODBUS作為一種簡單易用的通訊協(xié)議已經(jīng)越來越多的應(yīng)用在各類儀器儀表中,下面筆者以西門子公司的S7200PLC通過自由口與ABB公司的ACS510變頻器使用MODBUS協(xié)議進行通信為例,對MODBUS通訊的應(yīng)用進行敘述,以期達到拋磚引玉的效果。

2、硬件配置

圖1給出了SIMATIC S7-200CPU與四臺ABB ACS510變頻器構(gòu)成的MODBUS網(wǎng)絡(luò)。S7-200CPU為主工作站。變頻器1、變頻器2,變頻器3和變頻器4為從工作站。設(shè)置變頻器的通訊協(xié)議參數(shù)9802均為1,即變頻器通過RS485串行通訊口和MODBUS總線相連。設(shè)置通訊速率參數(shù)5303為19.2kb/s。設(shè)置校驗方式參數(shù)5304為偶校驗,1個停止位。設(shè)置控制類型參數(shù)5305為 ABB傳動簡版。從左到右變頻器1、2、3和4的站地址參數(shù)5302分別設(shè)置為3、4,5和6,并將變頻器4的總線終端電阻DIP開關(guān)置ON。在對變頻器以上參數(shù)設(shè)置完成后應(yīng)對傳動重新上電激活,使新地址及通訊協(xié)議生效。

變頻器控制要求:

變頻器分現(xiàn)場和遠程兩種控制模式,現(xiàn)場控制柜設(shè)置三位置模式選擇開關(guān),分別為停止、本控和遠程。在本控模式下啟動/停止命令由現(xiàn)場開關(guān)觸發(fā)數(shù)字輸入DI1控制,頻率由現(xiàn)場的電位器改變模擬輸入AI1的輸入電壓進行調(diào)節(jié)。當(dāng)選擇遠程模式時,數(shù)字輸入DI2接通,通知PLC現(xiàn)變頻器已經(jīng)處于遠程控制模式。為能夠?qū)崿F(xiàn)以上功能并在人機界面能夠觀察到變頻器的運行頻率和通過模擬輸入AI2輸入的實際流量,還需要對變頻器其他部分參數(shù)進行設(shè)置,見表1。

3、程序設(shè)計

3.1 通訊內(nèi)容

主工作站輪流發(fā)送請求報文到每個變頻器從工作站,隨之每個從工作站產(chǎn)生響應(yīng)報文。PLC主工作站分別對每個變頻器從工作站進行如下操作:

(1)對每個變頻器的輸出線圈1~3的狀態(tài)進行查詢;

(2)查詢變頻器狀態(tài)寄存器40004狀態(tài)字、40005實際值、40006實際值和40007實際值。40005~40007數(shù)據(jù)值對應(yīng)于表1中變頻器參數(shù)5310、5311和5312中的實際值。

(3)寫變頻器控制字,對變頻器的遠程啟停進行控制。

(4)寫變頻器寄存器,對變頻器的外部2給定進行控制。

對一個變頻器的數(shù)據(jù)全部讀寫完成后,開始對下一站號變頻器的數(shù)據(jù)進行讀寫。當(dāng)所有變頻器的數(shù)據(jù)讀寫完成后,主工作站重新開始對最小站號變頻器的數(shù)據(jù)進行讀寫。數(shù)據(jù)的傳輸及接受采用PLC自由通訊口模式進行,報文按照modbus的協(xié)議組織。

3.2 通訊格式

MODBUS請求報文格式如表2。

因在S7-200PLC發(fā)送指令XMT中,發(fā)送緩沖器的第一個字節(jié)指定的是數(shù)據(jù)傳輸?shù)淖止?jié)數(shù),從第二個字節(jié)以后的數(shù)據(jù)為需要發(fā)送的數(shù)據(jù)。因此,結(jié)合MODBUS請求報文格式,PLC發(fā)送數(shù)據(jù)的格式如表3。

在整個網(wǎng)絡(luò)通信過程中,主工作站輪流發(fā)送請求報文到每個從工作站,隨之每個從工作站必須產(chǎn)生響應(yīng)報文返回到主工作站。當(dāng)主工作站向從工作站發(fā)送請求報文和接受從工作站返回的響應(yīng)報文時,在主工作站儲存區(qū)開辟了發(fā)送緩沖區(qū)和接受緩沖區(qū)。主工作站向從工作站發(fā)送請求報文時,首先對相應(yīng)從工作站輸出緩沖區(qū)的數(shù)據(jù)進行CRC運算生成校驗碼,并將校驗碼疊加在輸出緩沖區(qū)的數(shù)據(jù)之后再傳送到發(fā)送緩沖區(qū),然后再由發(fā)送指令發(fā)出。建立一個遠程循環(huán)結(jié)束標(biāo)志位,當(dāng)響應(yīng)報文全部接受完成,置該位為ON。主工作站在接受從工作站的響應(yīng)報文時,先把響應(yīng)報文輸入到接受緩沖區(qū),再把接受緩沖區(qū)中的數(shù)據(jù)傳送到輸入緩沖區(qū)。為此,在主工作站中要留有兩個數(shù)據(jù)存儲區(qū),一個作為報文請求(輸出緩沖區(qū)),另一個作為報文響應(yīng)(輸入緩沖區(qū))。

在MODBUS RTU通訊協(xié)議中都必須要求有CRC循環(huán)冗余校驗。CRC循環(huán)冗余校驗為兩個字節(jié),附加在報文后面的CRC的值由發(fā)送設(shè)備計算,當(dāng)放置CRC 值于報文時,高低字節(jié)必須交換。首先發(fā)送低位字節(jié),然后再發(fā)送高位字節(jié)。故此在發(fā)送緩沖區(qū)中的數(shù)據(jù)要比輸出緩沖區(qū)的數(shù)據(jù)多兩個CRC循環(huán)冗余校驗字節(jié)。接收設(shè)備在接收報文時重新計算CRC的值,并將計算結(jié)果于實際接收到的CRC值相比較。如果兩個值不相等,則傳送的數(shù)據(jù)為錯誤。

3.3 程序描述

SBR0子程序:在PLC上電初始化階段,設(shè)置通訊口為自由口通信方式,并設(shè)置波特率及校驗方式,允許全部中斷時件,并設(shè)置定時中斷的時基為20毫秒。在這里設(shè)置波特率為19.2KB/S,偶校驗,每字符8個數(shù)據(jù)。注意必須與從工作站的通訊參數(shù)相同。為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址建立間接尋址指針。并設(shè)置請求報文的剩余數(shù)目為4,設(shè)置從工作站的查詢剩余數(shù)目為4。

將輸出緩沖區(qū)指針中指出的地址為起始地址的12個字節(jié)通過塊傳送命令傳送到發(fā)送緩沖區(qū)單元中。并復(fù)位遠程循環(huán)結(jié)束標(biāo)志位。

對發(fā)送緩沖區(qū)中的報文進行運算生成CRC,交換CRC 寄存器中的高低字節(jié),并將交換完成的CRC 寄存器疊加到發(fā)送緩沖區(qū)中。

啟動定時中斷和發(fā)送中斷,并通過發(fā)送指令將發(fā)送緩沖區(qū)中的請求報文發(fā)送。

建立跳轉(zhuǎn)入口,標(biāo)號1。

若循環(huán)未結(jié)束,跳轉(zhuǎn)到標(biāo)號1。程序不向下執(zhí)行,直至遠程循環(huán)結(jié)束,標(biāo)志位為ON。

遠程I/O更新完成,將接受的報文通過塊傳送命令傳送到接受緩沖區(qū)指針指出的接受緩沖區(qū)中。

修改發(fā)送緩沖區(qū)和接受緩沖區(qū)指針值,指向下一個輸出和輸入緩沖區(qū)字節(jié)地址。將請求報文的剩余數(shù)目減1。

當(dāng)請求報文的剩余數(shù)目為零時,重新設(shè)置請求報文的剩余數(shù)目為4,將從工作站的查詢剩余數(shù)目減1。

當(dāng)工作站的查詢剩余數(shù)目為零時,重新設(shè)置從工作站的查詢剩余數(shù)目為4,為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址重新建立間接尋址指針。

INT_0中斷程序:在接受報文超時情況下,禁止接受中斷和接受定時中斷,置遠程循環(huán)結(jié)束標(biāo)志位為ON。

INT_1中斷程序:在發(fā)送超時情況下禁止發(fā)送中斷和發(fā)送定時中斷,置PLC為STOP模式。

INT_10中斷程序:禁止發(fā)送完成中斷,啟動接受定時中斷INT_0和接受數(shù)據(jù)中斷程序INT_11。

INT_11中斷程序:若接受的首字符(從工作站地址)為從工作站的正確地址,則建立一個接受字符的地址指針。并把接受到的字符裝入到接受字符指針指出地址中。增加指針的數(shù)值,指向下一個地址。并啟動中斷程序INT_12。

INT_12中斷程序:把接受到的第二個字符(功能碼)裝入到接受字符指針指出地址中,增加指針的數(shù)值,指向下一個地址。啟動中斷程序INT_13。

INT_13中斷程序:把收到的第三個字符(字節(jié)數(shù))裝入到接受字符指針指出地址中,并修改指針值。第三個字符為接受的不含CRC校驗碼字符的總數(shù)目,剩余接受字符數(shù)目為將字節(jié)數(shù)加2,若反饋的功能碼為十六進制數(shù)0F,全部剩余字符數(shù)目為5。將全部剩余字符數(shù)目置入到累加器AC1中,當(dāng)累加器AC1為零時,接收字符也就完成。啟動中斷程序INT_14。

INT_14中斷程序:將接受到的字符裝入接受字符指針指出地址中,并修改地址指針值和將將累加器AC1數(shù)值減一。若累加器AC1的數(shù)值為零。則關(guān)閉字符接受中斷和定時中斷,并將遠程循環(huán)結(jié)束標(biāo)志位置ON。

4、結(jié)語

該系統(tǒng)自投入在線運行以來,系統(tǒng)調(diào)節(jié)迅速且運行穩(wěn)定,并取得了良好的經(jīng)濟效果,在助劑添加中具有較高的推廣價值。

參考文獻

[1]殷洪義.可編程序控制器選擇、設(shè)計與維護.機械工業(yè)出版社,2002年.

[2]S7-200可編程控制器系統(tǒng)手冊.2004年.

篇8

【關(guān)鍵詞】 Modbus協(xié)議 保護裝置 報文丟失

南京地鐵二號線變電所內(nèi)高壓供電設(shè)備的保護裝置(P139保護裝置和P521保護裝置)與所內(nèi)SCADA系統(tǒng)的網(wǎng)絡(luò)通信服務(wù)器(WTS-65C)通過RS485接口運用Modbus協(xié)議進行通信。在正常運行狀態(tài)和調(diào)試狀態(tài)下,保護裝置的信號能夠準(zhǔn)確、及時地傳輸給SCADA后臺。地鐵實際投運后,發(fā)生了多次重要保護動作沒有被后臺采集到的故障。這些故障的共同特點是保護裝置本身可以觀察到保護動作的完整信號記錄,SCADA系統(tǒng)后臺卻只顯示了開關(guān)跳閘的動作而無法查閱與之相關(guān)的保護告警報文。

1 Modbus協(xié)議介紹

1.1 背景介紹

Modbus協(xié)議是由美國MODICON公司在1978年開發(fā)的一種通信協(xié)議,最初是用在MODICON公司開發(fā)的PLC可編程控制器上,它支持傳統(tǒng)RS232、RS422以及RS485通信標(biāo)準(zhǔn)。1996年MODICON公司又推出了基于TCP/IP的Modbus協(xié)議使得其在工業(yè)領(lǐng)域的應(yīng)用更加廣泛[1]。

1.2 Modbus通訊協(xié)議關(guān)鍵技術(shù)

各種不同公司和廠家的PLC、RTU、SCADA系統(tǒng)、DCS或與兼容Modbus協(xié)議的第三方設(shè)備之間可以通過Modbus協(xié)議連成工業(yè)網(wǎng)絡(luò),構(gòu)建各種復(fù)雜的監(jiān)控系統(tǒng)。參考ISO/OSI模型,可以發(fā)現(xiàn)在物理層,Modbus協(xié)議可以采用RS232、RS422、RS485接口以及以太網(wǎng)的物理層結(jié)構(gòu);在數(shù)據(jù)鏈路層,Modbus主要采用串行主從協(xié)議;由于Modbus現(xiàn)場總線的實時性特點,所以在網(wǎng)絡(luò)層、傳輸層、會話層和表示層,Modbus協(xié)議模型中均沒有定義;在應(yīng)用層中Modbus規(guī)定了協(xié)議的模型,主要包括消息幀格式、功能碼、校驗、通訊時序控制等內(nèi)容[2]。

電力系統(tǒng)中Modbus協(xié)議的數(shù)據(jù)分為四類:開入量;開出量;只讀模擬量(輸入寄存器),例如遙測值等;可讀寫模擬量(保持寄存器),例如保護定值、設(shè)備參數(shù)等[4]。Modbus需要處理的所有數(shù)據(jù)都需要存放在裝置的存儲器中,為了不把存儲器物理地址和寄存器編號混淆,就需要把寄存器編號與存儲器地址建立鏈接,通過統(tǒng)一管理存儲器地址來管理寄存器。

Modbus的數(shù)據(jù)存儲模型也分為兩類,分別是帶有四個獨立數(shù)據(jù)塊的數(shù)據(jù)存儲模型和僅有一個數(shù)據(jù)塊的數(shù)據(jù)模型。四個獨立的數(shù)據(jù)塊模型使用四個獨立的存儲器分區(qū)分別存儲四種數(shù)據(jù),這樣有助于針對不同類型的數(shù)據(jù)進行相應(yīng)的硬件處理,但是不同的工業(yè)應(yīng)用場合使用的數(shù)據(jù)類型不會完全相同,因而可能產(chǎn)生存儲器資源的耗費;共用一個獨立數(shù)據(jù)塊模型進行數(shù)據(jù)存儲的方式可以節(jié)省存儲器的硬件資源,但需要軟件針對不同的數(shù)據(jù)類型對存儲器空間進行劃分。南京地鐵二號線高壓保護裝置使用了僅有一個數(shù)據(jù)塊的數(shù)據(jù)存儲器結(jié)構(gòu)。

2 保護信號丟失的原因分析及解決方案

2.1 南京地鐵二號線Modbus規(guī)約數(shù)據(jù)傳輸方式

南京地鐵二號線站內(nèi)SCADA系統(tǒng)在RS485通信標(biāo)準(zhǔn)下采用Modbus一對多通信協(xié)議。作為Master的網(wǎng)絡(luò)通信服務(wù)器采用RTU方式輪流向每一臺35kV保護裝置發(fā)送數(shù)據(jù)請求廣播。請求報文為8字節(jié)報文,其數(shù)據(jù)格式如(表1)。

2.2 保護信號丟失的原因分析及解決方案

通過調(diào)查所有歷史告警記錄,我們發(fā)現(xiàn)故障中被丟失的保護信號也曾經(jīng)被系統(tǒng)采樣到并形成報文傳至SCADA系統(tǒng)后臺。這說明保護信號丟失的現(xiàn)象并不是必然發(fā)生,也就排除了系統(tǒng)結(jié)構(gòu)倒致故障的原因。

通過查看保護裝置的保護信號點表配置,我們發(fā)現(xiàn)保護信號的采樣和維持皆取自于保護信號的條件信號。保護條件是否滿足是判斷保護動作是否發(fā)生的關(guān)鍵,所以保護動作信號從保護條件信號上采樣并判斷并沒有問題。但是保護信號的維持也依靠保護條件信號的維持就產(chǎn)生了矛盾。對比試驗條件和現(xiàn)場環(huán)境,可以發(fā)現(xiàn)實驗條件下保護條件信號是人工手動加載于裝置的接線端子之上的。信號的發(fā)生與消失的速度完全依靠人手工操作的速度,而這個速度明顯慢于網(wǎng)絡(luò)通信服務(wù)器的一個循環(huán)檢測周期,因而保護信號因得到了手工延時可以被網(wǎng)絡(luò)通信服務(wù)器采集到?,F(xiàn)實條件下保護信號卻是一個瞬態(tài)量。當(dāng)有保護動作時,相應(yīng)機構(gòu)的動作延時一般不超過50ms,機構(gòu)動作完畢后,作為保護動作的條件就消失,保護條件信號和保護信號隨之消失。所以保護信號在保護裝置中的維持時長一般短于50ms。當(dāng)保護信號發(fā)生時網(wǎng)絡(luò)通信服務(wù)器在保護信號維持的時間段內(nèi)恰巧能夠采集到相應(yīng)的保護裝置,則保護信號能夠被采集并上傳;如果此時網(wǎng)絡(luò)通信服務(wù)沒有采集到這一臺保護裝置,那么在保護信號消失之后網(wǎng)絡(luò)通信服務(wù)器就不會采集到相應(yīng)的告警。

3 結(jié)語

循環(huán)檢測是Modbus協(xié)議的主要特點。作為串行通信條件下的一種通信協(xié)議,Modbus無法通過自身的構(gòu)架改良來解決瞬態(tài)信號的采樣問題。設(shè)法延長信號時長和提高采樣器件的采樣頻率是兩種可行的方法。后一種方法需要硬件升級,耗用較高的成本;前一種方法成本較低,但是需要合適的使用環(huán)境以及可實現(xiàn)的信號延時方法。

參考文獻:

[1]李偉.基于Modbus協(xié)議的工控節(jié)點設(shè)計與實現(xiàn)[J].計算機工程,2007-36(16):226-228.

[2]史運濤,孫德輝,李志軍等.基于Modbus協(xié)議的通訊集成技術(shù)研究[J].化工自動化及儀表,2010-34(4):67-72.

[3]盧文俊,冷杉,楊建軍.基于Modbus協(xié)議的控制器遠程監(jiān)控系統(tǒng)[J].電力自動化設(shè)備,2003-23 (6):54-56.