嵌入MODBUS協(xié)議的渦輪流量計(jì)通信系統(tǒng)設(shè)計(jì)
渦輪流量計(jì)是采用先進(jìn)的超低功耗單片微機(jī)技術(shù)研制的渦輪流量傳感器與顯示計(jì)算一體化的新型智能儀表 。文章針對流量計(jì)控制的實(shí)際要求,設(shè)計(jì)了基于 MODBUS協(xié)議的計(jì)量數(shù)據(jù)的通信系統(tǒng)。渦輪流量計(jì)(下位機(jī))由德州儀器的 MSP430單片機(jī)實(shí)現(xiàn)數(shù)據(jù)的采集及存儲(chǔ)。上位機(jī)程序是通過 VisualStudio2012利用C#語言編寫的基于 MODBUS協(xié)議的 Windows應(yīng)用程序。把上位機(jī)程序移植到嵌入式系統(tǒng)中,上下位機(jī)通過無線射頻技術(shù)實(shí)現(xiàn)通信,完成了對流量計(jì)的遠(yuǎn)程控制以及計(jì)量數(shù)據(jù)的遠(yuǎn)程采集與顯示。
渦輪流量計(jì)屬于速度式流量計(jì),也被稱為葉輪式流量計(jì)。渦輪流量計(jì)是利用置于流體中的葉輪的旋轉(zhuǎn)角速度與流體流速成比例的關(guān)系,通過測量葉輪的轉(zhuǎn)速來反映通過管道的流體體積流量的大小,是目前流量儀表中比較成熟的高準(zhǔn)確度儀表之一。隨著工業(yè)的發(fā)展以及計(jì)算機(jī)網(wǎng)絡(luò)的日趨完善,利用計(jì)算機(jī)作為上位機(jī)與渦輪流量計(jì)進(jìn)行通信已經(jīng)是企事業(yè)單位計(jì)量數(shù)據(jù)管理的大趨勢。渦輪流量計(jì)的通信系統(tǒng)是渦輪流量計(jì)的重要組成部分。雖然渦輪流量計(jì)已經(jīng)提供了瞬時(shí)流量、累積流量、溫度、壓力等信息的采集,但是目前這些數(shù)據(jù)的讀取需要靠人工進(jìn)行現(xiàn)場抄表。原始的人工抄表方式既耗費(fèi)大量的人力物力,又無法避免手工抄寫和計(jì)算帶來的誤差,且對數(shù)據(jù)的分析處理也嚴(yán)重滯后,不利于及時(shí)發(fā)現(xiàn)問題、解決問題。因此,這種數(shù)據(jù)讀取方式具有易出錯(cuò)、工作量大、準(zhǔn)確率低等缺點(diǎn)。而且渦輪流量計(jì)大多安裝在一些危險(xiǎn)的且無人看守的工作現(xiàn)場的密封管中,人工抄表難度大。
為了解決這些問題,本課題在 Windows平臺(tái)下利用VisualStudio2012編寫監(jiān)控程序并移植到嵌入式系統(tǒng)下,通過射頻技術(shù)與下位機(jī)進(jìn)行無線通信,通過監(jiān)控程序的無線控制能夠?qū)崿F(xiàn)渦輪流量計(jì)的開關(guān)、各種流量計(jì)參數(shù)的設(shè)定以及將采集到的數(shù)據(jù)傳輸?shù)角度胧街靼暹M(jìn)行顯示。
1.系統(tǒng)總體方案
基于 MODBUS協(xié)議的渦輪流量計(jì)通信系統(tǒng)主要由上位機(jī)和渦輪流量計(jì)(下位機(jī))通信部分組成。本設(shè)計(jì)主要完成上位機(jī)部分。基于 MODBUS協(xié)議編寫上位機(jī)程序并移植到嵌入式系統(tǒng)中,主要完成的任務(wù)有:上位機(jī)通過無線射頻技術(shù)完成了對渦輪流量計(jì)(下位機(jī))的參數(shù)配置并控制下位機(jī)完成對現(xiàn)場流量、溫度、壓力等數(shù)據(jù)的自動(dòng)采集與顯示。
2 .MODBUS協(xié)議
2.1 MODBUS協(xié)議簡介MODBUS規(guī)約是 MODICOM 公司開發(fā)的一個(gè)為很多廠商支持的開放規(guī)約,MODBUS協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。MODBUS協(xié)議已經(jīng)成為一個(gè)通用工業(yè)標(biāo)準(zhǔn),有了它不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò)進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了控制器請求訪問其它設(shè)備的過程,如何回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
MODBUS協(xié)議包括RTU 和ASCII等,并沒有規(guī)定物理層。此協(xié)議的數(shù)據(jù)通信采用了主/從方式,即主設(shè)備端發(fā)出信息請求,從設(shè)備端接收到正確的信息后就會(huì)返回?cái)?shù)據(jù)到主設(shè)備端完成響應(yīng);同時(shí)主設(shè)備端也可以發(fā)消息直接修改從設(shè)備端的數(shù)據(jù),實(shí)現(xiàn)了雙向的讀寫。
2.2 MODBUS協(xié)議格式
MODBUS協(xié)議主要分為兩種傳輸模式:RTU 模式和 ASCII模式。根據(jù)需求可以自行選擇使用何種模式,包括串口通信的參數(shù)(端口號(hào)、波特率、校驗(yàn)方式等)。在配置控制器的時(shí)候,同一個(gè) MODBUS網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的協(xié)議格式和串口參數(shù)。
當(dāng)控制器設(shè)在 MODBUS網(wǎng)絡(luò)上并以 ASCII模式通信時(shí),字符發(fā)送時(shí)間間隔可達(dá)1s而不產(chǎn)生錯(cuò)誤,而且由于 ASCII格式擁有開始和結(jié)束標(biāo)志,因此 ASCII協(xié)議的程序?qū)?shù)據(jù)包的處理能更加方便直觀,更加容易調(diào)試。這是流量計(jì)的通信系統(tǒng)選擇 ASCII協(xié)議作為通信格式的原因。
2.3 ASCII模式
當(dāng)控制器設(shè)為在 MODBUS網(wǎng)絡(luò)上以 ASCII(美國標(biāo)準(zhǔn)信息交換代碼)模式通信,消息中每8Bit的字節(jié)都作為兩個(gè) ASCII字符發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達(dá)到1s而不產(chǎn)生錯(cuò)誤。ASCII模式的消息幀的構(gòu)成如表1。
消息幀的地址域包含兩個(gè)字符(ASCII)或8Bit(RTU)??赡艿膹脑O(shè)備地址0...247(十進(jìn)制)。單個(gè)設(shè)備的地址范圍是1...247。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時(shí),它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個(gè)設(shè)備作出回應(yīng)。地址0用作廣播地址,以使所有的從設(shè)備都能認(rèn)識(shí)。當(dāng) MODBUS協(xié)議用于更高水準(zhǔn)的網(wǎng)絡(luò),廣播可能不允許或以其它方式代替。
3 .通信系統(tǒng)硬件設(shè)計(jì)
3.1 通信系統(tǒng)硬件設(shè)計(jì)方案
通信系統(tǒng)的硬件設(shè)計(jì)方案如圖1所示。
上位機(jī)選用嵌入式開發(fā)板EM9280,它是一款面向工業(yè)自動(dòng)化領(lǐng)域的高性價(jià)比嵌入式主板產(chǎn)品,其內(nèi)核 CPU 為工業(yè)級(jí)品質(zhì)的i.MX283,系統(tǒng)已預(yù)裝正版
WindowCE6.0實(shí)時(shí)多任務(wù)操作系統(tǒng)。此外,EM9280
體積小,易攜帶,可以方便地帶到工業(yè)控制現(xiàn)場,方便工作人員的操作。
EM9280的標(biāo)準(zhǔn)配置中有RS-485通信接口,而標(biāo)準(zhǔn)的 MODBUS物理層就采用了 RS-485串行通信標(biāo)準(zhǔn),通過485總線可以將通信數(shù)據(jù)發(fā)送給無線射頻模塊,并通過射頻信號(hào)將數(shù)據(jù)發(fā)送給下位機(jī)端射頻模塊,***后再通過485總線傳送給渦輪流量計(jì),完成數(shù)據(jù)的傳輸。
無線射頻模塊采用PTR2000,無線收發(fā)一體數(shù)傳
MODEM 模塊 PTR2000芯片性能優(yōu)異,在業(yè)界居水平,它的顯著特點(diǎn)是所需的外圍元件少,因而設(shè)計(jì)非常方便。該模塊在內(nèi)部集成了高頻發(fā)射、高頻接收、PLL合成、FSK調(diào)制/解調(diào)、參量放大、功率放大、頻道切換等功能,因此是目前集成度較高的無線數(shù)傳產(chǎn)品。該器件采用了抗干擾能力較強(qiáng)的 FSK 調(diào)制/解調(diào)方式,其工作頻率穩(wěn)定可靠。它是目前低功率無線傳輸?shù)睦硐脒x擇。
3.2 渦輪流量計(jì)系統(tǒng)設(shè)計(jì)
系統(tǒng)主要由數(shù)據(jù)采集模塊、電源模塊、鍵盤顯示模塊、頻率輸出模塊、通訊模塊等組成。如圖2 所示,系統(tǒng)采集數(shù)據(jù)并經(jīng)過 A/D轉(zhuǎn)換成數(shù)字量進(jìn)行存儲(chǔ)、顯示和傳輸。
考慮到實(shí)際應(yīng)用,在硬件選擇方面盡可能保證性能的情況下多選擇低功耗芯片。微控單元選用德州儀器公司生產(chǎn)的 MSP430F149單片機(jī),它具有良好的通用性和可擴(kuò)展性,并且屬于超低功耗微處理器 。
4. 通信系統(tǒng)軟件設(shè)計(jì)
4.1 軟件編程思路
上位機(jī)軟件在計(jì)算機(jī)上進(jìn)行編寫,計(jì)算機(jī)的標(biāo)準(zhǔn)配置中通常只有 RS-232通信接口,可以通過很多標(biāo)準(zhǔn)控件完成 RS-232的數(shù)據(jù)通信。本次設(shè)計(jì)選用C#語言中的serialport控件在 VS2012編程環(huán)境下完成基于 MODBUS-ASCII協(xié)議的上位機(jī)通信軟件的設(shè)計(jì)。
serialport控件按照接收數(shù)據(jù)方式分為事件驅(qū)動(dòng)方式和同步接收方式。由于該上位機(jī)軟件需要處理的接收上來的數(shù)據(jù)非常多,考慮到事件驅(qū)動(dòng)方式需要大量的代碼去分析接收上來的數(shù)據(jù)屬于上位機(jī)監(jiān)測的哪部分?jǐn)?shù)據(jù),因此,本設(shè)計(jì)采用同步接收方式去處理接收的數(shù)據(jù)。數(shù)據(jù)處理流程圖如圖3。
4.2 軟件仿真
(1)仿真環(huán)境搭建
仿真在一臺(tái)電腦上面完成,需要兩條 USB轉(zhuǎn)串口線,并把1號(hào)串口上的2針接2號(hào)串口上的3針,1號(hào)串口上的3針接2號(hào)串口上的2針,然后兩個(gè)串口的5針(接地端)互相連接即可。
(2)仿真軟件
為了確保編程的 MODBUS-ASCII協(xié)議標(biāo)準(zhǔn)(稍作改動(dòng)便可供其他標(biāo)準(zhǔn)渦輪流量計(jì)使用)準(zhǔn)確可行,選用 MODBUSSlave軟件進(jìn)行仿真。MODBUSSlave是 MODBUS子設(shè)備模擬工具,幫助 MODBUS通訊設(shè)備開發(fā)人員進(jìn)行 MODBUS通訊協(xié)議的模擬和測試,用于模擬、測試、調(diào)試 MODBUS通訊設(shè)備??梢栽冢常矀€(gè)窗口中模擬多達(dá)32個(gè) MODBUS子設(shè)備!與MODBUSPol的用戶界面相同,支持功能碼:01,02,03,04,05,06,15,16,22和23,監(jiān)視串口數(shù)據(jù)。
(3)上位機(jī)功能
根據(jù) MODBUS———ASCII協(xié)議,本上位機(jī)完成的功能有:
“01”———讀取連續(xù)的布爾參數(shù)值(0/1);“03”———讀取保存的儀表各項(xiàng)參數(shù)值(Hex;)“04”———讀取儀表瞬時(shí)測量輸出值(Hex);“0F”———寫多個(gè)連續(xù)的布爾參數(shù)值(0/1);“10”———寫多個(gè)連續(xù)的寄存器參數(shù)值(Hex)。通過利用 MODBUSSlave軟件進(jìn)行仿真測試上位機(jī)軟件。由于定時(shí)讀取下位保持機(jī)寄存器的數(shù)據(jù)是MODBUS協(xié)議中代表性的功能,因此在這里只演示03功能仿真,仿真結(jié)果如下。
功能碼03為定時(shí)讀取下位機(jī)中已經(jīng)存儲(chǔ)數(shù)據(jù)的功能,每隔一定的時(shí)間將會(huì)從下位機(jī)讀取一次數(shù)據(jù),如果沒有讀到將會(huì)連續(xù)嘗試5次,如果5次讀取都沒有結(jié)果則認(rèn)定連接斷開,用戶可以再次點(diǎn)擊開始按鈕再次讀取下位機(jī)數(shù)據(jù)。
圖4為 Wince系統(tǒng)的觸摸屏和電腦上 MODBUSSlave軟件仿真合照。圖5是在 Wince系統(tǒng)上運(yùn)行上位機(jī)軟件。單個(gè)寄存器只能存儲(chǔ)2個(gè)字節(jié)的數(shù)據(jù),因此對于大的數(shù)據(jù)來說需要多個(gè)寄存器來存儲(chǔ)。對于由單個(gè)寄存器存儲(chǔ)的數(shù)據(jù),如30002寄存器存儲(chǔ)的為瞬時(shí)流量的值,由于精度問題,當(dāng)上位機(jī)接收到瞬時(shí)流量的數(shù)據(jù)時(shí)將會(huì)除以10則會(huì)得到。而對于大的數(shù)據(jù),如30004和30005存儲(chǔ)的是總累積流量的數(shù)據(jù),如圖 ,轉(zhuǎn)換的順序是:當(dāng)上位機(jī)讀?。常埃埃埃春停常埃埃埃档臄?shù)據(jù)時(shí),數(shù)據(jù)存儲(chǔ)為002B0020和20分別為43和32的16進(jìn)制表示),然后再將002B0020轉(zhuǎn)換成10進(jìn)制,***后除以10取得精度,***終得到。其它數(shù)據(jù)的計(jì)算方式可參照以上兩種。
5.結(jié)束語
本系統(tǒng)主要由上位機(jī)、渦輪流量計(jì)、無線收發(fā)模塊等幾個(gè)部分組成。下位機(jī)采用C語言在 MSP430F149上編程,上位機(jī)采用C#語言在 VS2012環(huán)境下編程,上位機(jī)與下位機(jī)之間采用 RS-485進(jìn)行通信,設(shè)計(jì)并編寫基于 MODBUS-ASCII協(xié)議的通信應(yīng)用軟件。通過仿真實(shí)驗(yàn)表明上位機(jī)完全按照 MODBUS-ASCII協(xié)議編寫并能夠通信成功,下位機(jī)采集到的數(shù)據(jù)可以通過自身的顯示模塊以及上位機(jī)窗口同時(shí)顯示,并且可以保存到下位機(jī)外擴(kuò)ROM 中。本系統(tǒng)具有良好的可擴(kuò)展性,通過簡單改寫***多可以拓展到32個(gè)子設(shè)備的流量等數(shù)據(jù)的監(jiān)測,對降低生產(chǎn)運(yùn)營成本有重大意義。