朱艷艷 張 亮
(湖北文理學(xué)院理工學(xué)院,湖北 襄陽(yáng) 441021)
基于VB.NET的串行通信與分布式監(jiān)測(cè)網(wǎng)絡(luò)設(shè)計(jì)
朱艷艷 張 亮
(湖北文理學(xué)院理工學(xué)院,湖北 襄陽(yáng) 441021)
組建分布式監(jiān)測(cè)網(wǎng)絡(luò),關(guān)鍵在于根據(jù)監(jiān)測(cè)參數(shù)選擇不同型號(hào)傳感器,并參考傳感器信號(hào)輸出選擇與之匹配的數(shù)據(jù)采集模塊,在組建分布式監(jiān)測(cè)網(wǎng)絡(luò)的基礎(chǔ)上,利用計(jì)算機(jī)串口RS-232、RS-485實(shí)現(xiàn)串行通信,最終達(dá)到多點(diǎn)、實(shí)時(shí)監(jiān)測(cè)的目的。本文論述了如何基于Visual Basic語(yǔ)言實(shí)現(xiàn)串行通信,探討了基于泓格I-7000模塊組建分布式監(jiān)測(cè)網(wǎng)絡(luò)的方法及思想,并介紹了利用溫濕度傳感器和分布式模塊組建一個(gè)小型監(jiān)測(cè)網(wǎng)絡(luò)以及串口通信程序?qū)崿F(xiàn)。
Visual Basic;分布式模塊;串行通信;分布式監(jiān)測(cè);485網(wǎng)絡(luò)
在自動(dòng)化領(lǐng)域中,人們總是希望用機(jī)器來(lái)代替人類做某些工作,如簡(jiǎn)單重復(fù)性操作或者對(duì)人體有害的工作。雖然現(xiàn)在智能化的機(jī)器能夠替代人類完成很多事情,不過(guò)還是需要有相關(guān)的設(shè)備來(lái)監(jiān)測(cè)這些機(jī)器的工作是否正常,并據(jù)此做出相應(yīng)的控制操作,這就是所謂的監(jiān)控。計(jì)算機(jī)要完成監(jiān)控,首先必須進(jìn)行監(jiān)測(cè),通過(guò)布設(shè)的傳感器傳回的信號(hào)對(duì)監(jiān)測(cè)的參數(shù)進(jìn)行判斷。在監(jiān)測(cè)的范圍較大或監(jiān)測(cè)點(diǎn)數(shù)較多時(shí),就需要把監(jiān)測(cè)工作分散進(jìn)行,同時(shí)把監(jiān)測(cè)結(jié)果集中管理,這就是所謂的分布式監(jiān)測(cè)。
組建分布式監(jiān)測(cè)網(wǎng)絡(luò),關(guān)鍵在于根據(jù)監(jiān)測(cè)參數(shù)選擇不同型號(hào)的傳感器,并參考傳感器信號(hào)輸出選擇與之匹配的數(shù)據(jù)采集模塊,在組建分布式監(jiān)測(cè)網(wǎng)絡(luò)的基礎(chǔ)上,利用計(jì)算機(jī)串口RS-232、RS-485實(shí)現(xiàn)串行通信,最終達(dá)到多點(diǎn)、實(shí)時(shí)監(jiān)測(cè)的目的。本文論述了如何基于Visual Basic語(yǔ)言實(shí)現(xiàn)串行通信,探討了基于泓格I-7000模塊組建分布式監(jiān)測(cè)網(wǎng)絡(luò)的方法及思想,并介紹了利用溫濕度傳感器和分布式模塊組建一個(gè)小型監(jiān)測(cè)網(wǎng)絡(luò)的硬件組建以及程序?qū)崿F(xiàn)。
2.1 分布式監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)思想
在需要進(jìn)行大范圍、多點(diǎn)監(jiān)測(cè)的情況下,分布式概念的優(yōu)勢(shì)則可突顯出。首先分散在大范圍內(nèi)的監(jiān)測(cè)點(diǎn)都有對(duì)應(yīng)的數(shù)據(jù)采集模塊(也稱分布式模塊,下同)來(lái)對(duì)傳感器給出的信號(hào)進(jìn)行采集、轉(zhuǎn)換和傳輸,這些模塊負(fù)責(zé)自己的一塊區(qū)域,采集到的信號(hào)會(huì)實(shí)時(shí)輸送到各個(gè)模塊。這些模塊可能含有數(shù)字輸入、模擬輸入或脈沖輸入等功能,而每一個(gè)模塊再以RS-485網(wǎng)絡(luò)連接起來(lái),一起送到主控計(jì)算機(jī)。主控計(jì)算機(jī)通過(guò)串口通信把采集到的數(shù)據(jù)顯示為直觀的圖形或者參數(shù),從而達(dá)到分布式監(jiān)測(cè)的目的。分布式監(jiān)測(cè)系統(tǒng)如圖1所示。
圖1 分布式監(jiān)測(cè)示意圖
分布式監(jiān)測(cè)功能是通過(guò)計(jì)算機(jī)RS-232/485進(jìn)行串口通信來(lái)實(shí)現(xiàn)的,圖1為四個(gè)模塊組成的分布式監(jiān)測(cè)系統(tǒng)示意圖,其工作流程為:
步驟一:監(jiān)測(cè)部位的傳感器感應(yīng)出周邊環(huán)境參數(shù),并將數(shù)據(jù)送至不同地址的分布式模塊處;
步驟二:計(jì)算機(jī)對(duì)處于RS-485網(wǎng)絡(luò)中的不同地址的分布式模塊發(fā)送不同的查詢指令,實(shí)現(xiàn)輪回查詢;
步驟三:處于RS-485網(wǎng)絡(luò)中的不同模塊只響應(yīng)和自身地址相符的指令,其響應(yīng)數(shù)據(jù)經(jīng)RS-485網(wǎng)絡(luò)轉(zhuǎn)換為RS-232接口形式送至計(jì)算機(jī);
步驟四:計(jì)算機(jī)對(duì)RS-232傳來(lái)的數(shù)據(jù)進(jìn)行判斷、處理和實(shí)時(shí)顯示,判斷當(dāng)前設(shè)備所處環(huán)境參數(shù)的狀態(tài)。
2.2 傳感器與分布式模塊的匹配
根據(jù)傳感器信號(hào)輸出方式的不同,可以將傳感器分類為模擬量輸出(電壓、電流)型、高低電平輸出型、脈沖信號(hào)輸出型。在選擇相應(yīng)的分布式模塊時(shí),應(yīng)當(dāng)遵循“匹配”原則,即傳感器的信號(hào)輸出方式應(yīng)當(dāng)與分布式模塊所能夠處理的信號(hào)相一致。
本文所講述的數(shù)據(jù)采集模塊,均采用的是泓格科技出品的分布式模塊ICP-CON的I-7000系列。幾種典型的分布式模塊介紹如下:
I-7017模塊——7017模塊可以用來(lái)實(shí)現(xiàn)對(duì)傳感器輸出的模擬信號(hào)的檢測(cè)。對(duì)于傳感器輸出的電壓信號(hào),通過(guò)設(shè)置模塊的量程后可直接接入其中一個(gè)通道,對(duì)模擬電流信號(hào)的檢測(cè)方法類似,只不過(guò)需要外加一個(gè)精密電阻將電流轉(zhuǎn)換為電壓信號(hào)。I-7017提供了8個(gè)模擬輸入端口,可以實(shí)現(xiàn)多個(gè)模擬信號(hào)的同時(shí)采集。
I-7060模塊——I-7060模塊用來(lái)實(shí)現(xiàn)對(duì)傳感器高低電平信號(hào)的采集,該模塊設(shè)計(jì)時(shí)采取隔離型方式,故該模塊具有抵抗外界干擾能力。I-7060提供了四個(gè)數(shù)字輸入通道,與高低電平輸出方式的傳感器相連接后,可同時(shí)實(shí)現(xiàn)四個(gè)通道的傳感器高低電平數(shù)據(jù)的采集和傳輸。
I-7080模塊——I-7080模塊用來(lái)實(shí)現(xiàn)傳感器輸出形式為脈沖計(jì)數(shù),該模塊提供了兩個(gè)信道的脈沖輸入,另有兩個(gè)通道的數(shù)字輸出。一般和輸出形式為脈沖的傳感器相連,可以實(shí)現(xiàn)脈沖信號(hào)的計(jì)數(shù)。
I-7520模塊——I-7520旨在實(shí)現(xiàn)RS-485與RS-232通訊方式的轉(zhuǎn)換。
傳感器與分布式模塊的匹配原則如表1所示。
表1 傳感器與分布式模塊的匹配原則
如傳感器輸出的形式為485網(wǎng)絡(luò)型,則意味著該類型傳感器已經(jīng)將傳感設(shè)備與數(shù)據(jù)采集模塊實(shí)現(xiàn)了一體化設(shè)計(jì),故硬件選型時(shí)可優(yōu)先選擇該類傳感器,不需要再另選分布式模塊。
選擇了合適的傳感器以及與之匹配的分布式模塊之后,通過(guò)合理的連線即可組建成分布式監(jiān)測(cè)系統(tǒng)網(wǎng)絡(luò),圖2所示的分別為傳感器為模擬輸出、數(shù)字輸出、脈沖輸出以及相匹配的I-7017、I-7060、I-7080分布式模塊所組建的分布式網(wǎng)絡(luò)。
圖2 分布式監(jiān)測(cè)網(wǎng)絡(luò)組建示意圖
與圖2相對(duì)應(yīng),基于該類型的硬件選型的電路連線如圖3所示。
圖3 分布式監(jiān)測(cè)網(wǎng)絡(luò)電路連線圖
由圖3可以看出,由于傳感器的輸出形式有模擬、數(shù)字、脈沖等類型,所以網(wǎng)絡(luò)中采集的數(shù)據(jù)在連接入RS-485網(wǎng)絡(luò)之前分別采用了I-7017、I-7060和I-7080模塊,連接入RS-485網(wǎng)絡(luò)后匯總至I-7520轉(zhuǎn)換為RS-232接入主控計(jì)算機(jī)。主控計(jì)算機(jī)發(fā)送出帶不同地址的查詢指令,查詢指令經(jīng)過(guò)I-7520轉(zhuǎn)換為RS-485信號(hào)在485網(wǎng)絡(luò)中傳輸。(注:圖3中Rt為終端匹配電阻)
對(duì)于輸出為485網(wǎng)絡(luò)形式的傳感器,將其485信號(hào)線直接接入485網(wǎng)絡(luò)之中即可。
選用傳感器和分布式模塊來(lái)組建一個(gè)典型的硬件平臺(tái),分析I-7017分布式模塊以及485網(wǎng)絡(luò)輸出形式的傳感器通訊協(xié)議,并基于VB語(yǔ)言和MSComm控件實(shí)現(xiàn)單機(jī)功能測(cè)試和組建網(wǎng)絡(luò),實(shí)現(xiàn)分布式監(jiān)測(cè)的程序設(shè)計(jì)方法。
4.1 通訊協(xié)議分析與測(cè)試
4.1.1 I-7017通訊協(xié)議分析與測(cè)試
I-7017模塊的命令格式可以分成送出與響應(yīng)兩個(gè)部分:送出的部分就是計(jì)算機(jī)給分布式模塊下達(dá)命令,該部分的命令包含幾個(gè)片斷的組合:(前導(dǎo)字符)+(地址)+(命令)+(CR);模塊對(duì)發(fā)送命令的響應(yīng)部分由以下幾個(gè)部分組成:(前導(dǎo)字符)+(地址)+(數(shù)據(jù)資料)+(CR),含義除“數(shù)據(jù)資料”格式解釋因模塊而異之外,其余與發(fā)送指令相一致。
命令舉例如下:
——設(shè)置模塊配置
設(shè)置模塊配置其語(yǔ)法為:%AANNTTCCFF(CR)
解釋如下:
%:前導(dǎo)字符,“%”用于設(shè)置模塊格式。AA:標(biāo)識(shí)發(fā)送命令至模塊的地址。
NN:設(shè)置模塊新地址,范圍為00~FF。
TT:設(shè)置模塊的模擬電壓輸入的范圍,如-5V~5V對(duì)應(yīng)為“09”。
CC:設(shè)置模塊的新波特率,波特率9600bps對(duì)應(yīng)為“06”。FF:設(shè)置模塊的新格式,一般選擇為“00”。
CR:即鍵盤上的Enter鍵,VB中的語(yǔ)法為vbCR。
完成必要的硬件連線并進(jìn)行相關(guān)的參數(shù)設(shè)置后,主控計(jì)算機(jī)通過(guò)測(cè)試程序(該程序由商家提供)發(fā)送命令“% 0102090600”,模塊返回“!02”,命令的意思是:將地址為01的模塊地址重新設(shè)置為02,電壓范圍設(shè)置為-5V~5V,波特率設(shè)置為9600bps。返回“!02”則表明設(shè)置成功。
——從通道中讀取模擬量輸入
讀取模擬量值的語(yǔ)法為:#AAN(CR)
解釋如下:
#:前導(dǎo)字符,“#”用于讀取模塊數(shù)據(jù)
AA:待讀取模塊的地址,范圍為00~FF;
N:該地址模塊的通道,范圍為0~7。
主控計(jì)算機(jī)發(fā)送命令“#020”,模塊返回“>+02.231”,意思是讀取地址為02的模塊的0通道的模擬電壓輸入,而此時(shí)輸入通道0電壓值為+2.231伏。
4.1.2 JWSL-3W1通訊協(xié)議分析與測(cè)試
JWSL-3W1通訊協(xié)議符合MODBUS(16進(jìn)制方式),采取的是主機(jī)查詢,變送器應(yīng)答的主從方式。
對(duì)于查詢溫濕度數(shù)據(jù)的命令以及變送器的應(yīng)答格式如表2所示(注:CRCH為CRC校驗(yàn)高字節(jié),CRCL為CRC校驗(yàn)低字節(jié))。
表2 JWSL-3W1通訊指令發(fā)送與應(yīng)答格式
應(yīng)答數(shù)據(jù)中,數(shù)據(jù)H(高位字節(jié))和數(shù)據(jù)L(低位字節(jié))為各自對(duì)應(yīng)的當(dāng)前溫濕度值,且上傳數(shù)據(jù)需除十。如濕度上傳16進(jìn)制0311,對(duì)應(yīng)十進(jìn)制0785,表示78.5%。
485網(wǎng)絡(luò)輸出的傳感器JWSL-3W1地址設(shè)置為01,波特率設(shè)置為9600bps。對(duì)于JWSL-3W1型號(hào)的參數(shù)設(shè)置方法,如:地址、波特率,詳見(jiàn)該產(chǎn)品說(shuō)明書(shū)。
通過(guò)串口調(diào)試助手對(duì)地址為01的溫濕度傳感器進(jìn)行測(cè)試,在完成必要的硬件連線并在串口調(diào)試程序中進(jìn)行相關(guān)的參數(shù)設(shè)置,然后輸入:010300000002C40B。串口調(diào)試程序返回應(yīng)答數(shù)據(jù)為01030400C7028C4B0B,則溫度對(duì)應(yīng)值為00C7,等于十進(jìn)制數(shù)值199,表示溫度為19.9℃;濕度對(duì)應(yīng)值為028C,等于十進(jìn)制數(shù)值652,表示濕度為65.2%。
4.2 分布式監(jiān)測(cè)系統(tǒng)功能的程序?qū)崿F(xiàn)
實(shí)現(xiàn)對(duì)485網(wǎng)絡(luò)中的分布式模塊(或傳感器)數(shù)據(jù)的查詢,關(guān)鍵查詢命令的發(fā)送、應(yīng)答數(shù)據(jù)的接收和解析,以及查詢命令的集成。
4.2.1 查詢命令發(fā)送的程序?qū)崿F(xiàn)
分析I-7017和JWSL-3W1的通訊協(xié)議可知:分布式模塊I-7017的查詢命令是字符串類型,而JWSL-3W1的查詢指令是字節(jié)方式。字符串方式查詢和字節(jié)方式查詢?cè)赩B語(yǔ)法上略有不同,程序采取統(tǒng)一以字節(jié)形式發(fā)送查詢指令,對(duì)于指令格式為字符串的I-7017采取了將字符串轉(zhuǎn)換為字節(jié)格式的語(yǔ)句,實(shí)現(xiàn)了用一個(gè)Timer控件來(lái)控制統(tǒng)一格式的命令發(fā)送。
考慮到數(shù)據(jù)接收時(shí)需要判斷所接收數(shù)據(jù)的來(lái)源,故在發(fā)送程序中加入了對(duì)查詢命令的標(biāo)識(shí)符:全局變量flagReceive以及flagDisplay,以此來(lái)標(biāo)識(shí)模塊I-7017以及通道號(hào)和485網(wǎng)絡(luò)輸出傳感器JWSL-3W1。查詢命令的發(fā)送程序流程圖如圖4所示。
其源代碼如函數(shù)senddata1以及senddata所示。其中,Senddata1為計(jì)算機(jī)向JWSL-3W1發(fā)送查詢指令,直接以字節(jié)形式發(fā)送;senddata2為計(jì)算機(jī)向I-7017發(fā)送查詢指令,其字符串格式需要轉(zhuǎn)換為ASCII碼,以字節(jié)形式發(fā)送。
圖4 查詢命令的發(fā)送流程圖
4.2.2 數(shù)據(jù)接收與解析的程序?qū)崿F(xiàn)
由于數(shù)據(jù)接收緩沖區(qū)的數(shù)據(jù)來(lái)源來(lái)自I-7017的0通道、1通道以及JWSL-3W1,所以根據(jù)查詢命令的標(biāo)識(shí)(全局變量flagReceive以及flagDisplay)對(duì)緩沖區(qū)的數(shù)據(jù)進(jìn)行判斷,針對(duì)數(shù)據(jù)的來(lái)源分別進(jìn)行處理、解析與顯示,其數(shù)據(jù)接收與解析流程圖如圖5所示。
圖5 數(shù)據(jù)接收與解析流程圖
4.2.3 查詢命令集成與監(jiān)測(cè)功能實(shí)現(xiàn)
實(shí)現(xiàn)對(duì)多點(diǎn)參數(shù)的實(shí)時(shí)監(jiān)測(cè),可通過(guò)不斷對(duì)I-7017的通道0、通道1以及JWSL-3W1發(fā)送查詢命令來(lái)實(shí)現(xiàn)。MSComm控件的參數(shù)應(yīng)預(yù)先進(jìn)行設(shè)置(一般在Form_Load的函數(shù)中完成初始化)。
按照上述思想,在Visual Basic中編寫相應(yīng)界面程序,可使之實(shí)現(xiàn)基于該分布式監(jiān)測(cè)網(wǎng)絡(luò)的監(jiān)測(cè)功能。
上述是基于VB語(yǔ)言的分布式監(jiān)測(cè)系統(tǒng)網(wǎng)絡(luò)組建以及測(cè)試程序的實(shí)現(xiàn)方法。通過(guò)測(cè)試,該實(shí)驗(yàn)平臺(tái)能夠?qū)崿F(xiàn)三點(diǎn)實(shí)時(shí)監(jiān)測(cè)功能,即:通過(guò)一個(gè)串口通信口輪回發(fā)送對(duì)分布式模塊和485網(wǎng)絡(luò)輸出傳感器的查詢命令,完成所接收數(shù)據(jù)的接收、解析與實(shí)時(shí)顯示。
程序編寫采用了模塊化設(shè)計(jì)的思想,這使得程序有著較好的擴(kuò)展性,在實(shí)際監(jiān)測(cè)中,如需要增加各類傳感器數(shù)量和相應(yīng)的分布式模塊,只需要增加相應(yīng)的發(fā)送、接收和解析模塊即可實(shí)現(xiàn)對(duì)更多點(diǎn)的實(shí)時(shí)監(jiān)測(cè)功能(必要時(shí)可將senddata1、senddata2優(yōu)化集成為發(fā)送函數(shù)senddata,不同的查詢命令由同一個(gè)函數(shù)發(fā)出)。此外,JWSL-3W1通訊協(xié)議中提供了CRC校驗(yàn),分布式模塊中也提供了CheckSum校驗(yàn)方式,可針對(duì)相關(guān)協(xié)議編寫校驗(yàn)程序,實(shí)現(xiàn)系統(tǒng)鏈路出錯(cuò)自檢功能。
[1]范逸之,陳立元.Visual Basic與RS-232串行通信控制[M].北京:清華大學(xué)出版社,2005.
[2]范逸之.Visual Basic與分布式監(jiān)控系統(tǒng)——RS-232/485串行通信[M].北京:清華大學(xué)出版社,2002.
[3]北京昆侖海岸傳感技術(shù)中心.JWSL-3系列經(jīng)濟(jì)型溫濕度變送器說(shuō)明及通訊協(xié)議.
[4]泓格科技股份有限公司.I-7012/7012D/7012F/7012FD,I-7014D,I-7017/17F用戶手冊(cè).
[5]高春艷,劉彬彬,王斌.Visual Basic開(kāi)發(fā)技術(shù)大全[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-),女,湖北襄陽(yáng)人,碩士研究生,講師,研究方向?yàn)檐浖こ獭?/p>