www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]1 引言傳統的金剛石合成機控制系統是由一個PLC和一個可顯示終端構成。這種傳統的控制系統一般具有如下缺點:(1) 系統所有的工作都由PLC完成,其控制精度較差,致使合成的金

1 引言

傳統的金剛石合成機控制系統是由一個PLC和一個可顯示終端構成。這種傳統的控制系統一般具有如下缺點:

(1) 系統所有的工作都由PLC完成,其控制精度較差,致使合成的金剛石質量較差;

(2) 顯示終端的平面尺寸過小,這一方面使得操作人員觀察系統的狀態(tài)很不方便,另一方面?也常常會引起誤操作;

(3) 金剛石合成工藝復雜,需控制的參數很多,但原控制系統不能對參數進行保存,這樣在根據不同產品和工藝要求對部分參數進行調整時,每次都必須重新設置所有的參數,操作非常麻煩;

(4) 界面不友好;

(5)不能通過控制系統自動考核操作人員的工作質量。

為了提高控制精度、方便操作,開發(fā)新的控制系統迫在眉睫。筆者針對以上問題,將IPC與PLC有機結合在一起,開發(fā)了一套新的控制系統。通過該系統可在上位機(IPC)和PLC之間通過RS-232與RS-485進行大量串口通信。

2 VC串口通信分析

在32位Windows系統下使用VC開發(fā)串口通信程序通常有如下4種方法:

(1)使用Microsoft公司提供的名為MSCOMM的通信控件;

(2)直接使用Windows應用程序接口(API);

(3)自行設計一個串口通信類;

(4)通過開發(fā)一個ActiveX控件來實現串口通信功能。

在上述幾種方法中,實際上還是使用Windows API函數,然后把串口通信的細節(jié)給封裝起來,同時提供給用戶幾個簡單的接口函數。上述幾種方法各有優(yōu)缺點,但在實際情況下,大多數編程人員喜歡使用API函數自行設計串口通信類。

 

用Windows API函數進行串口通信的編程流程如圖1所示。其中打開串口是確定串口號與串口的打開方式;初始化串口用于配置通訊的波特率、每字節(jié)位數、校驗位、停止位和讀寫超時等;讀寫串口用于向串口進行發(fā)送數據和從串口接收數據;關閉串口用于將串口關閉并釋放串口資源(Windows系統下串口是系統資源)。

由于絕大多數控制系統中串口通信是比較費時的,而且監(jiān)控系統還要進行數據處理和顯示等,所以一般采用多線程技術,并用AfxBeginThread()函數創(chuàng)建輔助線程來管理串口通信,這樣,主進程就能在進行串口讀寫的同時,處理數據并完成用戶指令的響應,但是設計時一定要處理好數據的共享問題。

串口讀寫既可以選擇同步、異步方式,也可以選擇查詢、定時讀寫和事件驅動方式。由于同步方式容易造成線程阻塞,所以一般采用異步方式;而查詢方式要占用大量的CPU時間,所以一般采用定時讀寫或者事件驅動方式,事件驅動方式相關文獻較多,故此重點討論定時讀寫方式。定時讀寫方式就是上位機向下位機發(fā)送固定格式的數據,在下位機收到后向上位機返回狀態(tài)信息數據。由于數據的傳輸需要時間,所有上位機發(fā)送數據后就調用_sleep()函數進行休眠,休眠的時間可根據需要進行不同的設置。這樣,可以節(jié)省CPU時間,以使系統能夠很好地進行監(jiān)控工作和處理其它事務。

3 VC串口通信的設計與實現

筆者在Windows系統下,采用面向對象的方法和多線程技術,并使用Visual C6.0作為編程工具開發(fā)了一個通用串口通信類CSerialPort,該CSerialPort類封裝了串口通信的基本數據和方法,下面給出CSerialPort類的簡單介紹。

CSerialPort類頭文件中的主要成員變量和成員函數如下:

Class CSerialPort

{

private:

HANDEL m_hPort;

DCB m_Dcb;

COMMTIMEOUTS m_TimeOuts;

DWORD m_Error;

Public:

CSerialPort(); ? //構造函數

virtual~CSerialPort(); ? //析構函數

//InitPort() 函數實現初始化串口

BOOL InitPort(

char* str=“com1”,

UINT BaudRate=9600,

UINT Parity=0,

UINT ByteSize=8,

UINT StopBits=1,

UINT ReadMultiplier=0,

UINT ReadConstant=0,

UINT WriteMultiplier=10,

UINT WriteConstant=1000);

DCB GetDCB();? //獲得DCB參數

//SetDCB()函數實現設置DCB參數

BOOL SetDCB(

UINT BaudRate=9600,

UINT Parity=0,

UNIT ByteSize=8,

UINT StopBits=1);

// GetTimeOuts()函數獲得超時參數

COMMTIMEOUTS GetTimeOuts();

// SetTimeOuts()函數設置超時參數

BOOL SetTimeOuts(

UINT ReadMultiplier=0,

UINT ReadConstant=0,

UINT WriteMultiplier=10,

UINT WriteConstant=1000);

// WritePort()函數實現寫串口操作

void WritePort(HANDLE port,CString);

CString ReadPort(HANDLE port); //讀串口操作

BOOL ClosePort();? //關閉串口

};

