国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RS485總線的盾構(gòu)施工地層損失監(jiān)測數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

2013-08-22 07:34周奇才徐小芳熊肖磊
制造業(yè)自動(dòng)化 2013年4期
關(guān)鍵詞:皮帶秤PC機(jī)寄存器

周奇才,徐小芳,王 凱,熊肖磊,呂 強(qiáng)

(1. 同濟(jì)大學(xué) 機(jī)械工程學(xué)院 機(jī)械電子研究所,上海 201804;2. 上海盾構(gòu)設(shè)備有限公司,上海 200031)

0 引言

盾構(gòu)在施工過程中會(huì)引起地表沉降,而沉降發(fā)生的主要原因是地層損失,一般將其定義為由于超挖(蛇形)、間隙與注漿共同作用下所產(chǎn)生的、不考慮土體變形的實(shí)際開挖土體積(需考慮開挖后土體體積的變化)與理論挖土體積之差[1]。經(jīng)研究,地層損失的主要影響因素包括推進(jìn)過程中的排土量、注漿壓力和注漿量等[2],通過對排土量和注漿量的測量可實(shí)現(xiàn)對地層損失的預(yù)測,提高盾構(gòu)施工的自動(dòng)化水平,而排土量與注漿量數(shù)據(jù)的獲取需要建立在數(shù)據(jù)采集的基礎(chǔ)上,由此可見,建立一個(gè)實(shí)時(shí)、高效的數(shù)據(jù)采集系統(tǒng)對實(shí)現(xiàn)地層損失監(jiān)測是十分必要的。

本文研究設(shè)計(jì)了一種基于RS485總線的分布式實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),上位機(jī)基于Visual Studio 2010,在c#的語言環(huán)境利用串口控件Serial Port實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的實(shí)時(shí)數(shù)據(jù)通信。

1 地層損失監(jiān)測系統(tǒng)簡介

地層損失監(jiān)控系統(tǒng)的主要功能包括數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、沉降預(yù)測、人機(jī)交互等,如圖1所示。數(shù)據(jù)采集部分主要包括盾構(gòu) 推進(jìn)過程中的實(shí)際出土體積、理論的出土體積以及同步注漿過程中的注漿量。采集得到的出土量與注漿量通過串行總線傳給上位機(jī),并在上位機(jī)進(jìn)行相關(guān)處理,原始數(shù)據(jù)與處理后的數(shù)據(jù)均存在數(shù)據(jù)庫中,處理后的數(shù)據(jù)可作為建立沉降預(yù)測模型的依據(jù)。另外操作人員能夠通過人機(jī)交互界面查找所需信息,在界面上直觀的看到預(yù)測的沉降值,判斷是否需要調(diào)整施工參數(shù)達(dá)到控制沉降的目的。數(shù)據(jù)采集系統(tǒng)是整個(gè)地層損失監(jiān)測系統(tǒng)的基礎(chǔ),占據(jù)著非常重要的地位。

圖1 地層損失監(jiān)測系統(tǒng)功能框圖

2 采集系統(tǒng)的總體結(jié)構(gòu)

采集系統(tǒng)的主要任務(wù)是實(shí)現(xiàn)對出土量與注漿量的測量,測量方案分別為:1)測量出土量——在螺旋輸送機(jī)出土口處安裝激光測速儀測量出土口速度,再將速度與出土口的橫截面積進(jìn)行積分來測量排土體積,另外在皮帶輸送機(jī)上安裝模塊式皮帶秤測量土體重量;利用針輪裝置測出土量,即讓土體帶動(dòng)針輪轉(zhuǎn)動(dòng),通過測針輪的轉(zhuǎn)速反推出出土速度,再與出土口橫截面積進(jìn)行積分運(yùn)算得到出土體積;2)測量注漿量——通過在注漿泵的兩個(gè)管道上均安裝質(zhì)量流量計(jì)來實(shí)現(xiàn)。這些方案需要采集的參數(shù)主要包括盾構(gòu)推進(jìn)過程中螺旋機(jī)出土口的出土速度,皮帶輸送機(jī)上的土體重量以及注漿泵流過管道的漿液流量。

