朱艷艷 張 亮
(湖北文理學院理工學院,湖北 襄陽 441021)
基于VB.NET的串行通信與分布式監測網絡設計
朱艷艷 張 亮
(湖北文理學院理工學院,湖北 襄陽 441021)
組建分布式監測網絡,關鍵在于根據監測參數選擇不同型號傳感器,并參考傳感器信號輸出選擇與之匹配的數據采集模塊,在組建分布式監測網絡的基礎上,利用計算機串口RS-232、RS-485實現串行通信,最終達到多點、實時監測的目的。本文論述了如何基于Visual Basic語言實現串行通信,探討了基于泓格I-7000模塊組建分布式監測網絡的方法及思想,并介紹了利用溫濕度傳感器和分布式模塊組建一個小型監測網絡以及串口通信程序實現。
Visual Basic;分布式模塊;串行通信;分布式監測;485網絡
在自動化領域中,人們總是希望用機器來代替人類做某些工作,如簡單重復性操作或者對人體有害的工作。雖然現在智能化的機器能夠替代人類完成很多事情,不過還是需要有相關的設備來監測這些機器的工作是否正常,并據此做出相應的控制操作,這就是所謂的監控。計算機要完成監控,首先必須進行監測,通過布設的傳感器傳回的信號對監測的參數進行判斷。在監測的范圍較大或監測點數較多時,就需要把監測工作分散進行,同時把監測結果集中管理,這就是所謂的分布式監測。
組建分布式監測網絡,關鍵在于根據監測參數選擇不同型號的傳感器,并參考傳感器信號輸出選擇與之匹配的數據采集模塊,在組建分布式監測網絡的基礎上,利用計算機串口RS-232、RS-485實現串行通信,最終達到多點、實時監測的目的。本文論述了如何基于Visual Basic語言實現串行通信,探討了基于泓格I-7000模塊組建分布式監測網絡的方法及思想,并介紹了利用溫濕度傳感器和分布式模塊組建一個小型監測網絡的硬件組建以及程序實現。
2.1 分布式監測系統的設計思想
在需要進行大范圍、多點監測的情況下,分布式概念的優勢則可突顯出。首先分散在大范圍內的監測點都有對應的數據采集模塊(也稱分布式模塊,下同)來對傳感器給出的信號進行采集、轉換和傳輸,這些模塊負責自己的一塊區域,采集到的信號會實時輸送到各個模塊。這些模塊可能含有數字輸入、模擬輸入或脈沖輸入等功能,而每一個模塊再以RS-485網絡連接起來,一起送到主控計算機。主控計算機通過串口通信把采集到的數據顯示為直觀的圖形或者參數,從而達到分布式監測的目的。分布式監測系統如圖1所示。

圖1 分布式監測示意圖
分布式監測功能是通過計算機RS-232/485進行串口通信來實現的,圖1為四個模塊組成的分布式監測系統示意圖,其工作流程為:
步驟一:監測部位的傳感器感應出周邊環境參數,并將數據送至不同地址的分布式模塊處;
步驟二:計算機對處于RS-485網絡中的不同地址的分布式模塊發送不同的查詢指令,實現輪回查詢;
步驟三:處于RS-485網絡中的不同模塊只響應和自身地址相符的指令,其響應數據經RS-485網絡轉換為RS-232接口形式送至計算機;
步驟四:計算機對RS-232傳來的數據進行判斷、處理和實時顯示,判斷當前設備所處環境參數的狀態。
2.2 傳感器與分布式模塊的匹配
根據傳感器信號輸出方式的不同,可以將傳感器分類為模擬量輸出(電壓、電流)型、高低電平輸出型、脈沖信號輸出型。在選擇相應的分布式模塊時,應當遵循“匹配”原則,即傳感器的信號輸出方式應當與分布式模塊所能夠處理的信號相一致。
本文所講述的數據采集模塊,均采用的是泓格科技出品的分布式模塊ICP-CON的I-7000系列。幾種典型的分布式模塊介紹如下:
I-7017模塊——7017模塊可以用來實現對傳感器輸出的模擬信號的檢測。對于傳感器輸出的電壓信號,通過設置模塊的量程后可直接接入其中一個通道,對模擬電流信號的檢測方法類似,只不過需要外加一個精密電阻將電流轉換為電壓信號。I-7017提供了8個模擬輸入端口,可以實現多個模擬信號的同時采集。
I-7060模塊——I-7060模塊用來實現對傳感器高低電平信號的采集,該模塊設計時采取隔離型方式,故該模塊具有抵抗外界干擾能力。I-7060提供了四個數字輸入通道,與高低電平輸出方式的傳感器相連接后,可同時實現四個通道的傳感器高低電平數據的采集和傳輸。
I-7080模塊——I-7080模塊用來實現傳感器輸出形式為脈沖計數,該模塊提供了兩個信道的脈沖輸入,另有兩個通道的數字輸出。一般和輸出形式為脈沖的傳感器相連,可以實現脈沖信號的計數。
I-7520模塊——I-7520旨在實現RS-485與RS-232通訊方式的轉換。
傳感器與分布式模塊的匹配原則如表1所示。

