• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種SPI轉(zhuǎn)TCP/IP協(xié)議的數(shù)據(jù)傳輸方法

      2010-04-05 13:32:42李濟(jì)順韓紅彪
      關(guān)鍵詞:下位上位數(shù)據(jù)包

      郭 亮 ,李濟(jì)順,b ,韓紅彪,b

      (河南科技大學(xué) a.機(jī)電工程學(xué)院;b.河南省機(jī)械設(shè)計(jì)及傳動(dòng)系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,河南洛陽(yáng) 471003)

      0 前言

      隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和TCP/IP協(xié)議的廣泛普及,網(wǎng)絡(luò)通信在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用成為一個(gè)新的研究熱點(diǎn)。在工業(yè)控制等很多領(lǐng)域中,大多數(shù)設(shè)備的通信接口符合串行通信標(biāo)準(zhǔn)。這種通信方式的數(shù)據(jù)傳輸半徑有限,不能滿足某些遠(yuǎn)程傳輸或高速傳輸?shù)男枨?。考慮到網(wǎng)絡(luò)傳輸具有傳輸距離長(zhǎng),傳輸速率高,傳輸靈活性強(qiáng)等優(yōu)點(diǎn),改進(jìn)系統(tǒng)使其接入網(wǎng)絡(luò),可以有效提高系統(tǒng)的性能。

      目前,數(shù)據(jù)采集系統(tǒng)的網(wǎng)絡(luò)傳輸一般采用以太網(wǎng)控制器來(lái)完成。使用以太網(wǎng)控制器,需要在采集前端的主芯片中移植TCP/IP協(xié)議,由于其芯片種類、型號(hào)繁多,TCP/IP協(xié)議在各個(gè)芯片的移植將產(chǎn)生一些困難;同時(shí),在一些工作頻率低、數(shù)據(jù)存儲(chǔ)器小的芯片上加裝TCP/IP協(xié)議模塊,會(huì)影響其工作效率,使傳輸效果提升有限。TCP/IP協(xié)議轉(zhuǎn)換器本身集成了網(wǎng)絡(luò)協(xié)議,在數(shù)據(jù)采集系統(tǒng)中使用TCP/IP協(xié)議轉(zhuǎn)換器,可以減少開(kāi)發(fā)難度、避免占用芯片資源,更好的完成網(wǎng)絡(luò)傳輸。多數(shù)單片機(jī)支持的串行通信機(jī)制中,I2C和SPI的通信速率比較高,而SPI的通信協(xié)議簡(jiǎn)單,占用芯片資源少,常用于大容量的數(shù)據(jù)傳輸。設(shè)計(jì)SPI接口到TCP/IP的協(xié)議轉(zhuǎn)換器及通信系統(tǒng),可解決很多數(shù)據(jù)采集系統(tǒng)的網(wǎng)絡(luò)接入問(wèn)題,提高其傳輸效率[1-4]。

      本文基于PIC18F97J60單片機(jī)、VB開(kāi)發(fā)軟件和TCP/IP協(xié)議棧,提出SPI-TCP/IP協(xié)議轉(zhuǎn)換器的制作方法,在上位機(jī)用 VB開(kāi)發(fā)和其對(duì)應(yīng)的通信軟件,實(shí)現(xiàn)數(shù)據(jù)從下位機(jī)到上位機(jī)和上位機(jī)對(duì)采集過(guò)程的基于網(wǎng)絡(luò)傳輸和控制。

      1 系統(tǒng)整體方案

      系統(tǒng)由協(xié)議轉(zhuǎn)換器和上位機(jī)軟件組成。協(xié)議轉(zhuǎn)換器以Microchip公司的PIC18F97J60為主芯片,負(fù)責(zé)處理協(xié)議,發(fā)送數(shù)據(jù)和傳達(dá)上位機(jī)控制命令。上位機(jī)軟件負(fù)責(zé)接收數(shù)據(jù)以待后期處理。整體結(jié)構(gòu)如圖1所示。

      協(xié)議轉(zhuǎn)化器和下位機(jī)之間采用SPI接口,SPI通信中設(shè)置為主模式。當(dāng)收到上位機(jī)的控制命令后,協(xié)議轉(zhuǎn)換器按應(yīng)用層協(xié)議解讀命令,控制下位機(jī)開(kāi)始傳輸數(shù)據(jù),并可接收上位機(jī)的控制信號(hào),發(fā)送給下位機(jī)控制采集過(guò)程。在協(xié)議轉(zhuǎn)換器接收到下位機(jī)的數(shù)據(jù)后,在單片機(jī)內(nèi)部 RAM中根據(jù)協(xié)議將數(shù)據(jù)打包,最終以網(wǎng)絡(luò)數(shù)據(jù)包的形式通過(guò)網(wǎng)絡(luò)發(fā)送至上位機(jī)。上位機(jī)通過(guò)固定的網(wǎng)絡(luò)端口來(lái)接收數(shù)據(jù)和發(fā)送控制命令[5-9]。

      2 協(xié)議轉(zhuǎn)換器硬件電路設(shè)計(jì)

      PIC18F97J60芯片是Microchip公司推出的一款100管腳的帶MAC模塊的微控制器,具有出色的計(jì)算性能、豐富的功能集和極具競(jìng)爭(zhēng)力的價(jià)格優(yōu)勢(shì),其最大特點(diǎn)是具有嵌入式以太網(wǎng)控制器模塊,完全實(shí)現(xiàn)介質(zhì)訪問(wèn)控制和物理層收發(fā)器模塊,只需使用兩個(gè)脈沖變壓器和一些無(wú)源器件即可將單片機(jī)直接與網(wǎng)絡(luò)相連[10]。

      由于協(xié)議轉(zhuǎn)換器同下位機(jī)的通信是基于SPI接口,因此,在設(shè)計(jì)硬件電路時(shí)重點(diǎn)考慮SPI口和網(wǎng)絡(luò)接口,電路連接如圖2所示。

      圖1 系統(tǒng)整體框圖

      協(xié)議轉(zhuǎn)換器電源輸入為5 V,經(jīng)過(guò)低電壓調(diào)節(jié)芯片和簡(jiǎn)單穩(wěn)壓電路后調(diào)節(jié)為 3.3 V提供給單片機(jī)。SPI接口的傳輸速率根據(jù)設(shè)備頻率而定,PIC18F97J60的SPI口傳輸速率可由單片機(jī)控制,最大傳輸速度是單片機(jī)主頻的 1/4,由于電路中選用了 25 M的晶振,在不分頻的情況下理論上SPI口的傳輸速度可達(dá)到6 M左右。DOWNLOAD為6針口,連接MPLAB ICD作下載程序和在線調(diào)試用。HR901170A為帶變壓器件符合以太網(wǎng)標(biāo)準(zhǔn)的RJ45接口,連接在單片機(jī)的MAC差分輸出口,另需添加 2個(gè) 75Ω電阻和一個(gè)小濾波電容。

      圖2 協(xié)議轉(zhuǎn)換器硬件電路圖

      3 協(xié)議轉(zhuǎn)換器軟件設(shè)計(jì)

      協(xié)議轉(zhuǎn)換器主要完成兩部分通信工作:一是和下位機(jī)的SPI通信;二是和上位機(jī)的網(wǎng)絡(luò)通信。SPI接口特點(diǎn)是主設(shè)備通過(guò)時(shí)鐘信號(hào)完全控制數(shù)據(jù)的傳輸過(guò)程,為便于上位機(jī)控制采集過(guò)程,協(xié)議轉(zhuǎn)換器應(yīng)設(shè)置為 SPI主設(shè)備。同時(shí),為了保證傳輸?shù)姆€(wěn)定性,應(yīng)保證協(xié)議轉(zhuǎn)換器的空閑電平為低電平,在時(shí)鐘信號(hào)的上升沿采樣,通過(guò)SDI接收數(shù)據(jù),下降沿通過(guò)SDO輸出數(shù)據(jù),這些設(shè)定可由配置CKE,CKP等寄存器完成。SPI的傳輸可以由調(diào)用SPIReadTask()函數(shù)實(shí)現(xiàn),SPI傳輸或接收1個(gè)字節(jié)后都會(huì)產(chǎn)生中斷, SPIReadTask()功能是響應(yīng)中斷,讀取SPI緩存。協(xié)議轉(zhuǎn)換器和上位機(jī)的網(wǎng)絡(luò)通信,可在生產(chǎn)商為PIC18F97J60單片機(jī)提供的完整TCP/IP?;A(chǔ)上實(shí)現(xiàn)。此協(xié)議棧的最大特點(diǎn)是傳輸過(guò)程由StackTSK控制,在其中可以選用需要的服務(wù)類型,并可在中斷處加入其他程序代碼。為了控制采集過(guò)程,協(xié)議轉(zhuǎn)換器建立了控制信息表ctrlmsg,整個(gè)傳輸過(guò)程由查詢ctrlmsg的方式控制。圖3是協(xié)議轉(zhuǎn)換器通信過(guò)程的軟件流程圖。

      協(xié)議轉(zhuǎn)換器和上位機(jī)的通信是基于TCP連接的,而且協(xié)議轉(zhuǎn)換器工作在 TCP服務(wù)器狀態(tài),因此在程序初始化時(shí)應(yīng)調(diào)用TCP協(xié)議偵聽(tīng)指定端口。在StackTSK中,運(yùn)行了采集和傳輸過(guò)程函數(shù)SPI2NetTask(),此函數(shù)調(diào)用了TCP接口函數(shù)和SPI讀取函數(shù)SPIReadTask(),在讀入上位機(jī)發(fā)送的信息后,按照設(shè)定好的標(biāo)志符在控制信息緩沖區(qū)將控制信息寫(xiě)入ctrlmsg,按照ctrlmsg中指定的3個(gè)模式控制采集過(guò)程:

      模式1:確認(rèn)模式后全速采集SPI口數(shù)據(jù),發(fā)送至上位機(jī),以TCP連接斷開(kāi)作為結(jié)束。

      模式2:確認(rèn)模式后讀取ctrlmsg中的采集延遲時(shí)間參數(shù)和采集時(shí)長(zhǎng)參數(shù),進(jìn)入條件循環(huán)調(diào)用SPIReadTask()進(jìn)行采集和TCP傳輸。

      模式3:確認(rèn)模式后將ctrlmsg中7個(gè)字節(jié)的額外控制參數(shù)傳遞發(fā)送至SPI口,等待3 s下位機(jī)的響應(yīng)延遲時(shí)間后開(kāi)始采集SPI口數(shù)據(jù)。

      圖3 協(xié)議轉(zhuǎn)化器軟件框圖

      圖3中,采集過(guò)程的循環(huán)是一個(gè)多重的條件循環(huán),主要由TCP連接的狀況、發(fā)送、接收緩存的剩余容量、ctrlmsg控制信息表等因素決定。模式1和模式 2中,下位機(jī)可以用設(shè)置SPI中斷的方式觸發(fā)采集。模式3中,下位機(jī)在SPI中斷后應(yīng)接收并儲(chǔ)存采集參數(shù),通過(guò)讀取協(xié)議轉(zhuǎn)換器SPI口中發(fā)送的SPI狀態(tài)字節(jié)來(lái)判斷其模式。在模式 3中,協(xié)議轉(zhuǎn)換器將自動(dòng)將模式轉(zhuǎn)變?yōu)槟J?,采集SPI口數(shù)據(jù)。由于SPI口的數(shù)據(jù)傳輸完全由主機(jī)的SCK時(shí)鐘控制,因此下位機(jī)如果工作頻率過(guò)低,將無(wú)法和作為主機(jī)協(xié)議轉(zhuǎn)換器通信,因此協(xié)議轉(zhuǎn)換器如遇到頻率較低的下位機(jī)應(yīng)配置分頻寄存器OSCTUNE,降低頻率以保證傳輸?shù)恼_M(jìn)行。

      4 數(shù)據(jù)接收端通信程序與傳輸測(cè)試

      Winsock是Mcrosoftwindows提供的網(wǎng)絡(luò)編程接口,它提供了基于TCP/IP套接字的通信方法。在VB中,利用Winsock控件可以很方便的實(shí)現(xiàn)和單片機(jī)的網(wǎng)絡(luò)通信。上位機(jī)作為T(mén)CP通信中的數(shù)據(jù)接收端,可以用Winsock控件建立一個(gè)客戶端的套接字SCKClient,在設(shè)置好和協(xié)議轉(zhuǎn)換器的IP地址和通信端口號(hào)后,利用“SCKClient.connect協(xié)議轉(zhuǎn)換器地址,端口號(hào)”來(lái)建立連接,然后用GetData,SendData等命令和協(xié)議轉(zhuǎn)換器通信。在應(yīng)用層協(xié)議中,協(xié)議轉(zhuǎn)換器和上位機(jī)規(guī)定了控制信息的起始標(biāo)識(shí)符,上位機(jī)靠發(fā)送規(guī)定格式的控制信息實(shí)現(xiàn)對(duì)采集的控制,在和協(xié)議轉(zhuǎn)換器通信時(shí),協(xié)議轉(zhuǎn)換器模式 1狀態(tài)下終止通信可用斷開(kāi)連接的方式,模式 2和模式 3可用控制信息指定終止傳輸?shù)臅r(shí)間。

      表1 不同容量數(shù)據(jù)包傳輸速度測(cè)試

      在用PC機(jī)并口模擬SPI從機(jī),協(xié)議轉(zhuǎn)換器工作于模式1,SCK時(shí)鐘采用主頻1/64,上位機(jī)PC利用網(wǎng)絡(luò)調(diào)試工具SocketTool和TCP測(cè)速軟件TCPmon進(jìn)行測(cè)試時(shí),協(xié)議轉(zhuǎn)換器將TCP數(shù)據(jù)包的數(shù)據(jù)量作了一些改變,表1為傳輸時(shí)長(zhǎng)為 1 m in,各容量數(shù)據(jù)包下的平均傳輸速度。

      由表1可看出:加大數(shù)據(jù)包的容量可以明顯提高傳輸速度,但與此同時(shí)收到數(shù)據(jù)包的頻率會(huì)降低。因此在系統(tǒng)要求傳輸量較大,同時(shí)即時(shí)性不強(qiáng)時(shí)可采用較大的數(shù)據(jù)包;即時(shí)性較強(qiáng)時(shí)候,可適當(dāng)減小數(shù)據(jù)包的容量。

      5 結(jié)束語(yǔ)

      本文針對(duì)目前數(shù)據(jù)采集系統(tǒng)中傳輸方面的要求,設(shè)計(jì)了SPI到TCP/IP協(xié)議的協(xié)議轉(zhuǎn)換器硬件電路,同時(shí)開(kāi)發(fā)了與其配套的應(yīng)用層程序。經(jīng)測(cè)試此系統(tǒng)可良好的完成工作,實(shí)現(xiàn)了數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)的網(wǎng)絡(luò)傳輸。

      [1] 關(guān)守平,姚永.嵌入式系統(tǒng)的網(wǎng)絡(luò)接口模塊設(shè)計(jì)及應(yīng)用[J].儀器儀表學(xué)報(bào),2007(4):267-269.

      [2] 王小菊,潘琢金.嵌入式網(wǎng)絡(luò)接口模塊設(shè)計(jì)及協(xié)議棧實(shí)現(xiàn)[J].沈陽(yáng)航空工業(yè)學(xué)院學(xué)報(bào),2007,24(1):48-52.

      [3] 段之昱.嵌入式系統(tǒng)以太網(wǎng)數(shù)據(jù)傳輸性能研究[J].天文研究與技術(shù),2007,4(3):266-275.

      [4] 虞艷瓊.基于SOCKET的通信網(wǎng)網(wǎng)管協(xié)議轉(zhuǎn)換器[J].網(wǎng)絡(luò)與通信,2007,23(4):103-105.

      [5] 周硯江,顧煥峰,馮佳良.基于SPI的快速多通道數(shù)據(jù)采集系統(tǒng)和數(shù)字濾波[J].電子測(cè)量與儀器學(xué)報(bào),2008,22(3): 100-104.

      [6] 王海濤,段哲民.多路數(shù)據(jù)采集與網(wǎng)絡(luò)遠(yuǎn)程傳輸系統(tǒng)實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制制,2008,16(3):421-423.

      [7] 常志勇,李濟(jì)順,韓紅彪.基于單總線協(xié)議的多點(diǎn)測(cè)溫技術(shù)及應(yīng)用[J].河南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2009,30 (2):35-37.

      [8] 汪鵬,汪希平,李文鵬,等.串行 AD芯片MAX 1270在磁懸浮數(shù)字控制器中的接口設(shè)計(jì)方法與應(yīng)用[J].機(jī)電一體化,2009,15(8):29-31.

      [9] 紀(jì)珍從.基于SPI總線的低頻信號(hào)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].機(jī)床電器,2008,35(1):5-8.

      [10] 葉正清,張志.基于PIC18F97J60的以太網(wǎng)通信接口設(shè)計(jì)[J].研究與開(kāi)發(fā),2008,27(12):36-39.

      猜你喜歡
      下位上位數(shù)據(jù)包
      發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
      SmartSniff
      特斯拉 風(fēng)云之老阿姨上位
      車迷(2018年12期)2018-07-26 00:42:22
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
      景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
      圍觀黨“下位”,吐槽帝“登基”
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
      基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
      德庆县| 新巴尔虎右旗| 明溪县| 巫山县| 左权县| 高平市| 清水河县| 库车县| 衡阳市| 乃东县| 桂平市| 阳东县| 南宁市| 苍梧县| 武隆县| 建宁县| 金阳县| 奉节县| 武山县| 蓬安县| 方山县| 友谊县| 南部县| 富顺县| 历史| 崇仁县| 白银市| 兰坪| 镇坪县| 阳城县| 杭锦后旗| 龙州县| 集安市| 辰溪县| 乌兰察布市| 吉隆县| 集安市| 稷山县| 德昌县| 天门市| 台东县|