亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        HART智能儀表通用組態(tài)軟件開發(fā)

        2014-03-01 06:13:00孫明革徐松梅
        吉林化工學(xué)院學(xué)報 2014年3期
        關(guān)鍵詞:數(shù)組字節(jié)組態(tài)

        孫明革,關(guān) 波,徐松梅

        (1.吉林化工學(xué)院信息與控制工程學(xué)院,吉林 吉林132022;2.中國石油吉林石化公司 化肥廠,吉林 吉林132021;3.吉林中國石油天然氣集團公司染料廠,吉林吉林132021)

        HART(Highway Addressable Remote Transducer)協(xié)議,是一項4~20mA信號與數(shù)字通信技術(shù)兼容的過渡性標準,現(xiàn)已有 Rosemount,ABB,F(xiàn)uji,Moore,E+H,Honeywell,F(xiàn)isher Controls 等 70 多家公司參加了HART協(xié)議基金HCF.由于HART協(xié)議眾多不容置疑的優(yōu)點,使它成為全球應(yīng)用最為廣泛的現(xiàn)場通信協(xié)議[1].

        目前國內(nèi)外許多著名的儀表生產(chǎn)廠家都生產(chǎn)支持HART協(xié)議的智能現(xiàn)場儀表,但是不同廠家各自采用自己開發(fā)的便攜式編程器組態(tài)各自的儀表,這樣存在操作不方便、通用性差等缺陷.雖然在PC機上開發(fā)了相應(yīng)的組態(tài)軟件,但是也存在通用性差、功能少等缺點.本文主要通過對HART命令的解析來闡述HART組態(tài)軟件的工作原理,以及依據(jù)HART協(xié)議,利用C#高級語言編寫一種支持HART協(xié)議的通用組態(tài)軟件,實現(xiàn)HART命令對現(xiàn)場智能設(shè)備的控制,并闡述了基本編程思路[2-3].

        1 工作原理

        1.1 系統(tǒng)通訊連接示意圖

        HART儀表組態(tài)軟件通過USB-HART轉(zhuǎn)換器與現(xiàn)場智能儀表連接,當HART儀表組態(tài)軟件發(fā)送命令至現(xiàn)場設(shè)備時,現(xiàn)場智能儀表會立即回應(yīng)主機,根據(jù)其應(yīng)答的數(shù)據(jù)信息可以得到當前儀表的工作狀態(tài)以及儀表本身存儲的各種信息.系統(tǒng)通訊連接示意圖如圖1所示[4-5].

        圖1 系統(tǒng)通訊連接示意圖

        1.2 HART 協(xié)議幀

        在HART協(xié)議中,實體間的數(shù)據(jù)傳輸是以幀的形式實現(xiàn)的.HART協(xié)議幀由用戶數(shù)據(jù)和地址信息封裝而成,它由前導(dǎo)符、定界符、地址域、命令域、字節(jié)長度域、數(shù)據(jù)域、狀態(tài)域以及校驗位組成[4-5].具體如表1 ~2 所示.

        表1 請求幀

        表2 響應(yīng)幀

        (1)前導(dǎo)符一般是5~20個FF十六進制字節(jié).它實際上是同步信號,各通訊設(shè)備可以據(jù)此略做調(diào)整,保證信息的同步;

        (2)定界符可以用來表示使用的結(jié)構(gòu)是“長”結(jié)構(gòu)或者“短”結(jié)構(gòu)、消息源是否是“突發(fā)”模式消息.主機到從機為短結(jié)構(gòu)時,起始位為02,長幀時為82.從機到主機的短結(jié)構(gòu)值為06,長結(jié)構(gòu)值為86.而為“突發(fā)”模式的短結(jié)構(gòu)值為01,長結(jié)構(gòu)為81;

        (3)地址域包含了主機地址和從機地址,短結(jié)構(gòu)中占1字節(jié),長結(jié)構(gòu)中占5字節(jié).無論長結(jié)構(gòu)還是短結(jié)構(gòu),HART協(xié)議中允許2個主機存在,用首字節(jié)的最高位來進行區(qū)分,值為1表示第一主機地址,第二主機用0表示.短結(jié)構(gòu)用首字節(jié)的0~4位表示值為0~15的從機地址,第5、6位賦0;而長結(jié)構(gòu)用后6位表示從機的生產(chǎn)廠商的代碼,第2個字節(jié)表示從機設(shè)備型號代碼,后3~5個字節(jié)表示從機的設(shè)備序列號,構(gòu)成“唯一”標志碼;

        (4)命令域的范圍為253個,用HEX的0~FD表示;

        (5)字節(jié)長度域的值表示自下一個字節(jié)到最后字節(jié)(不包括校驗字節(jié))的字節(jié)數(shù);

        (6)響應(yīng)碼只存在于從機響應(yīng)主機消息的時候,用2個字節(jié)表示.它將報告通訊中的錯誤、接收命令的狀態(tài)(如:設(shè)備忙、無法識別命令等)和從機的操作狀態(tài);

        (7)數(shù)據(jù)域表示傳送和接收的數(shù)據(jù),一般不超過25個字節(jié);

        (8)校驗方式采用縱向奇偶校驗,從起始字節(jié)開始到奇偶校驗前一個字節(jié)為止.

        通過對HART協(xié)議的請求幀和響應(yīng)幀的結(jié)構(gòu)分析,得出正式進行儀表通訊之前需進行儀表測試,來確定制造商的設(shè)備類型、廠商的代碼、設(shè)備的版本號及標識.

        2 系統(tǒng)設(shè)計

        2.1 功能結(jié)構(gòu)設(shè)計

        系統(tǒng)功能結(jié)構(gòu)圖包括用戶注冊模塊、發(fā)送HART命令模塊、接收數(shù)據(jù)顯示模塊、通訊狀態(tài)顯示模塊及接收發(fā)送字節(jié)數(shù).具體如圖2所示[2-3,6].

        圖2 系統(tǒng)功能結(jié)構(gòu)圖

        用戶注冊模塊:只有注冊用戶才能正常使用該軟件;

        發(fā)送HART命令:串口打開后,用戶可通過發(fā)送HART命令與智能儀表進行通訊,獲取或設(shè)置現(xiàn)場設(shè)備的狀態(tài);

        接收數(shù)據(jù)顯示:把接收來的字節(jié)轉(zhuǎn)化為文字信息或數(shù)字信息顯示在屏幕上,表示用戶所需要的狀態(tài)信息;

        傳輸狀態(tài)顯示:反映響應(yīng)碼所對應(yīng)的通訊信息,只有響應(yīng)碼首字節(jié)為零時才說明通訊正常,其它情況都表示通訊沒有正確執(zhí)行,根據(jù)響應(yīng)碼的數(shù)值顯示相應(yīng)的出錯信息,有助于維護設(shè)備正常的運行;

        接收發(fā)送字節(jié)數(shù):顯示當前接收或發(fā)送的字節(jié)數(shù).

        2.2 系統(tǒng)流程設(shè)計

        本組態(tài)軟件系統(tǒng)在經(jīng)過設(shè)備測試后確定現(xiàn)場智能儀表的地址域,并且等待主機發(fā)送HART命令,當獲取具體的HART命令后,根據(jù)命令的具體含義執(zhí)行相應(yīng)的操作.具體的系統(tǒng)流程圖如圖3 所示[7-15].

        圖3 系統(tǒng)流程圖

        3 系統(tǒng)實現(xiàn)

        3.1 組態(tài)軟件操作界面

        組態(tài)軟件的主操作界面如圖4所示,這里不做說明.

        圖4 主操作界面

        3.2 C#串口驅(qū)動程序?qū)崿F(xiàn)

        組態(tài)軟件主界面上的每一個按鈕對應(yīng)一個特定的HART發(fā)送命令,每個命令的發(fā)送字節(jié)數(shù)與接收字節(jié)數(shù)都不一樣,發(fā)送前必須實現(xiàn)串口連接,本軟件通過創(chuàng)建SerialPort對象來實現(xiàn)串口通信的全過程.

        程序中用到的SerialPort類的方法[2-3]:

        ReadLine():從輸入緩沖區(qū)讀一新行的值,如果沒有,會返回NULL;

        WriteLine(char

        buffer,int offset,int count):寫入輸出緩沖;

        Open():打開一個新的串口連接;

        Close():關(guān)閉.

        具體實現(xiàn)過程如下:

        (1)添加引用

        using System.IO.Ports;//串口類

        (2)定義SerialPort類實例

        private SerialPort SpCom = new SerialPort();//建立類實例

        (3)超時設(shè)置

        SpCom.WriteTimeout=2000;//寫入超時

        SpCom.ReadTimeout=2000;//讀取超時

        (4)設(shè)置通訊端口號及波特率、數(shù)據(jù)位、停止位和校驗位

        SpCom.PortName=this.comboBox1.SelectedItem.ToString();//獲取通訊端口號

        SpCom.BaudRate=1200;//HART為固定波特率=1200HZ

        SpCom.Parity = System.IO.Ports.Parity.Odd;//奇偶校驗位,這里是奇校驗

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

        SpCom.StopBits=System.IO.Ports.StopBits.One;//一個停止位

        SpCom.ParityReplace=0;//當發(fā)生奇偶校驗錯誤時,設(shè)置并返回替換數(shù)據(jù)流中一個非法字符的字符.

        (5)打開串口

        SpCom.Open();

        (6)發(fā)送數(shù)據(jù)

        SpCom.Write(char

        buffer,int offset,int count);

        1.2.2 術(shù)中腿部按摩。術(shù)前調(diào)整器械托盤的高度,利于操作,術(shù)中用卵圓鉗夾住手術(shù)蓋單邊緣內(nèi)側(cè),將蓋單掀起并將鉗子尾端掛于預(yù)先準備好的輸液架上,在不影響手術(shù)操作以及不違反無菌原則的情況下對患者進行被動活動。由遠心端向近心端按摩患者小腿部肌肉,每小時按摩一次,每次5-10分鐘,直至手術(shù)結(jié)束。

        (7)添加接受事件

        在運行時將事件與事件處理程序相關(guān)聯(lián)(通過委托實現(xiàn)).

        +=new SerialData-

        EventHandler(this.DataReceived);

        函數(shù)程序?qū)崿F(xiàn)及轉(zhuǎn)化如下:

        private void DataReceived(object sender,SerialDataReceivedEventArgs e)

        {try{this.SpCom.BaseStream.Flush();//清除緩沖區(qū)

        int j=this.SpCom.BytesToRead;

        byte

        Rdata=new byte[j];

        count+=j;

        for(int i=0;i<j;i++)

        {Rcommand[count-j+i]=Rdata[i];}//數(shù)據(jù)轉(zhuǎn)移

        this.SpCom.BaseStream.Flush();}

        catch(Exception err)//錯誤信息提示

        {MessageBox.Show(err.Message);}}

        (8)關(guān)閉串口

        SpCom.Close();

        3.3 數(shù)據(jù)類型轉(zhuǎn)換

        數(shù)據(jù)顯示需要把接收到的字節(jié)數(shù)組經(jīng)過轉(zhuǎn)換得到用戶需要的數(shù)據(jù)形式,這種轉(zhuǎn)換包括多種數(shù)據(jù)類型的轉(zhuǎn)換[2-3].

        (1)四個字節(jié)數(shù)組轉(zhuǎn)化單精度浮點數(shù)

        byte

        word=new byte[4];

        word[0]=Rcommand[firstdata+3];//接收字節(jié)數(shù)組的第四個字節(jié)

        word[1]=Rcommand[firstdata+2];//接收字節(jié)數(shù)組的第三個字節(jié)

        word[2]=Rcommand[firstdata+1];//接收字節(jié)數(shù)組的第二個字節(jié)

        word[3]=Rcommand[firstdata];//接收字節(jié)數(shù)組的第一個字節(jié)

        this.textBox5.Text= System.BitConverter.ToSingle(word,0).ToString();

        //將四個字節(jié)數(shù)組轉(zhuǎn)化成單精度浮點數(shù)并顯示在textBox5中

        (2)指定字節(jié)數(shù)組序列解碼為字符串

        this.textBox18.Text= System.Text.Encoding.ASCII.GetString(data,0,24);

        //將data數(shù)組從0到開始的24個字節(jié)轉(zhuǎn)化成字符串

        (3)將字符序列編碼為字節(jié)數(shù)組

        data=System.Text.Encoding.ASCII.Get-Bytes(str);

        //將字符串str轉(zhuǎn)化為字節(jié)存入data數(shù)組中

        (4)以字節(jié)數(shù)組形式返回指定的雙精度浮點值

        order.data= System.BitConverter.GetBytes(da);//將浮點數(shù)da轉(zhuǎn)化為字節(jié)數(shù)組

        (5)將指定區(qū)域的數(shù)值字符串轉(zhuǎn)化為等效的32位數(shù)值整數(shù)

        data[0]=(byte)int.Parse(this.textBox32.Text);//將textBox32中的內(nèi)容轉(zhuǎn)化為整數(shù)

        (6)壓縮ASCII(6位ASCII)

        壓縮ASCII數(shù)據(jù)格式是HART協(xié)議中特別之處.壓縮的ASCII是ASCII的子集,它通過去掉每個ASCII字符的高2位而產(chǎn)生.這就允許4個壓縮的ASCII字符占用3個ASCII字符的空間.由HART字符集可以看出,HART協(xié)議不允許有小寫英文字母出現(xiàn).由于篇幅,這里就不給出壓縮ASCII數(shù)據(jù)轉(zhuǎn)化非壓縮ASCII數(shù)據(jù)子程序和非壓縮ASCII數(shù)據(jù)轉(zhuǎn)化壓縮ASCII數(shù)據(jù)子程序[2-3].

        3.4 HART命令子程序(關(guān)鍵子程序)

        所有命令發(fā)送前都要進入該程序,用以確定要發(fā)送的字節(jié)數(shù)組,然后再通過 Serialport類的Write屬性將字節(jié)發(fā)送給智能設(shè)備.該命令有兩個參數(shù):儀表檢測時得到的設(shè)備定界符(是長幀還是短幀)和要發(fā)送的字節(jié)數(shù)組(該字節(jié)由系統(tǒng)根據(jù)用戶提供的數(shù)字或文字信息轉(zhuǎn)化而來)[2-3].

        為了方便讀者,這里沒有給出程序框圖,而是直接給出了實現(xiàn)代碼.

        具體代碼實現(xiàn)如下:

        4 結(jié) 論

        本軟件包括了HART協(xié)議中的所有通用命令、普通命令和一些特殊命令,實現(xiàn)了PC機與各類支持HART協(xié)議的現(xiàn)場智能設(shè)備的遠程通訊.具有操作界面友好、狀態(tài)顯示清晰、操作方便、價格低廉等優(yōu)點,并且本軟件增加了自編命令用來支持某些具有特殊命令的HART儀表,提高了軟件的通用性.

        [1] 丁穎,盛惠興.HART協(xié)議解析[J].現(xiàn)代電子技術(shù).2004,27(1):14-17.

        [2] 熊輝,馬占德,牛耀林,等.基于HART協(xié)議的PC組態(tài)軟件設(shè)計[J].石油化工自動化,2007(1):59-68.

        [3] 張夏,魏文雄,余淼,等.基于Windows的HART組態(tài)軟件設(shè)計[J].計算機系統(tǒng)工程,2012,38(16):241-244.

        [4] 郭福田,姜軍,劉賢梅,等.基于HART協(xié)議的通信技術(shù)[J].大慶石油學(xué)院學(xué)報,2000,24(1):55-77.

        [5] 孫廣軍.HART現(xiàn)場通訊協(xié)議[J].微計算機信息,2002(2):4-12.

        [6] 曹慶年,胡欣欣,孟開元,等.基于HART協(xié)議的工業(yè)無線監(jiān)控系統(tǒng)設(shè)計[J].西安石油大學(xué)學(xué)報,2012,27(1):99-103.

        [7] 趙昀,魏祥毓,龐彥斌,等.符合HART協(xié)議的現(xiàn)場儀表通信卡軟件研究開發(fā)[J].儀器儀表學(xué)報,2006,22(z2):428-431.

        [8] 孔祥偉,周杏鵬.基于HART協(xié)議的智能壓力變送器的設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2010(2):15-17.

        [9] 郝靖,李擎,楊磊.基于HART協(xié)議的智能壓力變送器[J].儀表技術(shù)與傳感器,2007(2):17-22.

        [10]王忠民,梁玉偉.基于HART協(xié)議的礦用信號轉(zhuǎn)換器的設(shè)計[J].工礦自動化,2011(8):116-118.

        [11]鄭永軍,李文軍,梁國偉等.基于HART協(xié)議的金屬管浮子流量計[J].傳感器與微系統(tǒng),2010,25(2):95-97.

        [12]陳東宇,施一明,金建祥.基于HART協(xié)議的智能擴散硅壓力變送器[J].自動化儀表,2001,22(6):17-19.

        [13]劉軍華.HART協(xié)議通訊器在智能變送器實際測量中的應(yīng)用[J].化工自動化及儀表,2010,37(2):93-94.

        [14]馬小永,黃玲.傳統(tǒng)變送器的HART改造[J].自動化儀表,2005,26(1):22-24.

        [15]陳衛(wèi)兵,束慧.基于HART協(xié)議和模糊PID控制的智能氧量分析儀[J].計算機測量與控制,2010,18(11):2671-2674.

        猜你喜歡
        數(shù)組字節(jié)組態(tài)
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        No.8 字節(jié)跳動將推出獨立出口電商APP
        基于PLC及組態(tài)技術(shù)的恒溫控制系統(tǒng)開發(fā)探討
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        No.10 “字節(jié)跳動手機”要來了?
        簡談MC7字節(jié)碼
        基于PLC和組態(tài)的智能電動擰緊系統(tǒng)
        PLC組態(tài)控制在水箱控制系統(tǒng)的應(yīng)用
        鑄造行業(yè)三維組態(tài)軟件的應(yīng)用
        尋找勾股數(shù)組的歷程
        久久精品国产色蜜蜜麻豆| 日日噜噜噜夜夜狠狠久久蜜桃 | 日韩一区二区,亚洲一区二区视频 国产一区二区三区经典 | 中文幕无线码中文字蜜桃| 亚洲欧美香港在线观看三级片| 日韩av一区二区不卡在线| 少妇爆乳无码专区| 毛茸茸的中国女bbw| 妺妺窝人体色www聚色窝| 国产精品后入内射日本在线观看| 插鸡网站在线播放免费观看| 搡老熟女中国老太| 亚洲AV无码专区国产H小说| 亚洲一区二区三区18| 刺激一区仑乱| 日韩内射美女人妻一区二区三区| 精品91精品91精品国产片| 日韩一本之道一区中文字幕| 领导边摸边吃奶边做爽在线观看| 99精品国产兔费观看久久99| 狠狠躁夜夜躁人人爽天天不卡| 91九色熟女潮喷露脸合集| 久久午夜无码鲁丝片午夜精品| 欧美人与物videos另类xxxxx| 宅男久久精品国产亚洲av麻豆| 亚洲一区二区三区中文字幕网| 国产精品欧美一区二区三区| 精品国产高清一区二区广区| 高清成人在线视频播放| 国产亚洲欧洲aⅴ综合一区| 熟妇人妻av无码一区二区三区| 99国产综合精品-久久久久| 一区二区在线观看日本视频| 波多野42部无码喷潮在线| 亚洲精品成人专区在线观看| 青青草手机成人自拍视频| 亚洲天堂av三区四区不卡| 国产成人精品一区二区三区免费 | 一区二区三区国产美女在线播放 | 日本熟女精品一区二区三区| 国产成人亚洲综合色婷婷|