孟開(kāi)元+楊海超+楊宇能
摘要:在考察數(shù)字化油田建設(shè)情況的基礎(chǔ)上,研究油田現(xiàn)場(chǎng)無(wú)線儀表與RTU通信方式及其各參數(shù)的含義,提出了一種新型油田RTU調(diào)試軟件設(shè)計(jì)思路。在油田現(xiàn)場(chǎng),RTU與上位機(jī)軟件之間的通信方式為串口Modbus或網(wǎng)口Modbus通信,在VS2010開(kāi)發(fā)環(huán)境下,用C#編程實(shí)現(xiàn)這兩種通信協(xié)議,調(diào)試人員可根據(jù)現(xiàn)場(chǎng)情況選擇通信方式;將RTU和儀表的內(nèi)部點(diǎn)表用XML文件描述,并將XML文件加載到調(diào)試程序中,通過(guò)發(fā)送不同的指令,用戶可以讀取和配置RTU和儀表的各項(xiàng)參數(shù),繪制示功圖。使用XML語(yǔ)言,可提升軟件開(kāi)發(fā)效率,節(jié)省軟件開(kāi)發(fā)時(shí)間。結(jié)果表明,該軟件運(yùn)行良好、可操作性強(qiáng),降低了對(duì)現(xiàn)場(chǎng)調(diào)試人員的要求。
關(guān)鍵詞:RTU;無(wú)線儀表;Modbus;XML
DOIDOI:10.11907/rjdk.171492
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)006-0050-03
0 引言
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、通信技術(shù)的快速發(fā)展,石油行業(yè)對(duì)油田的數(shù)字化、信息化、智能化要求越來(lái)越高,目前各大油田都在致力于數(shù)字化油田的建設(shè)。在傳統(tǒng)的油田現(xiàn)場(chǎng),儀表和RTU之間采用RS485串行接口或通過(guò)模擬量輸入進(jìn)行數(shù)據(jù)通信,該方式以其高可靠性、高適應(yīng)性、易擴(kuò)展性[1],在油氣田監(jiān)控中得到了廣泛的應(yīng)用。但是這種方式也存在以下不足:①調(diào)試人員需要去油田現(xiàn)場(chǎng)通過(guò)串口調(diào)試軟件或者直接修改儀表程序?qū)x表進(jìn)行配置,浪費(fèi)時(shí)間且容易出錯(cuò),對(duì)調(diào)試人員的專(zhuān)業(yè)技能要求比較高,而且由于部分油田距離較遠(yuǎn),環(huán)境惡劣,增加了現(xiàn)場(chǎng)維護(hù)成本;②由于油田現(xiàn)場(chǎng)環(huán)境復(fù)雜多變,抽油機(jī)機(jī)械運(yùn)動(dòng)導(dǎo)致傳輸線路容易損壞,加之其它因素使得傳輸信號(hào)受到的干擾加劇,導(dǎo)致信號(hào)不穩(wěn)定。
Zigbee以其低復(fù)雜度、低功耗、低成本、高可靠等優(yōu)點(diǎn),在智能家居等領(lǐng)域得到廣泛應(yīng)用。近年來(lái),在油田現(xiàn)場(chǎng),無(wú)線儀表開(kāi)始興起,實(shí)踐證明,Zigbee作為儀表和RTU之間的通信方式完全可行,油田現(xiàn)場(chǎng)儀表-RTU-上位機(jī)通信結(jié)構(gòu)如圖1所示。
本文在考察數(shù)字化油田信息傳輸流程的基礎(chǔ)上,設(shè)計(jì)與實(shí)現(xiàn)了基于Modbus通信協(xié)議的油田RTU調(diào)試軟件。
1 軟件總體設(shè)計(jì)
1.1 設(shè)計(jì)目標(biāo)
首先,本系統(tǒng)可以根據(jù)油田現(xiàn)場(chǎng)實(shí)際情況選擇RTU與上位機(jī)之間的通信方式是串口Modbus還是網(wǎng)口Modbus,從而實(shí)現(xiàn)數(shù)據(jù)的讀寫(xiě)交互;其次,可以讀取RTU型號(hào)代碼、序列號(hào)、固件版本、軟件版本等常規(guī)數(shù)據(jù)以及RPC信息、儀表信息,采集示功圖數(shù)據(jù)并且繪制示功圖;最后,可以配置儀表、井口、RTU的相關(guān)參數(shù),開(kāi)啟或者關(guān)閉RTU等功能。系統(tǒng)功能模塊如圖2所示。
1.2 系統(tǒng)開(kāi)發(fā)流程
本系統(tǒng)首先編程實(shí)現(xiàn)串口Modbus和網(wǎng)口Modbus通信,然后用ModScan32軟件驗(yàn)證數(shù)據(jù)包的正確性,最后進(jìn)行數(shù)據(jù)讀取,即獲取信息和配置參數(shù)。系統(tǒng)軟件開(kāi)發(fā)流程如圖3所示。
2 通信模塊實(shí)現(xiàn)
2.1 Modbus通信協(xié)議
Modbus是由Modicon在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議,也是目前工業(yè)現(xiàn)場(chǎng)總線中較為流行的總線協(xié)議,標(biāo)準(zhǔn)的Modbus協(xié)議物理層接口有RS232、RS433、RS485和以太網(wǎng)口[2]。本系統(tǒng)RTU和上位機(jī)物理層使用的接口為RS232和以太網(wǎng)口。Modbus協(xié)議是一項(xiàng)應(yīng)用層報(bào)文傳輸協(xié)議,包括Modbus ASCII、Modbus RTU、Modbus TCP/IP 3種報(bào)文類(lèi)型[3]。其中Modbus ASCII、Modbus RTU在串行鏈路上傳輸,Modbus TCP/IP在以太網(wǎng)上傳輸。
由于標(biāo)準(zhǔn)Modbus RTU協(xié)議的物理層為串口通信,因此應(yīng)用層數(shù)據(jù)單元ADU的最大長(zhǎng)度為256字節(jié)。如圖4所示為Modbus RTU通用數(shù)據(jù)幀格式,因此,協(xié)議數(shù)據(jù)單元PDU的長(zhǎng)度為:256-Server address(1 byte從地址)-CRC(2 byte CRC校驗(yàn))=253 bytes。
Modbus TCP/IP是運(yùn)行在傳輸控制協(xié)議上的Modbus 報(bào)文傳輸協(xié)議[4]?;ヂ?lián)網(wǎng)編號(hào)分配管理機(jī)構(gòu)IANA給Modbus協(xié)議賦予TCP端口號(hào)為502[5]。Modbus TCP/IP通用數(shù)據(jù)幀如圖5所示。
功能碼占一個(gè)字節(jié),編號(hào)為0的功能碼未定義。因此,共有127功能碼,它們一共分為3類(lèi):公共功能碼、用戶自定義功能碼、保留功能碼[6]。
2.2 通信模塊實(shí)現(xiàn)
使用VS2010開(kāi)發(fā)環(huán)境集成的SerialPort控件實(shí)現(xiàn)串口數(shù)據(jù)的讀寫(xiě),自定義一個(gè)控件ipBox用以接收用戶輸入的RTU的IP地址。使用ComboBox下拉菜單顯示調(diào)試軟件和RTU的通信方式,即計(jì)算機(jī)串口的COM口或者網(wǎng)口。在實(shí)際應(yīng)用中,儀表和RTU的數(shù)據(jù)及相關(guān)參數(shù)都存儲(chǔ)在RTU的寄存器中,由于油田現(xiàn)場(chǎng)的儀表較多,因此參數(shù)也較多,每個(gè)參數(shù)所占用寄存器的單元個(gè)數(shù)也較多。為了方便管理,將這些參數(shù)有規(guī)律地存放在RTU的寄存器單元中,并繪制成如圖6所示的點(diǎn)表,然后根據(jù)點(diǎn)表將這些信息編成XML文件,當(dāng)需要對(duì)某個(gè)寄存器讀寫(xiě)時(shí),只需要加載rtu.xml文件并讀取相應(yīng)的信息即可。
本文在Modbus協(xié)議的基礎(chǔ)上,將Modbus數(shù)據(jù)幀的Data部分劃分為兩部分,第一部分占用2個(gè)字節(jié),表示參數(shù)存放的寄存器的起始地址,第二部分占用2個(gè)字節(jié),表示占用的寄存器個(gè)數(shù)。
因此,定義一個(gè)函數(shù)public int MakeData(byte cmd,short addr,short len,ref byte[]data)形成Modbus數(shù)據(jù)幀。函數(shù)參數(shù)含義:
cmd:功能碼,該參數(shù)的含義為讀/寫(xiě)單個(gè)或者多個(gè)RTU單元的數(shù)據(jù)。
addr:RTU存儲(chǔ)單元起始地址。
len:一次讀/寫(xiě)RTU存儲(chǔ)單元的個(gè)數(shù)。
data:前3個(gè)參數(shù)形成的數(shù)據(jù)幀存放在data數(shù)組中。
當(dāng)數(shù)據(jù)幀形成以后,判斷RTU與上位機(jī)之間的通信方式,如果是串口通信,則使用SerialPort控件的成員函數(shù)Read(byte[]buffer,int offset,int count)、Write(byte[]buffer,int offset,int count)和RTU交互,完成數(shù)據(jù)的讀寫(xiě)操作;如果是以太網(wǎng)口通信,用Socket套接字實(shí)現(xiàn)與RTU的通信,WSAStartup()、socket()、bind()、send()、recv()函數(shù)可以完成一次通信,使用的TCP端口號(hào)為502。
3 顯示界面設(shè)計(jì)和通信測(cè)試
顯示界面設(shè)計(jì)主要是調(diào)試軟件的界面布局,使用的控件主要有:Button控件、ComboBox控件、自定義的IpBox、Label控件、TextBox控件、DataGridView控件以及Chart控件等。
測(cè)試通信和數(shù)據(jù)幀是否正確的方法為:利用ModScan32軟件向RTU發(fā)送和調(diào)試軟件相同的命令,對(duì)比數(shù)據(jù)幀每一個(gè)字段,看是否相同。經(jīng)過(guò)測(cè)試,RTU和上位機(jī)之間能進(jìn)行正常通信,數(shù)據(jù)幀的格式正確。
4 結(jié)語(yǔ)
該軟件實(shí)現(xiàn)了與RTU之間的串口和網(wǎng)口通信。經(jīng)測(cè)試,能夠?qū)崿F(xiàn)正常通信,且可準(zhǔn)確獲取RPC、儀表、RTU信息的各項(xiàng)參數(shù),同時(shí)可正確采集功圖數(shù)據(jù)并繪制示功圖。在儀表、RTU和上位機(jī)能正常通信的前提下,該軟件能完成儀表、RTU、井口的配置。經(jīng)過(guò)現(xiàn)場(chǎng)測(cè)試,該軟件運(yùn)行穩(wěn)定良好,并成功應(yīng)用于某油田現(xiàn)場(chǎng)。
參考文獻(xiàn):
[1]李濤,王雙友.智能化配電系統(tǒng)中Modbus協(xié)議轉(zhuǎn)換的實(shí)現(xiàn)[J].自動(dòng)化與儀表,2016(1):30-33.
[2]楊艷華,周永錄,蘇紅軍.通用串口到Modbus RTU的協(xié)議轉(zhuǎn)換器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2014(2):604-606.
[3]王興貴,張明智,杜瑩.Modbus RTU通信協(xié)議在智能儀表與工控機(jī)通信中的應(yīng)用[J].低壓電器,2008(2):8-11.
[4]張隆希.嵌入式Modbus協(xié)議交換機(jī)的設(shè)計(jì)[J].機(jī)電工程技術(shù),2016(Z2):232-236.
[5]王力.Modbus RTU從站通信協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)[J].石油化工自動(dòng)化,2011(5):46-48.
[6]呂國(guó)芳,唐海龍,李進(jìn).基于Modbus RTU的串口調(diào)試軟件的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009(9):236-238,241.
(責(zé)任編輯:孫 娟)
英文摘要Abstract:On the basis of investigating the digital oilfield construction,this paper studies the communication mode between oilfield field wireless meter and RTU,the meaning of its parameters and puts forward a new design idea of the RTU debugging software.In the oil field,the most used communication method between RTU and the host computer software are serial Modbus and Ethernet Modbus.In the VS2010 development environment,we use C# to program these two communication protocols and user can choose different protocol according to the requirement of the oilfield.Then use XML file to describe the point table inside of RTU and the meter.At last,the XML file would be loaded into the debug software.By sending different instructions,user can read or configure the parameters of RTU and meter and draw the work diagram.The XML language speed up the software development and saving software development time.The results show that the software is operational well and reduces the requirements for on-filed personnel.
英文關(guān)鍵詞Key Words:RTU;Wireless Meter;Modbus;XML