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

   摘要:介紹了分布式控制系統(tǒng)中上位PC機與下位單片機異步串行通信的通信協(xié)議;同時介紹了在VC++6.0環(huán)境下用PComm編寫的PC機通信程序來實現(xiàn)上位機和下位機異步串行通信的方法,給出了PComm編程實例和下位機程序模塊流程圖。

    關鍵詞:分布式控制系統(tǒng);異步;串行通信;PComm

在由一臺PC機(上位機)和多臺單片機(下位機)構成的分布式控制系統(tǒng)中,單片機主要負責實時數(shù)據采集,并將初步處理后的數(shù)據通過串行口傳送給PC機?以便由PC機串行口的命令對單片機進行控制,同時通過打印機或顯示器向用戶隨時提供各種統(tǒng)計報表和整個控制過程的具體數(shù)據。在這樣的分布式控制系統(tǒng)中,單片機與微機之間的多路通信是整個系統(tǒng)的關鍵,本文將介紹在提高通信的準確性、可靠性和效率的前提下,用PComm開發(fā)PC機與單片機的通信程序的解決方案。

1 通信協(xié)議

為了保證可靠的通信,必須有一套完善的通信協(xié)議。分布式控制系統(tǒng)中的每臺單片機均有唯一的番號。通信開始時,先由PC機呼叫被叫單片機的番號,單片機在接收到微機的呼叫后,首先判斷是不是自己的番號,如果是,則發(fā)送呼叫應答信號,否則不予理睬。微機在接收到呼叫應答信號之后,將向單片機發(fā)出通信命令字符串。以下是上位PC機協(xié)議的格式:

單片機號 單片機號 命令碼 命令碼 停止標志  

其中,單片機號代表現(xiàn)場第幾臺單片機,占用1個字節(jié),發(fā)送兩次的目的是為了防止干擾;命令碼則代表上位機向下位機發(fā)布的工作命令,它也占用1個字節(jié),發(fā)送兩次的目的也是為了防止干擾。而停止標志則表明一次命令發(fā)送完畢。使用時可依據該標志判斷上位機的命令是否發(fā)送完畢。

下位機協(xié)議格式如下:

數(shù)據塊 校驗位

該格式中,數(shù)據塊為下位機上傳到上位PC機的數(shù)據。校驗位則用于PC機對收到的數(shù)據進行奇偶校驗(占1個字節(jié))。校驗正確后,可將數(shù)據寫入內存,否則發(fā)出數(shù)據傳輸錯誤信息,以要求單片機重新傳輸數(shù)據。

另外,作為一個完整的通信協(xié)議,只有上述約定還不夠,還必須在發(fā)送和接收數(shù)據的時間間隔上加以限制。否則,很可能由于某些原因而造成無限制的等待對方應答,使整個系統(tǒng)處于工作不正常狀態(tài),或者延誤其它動作的處理。具體時間限制可根據通信內容、CPU處理速度,再加上適當?shù)挠嗔縼泶_定。

2 單片機通信程序設計

設計單片機通信程序時,必須充分發(fā)揮單片機的效率。由于單片機多應用于實時性較強的控制場合,因此,應將及時響應和控制對象的動作放在優(yōu)先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時間?;谏鲜隹紤],筆者在設計單片機通信程序時,將通信程序分為接收中斷處理程序、發(fā)送中斷處理程序和通信處理程序3部分,并將這3部分程序巧妙地進行組合,從而構成整個單片機的通信程序。

2.1 接收中斷處理程序

接收中斷處理程序主要負責接收微機發(fā)送到單片機接收緩沖區(qū)(不對數(shù)據進行處理,以減少中斷占用的時間)的數(shù)據,當接收到規(guī)定的字符數(shù)或在一定等待時間內無后續(xù)數(shù)據之后,置接收完畢標志,以表明接收緩沖區(qū)中有待處理的數(shù)據并請求通信處理程序對其進行處理。其流程圖如圖1所示。

2.2 發(fā)送中斷處理程序

發(fā)送中斷處理程序主要負責向微機發(fā)送數(shù)據,發(fā)送中斷一般處于禁止狀態(tài),只有在通信處理程序將需要發(fā)送的數(shù)據寫入單片機的發(fā)送緩沖區(qū),并將發(fā)送中斷置為允許方式后,發(fā)送中斷才開始工作,并將緩沖區(qū)數(shù)據逐一發(fā)送給微機。當發(fā)送完指定長度的數(shù)據后(發(fā)送緩沖區(qū)為空),發(fā)送中斷處理程序將發(fā)送中斷置為禁止(關閉)狀態(tài),直到通信處理程序將其再一次開放。其流程如圖2所示。

2.3 通信處理程序

考慮到盡量減少通信中斷程序所占用的CPU時間,通信處理程序被放在普通主循環(huán)中調用。只有在接收到上位機送來的一串數(shù)據,且接收完畢標志為“ON”時,才能真正進行處理,否則不進行處理。這樣就可利用送信后等待微機回答的時間進行別的處理,從而消除了空等待時間,提高了CPU的利用率。通信處理程序可根據通信處理狀態(tài)的不同來分別執(zhí)行不同的路徑。在進入相應路徑后,首先對接收緩沖區(qū)的內容進行正確性檢查,檢查正確后再根據通信要求或協(xié)議規(guī)定對緩沖區(qū)的內容進行處理(包括內存的寫入和讀出),同時重新組織數(shù)據到發(fā)送緩沖區(qū)以向微機發(fā)送數(shù)據,最后退出通信處理程序以執(zhí)行其它的程序。待接收中斷程序重新接收到數(shù)據并將接收完標志置為“ON”后,可重新進入通信處理程序進行處理。