整個(gè)數(shù)據(jù)采集系統(tǒng)的組成如圖2所示,主要分為下位機(jī)與上位機(jī)兩部分。下位機(jī)是4個(gè)傳感器檢測從站,主要完成數(shù)據(jù)采集,包括optipact-s1激光測速儀,歐姆龍旋轉(zhuǎn)編碼器,賽摩電子皮帶秤,科力博奧質(zhì)量流量計(jì)以及DAM3070D高頻計(jì)數(shù)模塊,其中歐姆龍旋轉(zhuǎn)編碼器用于測量自主研制的針輪裝置的轉(zhuǎn)速,DAM3070D高頻計(jì)數(shù)模塊是用于采集激光測速儀與旋轉(zhuǎn)編碼器的增量信號。上位機(jī)為數(shù)據(jù)采集主站,它是一臺放在操作室的工控PC機(jī),負(fù)責(zé)讀取下位機(jī)采集的數(shù)據(jù)并進(jìn)行相應(yīng)的處理與數(shù)據(jù)存儲(chǔ)。下位的各個(gè)傳感器檢測裝置分布在多處,需要利用現(xiàn)場總線技術(shù)將這些傳感器采集的數(shù)據(jù)實(shí)時(shí)傳輸?shù)街髡?,所以該采集系統(tǒng)是分布式的。

2.1 下位機(jī)系統(tǒng)簡介

下位機(jī)主要是由四種不同類型的傳感器和一種高頻計(jì)數(shù)模塊組成。它們的性能介紹如下:

1)正常情況下螺旋機(jī)出土口的速度約為0.1m/s,一般的測速儀量程都比較大,難以滿足高精度的要求,而optipact-s1測速儀測量的最大速度只有4m/s,精度優(yōu)于1%,是較為理想的選擇,體積小,方便安裝,防護(hù)等級為IP65,增量輸出;

2)歐姆龍旋轉(zhuǎn)編碼器,最高響應(yīng)頻率達(dá)100kHz,防護(hù)等級為IP50,能夠適應(yīng)惡劣的施工環(huán)境。

3)賽摩電子皮帶秤,雙托輥秤架適應(yīng)皮帶的寬度從500~1200mm,而皮帶輸送機(jī)的皮帶寬度為600 mm,滿足要求。動(dòng)態(tài)累計(jì)誤差小于0.125%,測量精度達(dá)到0.25%~0.5%,且過載達(dá)到傳感器容量的150%,RS485通訊接口,支持Modbus協(xié)議。

4)科力博奧質(zhì)量流量計(jì),在較為理想的情況下精度達(dá)到0.2%,耐壓值高達(dá)到8MPa,可以承受注漿過程中的因管道堵塞或土壓升高等帶來的高壓情況,并且抗抖動(dòng)性強(qiáng)。RS485通訊接口,支持Modbus協(xié)議。

optipact-s1與旋轉(zhuǎn)編碼器均是增量輸出,不支持Modbus協(xié)議,高頻計(jì)數(shù)模塊DAM3070D用于采集這兩個(gè)傳感器的增量信號,輸出Modbus協(xié)議格式的數(shù)據(jù)傳給上位主站。該模塊有2路獨(dú)立的32位計(jì)數(shù)器,頻率測量范圍最大達(dá)到100KHz。

2.2 上位機(jī)系統(tǒng)設(shè)計(jì)

下位傳感器檢測裝置采集了各個(gè)參數(shù),通過總線實(shí)時(shí)傳輸給PC機(jī),并與PC機(jī)進(jìn)行串口通信,將接收到的數(shù)據(jù)在PC機(jī)上顯示并利用后臺處理軟件進(jìn)行處理。

2.2.1 通訊網(wǎng)絡(luò)

目前國際上正在使用的現(xiàn)場總線名目繁多,如PROFIBUS、CAN總線,但是其系統(tǒng)造價(jià)相對過高,不太適用于中小型系統(tǒng)的應(yīng)用。而RS485串行通信總線構(gòu)造簡單、技術(shù)成熟、造價(jià)低廉、便于維護(hù),廣泛應(yīng)用于工業(yè)控制、儀器、儀表、機(jī)電一體化產(chǎn)品等諸多領(lǐng)域,其技術(shù)指標(biāo)為:傳輸速率最大為10Mbps;最大距離為1200 m;高阻抗、抗噪聲差分(有補(bǔ)償線)傳輸;最高為32個(gè)節(jié)點(diǎn)。因此選用RS485總線進(jìn)行網(wǎng)絡(luò)通訊[3]。RS485總線模塊比較常用的通信協(xié)議是Modbus協(xié)議,它是一種廣泛的主從式通信協(xié)議,已經(jīng)得到了眾多大公司(例如GE,SIEMENs,OMRON等)的支持,都把它作為一種標(biāo)準(zhǔn)的通信接口提供給用戶,并且作為與主系統(tǒng)通信的主要途徑。故該網(wǎng)絡(luò)是基于Modbus協(xié)議的RS485串行總線的通信網(wǎng)絡(luò)。

