亚洲免费无码av|久久鸭精品视频网站|日韩人人人人人人人人操|97人妻免费祝频在找|成人在线无码小视频|亚洲黄片无码在线看免费看|成人伊人22网亚洲人人爱|在线91一区日韩无码第八页|日韩毛片精品av在线色婷婷|波多野主播在线激情婷婷网

歡迎訪問(wèn)愛(ài)發(fā)表,線上期刊服務(wù)咨詢

modbus協(xié)議8篇

時(shí)間:2022-03-09 22:24:46

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

modbus協(xié)議

篇1

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

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

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

1.2DS18B20傳感器

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

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

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

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

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

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

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

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

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

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

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

2.2.1請(qǐng)求數(shù)據(jù)包

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

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

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

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

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

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

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

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

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

2.3通訊的可靠性

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

3 結(jié)束語(yǔ)

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

參考文獻(xiàn):

篇2

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

中圖分類(lèi)號(hào)TN91 文獻(xiàn)標(biāo)識(shí)碼A 文章編號(hào) 1674-6708(2013)82-0188-02

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

1 系統(tǒng)組成

1.1 通訊系統(tǒng)

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

1.2 DCS系統(tǒng)

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

1.3 PLC系統(tǒng)

因工業(yè)化發(fā)展需求而產(chǎn)生的PLC數(shù)字運(yùn)算操作系統(tǒng),它利用可編程存儲(chǔ)將定時(shí)計(jì)數(shù)、順序控制及邏輯運(yùn)算等操作指令存儲(chǔ)起來(lái),再經(jīng)由數(shù)字模擬輸入與輸出對(duì)機(jī)械設(shè)備或生產(chǎn)過(guò)程進(jìn)行控制。可編程控制器與相關(guān)設(shè)備的選擇應(yīng)從其功能原則設(shè)計(jì)擴(kuò)充簡(jiǎn)便為切入點(diǎn),選擇易與工業(yè)控制系統(tǒng)形成整體的設(shè)備,而且維護(hù)與控制也較為簡(jiǎn)便。本文PLC系統(tǒng)是由三套和利LK207、一套GE的IC200以及一套西門(mén)子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)安裝目錄,再打開(kāi)MACS V系統(tǒng)的控制器組態(tài)文件與工程,將此模塊添加于硬件組態(tài)中,然后打開(kāi)模塊屬性對(duì)通訊參數(shù)波特率等進(jìn)行設(shè)置,再基于PLC讀寫(xiě)數(shù)據(jù)對(duì)MODBUS讀寫(xiě)數(shù)據(jù)塊進(jìn)行合理添加,數(shù)據(jù)塊屬性設(shè)置取決于數(shù)據(jù)起始地址及PLC地址。以各自地址以及PLC讀寫(xiě)變量進(jìn)行添加于程序中的子程序編寫(xiě)以及變量添加,然后對(duì)編譯進(jìn)行保存。將PLC變量至工藝畫(huà)面添加至打開(kāi)的MACS V畫(huà)面的組態(tài)程序并保存,然后下裝于操作員站,而將PLC傳過(guò)來(lái)的量程或信號(hào)類(lèi)型等變量屬性添加至打開(kāi)的MACS V數(shù)據(jù)庫(kù)的組態(tài)程序,再聯(lián)編并將其下裝于服務(wù)器;

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

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

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

4 結(jié)論

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

參考文獻(xiàn)

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

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

篇3

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

中圖分類(lèi)號(hào):TP274.2 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2012)11-0049-02

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

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

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

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

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

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

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

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

表 Modbus功能碼

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

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

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

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

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

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

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

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

3、結(jié)語(yǔ)

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

參考文獻(xiàn)

篇4

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

1 引言

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

2 Modbus協(xié)議

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5 結(jié)論

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

[參考文獻(xiàn)]

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

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

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

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

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

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

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

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

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

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

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

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

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

篇5

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

中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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

本課題來(lái)源于某燃?xì)庠O(shè)備公司的一個(gè)項(xiàng)目,首先先對(duì)該項(xiàng)目進(jìn)行簡(jiǎn)要的介紹。該燃?xì)夤灸壳皳碛形迮_(tái)智能調(diào)壓器,如圖1所示。該調(diào)壓器擁有五種功能,分別是流量測(cè)量、本地或遠(yuǎn)程出口壓力設(shè)定、流量限制、遠(yuǎn)程監(jiān)控和終端用戶管理。它的優(yōu)點(diǎn)是功能多,且只需要一個(gè)電源。

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

