孫艷琴
(黃岡師范學(xué)院 機電工程學(xué)院,湖北 黃岡 438000)
基于串口服務(wù)器的水溫遠(yuǎn)程通信系統(tǒng)設(shè)計與實現(xiàn)
孫艷琴
(黃岡師范學(xué)院 機電工程學(xué)院,湖北 黃岡 438000)
文章改造設(shè)計了一種網(wǎng)絡(luò)化的遠(yuǎn)程多通道水溫監(jiān)測系統(tǒng),利用串口服務(wù)器橋接串口設(shè)備和現(xiàn)有的以太網(wǎng),為保證多通道數(shù)據(jù)采集過程中數(shù)據(jù)的實時性和準(zhǔn)確性,設(shè)計帶序號的數(shù)據(jù)幀格式,利用虛擬串口技術(shù)和事件觸發(fā)方式實現(xiàn)串口數(shù)據(jù)的讀取和發(fā)送。通過實驗,系統(tǒng)運行穩(wěn)定,且不會出現(xiàn)數(shù)據(jù)丟包現(xiàn)象。
串口服務(wù)器;遠(yuǎn)程通信;虛擬串口;事件觸發(fā)
工業(yè)4.0帶來了互聯(lián)網(wǎng)與工業(yè)的融合,利用互聯(lián)網(wǎng)激活傳統(tǒng)工業(yè)過程,實現(xiàn)人、機器和系統(tǒng)三者之間的智能化、交互式無縫連接。目前,水溫監(jiān)測系統(tǒng)大多為基于串口組網(wǎng)的單片機監(jiān)測系統(tǒng),存在只合適單機操作,軟硬件兼容性較差,數(shù)據(jù)重復(fù)利用率較低,擴展升級性能有限,布線較繁瑣且不美觀等諸多問題。隨著工業(yè)生產(chǎn)的現(xiàn)代化,要求現(xiàn)場終端設(shè)備的實時數(shù)據(jù)能夠?qū)崿F(xiàn)遠(yuǎn)距離網(wǎng)絡(luò)化的監(jiān)控,對保障人員安全和提高生產(chǎn)效率意義重大。
以太網(wǎng)/互聯(lián)網(wǎng)等網(wǎng)絡(luò)架構(gòu)已逐漸在自動化產(chǎn)業(yè)內(nèi)被廣泛地采用,取代傳統(tǒng)的串口通訊而成為自動化系統(tǒng)通訊的主流。在這種趨勢下,以 TCP/IP和以太網(wǎng)為代表的成熟度較高的開放式網(wǎng)絡(luò)技術(shù),正逐漸地被應(yīng)用在各個自動化系統(tǒng),連接并控制所有的設(shè)備。本系統(tǒng)以太網(wǎng)作為傳輸主干,將分散式的水溫采集裝置與主機部分PC通過MOAX Nport系列的串口服務(wù)器進行分布式組網(wǎng)。串口設(shè)備聯(lián)網(wǎng)服務(wù)器如同含CPU、實時操作系統(tǒng)和TCP/IP協(xié)議的微型電腦,在串口和網(wǎng)絡(luò)設(shè)備中傳輸數(shù)據(jù),優(yōu)點主要有:①隨時隨地存取,聯(lián)網(wǎng)系統(tǒng)通過遠(yuǎn)程網(wǎng)絡(luò)存取、控制及監(jiān)視設(shè)備,實現(xiàn)無縫通信。②節(jié)省布線成本,大多數(shù)地區(qū)均已網(wǎng)絡(luò)化,因此可以使用現(xiàn)存的網(wǎng)絡(luò)進行監(jiān)視設(shè)備的連接。③避免開發(fā)TCP/IP 協(xié)議棧,降低了設(shè)備的運算能力和硬件資源的要求,縮短開發(fā)周期。④完全數(shù)字化,容易編輯、儲存及傳送,短時間內(nèi)能迅速完成。⑤容易整合,采用網(wǎng)絡(luò)連接方式運作,較容易將其整合至其他監(jiān)視系統(tǒng)或應(yīng)用層面。圖1所示為分布式水溫監(jiān)控系統(tǒng)聯(lián)網(wǎng)解決方案。
圖1 分布式水溫監(jiān)控系統(tǒng)聯(lián)網(wǎng)解決方案
系統(tǒng)整體組網(wǎng)主要分為3個部分,第一部分為現(xiàn)場區(qū)域??筛鶕?jù)實際需求,可在同局域網(wǎng)的監(jiān)測區(qū)域設(shè)置多個數(shù)據(jù)采集點,節(jié)點1至節(jié)點N分別代表不同的監(jiān)測區(qū)域點,現(xiàn)場溫度數(shù)據(jù)的采集主要通過單片機AT89S51和數(shù)字傳感器DS18B20實現(xiàn),數(shù)據(jù)可暫時存儲在單片機的存儲器中,等待上位機發(fā)送指令讀取。第二部分為數(shù)據(jù)轉(zhuǎn)換區(qū)域。各通道數(shù)據(jù)通過串口服務(wù)器,進行封裝和格式轉(zhuǎn)化,打包發(fā)送到互聯(lián)網(wǎng)上,包頭數(shù)據(jù)尋找到對應(yīng)以太網(wǎng)上的NPORT串口服務(wù)器的串口通訊端口號時,將數(shù)據(jù)進行解包還原給被監(jiān)控的設(shè)備,上位機與下位機就可按照通訊規(guī)約相互配合工作,實現(xiàn)串口數(shù)據(jù)的讀取和發(fā)送。第3部分為人機界面部分,監(jiān)控主程序具有操作方便、界面美觀、層次清晰等特征。數(shù)據(jù)庫負(fù)責(zé)存儲各監(jiān)測點數(shù)據(jù),用戶可通過ADO的方式進行訪問。功能主要有實時顯示模塊、預(yù)警預(yù)報模塊、參數(shù)設(shè)置模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)通信模塊等,來滿足監(jiān)控系統(tǒng)對數(shù)據(jù)的要求。
2.1 虛擬實串口的工作原理
串口服務(wù)器可通過虛擬串口的方式來實現(xiàn)串口設(shè)備立即聯(lián)網(wǎng)。根據(jù)串口軟件提供的Real COM/TTY驅(qū)動程序,可在Windows操作系統(tǒng)或Linux操作系統(tǒng)分別映射成Real COM串口或Real TTY串口,從使用者的角度來看,虛擬串口的操作和真實的物理串口一模一樣。數(shù)據(jù)進行兩方面處理,一是處理來自串口設(shè)備的串口數(shù)據(jù)流,并進行格式轉(zhuǎn)換,使之成為可以在以太網(wǎng)中傳播的數(shù)據(jù)幀;二是對來自以太網(wǎng)的數(shù)據(jù)幀進行判斷,并轉(zhuǎn)換成串行數(shù)據(jù)送達(dá)響應(yīng)的串口設(shè)備。圖2為虛擬實串口工作模式。
通信協(xié)議通常分為不同層次進行開發(fā),每一層分布負(fù)責(zé)不同的通信功能。串口服務(wù)器的網(wǎng)絡(luò)接口符合TCP/IP標(biāo)準(zhǔn)協(xié)議,以太網(wǎng)層采用多種連接介質(zhì),包括同軸纜、雙絞線和光纖等。IP層中的關(guān)鍵點是包含每個網(wǎng)絡(luò)設(shè)備IP地址。TCP或者UDP層的關(guān)鍵點是端口,端口用于區(qū)分一個IP地址下的多個應(yīng)用程序。用戶數(shù)據(jù)層負(fù)責(zé)攜帶用戶所需要傳輸?shù)臄?shù)據(jù)。而串口協(xié)議沒有IP層和TCP層這兩層。但在串口服務(wù)器中已經(jīng)保存了IP層、TCP層的關(guān)鍵點:IP地址和端口。因每個串口服務(wù)器都具有一個可以設(shè)定的IP地址,同時也有一個TCP或者UDP的端口,計算機就可以通過這個“IP+端口”將網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給串口服務(wù)器,同樣地串口服務(wù)器也保存了目的計算機的IP和端口,這樣也可以將數(shù)據(jù)發(fā)送給計算機[1]。
2.2 數(shù)據(jù)命令幀格式設(shè)計
系統(tǒng)遵循RS485串行口通信規(guī)約:傳輸速率9 600bps,1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗位[2]。傳輸報文內(nèi)容;異步通信,使用起始位和停止位作為通信的判斷[3]。數(shù)據(jù)格式為16進制數(shù),以字節(jié)為單位,低位先送,高位后送;傳輸分為上行和下行兩個方向,下行命令或數(shù)據(jù)是指主機PC機發(fā)向多點或單點的數(shù)據(jù)傳送;上行則為響應(yīng)下行命令而作出的應(yīng)答。本項目提供6種命令格式,分別為功能字0x01:同步節(jié)拍開始;0x02:狀態(tài)查詢;0x03:數(shù)據(jù)讀?。?x04:數(shù)據(jù)刪除;0x05:同步節(jié)拍停止命令;0x06:帶序列號讀取??紤]到上下位機的使用壽命,且并非都一直處于工作狀態(tài)的實際需求,為了保證數(shù)據(jù)信息的完整性,設(shè)計帶序號信息格式,圖3為帶序列號的數(shù)據(jù)讀取上行命令幀格式。功能字后所帶的參數(shù)表示為:{sn(0)L,sn(0)H,date(0) L,date(0)H,..............sn(n)L,sn(n)H,date(n)L,date(n) H},其中sn(n)L,sn(n)H表示序列號,開始同步時刻起的采樣時刻,單位為10分鐘,比如0000,表示本記錄為同步時刻起,第一次的采樣值;dat(n)L,dat(n)H:計數(shù)值,低位在前,經(jīng)過進制轉(zhuǎn)換后即可得到每個監(jiān)測點的溫度參數(shù)值。NUM為上行實際應(yīng)答條數(shù)。因下位機存儲器中數(shù)據(jù)記錄數(shù)有限,對于某些時間段不需要采集的數(shù)據(jù),可先發(fā)送狀態(tài)查詢命令詢問數(shù)據(jù)采集的條數(shù),為避免信息冗余,可根據(jù)序列號選擇性的查詢或刪除所需數(shù)據(jù)。表1為上行應(yīng)答數(shù)與請求數(shù)之間的關(guān)系。
圖2 虛擬實串口工作模式
圖3 帶序列號的數(shù)據(jù)讀取上行命令幀格
表1 上行應(yīng)答數(shù)與請求數(shù)之間的關(guān)系
在數(shù)據(jù)記錄數(shù)未超過下位機存儲器容量時,實際應(yīng)答條數(shù)的判別方法如下:
(1)當(dāng)上行應(yīng)答數(shù)NUM小于等于請求數(shù)num時,NUM為實際應(yīng)答條數(shù);(2)當(dāng)上行應(yīng)答數(shù)NUM大于請求數(shù)時,num為實際應(yīng)答條數(shù);(3)當(dāng)模塊中數(shù)據(jù)記錄數(shù)為0時,實際應(yīng)答條數(shù)為0。
2.3 事件觸發(fā)方式
系統(tǒng)運行時,考慮到串口通信數(shù)據(jù)的隨機性,采用單一的查詢方式占用CPU,效率低下,因此考慮采用事件觸發(fā)方式實現(xiàn)串口數(shù)據(jù)的讀取。本系統(tǒng)中調(diào)用SerialPort類的 DataReceived 事件來讀取串口緩沖區(qū)的數(shù)據(jù)[4-5],并添SerialDataReceivedEventHandler 委托至 DataReceived 以讀取串口上接收的所有可用的數(shù)據(jù),DataReceived事件在不斷的觸發(fā),所以將數(shù)據(jù)處理放到委托里面,DataReceived只做數(shù)據(jù)接收,避免把數(shù)據(jù)處理放在DataReceived事件中,影響到數(shù)據(jù)的接收。結(jié)合SerialPort類屬性和方法,考慮到因其對串口數(shù)據(jù)的寫入與讀取有較大的不同,因此調(diào)用Timer控件的Start()和Stop()函數(shù),來實現(xiàn)上位機分不同時間段自動循環(huán)發(fā)送各種命令給下位機的功能,且有規(guī)律的在一段時間內(nèi)執(zhí)行一次指定命令的發(fā)送。在本系統(tǒng)中,給需要采集數(shù)據(jù)的下位機發(fā)送命令,在10分鐘內(nèi)循環(huán)采集1條數(shù)據(jù),采用“讀、存、刪”連續(xù)性數(shù)據(jù)處理,即實時顯示模塊即刻更新,數(shù)據(jù)即刻存儲至數(shù)據(jù)庫和刪除處理。
為驗證上位機和下位機能穩(wěn)定的工作,實驗室模擬8多道水溫數(shù)據(jù)采集系統(tǒng),系統(tǒng)開始運行前,首先檢查所有設(shè)備連線正確,確保電源供電正常;其次通過NPORT administration軟件搜索局域網(wǎng)中所有的NPORT設(shè)備,包括和主機IP不同網(wǎng)段的NPORT設(shè)備,并同時獲得設(shè)備的型號、IP地址、MAC地址以及設(shè)備名稱等相關(guān)信息,設(shè)置串口服務(wù)器的IP地址確保和PC機在同一網(wǎng)段中;最后通過Com Port Settings可設(shè)為任意想設(shè)的串口號,但務(wù)必保證虛擬串口號的唯一性。系統(tǒng)運行時,用戶可根據(jù)實際需求遠(yuǎn)程控制和瀏覽相關(guān)信息,本項目中采用“斷開連接模式”下訪問數(shù)據(jù)庫[6],直接針對本地緩存區(qū)數(shù)據(jù)集DataSet展開[7], 通過DataAdapter的函數(shù)Fill()實現(xiàn),用戶對數(shù)據(jù)的操作不再是直接操作數(shù)據(jù)庫,后期需要分析和處理的數(shù)據(jù),如查詢、添加、修改、刪除等都是在本地數(shù)據(jù)緩存中進行,提高了因訪問量較大,提取數(shù)據(jù)庫服務(wù)器資源時的工作效率,經(jīng)實驗證明系統(tǒng)運行狀態(tài)良好。本系統(tǒng)主要特點如下:
(1)將任意數(shù)量或類型的串口設(shè)備便捷和廉價的連接到以太網(wǎng)。各數(shù)據(jù)傳輸通道獨立運行,互不干擾,技術(shù)人員可根據(jù)現(xiàn)場實際情況隨時動態(tài)增加或減少現(xiàn)場數(shù)據(jù)采集設(shè)備,并且不會影響其他設(shè)備的正常運行。
(2)數(shù)據(jù)實時性較高。串口收到數(shù)據(jù)后,立即將此數(shù)據(jù)轉(zhuǎn)發(fā)到相應(yīng)的TCP/IP連接,中間不作任何等待及緩沖,速度快、效率高。
(3)系統(tǒng)界面層次清晰、操作簡單,各功能模塊獨立運行,通過簡單的培訓(xùn),技術(shù)人員便能進行工作。
在遠(yuǎn)程距離的生產(chǎn)現(xiàn)場或工程項目中,由于大多是設(shè)備還是采用串行連接,本系統(tǒng)采用串口服務(wù)器來實現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸,充分利用現(xiàn)有設(shè)備,不但解決了傳輸距離和布線問題的難題,而且節(jié)省了經(jīng)濟人力和時間成本。
[1]佚名.智能交通網(wǎng)路攝像機.[EB/OL].(2016-11-25)[2013-04-27].http://www.tpy888.cn/sell/201304/27/790065.html,2010.
[2]CHEN S Z, SHI B. The Serial Communication Based on Multithreading Technique of Windows[J].Wuhan University Journal of Natural Sciences,2000(3):373-375.
[3]王碩.無線數(shù)字測圖程序設(shè)計中的關(guān)鍵技術(shù)[J].北京測繪,2012(6):78-82.
[4]王曉鵬,張新成.Visual studio.net平臺上事件處理的委托及其實現(xiàn)[J].開封大學(xué)學(xué)報,2007(2):81-82.
[5]XU L,YU Z.Communication Between SR23 and PC Based on SerialPort in C#.NET[J].Computer and Modernization, 2011(5):107-109.
[6]林平榮.ADO. NET的數(shù)據(jù)庫訪問技術(shù)研究與實現(xiàn)[J].電腦知識與技術(shù),2008(4):1198-1201.
[7](美)內(nèi)格爾,埃夫琴.C#高級編程[M].7版.黃靜,譯.北京:清華大學(xué)出版社,2010.
Design and implementation of serial server based water temperature remote communications
Sun Yanqin
(Mechanical and Electrical Engineering College of Huanggang Normal University, Huanggang 438000, China)
A network of remote multi-channel temperature monitoring system using serial port serial device servers and bridges existing Ethernet to reconstruct and design is described in this paper. To ensure the timeliness and accuracy of the multi-channel data acquisition process data, format with serial number is designed in the use of virtual serial port technology and event-triggered way to read and send serial data. The experiment shows that the system is stable and no data loss phenomenon.
serial server; telecommunications; virtual serial port; event trigger
黃岡師范學(xué)院青年科研項目;項目編號:2015019503。
孫艷琴(1985— ),女,湖北仙桃。