圖2 數(shù)據(jù)采集系統(tǒng)的總體框圖

2.2.2 通訊協(xié)議

Modbus是OSI模型第7層上的應(yīng)用層報(bào)文傳輸協(xié)議,是一種請求/應(yīng)答(Master/Slave)協(xié)議。一個(gè)主站(Master)可以對應(yīng)多個(gè)從站(Slave),能夠在連接至不同類型總線或網(wǎng)絡(luò)的設(shè)備之間提供客戶機(jī)/服務(wù)器通信,并且提供功能碼規(guī)定的服務(wù)。Modbus功能碼是Modbus請求/應(yīng)答PDU 的元素[4]。

Modbus 協(xié)議定義了一個(gè)與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU)。特定總線或網(wǎng)絡(luò)上的Modbus協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域。通用的Modbus協(xié)議格式如圖3所示。

圖3 通用的Modbus協(xié)議格式

地址域是指slave的地址,取值范圍足1—247,“0”單獨(dú)用作廣播地址。在更高一級的網(wǎng)絡(luò)將使用其他的方法代替“0”實(shí)施廣播;功能碼的取值范圍是在1—255,表示Master要求Slave執(zhí)行何種操作。功能碼分為通用功能碼(適用所有的Mod icon控制器)、

專用功能碼(適用某些功能模塊)、留用功能碼(作為將來的使用),Slave在收到Master的功能碼后,如果一切正常,將原樣返回功能碼,否則,將返回錯(cuò)誤代碼,提示Master有錯(cuò)誤發(fā)生;數(shù)據(jù)是請求和響應(yīng)的主要內(nèi)容。當(dāng)Master向slave請求讀取寄存器內(nèi)容時(shí),數(shù)據(jù)將包括寄存器的起始地址及讀取的寄存器個(gè)數(shù)。寄存器是slave存放數(shù)據(jù)的地方,它的起始地址是從l開始的,但是Master計(jì)算時(shí)是由0開始的,所以對應(yīng)的實(shí)際寄存器地址應(yīng)該加l。slave回送響應(yīng)的數(shù)據(jù)包括數(shù)據(jù)長度、實(shí)際采集的數(shù)據(jù)。注意數(shù)據(jù)長度只是計(jì)算數(shù)據(jù)區(qū)的長度,并不管其他部分的長度。如果S1ave出現(xiàn)異常,數(shù)據(jù)就返回錯(cuò)誤代碼(Exception code),說明發(fā)生何種錯(cuò)誤。循環(huán)冗余校驗(yàn)(CRC),它是一個(gè)16位字。要注意的是加入到數(shù)據(jù)幀時(shí)CRC是低位在前,高位在后。

主機(jī)向各個(gè)從站發(fā)送命令幀并且接收從站的響應(yīng)幀格式分別如下:

1)高頻計(jì)數(shù)模塊

高頻計(jì)數(shù)模塊與上位機(jī)通信的功能碼為04,即訪問輸入寄存區(qū),主站發(fā)送數(shù)據(jù)格式如表1所示。

表1 計(jì)數(shù)模塊的主站發(fā)送數(shù)據(jù)格式

主機(jī)向從機(jī)發(fā)送8字節(jié)命令,包括的信息有:從機(jī)地址為02,訪問輸入寄存器的起始地址為0000H(16進(jìn)制),訪問寄存區(qū)的數(shù)量為4,最后兩位是CRC(循環(huán)冗余校驗(yàn))的高位與地位。從站響應(yīng)數(shù)據(jù)格式如表2所示。

表2 計(jì)數(shù)模塊從站響應(yīng)數(shù)據(jù)格式

計(jì)數(shù)模塊返回8字節(jié)數(shù)據(jù),其中:

0通道計(jì)數(shù)/頻率值低字—2字節(jié),0通道計(jì)數(shù)/頻率值高字—2字節(jié);

