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

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]摘要:介紹了分布式控制系統(tǒng)中上位PC機(jī)與下位單片機(jī)異步串行通信的通信協(xié)議;同時(shí)介紹了在VC++6.0環(huán)境下用PComm編寫(xiě)的PC機(jī)通信程序來(lái)實(shí)現(xiàn)上位機(jī)和下位機(jī)異步串行通信的方法,給出了PComm編程實(shí)例和下位機(jī)程序模塊流程

摘要:介紹了分布式控制系統(tǒng)中上位PC機(jī)與下位單片機(jī)異步串行通信的通信協(xié)議;同時(shí)介紹了在VC++6.0環(huán)境下用PComm編寫(xiě)的PC機(jī)通信程序來(lái)實(shí)現(xiàn)上位機(jī)和下位機(jī)異步串行通信的方法,給出了PComm編程實(shí)例和下位機(jī)程序模塊流程圖。 關(guān)鍵詞:分布式控制系統(tǒng);異步;串行通信;PComm 在由一臺(tái)PC機(jī)(上位機(jī))和多臺(tái)單片機(jī)(下位機(jī))構(gòu)成的分布式控制系統(tǒng)中,單片機(jī)主要負(fù)責(zé)實(shí)時(shí)數(shù)據(jù)采集,并將初步處理后的數(shù)據(jù)通過(guò)串行口傳送給PC機(jī)?以便由PC機(jī)串行口的命令對(duì)單片機(jī)進(jìn)行控制,同時(shí)通過(guò)打印機(jī)或顯示器向用戶(hù)隨時(shí)提供各種統(tǒng)計(jì)報(bào)表和整個(gè)控制過(guò)程的具體數(shù)據(jù)。在這樣的分布式控制系統(tǒng)中,單片機(jī)與微機(jī)之間的多路通信是整個(gè)系統(tǒng)的關(guān)鍵,本文將介紹在提高通信的準(zhǔn)確性、可靠性和效率的前提下,用PComm開(kāi)發(fā)PC機(jī)與單片機(jī)的通信程序的解決方案。 1 通信協(xié)議 為了保證可靠的通信,必須有一套完善的通信協(xié)議。分布式控制系統(tǒng)中的每臺(tái)單片機(jī)均有唯一的番號(hào)。通信開(kāi)始時(shí),先由PC機(jī)呼叫被叫單片機(jī)的番號(hào),單片機(jī)在接收到微機(jī)的呼叫后,首先判斷是不是自己的番號(hào),如果是,則發(fā)送呼叫應(yīng)答信號(hào),否則不予理睬。微機(jī)在接收到呼叫應(yīng)答信號(hào)之后,將向單片機(jī)發(fā)出通信命令字符串。以下是上位PC機(jī)協(xié)議的格式: 單片機(jī)號(hào)單片機(jī)號(hào)命令碼命令碼停止標(biāo)志 其中,單片機(jī)號(hào)代表現(xiàn)場(chǎng)第幾臺(tái)單片機(jī),占用1個(gè)字節(jié),發(fā)送兩次的目的是為了防止干擾;命令碼則代表上位機(jī)向下位機(jī)發(fā)布的工作命令,它也占用1個(gè)字節(jié),發(fā)送兩次的目的也是為了防止干擾。而停止標(biāo)志則表明一次命令發(fā)送完畢。使用時(shí)可依據(jù)該標(biāo)志判斷上位機(jī)的命令是否發(fā)送完畢。 下位機(jī)協(xié)議格式如下: 數(shù)據(jù)塊校驗(yàn)位該格式中,數(shù)據(jù)塊為下位機(jī)上傳到上位PC機(jī)的數(shù)據(jù)。校驗(yàn)位則用于PC機(jī)對(duì)收到的數(shù)據(jù)進(jìn)行奇偶校驗(yàn)(占1個(gè)字節(jié))。校驗(yàn)正確后,可將數(shù)據(jù)寫(xiě)入內(nèi)存,否則發(fā)出數(shù)據(jù)傳輸錯(cuò)誤信息,以要求單片機(jī)重新傳輸數(shù)據(jù)。 另外,作為一個(gè)完整的通信協(xié)議,只有上述約定還不夠,還必須在發(fā)送和接收數(shù)據(jù)的時(shí)間間隔上加以限制。否則,很可能由于某些原因而造成無(wú)限制的等待對(duì)方應(yīng)答,使整個(gè)系統(tǒng)處于工作不正常狀態(tài),或者延誤其它動(dòng)作的處理。具體時(shí)間限制可根據(jù)通信內(nèi)容、CPU處理速度,再加上適當(dāng)?shù)挠嗔縼?lái)確定。 2 單片機(jī)通信程序設(shè)計(jì)