表1 傳感器與分布式模塊的匹配原則
如傳感器輸出的形式為485網絡型,則意味著該類型傳感器已經將傳感設備與數據采集模塊實現了一體化設計,故硬件選型時可優先選擇該類傳感器,不需要再另選分布式模塊。
選擇了合適的傳感器以及與之匹配的分布式模塊之后,通過合理的連線即可組建成分布式監測系統網絡,圖2所示的分別為傳感器為模擬輸出、數字輸出、脈沖輸出以及相匹配的I-7017、I-7060、I-7080分布式模塊所組建的分布式網絡。

圖2 分布式監測網絡組建示意圖
與圖2相對應,基于該類型的硬件選型的電路連線如圖3所示。

圖3 分布式監測網絡電路連線圖
由圖3可以看出,由于傳感器的輸出形式有模擬、數字、脈沖等類型,所以網絡中采集的數據在連接入RS-485網絡之前分別采用了I-7017、I-7060和I-7080模塊,連接入RS-485網絡后匯總至I-7520轉換為RS-232接入主控計算機。主控計算機發送出帶不同地址的查詢指令,查詢指令經過I-7520轉換為RS-485信號在485網絡中傳輸。(注:圖3中Rt為終端匹配電阻)
對于輸出為485網絡形式的傳感器,將其485信號線直接接入485網絡之中即可。
選用傳感器和分布式模塊來組建一個典型的硬件平臺,分析I-7017分布式模塊以及485網絡輸出形式的傳感器通訊協議,并基于VB語言和MSComm控件實現單機功能測試和組建網絡,實現分布式監測的程序設計方法。
4.1 通訊協議分析與測試
4.1.1 I-7017通訊協議分析與測試
I-7017模塊的命令格式可以分成送出與響應兩個部分:送出的部分就是計算機給分布式模塊下達命令,該部分的命令包含幾個片斷的組合:(前導字符)+(地址)+(命令)+(CR);模塊對發送命令的響應部分由以下幾個部分組成:(前導字符)+(地址)+(數據資料)+(CR),含義除“數據資料”格式解釋因模塊而異之外,其余與發送指令相一致。
命令舉例如下:
——設置模塊配置
設置模塊配置其語法為:%AANNTTCCFF(CR)
解釋如下:
%:前導字符,“%”用于設置模塊格式。AA:標識發送命令至模塊的地址。
NN:設置模塊新地址,范圍為00~FF。
TT:設置模塊的模擬電壓輸入的范圍,如-5V~5V對應為“09”。
CC:設置模塊的新波特率,波特率9600bps對應為“06”。FF:設置模塊的新格式,一般選擇為“00”。
CR:即鍵盤上的Enter鍵,VB中的語法為vbCR。
完成必要的硬件連線并進行相關的參數設置后,主控計算機通過測試程序(該程序由商家提供)發送命令“% 0102090600”,模塊返回“!02”,命令的意思是:將地址為01的模塊地址重新設置為02,電壓范圍設置為-5V~5V,波特率設置為9600bps。返回“!02”則表明設置成功。
——從通道中讀取模擬量輸入
讀取模擬量值的語法為:#AAN(CR)
解釋如下:
#:前導字符,“#”用于讀取模塊數據
AA:待讀取模塊的地址,范圍為00~FF;
N:該地址模塊的通道,范圍為0~7。
主控計算機發送命令“#020”,模塊返回“>+02.231”,意思是讀取地址為02的模塊的0通道的模擬電壓輸入,而此時輸入通道0電壓值為+2.231伏。
4.1.2 JWSL-3W1通訊協議分析與測試
JWSL-3W1通訊協議符合MODBUS(16進制方式),采取的是主機查詢,變送器應答的主從方式。
對于查詢溫濕度數據的命令以及變送器的應答格式如表2所示(注:CRCH為CRC校驗高字節,CRCL為CRC校驗低字節)。