1通道計(jì)數(shù)/頻率值低字—2字節(jié),1通道計(jì)數(shù)/頻率值高字—2字節(jié);

0通道用于輸出optipact的脈沖量,1通道用于輸出旋轉(zhuǎn)編碼器的脈沖量。

2)電子皮帶秤

主機(jī)向賽摩電子皮帶秤的發(fā)送的命令格式如表3所示。

表3 主站向皮帶秤發(fā)送的數(shù)據(jù)格式

主機(jī)向從機(jī)發(fā)送8字節(jié)命令,包括的信息有:從機(jī)地址為01,讀取保持寄存器的起始地址為6640H,訪問寄存區(qū)的數(shù)量為26,最后兩位是CRC(循環(huán)冗余校驗(yàn))的高位與地位。從站響應(yīng)數(shù)據(jù)格式如表4所示。

表4 從站皮帶秤響應(yīng)數(shù)據(jù)格式

電子皮帶秤返回26字節(jié)數(shù)據(jù),包括:流量—4字節(jié),設(shè)定值—4 字節(jié),累計(jì)量—8 字節(jié),速度—4 字節(jié),載荷—4 字節(jié),燈狀態(tài)—1 字節(jié),報(bào)警信息—1 字節(jié)。

3)質(zhì)量流量計(jì)

主站向兩個(gè)質(zhì)量流量計(jì)發(fā)送的命令格式與向電子皮帶秤發(fā)送的格式類似,不同之處在于從站地址不一致,分別為03,04,產(chǎn)生的校驗(yàn)位也不一致。

質(zhì)量流量計(jì)返回88字節(jié)的數(shù)據(jù),包括質(zhì)量流量、質(zhì)量總量、體積總量、溫度、密度以及儀表狀態(tài)等信息,但并非所有的數(shù)據(jù)都是必須的,從中提取的主要信息如表5所示,共26字節(jié)。

表5 質(zhì)量流量計(jì)返回的數(shù)據(jù)含義

3 采集系統(tǒng)數(shù)據(jù)通信的實(shí)現(xiàn)

在該數(shù)據(jù)采集系統(tǒng)中,RS485總線構(gòu)成了主從式的多機(jī)串行總線通訊系統(tǒng),PC機(jī)按照通訊協(xié)議向下位機(jī)發(fā)送命令,下位機(jī)接收到命令后進(jìn)行各種操作。PC機(jī)與各下位機(jī)之間的通訊方式采用半雙工方式,每一個(gè)下位機(jī)被賦予唯一的從站地址,PC機(jī)采用輪循的方式在一個(gè)固定周期內(nèi)先后訪問4個(gè)從站,由PC機(jī)輪流向各個(gè)從站發(fā)送命令,在其控制下完成與各個(gè)下位機(jī)模塊的數(shù)據(jù)交換,次序?yàn)殡娮悠С?,高頻計(jì)數(shù)模塊,2個(gè)質(zhì)量流量計(jì),同時(shí)數(shù)據(jù)以幀的形式在RS485總線上進(jìn)行傳輸。

3.1 RS485總線通訊接口

串行接口包括4個(gè)寄存器,即控制寄存器、狀態(tài)寄存器、數(shù)據(jù)輸入寄存器及數(shù)據(jù)輸出寄存器。數(shù)據(jù)輸入寄存器總是和串行輸入/并行輸出移位寄存器配對使用的。在輸入過程中,數(shù)據(jù)一位一位從外部設(shè)備進(jìn)入移位寄存器,當(dāng)數(shù)據(jù)完整接收之后則從移位寄存器送入輸入寄存器,再等待CPU取走。輸出的情況與輸入過程類似。當(dāng)CPU向數(shù)據(jù)輸出寄存器中輸出一個(gè)數(shù)據(jù)后,數(shù)據(jù)便傳輸?shù)揭莆患拇嫫?,然后一位一位地通過輸出線送到外設(shè)。