設(shè)計(jì)單片機(jī)通信程序時(shí),必須充分發(fā)揮單片機(jī)的效率。由于單片機(jī)多應(yīng)用于實(shí)時(shí)性較強(qiáng)的控制場(chǎng)合,因此,應(yīng)將及時(shí)響應(yīng)和控制對(duì)象的動(dòng)作放在優(yōu)先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時(shí)間?;谏鲜隹紤],筆者在設(shè)計(jì)單片機(jī)通信程序時(shí),將通信程序分為接收中斷處理程序、發(fā)送中斷處理程序和通信處理程序3部分,并將這3部分程序巧妙地進(jìn)行組合,從而構(gòu)成整個(gè)單片機(jī)的通信程序。 2.1 接收中斷處理程序 接收中斷處理程序主要負(fù)責(zé)接收微機(jī)發(fā)送到單片機(jī)接收緩沖區(qū)(不對(duì)數(shù)據(jù)進(jìn)行處理,以減少中斷占用的時(shí)間)的數(shù)據(jù),當(dāng)接收到規(guī)定的字符數(shù)或在一定等待時(shí)間內(nèi)無(wú)后續(xù)數(shù)據(jù)之后,置接收完畢標(biāo)志,以表明接收緩沖區(qū)中有待處理的數(shù)據(jù)并請(qǐng)求通信處理程序?qū)ζ溥M(jìn)行處理。其流程圖如圖1所示。 2.2 發(fā)送中斷處理程序 發(fā)送中斷處理程序主要負(fù)責(zé)向微機(jī)發(fā)送數(shù)據(jù),發(fā)送中斷一般處于禁止?fàn)顟B(tài),只有在通信處理程序?qū)⑿枰l(fā)送的數(shù)據(jù)寫(xiě)入單片機(jī)的發(fā)送緩沖區(qū),并將發(fā)送中斷置為允許方式后,發(fā)送中斷才開(kāi)始工作,并將緩沖區(qū)數(shù)據(jù)逐一發(fā)送給微機(jī)。當(dāng)發(fā)送完指定長(zhǎng)度的數(shù)據(jù)后(發(fā)送緩沖區(qū)為空),發(fā)送中斷處理程序?qū)l(fā)送中斷置為禁止(關(guān)閉)狀態(tài),直到通信處理程序?qū)⑵湓僖淮伍_(kāi)放。其流程如圖2所示。 2.3 通信處理程序 考慮到盡量減少通信中斷程序所占用的CPU時(shí)間,通信處理程序被放在普通主循環(huán)中調(diào)用。只有在接收到上位機(jī)送來(lái)的一串?dāng)?shù)據(jù),且接收完畢標(biāo)志為“ON”時(shí),才能真正進(jìn)行處理,否則不進(jìn)行處理。這樣就可利用送信后等待微機(jī)回答的時(shí)間進(jìn)行別的處理,從而消除了空等待時(shí)間,提高了CPU的利用率。通信處理程序可根據(jù)通信處理狀態(tài)的不同來(lái)分別執(zhí)行不同的路徑。在進(jìn)入相應(yīng)路徑后,首先對(duì)接收緩沖區(qū)的內(nèi)容進(jìn)行正確性檢查,檢查正確后再根據(jù)通信要求或協(xié)議規(guī)定對(duì)緩沖區(qū)的內(nèi)容進(jìn)行處理(包括內(nèi)存的寫(xiě)入和讀出),同時(shí)重新組織數(shù)據(jù)到發(fā)送緩沖區(qū)以向微機(jī)發(fā)送數(shù)據(jù),最后退出通信處理程序以執(zhí)行其它的程序。待接收中斷程序重新接收到數(shù)據(jù)并將接收完標(biāo)志置為“ON”后,可重新進(jìn)入通信處理程序進(jìn)行處理。 3 PC機(jī)通信程序設(shè)計(jì) 在VC++6.0環(huán)境下,利用PC機(jī)串口進(jìn)行通信的常用方法有兩種?第一是調(diào)用Windows API?Appli- cation Program Interface函數(shù);第二是使用ActiveX的MSComm控件。第一種方法需聲明及調(diào)用許多API函數(shù),十分煩瑣。而第二種方法是將API函數(shù)封裝起來(lái),這種方法雖較為簡(jiǎn)便,但不能滿(mǎn)足復(fù)雜情況下的通信要求。本文將介紹另外一種用PComm處理PC機(jī)的串口通信方法。 PComm是一種用于處理多進(jìn)程/多線(xiàn)程的串口通信軟件開(kāi)發(fā)工具,它提供了許多基于API函數(shù)的命令集來(lái)處理串口通信,可以在Visual C++、Visual Basic、Delphi 5.0等多種開(kāi)發(fā)工具下使用,且具有傳輸速度快、使用靈活方便等特點(diǎn),能夠滿(mǎn)足復(fù)雜情況下的串口通信要求。 3.1 Pcomm的主要命令碼 PComm的主要命令碼有以下幾種: ● sio open(port); 用于設(shè)置并打開(kāi)串口,其中port的1、2、3、4分別代表COM1、COM2、COM3、COM4。當(dāng)返回值為0時(shí),表示串口已經(jīng)打開(kāi),否則為串口打開(kāi)出錯(cuò)。 ● sio close(port); 關(guān)閉串口,當(dāng)返回值為0時(shí),表示串口已經(jīng)關(guān)閉,否則為串口關(guān)閉出錯(cuò)。 ● sio ioctl(port?baud?mode); 用于設(shè)置串口波特率、校驗(yàn)位、數(shù)據(jù)位、停止位等參數(shù)。 ● sio getch(); 從串口輸入緩沖區(qū)讀出一個(gè)字符,返回值為0表示已收到數(shù)據(jù)。 ● sio-read(port?buf?len); 用于從串口輸入緩沖區(qū)讀出一串字符,buf代表字符串?dāng)?shù)組len代表數(shù)組長(zhǎng)度,返回值為0表示未收到字符,大于0代表收到字符的個(gè)數(shù)。 ● sio-SetReadTimeouts?port?TotalTimeouts(Inter-valTimeouts); 在設(shè)定的等待時(shí)間內(nèi)連續(xù)讀串口輸入緩沖區(qū),TotalTimeouts代表設(shè)定的等待時(shí)間,IntervalTimeouts代表每次讀出的間隔時(shí)間。 ● sio-flush(port?func); 用于清空緩沖區(qū)。當(dāng)func為0時(shí)清空輸入緩沖區(qū),為1時(shí)清空輸出緩沖區(qū),為2時(shí)清空輸入輸出緩沖區(qū)。 ● sio-putch(port?term); 用于向串口緩沖區(qū)發(fā)送一個(gè)字符,返回值為0時(shí)表示發(fā)送正確,否則表示發(fā)送錯(cuò)誤。 ● sio-write(port?buf?len); 用于從串口緩沖區(qū)發(fā)送一串字符,buf代表字符串?dāng)?shù)組,len代表數(shù)組長(zhǎng)度。 3.2 實(shí)現(xiàn)過(guò)程 在用Pcomm處理PC機(jī)的串口通信時(shí),其實(shí)現(xiàn)過(guò)程如下: (1)啟動(dòng)VC++ 6.0,新建一個(gè)基于對(duì)話(huà)框的應(yīng)用程序TxRx。同時(shí)增加靜態(tài)文本、編輯框和按鈕控件,并為它們添加相應(yīng)的變量。其屬性見(jiàn)表1。 表1 TxRx應(yīng)用程序的屬性 控 件 ID 變量名類(lèi) 型 按 鈕 IDC_TRSMITT 發(fā)送按鈕  Edit IDC_TXDATA M_TxData Cstring Edit IDC_RXDATA M_RxData Cstring (2) 將Pcomm.h和Pcomm.lib加入到工程中,并在TxRxDlg.cpp文件中加入#include “Pcomm.h”頭文件,此后便可調(diào)用其提供的通信命令集。 (3)在TxRxDlg.cpp文件中添加有關(guān)程序代碼,也就是在OnInitiDialog?函數(shù)中的TODO語(yǔ)句后加入以下代碼: //TODO? Add extra initialization here int ret?port=1? ret=sio open?port? //打開(kāi)串口1 sio DTR?port?0? //置DTR為低電平 sio ioctl?port?B19200?P NONE|BIT 8| STOP 1? //設(shè)置波特率為19200,8位數(shù)據(jù)位, 1位停止位,無(wú)校驗(yàn)位。 3.3 數(shù)據(jù)通信 下面舉例說(shuō)明PC機(jī)如何通過(guò)串口向單片機(jī)發(fā)送并接收數(shù)據(jù)。 void CTXRXDlg??SendRecv?//收發(fā)數(shù)據(jù)子函數(shù) {


while?1 { int ret1? sio flush?port?2;//清空串口輸入輸出緩沖區(qū) sio- write(port,1,5); 向串口緩沖區(qū)發(fā)送5個(gè)字符 sio- SetReadTimeouts(port,40,1); //在40ms內(nèi)每隔1ms讀一次串口 ret1=sio-read(port,RecvBuf,1); if (ret1>0) { sio- close(port); break; } //若收到數(shù)據(jù),關(guān)閉串口,跳出循環(huán) else; //若未收到數(shù)據(jù),對(duì)串口再一次發(fā)數(shù)據(jù)并再次查詢(xún)接收。 } } 4 結(jié)束語(yǔ) 本文給出了分布式控制系統(tǒng)中上位PC機(jī)與下位單片機(jī)之間進(jìn)行異步串行通信的解決方案。此方案在實(shí)際運(yùn)行過(guò)程中,運(yùn)行穩(wěn)定,通信性能良好,從而較好地解決了上位機(jī)與下位機(jī)之間的通信問(wèn)題。

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

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

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

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

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