3?。校脵C通信程序設計

在VC++6.0環(huán)境下,利用PC機串口進行通信的常用方法有兩種?第一是調用Windows API?Appli- cation Program Interface?函數(shù);第二是使用ActiveX的MSComm控件。第一種方法需聲明及調用許多API函數(shù),十分煩瑣。而第二種方法是將API函數(shù)封裝起來,這種方法雖較為簡便,但不能滿足復雜情況下的通信要求。本文將介紹另外一種用PComm處理PC機的串口通信方法。

PComm是一種用于處理多進程/多線程的串口通信軟件開發(fā)工具,它提供了許多基于API函數(shù)的命令集來處理串口通信,可以在Visual C++、Visual Basic、Delphi 5.0等多種開發(fā)工具下使用,且具有傳輸速度快、使用靈活方便等特點,能夠滿足復雜情況下的串口通信要求。

3.1 Pcomm的主要命令碼

PComm的主要命令碼有以下幾種:

● sio open(port);

用于設置并打開串口,其中port的1、2、3、4分別代表COM1、COM2、COM3、COM4。當返回值為0時,表示串口已經打開,否則為串口打開出錯。

● sio close(port);

關閉串口,當返回值為0時,表示串口已經關閉,否則為串口關閉出錯。

● sio ioctl(port?baud?mode);

用于設置串口波特率、校驗位、數(shù)據位、停止位等參數(shù)。

● sio getch();

從串口輸入緩沖區(qū)讀出一個字符,返回值為0表示已收到數(shù)據。

● sio-read(port?buf?len);

用于從串口輸入緩沖區(qū)讀出一串字符,buf代表字符串數(shù)組len代表數(shù)組長度,返回值為0表示未收到字符,大于0代表收到字符的個數(shù)。

● sio-SetReadTimeouts?port?TotalTimeouts(Inter-valTimeouts);

在設定的等待時間內連續(xù)讀串口輸入緩沖區(qū),TotalTimeouts代表設定的等待時間,IntervalTimeouts代表每次讀出的間隔時間。

● sio-flush(port?func);

用于清空緩沖區(qū)。當func為0時清空輸入緩沖區(qū),為1時清空輸出緩沖區(qū),為2時清空輸入輸出緩沖區(qū)。

● sio-putch(port?term);

用于向串口緩沖區(qū)發(fā)送一個字符,返回值為0時表示發(fā)送正確,否則表示發(fā)送錯誤。

● sio-write(port?buf?len);

用于從串口緩沖區(qū)發(fā)送一串字符,buf代表字符串數(shù)組,len代表數(shù)組長度。

3.2 實現(xiàn)過程

在用Pcomm處理PC機的串口通信時,其實現(xiàn)過程如下:

(1)啟動VC++ 6.0,新建一個基于對話框的應用程序TxRx。同時增加靜態(tài)文本、編輯框和按鈕控件,并為它們添加相應的變量。其屬性見表1。

表1 TxRx應用程序的屬性

控  件 ID 變量名 類  型
按  鈕 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”頭文件,此后便可調用其提供的通信命令集。

(3)在TxRxDlg.cpp文件中添加有關程序代碼,也就是在OnInitiDialog??函數(shù)中的TODO語句后加入以下代碼:

//TODO? Add extra initialization here

int ret?port=1?

ret=sio open?port?? //打開串口1

sio DTR?port?0?? //置DTR為低電平

sio ioctl?port?B19200?P NONE|BIT 8| STOP 1?? //設置波特率為19200,8位數(shù)據位,

1位停止位,無校驗位。

3.3 數(shù)據通信

下面舉例說明PC機如何通過串口向單片機發(fā)送并接收數(shù)據。

void CTXRXDlg??SendRecv??//收發(fā)數(shù)據子函數(shù)

{

while?1?

{

int ret1?

sio flush?port?2;//清空串口輸入輸出緩沖區(qū)

sio- write(port,1,5);

向串口緩沖區(qū)發(fā)送5個字符

sio- SetReadTimeouts(port,40,1);

//在40ms內每隔1ms讀一次串口

ret1=sio-read(port,RecvBuf,1);

if (ret1>0)

{

sio- close(port);

break;

}

//若收到數(shù)據,關閉串口,跳出循環(huán)

else;

//若未收到數(shù)據,對串口再一次發(fā)數(shù)據并再次查詢接收。

}

}

4 結束語

本文給出了分布式控制系統(tǒng)中上位PC機與下位單片機之間進行異步串行通信的解決方案。此方案在實際運行過程中,運行穩(wěn)定,通信性能良好,從而較好地解決了上位機與下位機之間的通信問題。

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

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

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

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

關鍵字: AWS AN BSP 數(shù)字化

倫敦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è)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

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

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

關鍵字: 騰訊 編碼器 CPU

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

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

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

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

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

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

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

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

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

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