本采集系統(tǒng)利用vs2010提供的Serial Port控件可以實(shí)現(xiàn)設(shè)備與設(shè)備、設(shè)備與PC機(jī)之間的串口通信。串口通訊的一般流程是設(shè)置通訊端口及波特率、數(shù)據(jù)位、停止位與校驗(yàn)位,對于上位機(jī)與下位機(jī)而言,這些屬性的設(shè)置必須一致,然后再打開端口,發(fā)送與接收數(shù)據(jù),最后關(guān)閉端口。設(shè)備的工作狀態(tài)通過串口發(fā)送到PC機(jī),發(fā)送方不斷從輸出緩沖提取數(shù)據(jù)形成數(shù)據(jù)幀發(fā)送出去,接收方不斷把接收數(shù)據(jù)包解開后放入接收緩沖,兩者需要遵從共同的數(shù)據(jù)包協(xié)議進(jìn)行收發(fā)[5,6]。串口數(shù)據(jù)的讀取有兩種方式:線程實(shí)時(shí)讀串口方式;事件觸發(fā)方式。由于線程實(shí)時(shí)讀串口的效率不是很高,所以選DataReceiv ed事件觸發(fā)的方法,將Received BytesThreshold屬性值設(shè)置為1,即只要接收緩沖區(qū)有字符就觸發(fā)接收事件。由于DataReceived事件在輔助線程被引發(fā),當(dāng)接收完整的一條數(shù)據(jù),返回主線程處理或窗體上顯示時(shí),必須要采用跨線程的處理,c#可采用控件的異步委托的方法Control.BeginInvoke及同步委托的方法Invoke。

3.2 通信軟件流程

皮帶秤、計(jì)數(shù)模塊、質(zhì)量流量計(jì)與PC機(jī)之間的通信過程是類似的,本文以皮帶秤和PC機(jī)間的通信為例,具體流程如下:

1)Serial port控件實(shí)現(xiàn)通信的關(guān)鍵是正確設(shè)置該控件的屬性與方法。首先對該控件進(jìn)行初始化,設(shè)置波特率為9600b/s、數(shù)據(jù)位為8位、無奇偶校驗(yàn)、1位停止位即9600,8,N,1。然后打開串口。見以下程序所示。

private void InitializeSerialPort()//initialize the serial port

{

serialPort1.Baudrate=9600;//波特率為9600

serialPort1.DataBits = 8;//8位數(shù)據(jù)位

serialPort1.DtrEnable = false;

serialPort1.Handshake = Handshake.None;//無握手協(xié)議

serialPort1.Parity = Parity.None;//無奇偶校驗(yàn)

serialPort1.RtsEnable = false;

serialPort1.StopBits = StopBits.One;//1位停止位

}

2)上位機(jī)向下位機(jī)發(fā)送讀取數(shù)據(jù)的命令。為了保證兩者之間的正確通信,發(fā)送的命令幀必須正確,在發(fā)送完命令幀后,上位機(jī)處于等待狀態(tài),為了提高通信效率,主機(jī)不會(huì)一直處于被動(dòng)的等待狀態(tài),采用定時(shí)器設(shè)置主機(jī)等待的時(shí)間為30s。主機(jī)向從機(jī)發(fā)送8字節(jié)命令,01036640001ADB5D,即向地址為01的從機(jī)發(fā)送讀保持寄存區(qū)的命令,最后4位為CRC校驗(yàn)位,并同時(shí)開啟定時(shí)器,若30s之后主機(jī)未收到數(shù)據(jù),那么重發(fā)一次命令,若仍未收到,則再重發(fā),當(dāng)未收到的次數(shù)超過3次則出現(xiàn)報(bào)錯(cuò),退出線程;如果30s之內(nèi)數(shù)據(jù)接收成功,關(guān)閉定時(shí)器,關(guān)閉串口。

3)下位機(jī)成功接收命令幀后先對地址信息進(jìn)行審查,若從站地址與本機(jī)相符,則根據(jù)PC機(jī)要求進(jìn)行相關(guān)的工作,并利用串口進(jìn)行數(shù)據(jù)發(fā)送。