1 方案綜述

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

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

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

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

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

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

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

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

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

2 MODBUS協(xié)議簡(jiǎn)介

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

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

2.1功能碼3

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

2.2 功能碼6

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

2.3 功能碼16

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

3 上位機(jī)控制程序

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

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

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

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

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

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

4.1 數(shù)據(jù)庫(kù)表項(xiàng)

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

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

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

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

4) 用戶表:admin用戶使用,記錄用戶信息,每注冊(cè)一個(gè)新用戶增加一個(gè)表項(xiàng)。

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

4.2 用戶角色

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

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

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

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

5 結(jié)論

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

參考文獻(xiàn):

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

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

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

篇6

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

中圖分類(lèi)號(hào):tp393.09文獻(xiàn)標(biāo)識(shí)碼:a

文章編號(hào):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)成為一種事實(shí)的工業(yè)標(biāo)準(zhǔn),但modbus設(shè)備間的一致性、互操作性較差,是制約modbus發(fā)展的瓶頸。為了解決modbus協(xié)議的一致性和互操作性問(wèn)題,國(guó)內(nèi)外的研究機(jī)構(gòu)展開(kāi)了深入的研究并取得了一些成果。

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

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

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

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

1 一致性測(cè)試的基本原理

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

圖1 一致性測(cè)試原理示意圖

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

對(duì)于一致性測(cè)試的過(guò)程,大約需要分五個(gè)步驟來(lái)完成[8],圖2是一致性測(cè)試的過(guò)程。

圖2 一致性測(cè)試的過(guò)程

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

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

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

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

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

2 一致性自動(dòng)化測(cè)試方法

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

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

圖3 一致性測(cè)試過(guò)程的自動(dòng)化示意圖

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

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

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

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

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

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

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

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

2.2 測(cè)試用例的自動(dòng)生成方法的實(shí)現(xiàn)

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

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

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

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

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

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

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

3 結(jié) 語(yǔ)

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

編輯整理

參考文獻(xiàn)

篇7

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

中圖分類(lèi)號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2012)02-0072-02

1、引言

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

2、硬件配置

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

變頻器控制要求:

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

3、程序設(shè)計(jì)

3.1 通訊內(nèi)容

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

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

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

(3)寫(xiě)變頻器控制字,對(duì)變頻器的遠(yuǎn)程啟停進(jìn)行控制。

(4)寫(xiě)變頻器寄存器,對(duì)變頻器的外部2給定進(jìn)行控制。

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

3.2 通訊格式

MODBUS請(qǐng)求報(bào)文格式如表2。

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

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

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

3.3 程序描述

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

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

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

啟動(dòng)定時(shí)中斷和發(fā)送中斷,并通過(guò)發(fā)送指令將發(fā)送緩沖區(qū)中的請(qǐng)求報(bào)文發(fā)送。

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

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

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

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

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

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

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

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

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

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

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

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

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

4、結(jié)語(yǔ)

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

參考文獻(xiàn)

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

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

篇8

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

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

1 Modbus協(xié)議介紹

1.1 背景介紹

Modbus協(xié)議是由美國(guó)MODICON公司在1978年開(kāi)發(fā)的一種通信協(xié)議,最初是用在MODICON公司開(kāi)發(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è)備之間可以通過(guò)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)場(chǎng)總線的實(shí)時(shí)性特點(diǎn),所以在網(wǎng)絡(luò)層、傳輸層、會(huì)話層和表示層,Modbus協(xié)議模型中均沒(méi)有定義;在應(yīng)用層中Modbus規(guī)定了協(xié)議的模型,主要包括消息幀格式、功能碼、校驗(yàn)、通訊時(shí)序控制等內(nèi)容[2]。

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

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

2 保護(hù)信號(hào)丟失的原因分析及解決方案

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

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

2.2 保護(hù)信號(hào)丟失的原因分析及解決方案

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

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

3 結(jié)語(yǔ)

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

參考文獻(xiàn):

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

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

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