下面對該類的重要函數作以說明:

(1)在構造函數CSerialPort()中已對該類的數據成員進行了初始化操作。

(2)初始化串口函數InitPort()函數用于完成串口的初始化工作,包括打開串口、設置DCB參數、設置通信的超時時間等。

打開串口使用CreateFile()函數,其中InitPort()函數中的第一個參數為要打開的串口,通常將該參數賦給CreateFile()函數中的第一個參數;設置DCB參數應調用該類中的SetDCB()函數,并將InitPort()函數中的第2至第5參數賦給SetDCB()函數;設置通信的超時時間應調用該類中的SetTimeOuts()函數,并將InitPort()函數中的第6至第9參數賦給SetTimeOuts()函數。另外,該串口是系統資源,應該根據不同要求對其安全屬性進行設置。

(3)SetDCB()函數用于設置DCB參數,包括傳輸的波特率、是否進行奇偶校驗、每字節(jié)長度以及停止位等。

(4)SetTimeOuts()函數用于設定訪問的超時值,根據設置的值可以計算出總的超時間隔。前面兩個參數用來設置讀操作總的超時值,后面兩個參數用來設置寫操作總的超時值。

(5)WritePort()函數用來完成向串口寫數據。由于該系統需要對多個串口進行通信,所以首先應把串口號作為參數傳遞給該函數;接著該函數把按參數傳遞過來的、要發(fā)送的數據進行編碼(也就是加入校驗,這樣能減少誤碼率),然后再調用Windows API函數WriteFile()并把數據發(fā)送到串口。[!--empirenews.page--]

(6)ReadPort()函數用來完成從串口讀數據,由于有多個串口,所以應把串口作為參數傳遞進來,然后調用API函數ReadFile(),并把下位機發(fā)送到串口,數據讀出來放到緩存里面,接著對數據進行處理以將其變換成字符串(CString)類型并返回。

(7)GetDCB()函數主要用于獲得串口的當前配置,可通過調用API函數GetCommState()來實現,然后再進行相應的處理。

(8)GetTimeOuts()函數用于獲得訪問超時值。

(9)ClosePort()函數可用來關閉串口。因為在Windows系統中串口是系統資源,因而在不用時,應將其釋放掉,以便于其它進程對該資源的使用。

4 基于串口通信的金剛石合成控制

金剛石合成控制系統采用主從式控制方式,上位機為微機、下位機為PLC。上位機的主要功能是對系統進行實時監(jiān)控,下位機的主要功能是對系統進行實時控制。上位機采用Windows 98操作系統,其監(jiān)控程序可用VC開發(fā),上、下位機之間通過RS-232與RS-485串口進行通信,它們之間采用的通信波特率為9600bps,無奇偶校驗,每字節(jié)8位,并有1位停止位。上、下位機之間傳送的數據格式可自己定義。由于傳輸數據時可能會引起錯誤,所以加入了校驗算法。該系統通過上位機向下位機發(fā)送數據,下位機收到后就把當前系統的狀態(tài)參數返回給上位機。由于該系統中所控制的參數具有遲滯性,所以應采用定時發(fā)送數據的方法來采集現場狀態(tài)信息。

上位機編程時,可用VC6.0生成一個對話框類型的程序框架,然后將自己編寫的CSerialPort類加入到該工程中,并在主界面類?CCrystal中添加一個CSerialPort類的成員變量serial。當監(jiān)控系統開始工作時,可用AfxBeginThread?函數創(chuàng)建輔助線程來管理串口通信,當調用CSerialPort類中的WritePort? 函數向串口發(fā)送數據后,可調用_sleep? 函數使輔助線程休眠一段時間,以便使PLC有充分的時間返回數據;接著再調用CSerialPort類中的ReadPort()函數并從串口讀數據,然后再調用_sleep()函數使輔助線程再休眠一定的時間。這樣設計后,當進行串口通信時,主線程就能繼續(xù)完成監(jiān)控功能和處理其他事務。輔助線程函數的主要代碼如下:

UINT SerialPro(void* param)

{

Ccrystal* mdlg=(Ccrystal*)param?

CString str;

int flag=1;

//如果初始化串口失敗返回

if(!InitPort(“com2”))

{AfxMessageBox(“打開串口2失敗”);

return 0;

}

//循環(huán)讀寫串口,直到結束

while(flag)

{

//這里把要發(fā)送的數據傳送給變量str

……

//向串口寫數據

mdlg->serial.WritePort(hport,str);

//讓輔助線程休眠100ms

_sleep(100);

//從串口讀數據并賦給變量str

str=mdlg->serial.ReadPort(hport);

//這里把從串口得到的數據進行處理

……

5 結束語

運用面向對象方法和多線程技術設計的通用串口通信類CSerialPort類,通過對Windows API函數的封裝使串口通信變得簡單方便、容易維護。目前,該軟件系統已成功地應用于金剛石合成控制系統,并成功解決了RS-232與RS-485兩種串口通信的問題。經過幾個月的運行表明,該串口通信軟件工作穩(wěn)定,出色地完成了系統的實時監(jiān)控和顯示任務。此外,由于采用了面向對象的方法和模塊化設計,該軟件的維護和升級十分方便;同時該系統具有很好的移植性,按照不同需求稍微改動一些代碼就可以應用于其它控制系統中。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