4)對接收的數(shù)據(jù)進(jìn)行循環(huán)冗余校驗(yàn)CRC校驗(yàn),判斷接收數(shù)據(jù)的合法性與有效性。CRC校驗(yàn)的過程為,小調(diào)入1個(gè)16位寄存器,所有位均為1,然后調(diào)用消息幀中開始的8位字節(jié)和寄存器內(nèi)容異或,結(jié)果向最低有效位(LSB)方向移動(dòng)(右移),最高有效位以0 填充。LSB被提取出來檢測,如果LSB 為1 ,寄存器值和預(yù)置的值A(chǔ)001H進(jìn)行異或運(yùn)算;如果LSB 為0,則不進(jìn)行,整個(gè)過程重復(fù)8 次運(yùn)算;在最后一位(第8 位)完成后,下一個(gè)8 位字節(jié)又和寄存器的當(dāng)前值異或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行校驗(yàn)之后的CRC 值[7]。接收設(shè)備將這個(gè)CRC 值與被傳送的CRC 值比較來檢驗(yàn)主機(jī)或從機(jī)在通信數(shù)據(jù)傳送過程中的信息是有誤。經(jīng)過校驗(yàn)后若數(shù)據(jù)正確則放

入數(shù)據(jù)庫中存儲(chǔ),否則丟棄。整個(gè)流程如圖4所示。利用Timer定時(shí)器控件的Interval屬性設(shè)置系統(tǒng)輪循4個(gè)從機(jī)的周期時(shí)間,在Timer事件過程中寫入主機(jī)與各個(gè)從機(jī)通信的子程序,保證主機(jī)按照固定的時(shí)間間隔將命令下達(dá)到各個(gè)從機(jī)并獲得數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的定時(shí)采集。

3.3 程序?qū)嵗?/h3>

圖4 電子皮帶秤的串口通信流程圖

本實(shí)例主要是實(shí)現(xiàn)電子皮帶秤與上位機(jī)的通信,通信界面如圖5所示。用戶可以在工具欄中選擇通信端口,在關(guān)閉串口后可以重新設(shè)置串口屬性,還可以設(shè)置通訊等待時(shí)間和輪循的時(shí)間周期。在狀態(tài)欄中會(huì)顯示串口當(dāng)前的狀態(tài),打開或關(guān)閉,以及數(shù)據(jù)存儲(chǔ)的情況等。

下面給出皮帶秤與PC機(jī)通信的部分程序清單[8,9],首先是流程圖4中的打開串口過程,見以下步驟1)所示,步驟2)中的程序是實(shí)現(xiàn)流程圖4中的主機(jī)向皮帶秤發(fā)送讀數(shù)據(jù)命令,并等待皮帶秤返回?cái)?shù)據(jù)。

1)主顯示區(qū)“采集”按鈕的Click事件打開串口。

private void button12_Click(object sender,EventArgs e)//打開串口

{ if (serialPort2.IsOpen == false)

{ serialPort2.Open();

button12.Text = “關(guān)閉串口";

else{serialPort2.Close();

button12.Text = "打開串口";}}

2)PC機(jī)以Modbus協(xié)議格式向皮帶機(jī)發(fā)送命

令并接收皮帶秤返回的數(shù)據(jù)。

圖5 采集賽摩皮帶秤的操作界面

public MODBUSRESULT SendAndReceive(string SendData, int _BytesToRec,out string RetData)

