![基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc_第1頁](http://file4.renrendoc.com/view/1644d5e9e34de86d009da2b8f887d6d2/1644d5e9e34de86d009da2b8f887d6d21.gif)
![基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc_第2頁](http://file4.renrendoc.com/view/1644d5e9e34de86d009da2b8f887d6d2/1644d5e9e34de86d009da2b8f887d6d22.gif)
![基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc_第3頁](http://file4.renrendoc.com/view/1644d5e9e34de86d009da2b8f887d6d2/1644d5e9e34de86d009da2b8f887d6d23.gif)
![基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc_第4頁](http://file4.renrendoc.com/view/1644d5e9e34de86d009da2b8f887d6d2/1644d5e9e34de86d009da2b8f887d6d24.gif)
![基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc_第5頁](http://file4.renrendoc.com/view/1644d5e9e34de86d009da2b8f887d6d2/1644d5e9e34de86d009da2b8f887d6d25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc文檔可直接使用可編輯,歡迎下載
基于MFC網(wǎng)絡(luò)通信設(shè)計基于MFC網(wǎng)絡(luò)通信設(shè)計【實用文檔】doc文檔可直接使用可編輯,歡迎下載王忠亮2017—1-5250593736@軟件工具VisualStudio2013系統(tǒng)平臺Windows764bit設(shè)計目標設(shè)計一個基于對話框的應(yīng)用軟件,使兩臺PC機之間實現(xiàn)網(wǎng)絡(luò)通信,一臺為客戶機,另一臺為服務(wù)器.設(shè)計原理在客戶—服務(wù)器方式下,實現(xiàn)網(wǎng)絡(luò)程序的socket通信。客戶和服務(wù)器是指通信中所涉及的兩個應(yīng)用進程,客戶-服務(wù)器方式所描述的是進程之間服務(wù)和被服務(wù)的關(guān)系。一臺PC機運行客戶程序,而另一臺PC機運行服務(wù)器程序。該設(shè)計只實現(xiàn)一個最簡單的socket通信:單方向通信。只有客戶向服務(wù)器發(fā)送消息,并且也只由客戶主動斷開連接??蛻簦髈cket和服務(wù)器socket之間的關(guān)系如圖:服務(wù)器程序中包含兩個socket:監(jiān)聽socket和服務(wù)socket。監(jiān)聽socket響應(yīng)客戶socket的連接請求,一旦收到連接請求,則創(chuàng)建服務(wù)socket。服務(wù)socket負責接收客戶socket發(fā)送過來的消息,并隨時響應(yīng)客戶socket的斷開連接請求.進一步細化上面過程,可得到Socket間通信流程圖:設(shè)計步驟創(chuàng)建客戶端工程打開VisualStudio2013工具,建立一個基于對話框的MFC項目,項目名稱NetcommClient。創(chuàng)建客戶socket類選擇PROJECT-〉AddClass..。,如圖所示:選擇MFC類:為新類命名,這里筆者命名為CClientSocket(即客戶socket類):客戶端界面設(shè)計一個IPAddresssControl,用于設(shè)置服務(wù)器IP地址.一個列表框,用于顯示操作指令信息。兩個編輯框,一個用于設(shè)置通信端口號,一個用于輸入發(fā)送消息。五個按鈕,其中OK、Cancel按鈕為界面默認,可以保留?!斑B接服務(wù)器"按鈕用于啟動客戶socket發(fā)出連接請求.“斷開連接”按鈕用于關(guān)閉客戶socket與服務(wù)器的連接。“發(fā)送”按鈕啟動消息發(fā)送。客戶端源代碼編寫聲明類對象在對話框頭文件里聲明客戶socket類對象:添加控件變量IP地址控件變量為IP地址控件添加變量:端口號變量為端口號添加無符號整型變量:列表框控件變量為列表框添加控件變量:發(fā)送消息變量事件函數(shù)連接服務(wù)器雙擊“連接服務(wù)器"按鈕,編寫此按鈕單擊事件函數(shù):斷開連接雙擊“斷開連接”按鈕,編寫此按鈕單擊事件函數(shù):消息發(fā)送雙擊“發(fā)送”按鈕,編寫此按鈕單擊事件函數(shù):網(wǎng)絡(luò)事件響應(yīng)函數(shù)重載客戶socket類的網(wǎng)絡(luò)事件OnConnect函數(shù):由于OnConnect函數(shù)需要調(diào)用主窗口資源,因此需要include主窗口的頭文件:創(chuàng)建服務(wù)器工程打開VisualStudio2013工具,建立一個基于對話框的MFC項目,項目名稱NetcommServer.創(chuàng)建服務(wù)器端的類服務(wù)器端需要兩個socket類:監(jiān)聽socket類和服務(wù)socket類.選擇PROJECT->AddClass.。.,如圖所示:選擇MFC類:為新類命名,監(jiān)聽socket類命名為:CListenSocket,服務(wù)socket類命名為:CServerSocket.服務(wù)器端界面設(shè)計一個IPAddresssControl,用于設(shè)置服務(wù)器IP地址.一個列表框,用于顯示操作指令信息和接收消息.一個編輯框,用于設(shè)置通信端口號。四個按鈕,其中OK、Cancel按鈕為界面默認,可以保留?!伴_始監(jiān)聽”按鈕啟動監(jiān)聽網(wǎng)絡(luò)連接請求?!巴V贡O(jiān)聽”按鈕用于關(guān)閉監(jiān)聽功能。服務(wù)器端源代碼編寫聲明類對象在對話框頭文件里聲明監(jiān)聽socket類對象和服務(wù)socket類對象:添加控件變量IP地址控件變量為IP地址控件添加變量:端口號變量為端口號添加無符號整型變量:列表框控件變量為列表框添加控件變量:事件函數(shù)啟動監(jiān)聽雙擊“開始監(jiān)聽”按鈕,編寫此按鈕單擊事件函數(shù):停止監(jiān)聽雙擊“停止監(jiān)聽”按鈕,編寫此按鈕單擊事件函數(shù):網(wǎng)絡(luò)事件響應(yīng)函數(shù)重載監(jiān)聽socket類的OnAccept函數(shù):由于OnAccept函數(shù)需要調(diào)用主窗口資源,因此需要include主窗口的頭文件:重載服務(wù)socket類的OnReceive函數(shù):由于OnReceive函數(shù)需要調(diào)用主窗口資源,因此需要include主窗口的頭文件:重載服務(wù)socket類的OnClose函數(shù):運行效果客戶端啟動操作:設(shè)置服務(wù)器IP地址—〉設(shè)置端口號—>點擊“連接服務(wù)器”->輸入發(fā)送消息->點擊“發(fā)送按鈕”.停止工作:點擊“斷開連接”按鈕—〉點擊“OK”或“Cancel”按鈕退出(或點擊右上角關(guān)閉界面)。服務(wù)器端啟動操作:設(shè)置服務(wù)器IP地址->設(shè)置端口號—〉點擊“開始監(jiān)聽”.停止工作:點擊“停止監(jiān)聽”按鈕—〉點擊“OK”或“Cancel”按鈕退出(或點擊右上角關(guān)閉界面).基于TCP協(xié)議下的簡單網(wǎng)絡(luò)通信與實現(xiàn)摘要本文設(shè)計并實現(xiàn)了在Windows下基于局域網(wǎng)內(nèi)的TCP協(xié)議的簡單即時通信系統(tǒng),系統(tǒng)采用TCP/IP模式,底層通信通過SOCKET套接字接口對端口進行監(jiān)聽,當有消息發(fā)送來時,做出相應(yīng)的處理,服務(wù)器負責客戶端的登錄驗證。本文首先討論了套接字創(chuàng)建、綁定、將套接字設(shè)置為監(jiān)聽模式、接受信息和關(guān)閉套接字從而實現(xiàn)簡單的網(wǎng)絡(luò)通信,然后闡述了如何使用C++來模擬基于TCP協(xié)議下的客戶服務(wù)方式的網(wǎng)絡(luò)通信過程。由于在此設(shè)計中主要是使用C程序的形式來模擬TCP協(xié)議的傳輸方式,從而實現(xiàn)面向?qū)ο蟮目煽總鬏?,在這種情況下無需對IP協(xié)議進行討論。關(guān)鍵字:套接字TCP協(xié)議目錄1、引言…………………....1.1、課程背景...............................................................................................................1.2、相關(guān)技術(shù)介紹.......................................................................................................1.3、TCP協(xié)議…………1.4、TCP——傳輸控制協(xié)議………….1.5、套接字……………2、系統(tǒng)框架.........................................................................................................................3、系統(tǒng)設(shè)計流程圖.............................................................................................................4、系統(tǒng)的實現(xiàn).....................................................................................................................4.1、服務(wù)器端程序..............................................................................................................4.2、客戶端程序..................................................................................................................結(jié)論……………………參考文獻………………1、引言1.1、課題背景TCP/IP起源于美國國防部高級研究規(guī)劃部署(DARPA)的一項研究計劃——實現(xiàn)若干臺主機的相互通信?,F(xiàn)在,TCP/IP已成為Internet上通信的工業(yè)標準。因為OSI模型的七層參考模型比較復雜,并且在實際運用中難以實現(xiàn),所以目前應(yīng)用比較多的是TCP/IP模型,該模型包括4個層次:應(yīng)用層運輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口層對于TCP/IP網(wǎng)絡(luò)層次模式,核心協(xié)議是網(wǎng)絡(luò)層的IP協(xié)議,和運輸層的TCP協(xié)議,這也是為何成為TCP/IP協(xié)議的緣由。1.2、相關(guān)技術(shù)介紹NET開發(fā)平臺及C#.NET開發(fā)語言NET框架是Microsoft公司推出的一種全新的開發(fā)平臺,提供了統(tǒng)一的、面向?qū)ο蟛⑶铱梢詳U展的編程類庫和完善的集成開發(fā)環(huán)境,大大簡化了應(yīng)用程序的開發(fā)過程,并且具有良好的移植性和安全性。微軟為了推行.NET戰(zhàn)略,特別為.NET平臺設(shè)計了一種語言——C#。C#是由C和C++派生而來的一種“簡單、流行、面向?qū)ο蟆㈩愋桶踩钡某绦蛟O(shè)計語言,其綜合了Visualbasic的高效率和C++的強大功能,然而更多的人感覺C#更類似JAVA。事實上C#融合了大量的JAVA思想,C#是.NET的關(guān)鍵性語言,它是整個.NET平臺的基礎(chǔ)。與C#相比,.NET所支持的其它語言顯然是配角,包括VC++.NET在內(nèi)。但是微軟并沒有打算放棄VC++.NET,相反,微軟對VC++.NET有著另一番獨特的打算,VC++.NET的定位與C#不完全重合,VC++.NET應(yīng)用范圍仍強于C#,這一點無論對微軟公司還是軟件業(yè)應(yīng)用現(xiàn)狀都非常重要。可見VC++.NET在NET框架中已經(jīng)退化成了底層的語言了,就像C++之前的標準C語言一樣,以后將只有開發(fā)底層或桌面程序的程序員使用它。它雖然仍舊強大,但是已經(jīng)不是主流,而主流就是C#語言。1.3、TCP協(xié)議TCP/IP網(wǎng)絡(luò)協(xié)議協(xié)議是對等的網(wǎng)絡(luò)實體之間通信的規(guī)則,可以簡單地理解為網(wǎng)絡(luò)上各計算機彼此交流的一種“語言”。網(wǎng)絡(luò)通信協(xié)議設(shè)計的基本原則是層次化,層和協(xié)議的集合被稱為網(wǎng)絡(luò)體系結(jié)構(gòu)。相鄰層之間的接口定義了下層向上層提供的基本操作和服務(wù),下層向上層提供的服務(wù)分兩種形式:面向連接的服務(wù)和無連接的服務(wù)。計算機網(wǎng)絡(luò)中已經(jīng)形成的網(wǎng)絡(luò)體系結(jié)構(gòu)主要有兩個:OSI參考模型和TCP/IP參考模型。TCP/IP參考模型是因特網(wǎng)(Internet)的基礎(chǔ)。和OSI的7層協(xié)議相比,TCP/IP協(xié)議只有4個層次。通常說的TCP/IP是一組協(xié)議的總稱,TCP/IP實際上是一個協(xié)議族,包括100多個相互關(guān)聯(lián)的協(xié)議,其中IP(InternetProtocol,網(wǎng)際協(xié)議)是網(wǎng)絡(luò)層最主要的協(xié)議;TCP(TransmissionControlProtocol,傳輸控制協(xié)議)和UDP(UserDatagramProtocol,用戶數(shù)據(jù)報協(xié)議是傳輸層中最主要的協(xié)議),一般認為IP、TCP、UDP是最根本的三種協(xié)議,是其他協(xié)議的基礎(chǔ)。1.4、TCP——傳輸控制協(xié)議面向連接的通信可以使用可靠通信,在這時候,第四層協(xié)議發(fā)送數(shù)據(jù)接收方的確認,如果未收到數(shù)據(jù)或者數(shù)據(jù)被損壞,則請求重新傳輸。TCP協(xié)議就使用這種可靠通信。使用TCP協(xié)議的應(yīng)用層協(xié)議包括HTTP、FTP、SMTP和Telnet等。TCP要求在發(fā)送數(shù)據(jù)之前必須打開連接。服務(wù)器應(yīng)用程序必須執(zhí)行一個稱作被動打開(passiveopen)的操作,以利用一個已知的端口號創(chuàng)建一個鏈接,這是,服務(wù)器并不是對網(wǎng)絡(luò)進行呼叫,而是偵聽并等待引入的請求??蛻魬?yīng)用程序必須執(zhí)行一個主動打開(activeopen),為此,它向服務(wù)器應(yīng)用程序發(fā)送一個同步序列號(SYN)以標識連接。客戶應(yīng)用程序可以將動態(tài)端口號作為本地端口使用。服務(wù)器必須向客戶發(fā)送一個確認(ACK)以及服務(wù)器的序列號(SYN)。隨后,客戶回復一個ACK,這樣就建立了鏈接?,F(xiàn)在可以發(fā)送和接收消息了。接收消息后,總是返回ACK消息。如果在收到ACK之前發(fā)送方已經(jīng)超時,則消息將被放到重發(fā)隊列中以再次發(fā)送。由于它的握制,所以TCP協(xié)議比較復雜并且費時,但此協(xié)議在處理數(shù)據(jù)時對數(shù)據(jù)包的傳送有保障,從而使得在應(yīng)用程序協(xié)議中不需要再包括該功能。1.5、套接字套接字這個術(shù)語并沒有定義某個協(xié)議:它具有兩層含義,但兩者都與一個協(xié)議相關(guān)。第一個含義是套接字編程API,它最初由伯克利大學為BSDUNIX而創(chuàng)建。BSD套接字在經(jīng)過修改后被用作Windows環(huán)境的編程接口(并且被命名為WinSock)。WinSockAPI被包裝在System.Net.sockets命名空間的.NET類中。WindowsSockets是一個獨立于協(xié)議的編程接口,用于編寫網(wǎng)絡(luò)應(yīng)用程序。套接字的第二層含義表示一個用于在進程間進行通信的終端。在TCP/IP中,每個終端都與一個IP地址和一個端口號綁定。我們必須對流式套接字和數(shù)據(jù)報套接字這兩種類型進行區(qū)分。流失套接字用TCP/IP協(xié)議來使用面向連接的通信;另一方面,數(shù)據(jù)報套接字用UDP/IP來使用無連接通信。2、系統(tǒng)框架3、系統(tǒng)設(shè)計4、系統(tǒng)的實現(xiàn)4.1、服務(wù)器端程序#include<Winsock2.h>#include<stdio.h>Voidmain(){//加載套接字庫WORDwVersionRequested;WSADATAwsaDdata;Interror;wVersionRequested=MAKEWORD(1,1);err=WSAStarup(wVersionRequested,&wsaDATA);if(err!=0){return;}If(LOBYTE(wsadata.wVersion)!=1||HIBYTE(wsadata.wVersion)!=1){WSACleanup();Return;}//創(chuàng)建用于監(jiān)聽的套接字SOCKETsockSrv=socket(AF-INET,SOCK-STREAM,0);SOCKADDR-INaddrSrv;addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY);addrSrv.sin-family=AF-INET;addrSrv.sin-port=htons(6000)//綁定套接字Bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//將套接字設(shè)為監(jiān)聽模式,準備接收客戶請求Listen(sockSrv,s);SOCKADDR-INaddrClient;Intlen=sizeof(SOCKADDR);While(1){//等待客戶請求到來SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);CharsendBuf(100);Sprintf(sendBuf,)”Welcom%sto”,ine-ntoa(addrClient.sin-addr));//發(fā)送數(shù)據(jù)Send(sockConn,sendbuf,strlen(sendBuf)+1,0);CharrecvBuf(100);//接受數(shù)據(jù)Recv(sockConn,recvBuf,100,0);//打印接受的數(shù)據(jù)Printf(“%s\n”,recvBuf);//關(guān)閉套接字Closesocket(sockConn);}}4.2、客戶端程序#include<Winsock2.h>#include<stdio.h>Voidmain(){//加載套接字庫WORDwVersionRequested;WSADATAwsaDdata;Interror;wVersionRequested=MAKEWORD(1,1);err=WSAStarup(wVersionRequested,&wsaDATA);if(err!=0){return;}If(LOBYTE(wsadata.wVersion)!=1||HIBYTE(wsadata.wVersion)!=1){WSACleanup();Return;}//創(chuàng)建套接字SOCKETsockSrv=socket(AF-INET,SOCK-STREAM,0);SOCKADDR-INaddrSrv;addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY);addrSrv.sin-family=AF-INET;addrSrv.sin-port=htons(6000)//向服務(wù)器發(fā)出連接請求Connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//接受數(shù)據(jù)CharrecvBuf[100];Recv(sockClient,recvBuf,100,0);Printf(“%s\n”,recvBuf);//發(fā)送數(shù)據(jù)Send(sockClient,”Thisislisi”,strlen(“Thisinlisi”)+1,0);//關(guān)閉套接字Closesocket(sockConn);WSACLeanup();}}結(jié)論在此設(shè)計中僅僅適合于數(shù)量少的計算機間的通信,其中一個缺陷是,當多臺計算機同時進行通信時,會照成網(wǎng)絡(luò)擁塞,可能導致消息傳輸中丟失,此設(shè)計沒有做出解決的方案,但有這樣的方案猜想,為了解決擁塞問題,可以使用慢開始、擁塞避免、快從傳和快恢復算法,進而改進此設(shè)計,但是這會涉及大量的數(shù)學運算。此設(shè)計還存另一個缺陷,沒有實現(xiàn)可靠傳輸,TCP協(xié)議的可靠傳輸機制是用字節(jié)的序號進行傳輸控制,而這里僅是監(jiān)聽端口是否有數(shù)據(jù)發(fā)送,如果有,就接收,沒有就繼續(xù)監(jiān)聽。參考文獻[1]孫鑫,VC++深入詳解[M]北京:電子工業(yè)出版社,2021.7:528-546[2]謝希仁,計算機網(wǎng)絡(luò)[M]北京:電子工業(yè)出版社,2021.1:180-210安康學院學年論文﹙設(shè)計﹚題目基于MATLAB的數(shù)字通信系統(tǒng)仿真設(shè)計學生姓名學號專業(yè)班級指導教師2013年6月23日基于MATLAB的模擬通信系統(tǒng)仿真設(shè)計(作者:張小文)(安康學院電子與信息工程系電子信息工程專業(yè)10級,陜西安康725000)指導教師:朱燕【摘要】通信是通過某種媒體進行的信息傳遞,目的是傳輸信息,通信系統(tǒng)是用以完成信息傳輸過程的技術(shù)系統(tǒng)的總稱,作用是將信息從信源發(fā)送到一個或多個目的地.調(diào)制與解調(diào)在信息的傳輸過程中占據(jù)著重要的地位,是不可或缺的,因此研究系統(tǒng)的調(diào)制和解調(diào)過程就極為重要.MATLAB是集數(shù)值計算、圖形繪制、圖像處理及系統(tǒng)仿真等強大功能于一體的科學計算語言,它強大的矩陣運算和圖形可視化的功能以及豐富的工具箱,為通信系統(tǒng)的調(diào)制和解調(diào)過程的分析提供了極大的方便。本論文首先介紹了通信系統(tǒng)的概念,進而引出調(diào)制和解調(diào),然后介紹了我們常用的幾種調(diào)制和解調(diào)的方法。由于MATLAB具有的強大功能所以詳細介紹了MATLAB通信系統(tǒng)工具箱,并給出了基于MATLAB的通信系統(tǒng)的調(diào)制與解調(diào)的實現(xiàn),運用MATLAB仿真軟件進行仿真?!娟P(guān)鍵詞】通信系統(tǒng);調(diào)制與解調(diào);MATLAB;2FSK;2ASK;2PSK;2DPSKDigitalCommunicationSystemSimulationBasedOnMATLABAuthor:ZhangXiaowen(Grade10,Class2,ElectronicandInformationEngineering,DepartmentofelectronicsandInformationEngineering。,AnkangUniversity,Ankang725000,Shaanxi)Tutor:ZhuYanAbstract:Communicationisthroughamediafortransportat(yī)ion.Communicationsystemwhichisusedtocompletetheprocessofinformationtransmissionsystems,ingeneral,istosendtheinformationfromthesourcetooneormoredestinations.Modulationanddemodulationoccupiedanimportantpositioninthetransmissionofinformationwhichisessential,sotheresearchaboutthemodulationanddemodulationprocessinthecommunicat(yī)ionsystemisextremelyimportant.MATLABisanumericalcomputation,graphicsrendering,imageprocessingandsystemsimulationandotherpowerfulfeaturesinoneofthescientificcomputinglanguage,itisapowerfulmatrixcalculationandgraphicalvisualizat(yī)ionfeaturesandarichtoolboxprovidesagreatconvenienceforthecommunicationsystemofmodulationanddemodulationprocess.Thispaperintroducestheconceptofthecommunicationsystem,andthenleadstomodulationanddemodulation,andthenintroducedseveralofourcommonlyusedmethodofmodulationanddemodulation。AsthepowerofMATLABsowroducedthecommunicationsystemtoolboxintheMATLAB。WegivesseveralexamplesaboutthecommunicationsystembasedonMATLABmodulat(yī)ionanddemodulationandusethesoftwareofMATLABtosimulatethem.Keywords:Communicat(yī)ionSystems;Modulationanddemodulation;MATLAB;2FSK;2ASK;2PSK;2DPSK0引言通信按照傳統(tǒng)的理解就是信息的傳輸,在當今高度信息化得社會,信息和通信已經(jīng)成為現(xiàn)代社會的“命脈”。信息作為一種資源,只有通過廣泛的傳播與交流,才能產(chǎn)生利用價值,促進社會成員之間的合作,推動社會生產(chǎn)力的發(fā)展,創(chuàng)造出巨大的經(jīng)濟效益.而通信作為傳輸信息的手段或方式,與傳感技術(shù)、計算機技術(shù)相互融合,已經(jīng)成為21世紀國際社會和世界經(jīng)濟發(fā)展的強大推動力,所以未來的通信對人們的生活方式和社會的發(fā)展將會產(chǎn)生更加重大和意義深遠的影響。在信息傳輸過程中,要求天線的尺寸要和信號的波長相比擬,信號才能有效的被輻射。對于語音信號來說,相應(yīng)的天線尺寸要在幾十公里以上,實際上不可能實現(xiàn),所以需要經(jīng)過調(diào)制將信號頻譜搬移到較高的頻率范圍,如果不進行調(diào)制就把信號直接輻射出去,那么各電臺所發(fā)出信號的頻率就會相同。調(diào)制作用的實質(zhì)就是使相同頻率范圍的信號分別依托于不同頻率的載波上,接收機就可以分離出所需的頻率信號,不致互相干擾.有時信號過于復雜,人工計算其調(diào)制和解調(diào)過程較難實現(xiàn),對其結(jié)果的分析又缺乏可視化的直觀表現(xiàn),影響了所得結(jié)果在實際生活中的應(yīng)用,美國Mat(yī)hWorks公司開發(fā)的MATLAB解決了這一問題。它應(yīng)用于自動控制、數(shù)學計算、信號分析、信號處理等諸多領(lǐng)域,也是國內(nèi)高校和研究部門進行許多科學研究的重要工具.MATLAB的出現(xiàn)給通信系統(tǒng)的分析提供了極大的方便。1MATLAB簡介美國Mathworks公司于1967年推出了矩陣實驗室“MatrixLaboratory"(縮寫為Matlab)這就是Matlab最早的雛形。開發(fā)的最早的目的是幫助學校的老師和學生更好的授課和學習。Matlab是一種解釋性執(zhí)行語言,具有強大的計算、仿真、繪圖等功能。Simulink是MATLAB中的一種可視化仿真工具,也是目前在動態(tài)系統(tǒng)的建模和仿真等方面應(yīng)用最廣泛的工具之一。確切的說,Simulink是一個用來對動態(tài)系統(tǒng)進行建模、仿真和分析的軟件包,它支持線性和非線性系統(tǒng),連續(xù)、離散時間模型,或者是兩者的混合。系統(tǒng)還可以使多種采樣頻率的系統(tǒng),而且系統(tǒng)可以是多進程的。在Simulink環(huán)境中,它為用戶提供了方框圖進行建模的圖形接口,采用這種結(jié)構(gòu)畫模型圖就如同用手在紙上畫模型一樣自如、方便,故用戶只需進行簡單的點擊和拖動就能完成建模,并可直接進行系統(tǒng)的仿真,快速的得到仿真結(jié)果。但是Simulink不能脫離MATLAB而獨立工作。Matlab將高性能的數(shù)值計算和可視化集成在一起,并提供了大量的內(nèi)置函數(shù),從而被廣泛地應(yīng)用于科學計算、控制系統(tǒng)、信息處理等領(lǐng)域的分析、仿真和設(shè)計工作,而且利用Matlab產(chǎn)品的開放式結(jié)構(gòu),可以非常容易地對Matlab的功能進行擴充,從而在不斷深化對問題認識的同時,不斷完善Matlab產(chǎn)品以提高產(chǎn)品自身的競爭能力。利用M語言還開發(fā)了相應(yīng)的Matlab專業(yè)工具箱函數(shù)供用戶直接使用。這些工具箱應(yīng)用的算法是開放的可擴展的,用戶不僅可以查看其中的算法,還可以針對一些算法進行修改,甚至允許開發(fā)自己的算法擴充工具箱的功能。目前Matlab產(chǎn)品的工具箱有四十多個,分別涵蓋了數(shù)據(jù)獲取、科學計算、控制系統(tǒng)設(shè)計與分析、數(shù)字信號處理、數(shù)字圖像處理、金融財務(wù)分析以及生物遺傳工程等專業(yè)領(lǐng)域。2二進制數(shù)字調(diào)制系統(tǒng)的原理及實現(xiàn)數(shù)字通信系統(tǒng),按調(diào)制方式可以分為基帶傳輸和帶通傳輸。數(shù)字基帶信號的功率一般處于從零開始到某一頻率(如0~6M)低頻段,因而在很多實際的通信(如無線信道)中就不能直接進行傳輸,需要借助載波調(diào)制進行頻譜搬移,將數(shù)字基帶信號變換成適合信道傳輸?shù)臄?shù)字頻帶信號進行傳輸,這種傳輸方式,稱為數(shù)字信號的頻帶傳輸或調(diào)制傳輸、載波傳輸。所謂調(diào)制,是用基帶信號對載波波形的某參量進行控制,使該參量隨基帶信號的規(guī)律變化從而攜帶消息。對數(shù)字信號進行調(diào)制可以便于信號的傳輸;實現(xiàn)信道復用;改變信號占據(jù)的帶寬;改善系統(tǒng)的性能.數(shù)字基帶通信系統(tǒng)中四種基本的調(diào)制方式分別稱為振幅鍵控(ASK,Amplitude-Shiftkeying)、移頻鍵控(FSK,Frequency-Shiftkeying)、移相鍵控(PSK,Phase-Shiftkeying)和差分移相鍵(DPSK,DifferentPhase-Shiftkeying)。本次課程設(shè)計對這四種調(diào)制方式進行了仿真。2。1二進制振幅鍵控采用的流程圖如圖2-1所示:圖2—12ASK調(diào)制解調(diào)框圖2.1。1ASK調(diào)制原理2ASK二進制振幅調(diào)制就是用二進制數(shù)字基帶信號控制正弦載波的幅度,使載波振幅隨著二進制數(shù)字基帶信號而變化,而其頻率和初始相位保持不變.信息比特是通過載波的幅度來傳遞的。其信號表達式為:,S(t)為單極性數(shù)字基帶信號。由于調(diào)制信號只有0或1兩個電平,相乘的結(jié)果相當于將載頻或者關(guān)斷,或者接通,它的實際意義是當調(diào)制的數(shù)字信號“1”時,傳輸載波;當調(diào)制的數(shù)字信號為“0"時,不傳輸載波。2ASK信號的時間波形e2ASK(t)隨二進制基帶信號S(t)通斷變化。所以又被稱為通斷鍵控信號。典型波形如圖2-2所示。圖2—2典型2ASK波形e2ASK(t)為已調(diào)信號,它的幅度受s(t)控制,也就是說它的幅度上攜帶有s(t)的信息。2ASK信號的產(chǎn)生方法通常有兩種:模擬調(diào)制法(相乘器法)和鍵控法。模擬調(diào)制法就是用基帶信號與載波相乘,進而把基帶信號調(diào)制到載波上進行傳輸。鍵控法由s(t)來控制電路的開關(guān)進而進行調(diào)制。兩種方法的調(diào)制如圖2-3和圖2—4所示。圖2-3模擬調(diào)制法(相乘器法)圖2—4鍵控法2.1。2ASK解調(diào)原理2ASK有兩種基本解調(diào)方法:相干解調(diào)法(同步檢測法)和非相干解調(diào)法(包絡(luò)檢波法).相干解調(diào)需要將載頻位置的已調(diào)信號頻譜重新搬回原始基帶位置,因此用相乘器與載波相乘來實現(xiàn)。相乘后的信號只要濾除高頻部分就可以了。為確保無失真還原信號,必須在接收端提供一個與調(diào)制載波嚴格同步的本地載波,這是整個解調(diào)過程能否順利完好進行的關(guān)鍵。本次設(shè)計采用相干解調(diào)法.兩種解調(diào)原理圖如圖2—5和圖2—6所示。圖2-5相干解調(diào)法(同步檢測法)圖2—6非相干解調(diào)法(包絡(luò)檢波法)2。1.3仿真結(jié)果及分析通過編寫M文件程序(見附錄),產(chǎn)生隨機信號,按圖2—1順序?qū)γ恳荒K編程后。程序中注有需注意語句及解釋.運行程序,實現(xiàn)2ASK的調(diào)制與解調(diào)過程.本次設(shè)計采用模擬調(diào)制法(相乘器法)和相干解調(diào)法.仿真后調(diào)制過程及解調(diào)過程的圖形分別如圖2—7和圖2-8所示。圖2-72ASK調(diào)制過程仿真圖圖2—82ASK解調(diào)過程仿真圖由圖可以看出,產(chǎn)生的數(shù)字隨機信號為“0100100001",經(jīng)載波調(diào)制后信號為“1”的時間內(nèi)有正弦波形,信號為“0”的時間內(nèi)無波形。經(jīng)過加隨機噪聲,相干解調(diào)后,恢復出原始信號,與基帶信號一致,因此達到本次設(shè)計目的。2。2二進制移頻鍵控所用流程圖如圖2-9所示:圖2-92FSK調(diào)制解調(diào)框圖2.2.1FSK調(diào)制原理一個FSK信號可以看成是兩個不同載波的2ASK信號的疊加。其解調(diào)和解調(diào)方法和FSK差不多。2FSK信號的頻譜可以看成是f1和f2的兩個2ASK頻譜的組合.頻移鍵控是利用載波的頻率來傳遞數(shù)字信號,在2FSK中,載波的頻率隨著二進制基帶信號在f1和f2兩個頻率點間變化,頻移鍵控是利用載波的頻移變化來傳遞數(shù)字信息的.在2FSK中,載波的頻率隨基帶信號在f1和f2兩個頻率點間變化。故其表達式為:典型波形如圖2-10所示:圖2—102FSK典型波形圖2FSK的調(diào)制方式有兩種,即模擬調(diào)頻法和鍵控法.本次設(shè)計采用鍵控法.鍵控法中可以用二進制“1”來對應(yīng)于載頻f1,而“0”用來對應(yīng)于另一頻率f2,而這個可以用受矩形脈沖序列控制的開關(guān)電路對兩個不同的獨立的頻率源f1、f2進行選擇通。鍵控法原理圖如圖2-11示圖2—112FSK鍵控法原理圖2.2。2FSK解調(diào)原理2FSK的解調(diào)方式有兩種:相干解調(diào)方式和非相干解調(diào)方式。非相干解調(diào)是經(jīng)過調(diào)制后的2FSK數(shù)字信號通過兩個頻率不同的帶通濾波器f1、f2濾出不需要的信號,然后再將這兩種經(jīng)過濾波的信號分別通過包絡(luò)檢波器檢波,最后將兩種信號同時輸入到抽樣判決器同時外加抽樣脈沖,最后解調(diào)出來的信號就是調(diào)制前的輸入信號.其原理圖如圖2-12所示。圖2-122FSK非相干解調(diào)原理圖相干解調(diào)是根據(jù)已調(diào)信號由兩個載波f1、f2調(diào)制而成,則先用兩個分別對f1、f2帶通的濾波器對已調(diào)信號進行濾波,然后再分別將濾波后的信號與相應(yīng)的載波f1、f2相乘進行相干解調(diào),再分別低通濾波、用抽樣信號進行抽樣判決器即可.原理圖如圖3-14所示。圖2-132FSK相干解調(diào)原理圖2。2。3仿真結(jié)果及分析通過編寫M文件程序(見附錄),產(chǎn)生隨機信號,按流程圖2.2.1順序?qū)γ恳荒K編程后。程序中注有需注意語句及解釋。運行程序,實現(xiàn)2FSK的調(diào)制與解調(diào)過程。本次設(shè)計中采用鍵控法調(diào)制法和相干解調(diào)法。仿真后調(diào)制過程及解調(diào)過程的圖形分別如圖2-14、圖2—15和圖2—16所示.由圖可以看出,產(chǎn)生的隨機信號為“1011001001",經(jīng)過反相產(chǎn)生反碼,并分別與兩個載波相乘,經(jīng)過加入隨機噪聲后波形如圖2—15所示。在解調(diào)時,分別與對應(yīng)的載波相乘。解調(diào)出基帶信號,可以看出實現(xiàn)了本次設(shè)計目的。圖2—142FSK鍵控法調(diào)制過程仿真圖圖2-152FSK鍵控法調(diào)制過程仿真圖圖2—162FSK相干解調(diào)過程仿真圖2.3二進制相移鍵控所用流程圖如圖2-17所示:圖2-172PSK調(diào)制解調(diào)框圖2。3.1PSK調(diào)制原理在二進制數(shù)字調(diào)制中,當正弦載波的相位隨二進制數(shù)字基帶信號離散變化時,則產(chǎn)生二進制移相鍵控(2PSK)信號.2PSK信號調(diào)制有兩種方法,即模擬調(diào)制法和鍵控法。通常用已調(diào)信號載波的0°和180°分別表示二進制數(shù)字基帶信號的1和0,模擬調(diào)制法用兩個反相的載波信號進行調(diào)制。2PSK以載波的相位變化作為參考基準的,當基帶信號為0時相位相對于初始相位為0°,當基帶信號為1時相對于初始相位為180°。鍵控法,是用載波的相位來攜帶二進制信息的調(diào)制方式.通常用0°和180°來分別代表0和1.其時域表達式為:其中,2PSK的調(diào)制中an必須為雙極性碼。本次設(shè)計中采用模擬調(diào)制法。兩種方法原理圖分別如圖2-18和圖2-19所示。圖2—18模擬調(diào)制法原理圖圖2-19鍵控法原理圖2.3.2PSK解調(diào)原理由于2PSK的幅度是恒定的,必須進行相干解調(diào).經(jīng)過帶通濾波的信號在相乘器中與本地載波相乘,然后用低通濾波器濾除高頻分量,在進行抽樣判決。判決器是按極性來判決的.即正抽樣值判為1,負抽樣值判為0.2PSK信號的相干解調(diào)原理圖如圖2—20所示,各點的波形如圖2—21所示。由于2PSK信號的載波回復過程中存在著180°的相位模糊,即恢復的本地載波與所需相干載波可能相同,也可能相反,這種相位關(guān)系的不確定性將會造成解調(diào)出的數(shù)字基帶信號與發(fā)送的基帶信號正好相反,即“1”變成“0”嗎“0"變成“1",判決器輸出數(shù)字信號全部出錯。這種現(xiàn)象稱為2PSK方式的“倒π”現(xiàn)象或“反相工作”.但在本次仿真中是直接給其同頻同相的載波信號,所以不存在此問題。圖2-202PSK的相干解調(diào)原理圖圖2-21相干解調(diào)中各點波形圖2.3.3仿真結(jié)果及分析通過編寫M文件程序(見附錄),產(chǎn)生隨機信號,按流程圖2-17所示順序?qū)γ恳荒K編程后.程序中注有需注意語句及解釋。運行程序,實現(xiàn)2PSK的調(diào)制與解調(diào)過程。本次設(shè)計采用模擬調(diào)制法和相干解調(diào)法。仿真后調(diào)制過程及解調(diào)過程的圖形分別如圖2—22和圖2—23示.圖2—222PSK模擬調(diào)制方法過程仿真圖圖2—232PSK相干解調(diào)過程仿真圖由圖可以看出,產(chǎn)生的隨機信號為“0011001100”,經(jīng)過反相產(chǎn)生反碼,并將原碼跟反碼一起合成雙極性碼,與載波相乘后加入隨機噪聲。在解調(diào)時,與對應(yīng)的載波相乘經(jīng)過低通濾波、抽樣判決后,解調(diào)出基帶信號與原基帶信號一致,可以看出實現(xiàn)了本次設(shè)計目的。2.4二進制差分相移鍵控所用流程圖如圖2—24所示:圖2-242DPSK調(diào)制解調(diào)框圖2。4.1DPSK調(diào)制原理二進制差分相移鍵控。2DPSK方式是用前后相鄰碼元的載波相對相位變化來表示數(shù)字信息。假設(shè)前后相鄰碼元的載波相位差為,可定義一種數(shù)字信息與之間的關(guān)系為:為前一碼元的相位。實現(xiàn)二進制差分相移鍵控的最常用的方法是:先對二進制數(shù)字基帶信號進行差分編碼,然后對變換出的差分碼進行絕對調(diào)相即可。2DPSK調(diào)制原理圖如圖2—25所示。圖2—252DPSK調(diào)制原理框圖2。4。2DPSK解調(diào)原理2DPSK信號解調(diào)有相干解調(diào)方式和差分相干解調(diào)。用差分相干解調(diào)這種方法解調(diào)時不需要恢復本地載波,只要將DPSK信號精確地延遲一個碼元時間間隔,然后與DPSK信號相乘,相乘的結(jié)果就反映了前后碼元的相對相位關(guān)系,經(jīng)低通濾波后直接抽樣判決即可恢復出原始的數(shù)字信息,而不需要在進行差分解碼。相干解調(diào)碼變換法及相干解調(diào)法的解調(diào)原理是,先對2DPSK信號進行相干解調(diào),恢復出相對碼,再通過碼反變換器變換為絕對碼,從而恢復出發(fā)送的二進制數(shù)字信息。在解調(diào)過程中,若相干載波產(chǎn)生相位模糊,解調(diào)出的相對碼將產(chǎn)生倒置現(xiàn)象,但是經(jīng)過碼反變換器后,輸出的絕對碼不會發(fā)生任何倒置現(xiàn)象,從而解決了載波相位模糊的問題。本次設(shè)計采用相干解調(diào)。兩種解調(diào)方式的原理圖如圖2—26和圖2-27所示。圖2—262DPSK差分相干解調(diào)原理圖圖2-272DPSK相干解調(diào)原理圖2DPSK相干解調(diào)各點波形圖如圖2—28所示。圖2—282DPSK相干解調(diào)各點波形圖2。4。3仿真結(jié)果及分析通過編寫M文件程序(見附錄),產(chǎn)生隨機信號,按流程圖2-24所示順序?qū)γ恳荒K編程后。程序中注有需注意語句及解釋。本次設(shè)計采用相干解調(diào)法。運行程序,實現(xiàn)2DPSK的調(diào)制與解調(diào)過程。仿真后調(diào)制過程及解調(diào)過程的圖形分別如圖2—29、圖2—30和圖2-31所示。由圖可以看出,產(chǎn)生的絕對隨機碼為“0100111010",經(jīng)碼差分變化產(chǎn)生相對碼,經(jīng)反相產(chǎn)生相對碼反碼,分別與兩個載波相乘后加入隨機噪聲.在解調(diào)時,分別與對應(yīng)的載波相乘經(jīng)過低通濾波、抽樣判決后,解調(diào)出基帶信號與原基帶信號一致,可以看出實現(xiàn)了本次設(shè)計目的。圖2-292DPSK調(diào)制過程仿真圖圖2—302DPSK調(diào)制過程仿真圖圖2-312DPSK相干解調(diào)過程仿真圖3總結(jié)與體會通過本次課程設(shè)計,我對課本上數(shù)字通信傳輸系統(tǒng)特別是二進制頻移鍵控(2FSK)有了重新的認識。對2FSK調(diào)制數(shù)字基帶信號加深了理解。對于使用鍵控法產(chǎn)生2FSK信號、添加高斯白噪聲、使用相干解調(diào)、抽樣判決等,我比較系統(tǒng)地認識了數(shù)字通信傳輸系統(tǒng)。本課程設(shè)計使用的MATLAB仿真軟件和Simulink仿真環(huán)境,通過寫其源程序代碼,加深了我對每一步進行的理解,即要明白每一步都是怎么來的。通過使用Simulink仿真環(huán)境,我可以直觀地放置相應(yīng)的模塊,搭建通信系統(tǒng),并能夠動態(tài)的顯示仿真結(jié)果,使學習設(shè)計不再枯燥3.1程序設(shè)計與系統(tǒng)實施。MATLAB提供了程序設(shè)計仿真環(huán)境,可以通過編寫代碼完成某些模塊的仿真。同時利用其提供的畫圖功能,可以使人直觀地觀察程序設(shè)計及調(diào)試的結(jié)果。每一步都得十分細心,需要具體到一個小小的標點符號,否則程序就會在調(diào)試中出錯.本設(shè)計中,根據(jù)設(shè)計規(guī)劃包括基帶信號的產(chǎn)生和調(diào)制、加入高斯白噪聲、帶通濾波和低通濾波、相干解調(diào)、計算誤碼率等。本過程使我將學習過但并不熟練的MATLAB軟件重新學習和使用了一下,并通過查閱和引用相關(guān)資料學習使用其相關(guān)的函數(shù)功能。MATLAB中的畫圖功能是本課程設(shè)計的亮點,將結(jié)果直觀地表現(xiàn)出來。3。2理論模糊造成設(shè)計困難。通過進行設(shè)計我發(fā)現(xiàn),沒有熟悉的理論知識搞設(shè)計是困難的。在設(shè)計每一步時,必須搞清楚每一步是干什么的,怎么進行,這些都需要理論進行指導。當哪一步不會弄時,我就去查書,將書中的理論細細研讀,這樣通過本課程設(shè)計我又把書中相關(guān)的部分細細看了幾遍,對書中的理論有了更深的認識。因為多次調(diào)試,結(jié)果越來越接近理論情況下的結(jié)果,可見實驗其實就是對理論的驗證.所以,清楚地掌握理論是進行設(shè)計的關(guān)鍵步驟。參考文獻[1]樊昌信,詹道庸,徐炳祥,吳成柯.通信原理[M].北京:國防工業(yè)出版社,1980:171~260。[2]薛鵬騫.電子與通信電路計算機仿真[M]。北京:煤炭工業(yè)出版社,2003:113~144。[3]鄧華.MATLAB通信仿真及應(yīng)用實例詳解[M]。北京:人民郵電出版社,2003:99~115.[4]陳懷?。甅ATLAB及其在理工課程中的應(yīng)用指南[M].西安:西安電子科技大學出版社,2002:146~180。[5]張謙.通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用[M].西安:西安電子科技大學出版社,2010:85~109.[6]孫屹.MATLAB通信仿真開發(fā)手冊[M].北京:國防工業(yè)出版社,2005:138~168.[7]王立寧,樂光新,詹菲.MATLAB與通信仿真[M].北京:人民郵電出版社,2000:74~86.[8]約翰·G·普羅克斯。現(xiàn)代通信系統(tǒng)的使用MATLAB[M].西安:西安交通學出版社,2001:95~121.[9]陳萍.現(xiàn)代通信實驗系統(tǒng)的計算機仿真[M]。北京:國防工業(yè)出版社,2003:171~260。[10]孫亮.MATLAB語言與控制系統(tǒng)仿真[M].北京:北京工業(yè)大學出版社,2001:64~83。[11]WilliamAShay.UnderstandingDataCommunicationsandNetworks[M]:WadsworthPublishingCompany,1998:162~164.[12]WilliamStallings。DataandComputerCommunications,SeventhEdition[M]:PrenticeHall,2003:201~207?;贑AN總線的modbus通信設(shè)計摘要:CAN總線是由德國BOSCH公司開發(fā)了的,其主要用于汽車計算機控制系統(tǒng),而在工業(yè)控制領(lǐng)域較少適用,在工業(yè)領(lǐng)域用的最多的是RS485總線。CAN總線較RS485總線具有網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強,開發(fā)周期短,已形成國際標準的現(xiàn)場總線等優(yōu)點.因此CAN總線是比較有前途的現(xiàn)場總線之一,在工業(yè)控制領(lǐng)域代替RS485是有可能的。 為了能簡單地應(yīng)用CAN總線代替RS485總線,如果采用比如CANopen等協(xié)議使得設(shè)備變得復雜化,那么有沒有簡單點的協(xié)議?很多做過工業(yè)設(shè)備的工程師都熟悉MODBUS協(xié)議,在RS485總線上跑的最多的協(xié)議就是MODBUS,如果我們在CAN總線上運行MODBUS協(xié)議,那么做過RS485的工程師就能很快地轉(zhuǎn)移過來,減少了開發(fā)難度.所以本文就以CAN總線上跑MODBUS協(xié)議為目的對數(shù)據(jù)網(wǎng)絡(luò)層協(xié)議進行設(shè)計。概念:MODBUS有主從概念,CAN總線支持多主,在這里我們把主機叫做客戶端,從機叫做服務(wù)器.在CAN總線上采用客戶端服務(wù)器的概念。在進行協(xié)議介紹前先對CANMODBUS進行簡單的介紹。MODBUS:閱讀過MODBUS協(xié)議的人都知道m(xù)odbus有ASCII和RTU模式,其中RTU模式用的較多,一個數(shù)據(jù)包在網(wǎng)絡(luò)上傳輸我們必須知道包的開始和結(jié)束,在RTU模式中數(shù)據(jù)包是以至少3.5個字符的靜默時間開始和結(jié)束的,如果信息結(jié)束前存在超過1。5個字符以上的間隔時間則出錯.為了檢測這些時間間隔,在程序上將變得很被動。ASCII雖然有專用的開始結(jié)束標志符,但是ASCII需要把一個字節(jié)數(shù)據(jù)傳換為兩個字符發(fā)送所以其效率低。所以還是得采用RTU模式,但得根據(jù)CAN總線的特點解決數(shù)據(jù)包開始結(jié)束標志的定義.CAN總線:CAN總線的數(shù)據(jù)傳輸是以幀為單位的,一個幀包含標識符、數(shù)據(jù)段CRC等,標識符表示該幀的發(fā)送優(yōu)先級,數(shù)據(jù)段包含實際的數(shù)據(jù),數(shù)據(jù)長度從1到8字節(jié),CRC對該幀進行校驗,因為幀中包含了數(shù)據(jù)校驗功能,所以在CAN上跑modbus就不需要再對數(shù)據(jù)進行CRC校驗。在這里我們看到CAN總線是有優(yōu)先級這個概念,但是沒有出現(xiàn)像modbus這樣有地址的概念,CAN總線上標識符段表示的是該幀的優(yōu)先級,它面向的是數(shù)據(jù),而modbus面向的是設(shè)備,每個數(shù)據(jù)包中都有地址,如果我們把地址放在CAN幀的數(shù)據(jù)段中那么所有設(shè)備都必須接收每一幀,然后對數(shù)據(jù)進行解析,如果網(wǎng)絡(luò)負載比較大的是時候,這對設(shè)備不利。CAN控制器一般都能對特定的標識符段進行過濾,那么我們?yōu)槭裁床荒馨褬俗R符段作為設(shè)備的地址,然后設(shè)備對特定的標識符進行過濾,這樣就減少了設(shè)備的負擔.但是如果標識符段作為目的地址,那么CAN總線上就不能有兩個主機,應(yīng)為CAN總線規(guī)定不能有兩個相同標識符的幀同時發(fā)送。既然標識符符不能作為目的地址,那么就實現(xiàn)不了設(shè)備對數(shù)據(jù)的過濾。我的解決辦法是把幀的標識符段分為兩部分,一部分為發(fā)送方地址,另一部分為接收方地址,其中接收方地址在標識符的高端。這樣我們就能通過表標識符段知道這幀數(shù)據(jù)是誰發(fā)給誰的,對于接收方它通過設(shè)置過濾器只接收表識符高端數(shù)據(jù)為自己地址的幀,這樣就解決了CAN總線中地址的概念。這個地址還表示的設(shè)備的優(yōu)先級,地址越小優(yōu)先級就越高,接收方地址和發(fā)送方地址就決定這幀的發(fā)送優(yōu)先級。標識符段分為標準幀和擴展幀,標準幀的標識符為11bit,擴展幀的標識符為29bit,按照接收方地址加發(fā)送方地址的分配方法標準幀的地址范圍為0~31,共計32個地址,如果用擴展幀的來分配地址范圍為0~16383,共計16384個地址。標識符接收方地址發(fā)送方地址因為一幀最多能發(fā)送8字節(jié)數(shù)據(jù),因此要發(fā)送超過8字節(jié)的數(shù)據(jù)就必須使用多幀,為了能適應(yīng)多任務(wù)環(huán)境,我們在把幀的數(shù)據(jù)段的前兩自己數(shù)據(jù)用作特殊用途:第一字節(jié)表示幀數(shù)據(jù)的ID,其bit7為1:表示服務(wù)器返回的數(shù)據(jù)幀,為0:表示客戶端請求的數(shù)據(jù)幀;第二字節(jié)表示著一幀在這個數(shù)據(jù)包中的相對為位置,其bit7為1:表示這是最后一幀,因此我們可以根據(jù)這一幀就能計算出此次要傳輸?shù)臄?shù)據(jù)字節(jié)數(shù),有這兩字節(jié)的數(shù)據(jù)我們就能把一個數(shù)據(jù)包分成多個幀發(fā)送出去,然后在接收方根據(jù)這兩字節(jié)的信息把數(shù)據(jù)包從新組裝。由第二字節(jié)信息我們可以計算出一次能傳輸?shù)臄?shù)據(jù)包的大小為128*6=768字節(jié)。你也許會問,那個ID數(shù)據(jù)有什么用,為了支持多任務(wù)處理,一個客服端可能有多個任務(wù)同時把數(shù)據(jù)發(fā)送到同一個服務(wù)器,這個ID就是區(qū)分不同任務(wù)的,客戶端發(fā)送到的時候分配一個空閑的ID然后以此ID把數(shù)據(jù)發(fā)送出去。服務(wù)器接受到同一個客服端發(fā)來的不同ID的數(shù)據(jù)包,那么服務(wù)器就根據(jù)ID的不同分別處理;回復客戶端時把ID的最高位置1,然后發(fā)送回去,客服端收到發(fā)回復后根據(jù)ID把數(shù)據(jù)分發(fā)給對應(yīng)的任務(wù)。一個設(shè)備可以是客戶端也可以是服務(wù)器,還可以包含兩者,那么CAN接收服務(wù)程序就必須明確接收到的數(shù)據(jù)是自己收到的回復還是別人的請求,因此ID的最高位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年其他計算機信息服務(wù)項目申請報告模稿
- 2025年多孔微孔陶瓷材料項目規(guī)劃申請報告模板
- 2025年企業(yè)高校實習生三方協(xié)議
- 2025年人才共享協(xié)議標準化文本
- 2025年合作共管協(xié)議示范文本
- 2025年借款合同范本速覽
- 2025年個人公積金貸款合同調(diào)整全覽
- 2025年專利權(quán)使用和解協(xié)議指南
- 2025年養(yǎng)老院入住協(xié)議標準
- 2025年供電設(shè)施更新改造協(xié)議
- 無障礙設(shè)施監(jiān)理實施細則
- 可轉(zhuǎn)換病區(qū)應(yīng)急預案與流程
- 《燃放煙花的利與弊》課件
- 醫(yī)院護理培訓課件:《病區(qū)環(huán)境管理查房》
- 《小羊和蝴蝶》繪本故事
- 鋼筋工理論考試題庫及答案
- 大數(shù)據(jù)技術(shù)基礎(chǔ)及應(yīng)用教程(Linux+Hadoop+Spark) 習題答案
- 中國古代史年代尺
- 數(shù)字經(jīng)濟學導論-全套課件
- 醫(yī)藥代表經(jīng)驗分享
- 釘釘培訓使用手冊培訓課件
評論
0/150
提交評論