表2 JWSL-3W1通訊指令發送與應答格式
應答數據中,數據H(高位字節)和數據L(低位字節)為各自對應的當前溫濕度值,且上傳數據需除十。如濕度上傳16進制0311,對應十進制0785,表示78.5%。
485網絡輸出的傳感器JWSL-3W1地址設置為01,波特率設置為9600bps。對于JWSL-3W1型號的參數設置方法,如:地址、波特率,詳見該產品說明書。
通過串口調試助手對地址為01的溫濕度傳感器進行測試,在完成必要的硬件連線并在串口調試程序中進行相關的參數設置,然后輸入:010300000002C40B。串口調試程序返回應答數據為01030400C7028C4B0B,則溫度對應值為00C7,等于十進制數值199,表示溫度為19.9℃;濕度對應值為028C,等于十進制數值652,表示濕度為65.2%。
4.2 分布式監測系統功能的程序實現
實現對485網絡中的分布式模塊(或傳感器)數據的查詢,關鍵查詢命令的發送、應答數據的接收和解析,以及查詢命令的集成。
4.2.1 查詢命令發送的程序實現
分析I-7017和JWSL-3W1的通訊協議可知:分布式模塊I-7017的查詢命令是字符串類型,而JWSL-3W1的查詢指令是字節方式。字符串方式查詢和字節方式查詢在VB語法上略有不同,程序采取統一以字節形式發送查詢指令,對于指令格式為字符串的I-7017采取了將字符串轉換為字節格式的語句,實現了用一個Timer控件來控制統一格式的命令發送。
考慮到數據接收時需要判斷所接收數據的來源,故在發送程序中加入了對查詢命令的標識符:全局變量flagReceive以及flagDisplay,以此來標識模塊I-7017以及通道號和485網絡輸出傳感器JWSL-3W1。查詢命令的發送程序流程圖如圖4所示。
其源代碼如函數senddata1以及senddata所示。其中,Senddata1為計算機向JWSL-3W1發送查詢指令,直接以字節形式發送;senddata2為計算機向I-7017發送查詢指令,其字符串格式需要轉換為ASCII碼,以字節形式發送。

圖4 查詢命令的發送流程圖
4.2.2 數據接收與解析的程序實現
由于數據接收緩沖區的數據來源來自I-7017的0通道、1通道以及JWSL-3W1,所以根據查詢命令的標識(全局變量flagReceive以及flagDisplay)對緩沖區的數據進行判斷,針對數據的來源分別進行處理、解析與顯示,其數據接收與解析流程圖如圖5所示。

圖5 數據接收與解析流程圖
4.2.3 查詢命令集成與監測功能實現
實現對多點參數的實時監測,可通過不斷對I-7017的通道0、通道1以及JWSL-3W1發送查詢命令來實現。MSComm控件的參數應預先進行設置(一般在Form_Load的函數中完成初始化)。
按照上述思想,在Visual Basic中編寫相應界面程序,可使之實現基于該分布式監測網絡的監測功能。
上述是基于VB語言的分布式監測系統網絡組建以及測試程序的實現方法。通過測試,該實驗平臺能夠實現三點實時監測功能,即:通過一個串口通信口輪回發送對分布式模塊和485網絡輸出傳感器的查詢命令,完成所接收數據的接收、解析與實時顯示。
程序編寫采用了模塊化設計的思想,這使得程序有著較好的擴展性,在實際監測中,如需要增加各類傳感器數量和相應的分布式模塊,只需要增加相應的發送、接收和解析模塊即可實現對更多點的實時監測功能(必要時可將senddata1、senddata2優化集成為發送函數senddata,不同的查詢命令由同一個函數發出)。此外,JWSL-3W1通訊協議中提供了CRC校驗,分布式模塊中也提供了CheckSum校驗方式,可針對相關協議編寫校驗程序,實現系統鏈路出錯自檢功能。
[1]范逸之,陳立元.Visual Basic與RS-232串行通信控制[M].北京:清華大學出版社,2005.
[2]范逸之.Visual Basic與分布式監控系統——RS-232/485串行通信[M].北京:清華大學出版社,2002.
[3]北京昆侖海岸傳感技術中心.JWSL-3系列經濟型溫濕度變送器說明及通訊協議.
[4]泓格科技股份有限公司.I-7012/7012D/7012F/7012FD,I-7014D,I-7017/17F用戶手冊.
[5]高春艷,劉彬彬,王斌.Visual Basic開發技術大全[M].北京:人民郵電出版社,2007.
Design of Serial Communication Based on VB.NET and Distributed Monitoring Network
Zhu Yanyan Zhang Liang
(Hubei Institute ofArts and Sciences,Xiangyang 441021,Hubei)
The key of the distributed monitoring network construction is to select different types of sensors according to the monitoring parameters,and to select the matched data acquisition module referring to the output of signal sensor.On the basis of the construction of distributed monitoring network,the computer serial ports RS-232 and RS-485 are used to realize serial communication, realizing multipoint and real-time monitoring.This paper discusses how to realize the serial communication based on Visual Basic, discusses the method of building distributed monitoring network based on Nudam I-7000 module,and introduces the construction and programing of a small monitoring network using temperature and humidity sensor and distributed module.
Visual Basic;distributed module;serial communication;distributed monitoring;485 network
TM73
A
1008-6609(2017)07-0029-04
朱艷艷(1981-),女,湖北襄陽人,碩士研究生,講師,研究方向為軟件工程。