{

RetData = “”;//初始化接收數(shù)據(jù)

IsTimeout = false;//通訊未超時(shí)

DataBuff = "";//數(shù)據(jù)緩存

DataRecCount = 0;//接收的數(shù)據(jù)個(gè)數(shù)

BytesToRec = _BytesToRec;

SerialPort sp = new SerialPort(_PortName,_PortBaud, _parity, _Databit, _Stopbit);//實(shí)例化串口

try

{

sp.Open();//打開串口

}

catch

{

return MODBUSRESULT.PortOpenFall;//串口未打開,報(bào)錯(cuò)

}

if (SendData.Length / 2 > 0)//PC發(fā)送命令幀

{

byte[] bt = CRC16.StrToByte(SendData);

DataHead = bt[0];

sp.Write(bt, 0, bt.Length);//數(shù)據(jù)寫入串口

}

if (_BytesToRec > 0)//上位接收數(shù)據(jù)

{sp.DataReceived += new

SerialDataReceivedEventHandler(sp_DataReceived);//數(shù)據(jù)接收事件

Timers.Timer MyTimer = new System.Timers.Timer(_Timeout);

MyTimer.Elapsed += new ElapsedEventHandler(MyTimer_Elapsed); //通訊超時(shí)事件

MyTimer.Enabled = true;

MyTimer.Start();//定時(shí)器開啟

while ((IsTimeout == false) && (DataIsReceived== false)) ;//

通訊未超時(shí)且數(shù)據(jù)接收

MyTimer.Stop();//定時(shí)器停止

MyTimer.Elapsed -= new ElapsedEventHandler(MyTimer_Elapsed);

MyTimer.Dispose();//定時(shí)器資源釋放

sp.Close();//串口關(guān)閉}

else{

sp.Close();

return MODBUSRESULT.OK;//通訊未超時(shí)且數(shù)據(jù)接收}

if (IsTimeout == true)

{

return MODBUSRESULT.Timeout;//返回通訊超時(shí)

}

//校驗(yàn)數(shù)據(jù)

MODBUSRESULT ret = CheckData(DataBuff,SendData);

if (ret == MODBUSRESULT.OK)

{

RetData = DataBuff;

return MODBUSRESULT.OK;

}

else

{return ret;

}

}

4 結(jié)論

數(shù)據(jù)采集系統(tǒng)的實(shí)時(shí)性與高效性對地層損失監(jiān)測系統(tǒng)非常重要。本文主要對整個(gè)采集系統(tǒng)的結(jié)構(gòu)進(jìn)行了較為深入的闡述,介紹了各個(gè)下位機(jī)的基本性能及其Modbus通訊協(xié)議,在Visual Studio 2010環(huán)境下利用C#的Serial Port類編寫了網(wǎng)絡(luò)通信程序,實(shí)現(xiàn)了皮帶秤、計(jì)數(shù)模塊、質(zhì)量流量計(jì)與上位機(jī)通信。經(jīng)過多次試驗(yàn),本文設(shè)計(jì)的通信程序性能良好,操作簡便。

[1] 周奇才,徐小芳,王凱,等.盾構(gòu)施工過程地層損失監(jiān)測系統(tǒng)的設(shè)計(jì)[J].機(jī)電一體化,2012,18(5):65-71.

[2] 王國才,許四法.地鐵盾構(gòu)隧道施工引起地表沉降的影響因素分析[J].溫州大學(xué)學(xué)報(bào)·自然科學(xué)版,2010,31(增2):280-285.

[3] 孫鵬,任維松,張赤斌.基于RS485總線的SBI試驗(yàn)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2009(11):44-47.

[4] 文小玲,余飛,盧圣文,等.基于MODBUS協(xié)議的串口通信軟件設(shè)計(jì)[J].湖南工業(yè)大學(xué)學(xué)報(bào),2008,22(6):100-102.

[5] 謝瑞和.串行技術(shù)大全[M].北京:清華大學(xué)出版社,2003.

[6] 趙炯,熊肖磊,周奇才.串行數(shù)據(jù)傳輸協(xié)議的剖析研究[J].計(jì)算機(jī)工程,2004,30 ( 9) : 106- 108.

[7] 李宥謀,房鼎益.CRC編碼算法研究與實(shí)現(xiàn)[J]. 西北大學(xué)學(xué)報(bào),2006,36(1):895-898.

[8] 張立.C#程序設(shè)計(jì)編程經(jīng)典[M].北京:清華大學(xué)出版社,2008.

[9] 姜拓,張劍平.基于c#的數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)與實(shí)現(xiàn)[J].電子測試,2009(9):58-61.

猜你喜歡
皮帶秤PC機(jī)寄存器
基于線性系統(tǒng)理論的皮帶秤角度補(bǔ)償
三埃皮帶秤應(yīng)用的問題和措施研究
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
小流量加香精度超標(biāo)解決實(shí)例
二進(jìn)制翻譯中動(dòng)靜結(jié)合的寄存器分配優(yōu)化方法
移位寄存器及算術(shù)運(yùn)算應(yīng)用
基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
基于單片機(jī)與PC機(jī)的電氣量采集系統(tǒng)設(shè)計(jì)
儀表控制在電子皮帶秤上的應(yīng)用
河源市| 潍坊市| 稻城县| 罗定市| 阳新县| 沁源县| 襄樊市| 玉门市| 宜阳县| 尼勒克县| 江山市| 册亨县| 锡林郭勒盟| 勐海县| 华坪县| 澄城县| 砚山县| 革吉县| 宝坻区| 米泉市| 长武县| 济源市| 分宜县| 花莲县| 汉源县| 台州市| 大荔县| 吉首市| 乌审旗| 儋州市| 东城区| 萍乡市| 凤翔县| 游戏| 湘潭市| 谢通门县| 喀喇沁旗| 富锦市| 东港市| 房山区| 综艺|