<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>金剛石合成控制系統(tǒng)中多串口通信技術的設計與實現(xiàn)

      金剛石合成控制系統(tǒng)中多串口通信技術的設計與實現(xiàn)

      時間:2023-02-21 00:16:03 電子通信論文 我要投稿

      金剛石合成控制系統(tǒng)中多串口通信技術的設計與實現(xiàn)

      摘要:通過多串口通信技術在金剛石合成控制系統(tǒng)中的應用,討論了32位Windows操作系統(tǒng)下,VC多串口通信技術的設計與實現(xiàn)方法,并運用面向?qū)ο蠓椒ê投嗑程技術設計了一個比較完善的串口通信類。闡述了用VC開發(fā)上位機與PLC之間的串口通信程序設計方法和實現(xiàn)技術。
        關鍵詞:串口通信;面向?qū)ο蠓椒;多線程;PLC
        
       。币
        
        傳統(tǒng)的金剛石合成機控制系統(tǒng)是由一個PLC和一個可顯示終端構成。這種傳統(tǒng)的控制系統(tǒng)一般具有如下缺點:
        
        (1)系統(tǒng)所有的工作都由PLC完成,其控制精度較差,致使合成的金剛石質(zhì)量較差;
        
        (2)顯示終端的平面尺寸過小,這一方面使得操作人員觀察系統(tǒng)的狀態(tài)很不方便,另一方面?也常常會引起誤操作;
        
        (3)金剛石合成工藝復雜,需控制的參數(shù)很多,但原控制系統(tǒng)不能對參數(shù)進行保存,這樣在根據(jù)不同產(chǎn)品和工藝要求對部分參數(shù)進行調(diào)整時,每次都必須重新設置所有的參數(shù),操作非常麻煩;
        
        (4)界面不友好;
        
       。ǎ担┎荒芡ㄟ^控制系統(tǒng)自動考核操作人員的工作質(zhì)量。
        
        為了提高控制精度、方便操作,開發(fā)新的控制系統(tǒng)迫在眉睫。筆者針對以上問題,將IPC與PLC有機結合在一起,開發(fā)了一套新的控制系統(tǒng)。通過該系統(tǒng)可在上位機(IPC)和PLC之間通過RS-232與RS-485進行大量串口通信。
        
       。玻郑么谕ㄐ欧治
        
        在32位Windows系統(tǒng)下使用VC開發(fā)串口通信程序通常有如下4種方法:
        
        (1)使用Microsoft公司提供的名為MSCOMM的通信控件;
        
       。ǎ玻┲苯邮褂茫祝椋睿洌铮鳎髴贸绦蚪涌冢ǎ粒校桑
        
       。ǎ常┳孕性O計一個串口通信類;
        
       。ǎ矗┩ㄟ^開發(fā)一個ActiveX控件來實現(xiàn)串口通信功能。
        
        在上述幾種方法中,實際上還是使用WindowsAPI函數(shù),然后把串口通信的細節(jié)給封裝起來,同時提供給用戶幾個簡單的接口函數(shù)。上述幾種方法各有優(yōu)缺點,但在實際情況下,大多數(shù)編程人員喜歡使用API函數(shù)自行設計串口通信類。
        
        用WindowsAPI函數(shù)進行串口通信的編程流程如圖1所示。其中打開串口是確定串口號與串口的打開方式;初始化串口用于配置通訊的波特率、每字節(jié)位數(shù)、校驗位、停止位和讀寫超時等;讀寫串口用于向串口進行發(fā)送數(shù)據(jù)和從串口接收數(shù)據(jù);關閉串口用于將串口關閉并釋放串口資源(Windows系統(tǒng)下串口是系統(tǒng)資源)。
        
        由于絕大多數(shù)控制系統(tǒng)中串口通信是比較費時的,而且監(jiān)控系統(tǒng)還要進行數(shù)據(jù)處理和顯示等,所以一般采用多線程技術,并用AfxBeginThread()函數(shù)創(chuàng)建輔助線程來管理串口通信,這樣,主進程就能在進行串口讀寫的同時,處理數(shù)據(jù)并完成用戶指令的響應,但是設計時一定要處理好數(shù)據(jù)的共享問題。
        
        串口讀寫既可以選擇同步、異步方式,也可以選擇查詢、定時讀寫和事件驅(qū)動方式。由于同步方式容易造成線程阻塞,所以一般采用異步方式;而查詢方式要占用大量的CPU時間,所以一般采用定時讀寫或者事件驅(qū)動方式,事件驅(qū)動方式相關文獻較多,故此重點討論定時讀寫方式。定時讀寫方式就是上位機向下位機發(fā)送固定格式的數(shù)據(jù),在下位機收到后向上位機返回狀態(tài)信息數(shù)據(jù)。由于數(shù)據(jù)的傳輸需要時間,所有上位機發(fā)送數(shù)據(jù)后就調(diào)用_sleep()函數(shù)進行休眠,休眠的時間可根據(jù)需要進行不同的設置。這樣,可以節(jié)。茫校諘r間,以使系統(tǒng)能夠很好地進行監(jiān)控工作和處理其它事務。
        
       。常郑么谕ㄐ诺脑O計與實現(xiàn)
        
        筆者在Windows系統(tǒng)下,采用面向?qū)ο蟮姆椒ê投嗑程技術,并使用VisualC6.0作為編程工具開發(fā)了一個通用串口通信類CSerialPort,該CSerialPort類封裝了串口通信的基本數(shù)據(jù)和方法,下面給出CSerialPort類的簡單介紹。
        
        CSerialPort類頭文件中的主要成員變量和成員函數(shù)如下:
        
        ClassCSerialPort
        
        {
        
       。穑颍椋觯幔簦:
        
       。龋粒危模牛蹋韄hPort;
        
       。模茫拢韄Dcb;
        
       。茫希停停裕桑停牛希眨裕樱韄TimeOuts;
        
        DWORDm_Error;
        
        
        
        
       。校酰猓欤椋:
        
        CSerialPort();??//構造函數(shù)
        
       。觯椋颍簦酰幔臁茫樱澹颍椋幔欤校铮颍();??//析構函數(shù)
        
       。桑睿椋簦校铮颍()函數(shù)實現(xiàn)初始化串口
        
       。拢希希蹋桑睿椋簦校铮颍(
        
       。悖瑁幔颍螅簦颍健埃悖铮恚薄,
        
       。眨桑危裕拢幔酰洌遥幔簦澹剑梗叮埃,
        
       。眨桑危裕校幔颍椋簦剑,
        
       。眨桑危裕拢簦澹樱椋澹剑,
        
        UINTStopBits=1,
        
       。眨桑危裕遥澹幔洌停酰欤簦椋穑欤椋澹颍剑,
        
       。眨桑危裕遥澹幔洌茫铮睿螅簦幔睿簦剑,
        
       。眨桑危裕祝颍椋簦澹停酰欤簦椋穑欤椋澹颍剑保,
        
        UINTWriteConstant=1000);
        
       。模茫拢牵澹簦模茫();?//獲得DCB參數(shù)
        
        //SetDCB()函數(shù)實現(xiàn)設置DCB參數(shù)
        
       。拢希希蹋樱澹簦模茫(
        
       。眨桑危裕拢幔酰洌遥幔簦澹剑梗叮埃,
        
       。眨桑危裕校幔颍椋簦剑,
        
       。眨危桑裕拢簦澹樱椋澹剑,
        
        UINTStopBits=1);
        
       。牵澹簦裕椋恚澹希酰簦()函數(shù)獲得超時參數(shù)
        
       。茫希停停裕桑停牛希眨裕樱牵澹簦裕椋恚澹希酰簦();
        
       。樱澹簦裕椋恚澹希酰簦()函數(shù)設置超時參數(shù)
        
        BOOLSetTimeOuts(
        
       。眨桑危裕遥澹幔洌停酰欤簦椋穑欤椋澹颍剑,
        
       。眨桑危裕遥澹幔洌茫铮睿螅簦幔睿簦剑,
        
       。眨桑危裕祝颍椋簦澹停酰欤簦椋穑欤椋澹颍剑保,
        
       。眨桑危裕祝颍椋簦澹茫铮睿螅簦幔睿簦剑保埃埃);
        
       。祝颍椋簦澹校铮颍()函數(shù)實現(xiàn)寫串口操作
        
        voidWritePort(HANDLEport,CString);
        
        CStringReadPort(HANDLEport);//讀串口操作
        
       。拢希希蹋茫欤铮螅澹校铮颍();?//關閉串口
        
        };
        
        下面對該類的重要函數(shù)作以說明:
        
        (1)在構造函數(shù)CSerialPort()中已對該類的數(shù)據(jù)成員進行了初始化操作。
        
        (2)初始化串口函數(shù)InitPort()函數(shù)用于完成串口的初始化工作,包括打開串口、設置DCB參數(shù)、設置通信的超時時間等。
        
        打開串口使用CreateFile()函數(shù),其中InitPort()函數(shù)中的第一個參數(shù)為要打開的串口,通常將該參數(shù)賦給CreateFile()函數(shù)中的第一個參數(shù);設置DCB參數(shù)應調(diào)用該類中的SetDCB()函數(shù),并將InitPort()函數(shù)中的第2至第5參數(shù)賦給SetDCB()函數(shù);設置通信的超時時間應調(diào)用該類中的SetTimeOuts()函數(shù),并將InitPort()函數(shù)中的第6至第9參數(shù)賦給SetTimeOuts()函數(shù)。另外,該串口是系統(tǒng)資源,應該根據(jù)不同要求對其安全屬性進行設置。
        
       。ǎ常樱澹簦模茫拢ǎ┖瘮(shù)用于設置DCB參數(shù),包括傳輸?shù)牟ㄌ芈省⑹欠襁M行奇偶校驗、每字節(jié)長度以及停止位等。
        
       。ǎ矗樱澹簦裕椋恚澹希酰簦螅ǎ┖瘮(shù)用于設定訪問的超時值,根據(jù)設置的值可以計算出總的超時間隔。前面兩個參數(shù)用來設置讀操作總的超時值,后面兩個參數(shù)用來設置寫操作總的超時值。
        
       。ǎ担祝颍椋簦澹校铮颍簦ǎ┖瘮(shù)用來完成向串口寫數(shù)據(jù)。由于該系統(tǒng)需要對多個串口進行通信,所以首先應把串口號作為參數(shù)傳遞給該函數(shù);接著該函數(shù)把按參數(shù)傳遞過來的、要發(fā)送的數(shù)據(jù)進行編碼(也就是加入校驗,這樣能減少誤碼率),然后再調(diào)用WindowsAPI函數(shù)WriteFile()并把數(shù)據(jù)發(fā)送到串口。
        
       。ǎ叮遥澹幔洌校铮颍簦ǎ┖瘮(shù)用來完成從串口讀數(shù)據(jù),由于有多個串口,所以應把串口作為參數(shù)傳遞進來,然后調(diào)用API函數(shù)ReadFile(),并把下位機發(fā)送到串口,數(shù)據(jù)讀出來放到緩存里面,接著對數(shù)據(jù)進行處理以將其變換成字符
        
        
        
        串(CString)類型并返回。
        
       。ǎ罚牵澹簦模茫拢ǎ┖瘮(shù)主要用于獲得串口的當前配置,可通過調(diào)用API函數(shù)GetCommState()來實現(xiàn),然后再進行相應的處理。
        
        (8)GetTimeOuts()函數(shù)用于獲得訪問超時值。
        
        (9)ClosePort()函數(shù)可用來關閉串口。因為在Windows系統(tǒng)中串口是系統(tǒng)資源,因而在不用時,應將其釋放掉,以便于其它進程對該資源的使用。
        
       。椿诖谕ㄐ诺慕饎偸铣煽刂
        
        金剛石合成控制系統(tǒng)采用主從式控制方式,上位機為微機、下位機為PLC。上位機的主要功能是對系統(tǒng)進行實時監(jiān)控,下位機的主要功能是對系統(tǒng)進行實時控制。上位機采用Windows98操作系統(tǒng),其監(jiān)控程序可用VC開發(fā),上、下位機之間通過RS-232與RS-485串口進行通信,它們之間采用的通信波特率為9600bps,無奇偶校驗,每字節(jié)8位,并有1位停止位。上、下位機之間傳送的數(shù)據(jù)格式可自己定義。由于傳輸數(shù)據(jù)時可能會引起錯誤,所以加入了校驗算法。該系統(tǒng)通過上位機向下位機發(fā)送數(shù)據(jù),下位機收到后就把當前系統(tǒng)的狀態(tài)參數(shù)返回給上位機。由于該系統(tǒng)中所控制的參數(shù)具有遲滯性,所以應采用定時發(fā)送數(shù)據(jù)的方法來采集現(xiàn)場狀態(tài)信息。
        
        上位機編程時,可用VC6.0生成一個對話框類型的程序框架,然后將自己編寫的CSerialPort類加入到該工程中,并在主界面類?CCrystal?中添加一個CSerialPort類的成員變量serial。當監(jiān)控系統(tǒng)開始工作時,可用AfxBeginThread??函數(shù)創(chuàng)建輔助線程來管理串口通信,當調(diào)用CSerialPort類中的WritePort??函數(shù)向串口發(fā)送數(shù)據(jù)后,可調(diào)用_sleep??函數(shù)使輔助線程休眠一段時間,以便使PLC有充分的時間返回數(shù)據(jù);接著再調(diào)用CSerialPort類中的ReadPort()函數(shù)并從串口讀數(shù)據(jù),然后再調(diào)用_sleep()函數(shù)使輔助線程再休眠一定的時間。這樣設計后,當進行串口通信時,主線程就能繼續(xù)完成監(jiān)控功能和處理其他事務。輔助線程函數(shù)的主要代碼如下:
        
        UINTSerialPro(void*param)
        
        {
        
       。茫悖颍螅簦幔欤恚洌欤纾剑ǎ茫悖颍螅簦幔欤穑幔颍幔?
        
       。茫樱簦颍椋睿纾螅簦颍
        
       。椋睿簦妫欤幔纾剑;
        
       。绻跏蓟谑》祷
        
       。椋妫ǎ。桑睿椋簦校铮颍簦ā埃悖铮恚病保
        
        {AfxMessageBox(“打開串口2失敗”);
        
        return0;
        
        }
        
        //循環(huán)讀寫串口,直到結束
        
        while(flag)
        
        {
        
       。@里把要發(fā)送的數(shù)據(jù)傳送給變量str
        
        ……
        
       。虼趯憯(shù)據(jù)
        
       。恚洌欤纾荆螅澹颍椋幔欤祝颍椋簦澹校铮颍(hport,str);
        
        //讓輔助線程休眠100ms
        
        _sleep(100);
        
       。瘡拇谧x數(shù)據(jù)并賦給變量str
        
       。螅簦颍剑恚洌欤纾荆螅澹颍椋幔欤遥澹幔洌校铮颍(hport);
        
       。@里把從串口得到的數(shù)據(jù)進行處理
        
        ……
        
       。到Y束語
        
        運用面向?qū)ο蠓椒ê投嗑程技術設計的通用串口通信類CSerialPort類,通過對WindowsAPI函數(shù)的封裝使串口通信變得簡單方便、容易維護。目前,該軟件系統(tǒng)已成功地應用于金剛石合成控制系統(tǒng),并成功解決了RS-232與RS-485兩種串口通信的問題。經(jīng)過幾個月的運行表明,該串口通信軟件工作穩(wěn)定,出色地完成了系統(tǒng)的實時監(jiān)控和顯示任務。此外,由于采用了面向?qū)ο蟮姆椒ê湍K化設計,該軟件的維護和升級十分方便;同時該系統(tǒng)具有很好的移植性,按照不同需求稍微改動一些代碼就可以應用于其它控制系統(tǒng)中。

      【金剛石合成控制系統(tǒng)中多串口通信技術的設計與實現(xiàn)】相關文章:

      金剛石合成控制系統(tǒng)中多串口通信技術的設計與實現(xiàn)08-06

      基于Vxworks實時操作系統(tǒng)的串口通信程序設計與實現(xiàn)08-19

      在CPLD管理下實現(xiàn)高效多串口中斷源08-06

      基于PC/104的多串口通訊的設計08-06

      Windows CE中實現(xiàn)藍牙串口驅(qū)動程序08-06

      多媒介通信系統(tǒng)鏈路管理的設計和實現(xiàn)08-06

      遠程終端中通信控制卡的設計與實現(xiàn)08-06

      智能家居控制系統(tǒng)的設計與實現(xiàn)08-06

      數(shù)字懸浮控制系統(tǒng)中的降噪方法及實現(xiàn)08-06

      主站蜘蛛池模板: 青青青爽在线视频观看| 精品 无码 国产观看| 久久人人97超碰精品| 精品无码国产污污污免费| 免费无码黄网站在线观看| 国产精品久久久尹人香蕉| 亚洲高清日韩专区精品| 成人永久性免费在线视频| 国产九九视频一区二区三区| 国产97人人超碰CAO蜜芽PROM| 日韩精品av一区二区三区| 国产无遮挡裸体免费久久| 国产精品中文字幕观看| 久久综合开心激情五月天| 成人国产精品日本在线观看| 国产一区二区不卡自拍| 人妻少妇精品视频三区二区| 亚洲综合国产成人丁香五| 自拍偷拍另类三级三色四色| 国内熟妇人妻色在线三级| 无套内谢少妇一二三四| 国产午夜亚洲精品不卡下载| 精品国产一区av天美传媒| 2020年最新国产精品正在播放| 在线观看亚洲欧美日本| 女人高潮被爽到呻吟在线观看 | 在线欧美中文字幕农村电影| 丁香五月亚洲综合深深爱| 自偷自拍亚洲综合精品| 国产熟女丝袜av一二区| 一区二区中文字幕av| 久久精品国产福利一区二区| 成人一区二区三区久久精品| 国产一区二区三区不卡自拍| 少妇高清一区二区免费看| 亚洲av不卡电影在线网址最新| 国产精品视频中文字幕| 丰满人妻一区二区三区色| 久久99久久99精品免视看国产成人| 国产精品中文字幕视频| 国产亚洲av手机在线观看|