• <ul id="oyk2w"></ul>
    <ul id="oyk2w"><tbody id="oyk2w"></tbody></ul>
  • <strike id="oyk2w"><s id="oyk2w"></s></strike>
    歡迎光臨水表信息網(wǎng)!
    技術(shù)前沿
     
    儀表常識(shí)

    USB總線在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用

    字體: 放大字體  縮小字體 發(fā)布日期:2010-06-25  來(lái)源:微計(jì)算機(jī)信息  瀏覽次數(shù):508
        1 前  言 

        隨著供水部門、供電部門、供氣部門對(duì)“一戶一表”工程改造的推進(jìn),以及對(duì)自動(dòng)化的要求,遠(yuǎn)程自動(dòng)抄表系統(tǒng)已成為水、電、氣自動(dòng)化管理和智能化控制不可缺少的組成部分。  

        采用集中抄表系統(tǒng)能夠杜絕人工抄表產(chǎn)生的誤抄、漏抄、估抄等人為錯(cuò)誤,提高工作效率,減輕勞動(dòng)強(qiáng)度,減員增效。一般抄表系統(tǒng)采用RS485總線,然后通過(guò)485/232模塊與監(jiān)控計(jì)算機(jī)連接,計(jì)算機(jī)通過(guò)串口輪巡采集電表數(shù)據(jù)。由于串口速度慢,這成為抄表系統(tǒng)傳輸速率提高的瓶頸,而使用485/usb模塊,能很好的解決這個(gè)問(wèn)題,USB 1.1規(guī)范的最高傳輸速率為12 Mb/s。USB總線除了用于外圍設(shè)備和PC機(jī)之間的連接之外,在其它領(lǐng)域也有廣泛應(yīng)用,包括測(cè)量和自動(dòng)化應(yīng)用。  

        2 硬件設(shè)計(jì):  

        模塊的硬件包括: 微控制器、RS485 總線通信接口和USB 通信接口,如圖1:  



        RS485定義了一個(gè)基于單對(duì)平衡線的多點(diǎn)、雙向(半雙工)通信鏈路,采用平衡式發(fā)送,差分式接收的數(shù)據(jù)收發(fā)器來(lái)驅(qū)動(dòng)總線,每次通信只能有一個(gè)主站,適合輪巡方式通信。RS485收發(fā)器采用TI公司的75LBC184,它使用單電源供電,電壓在+3-+5.5V范圍都能正常工作,能完成TTL與RS485之間的轉(zhuǎn)換。在電路中,使用了TLP521進(jìn)行隔離,提高了系統(tǒng)的可靠性。  

        USB 通信接口采用PDIUSBD12,負(fù)責(zé)與上位機(jī)和微處理器進(jìn)行信息交換。PDIUSBD12是Philips公司推出的一種價(jià)格便宜、功能完善的USB并行接口芯片,支持多路復(fù)用、非多路復(fù)用和DMA并行傳輸,它遵從USB1.1協(xié)議,適合于不同用途的傳輸類型。PDIUSBD12需要外接微控制器來(lái)進(jìn)行協(xié)議處理和數(shù)據(jù)交換,對(duì)MCU沒(méi)有特殊要求,接口方便靈活。微處理器采用P89C51RD 單片機(jī)。   

        3 系統(tǒng)軟件設(shè)計(jì):  

        3.1 RS485軟件子程序設(shè)計(jì): 

        RS485軟件編程非常簡(jiǎn)單,它使用處理器的串口。數(shù)據(jù)到來(lái)時(shí)存放到串口緩沖區(qū)中,并產(chǎn)生串口中斷。 



        RS485協(xié)議只是物理層,上層協(xié)議需要用戶自己定義。 由于介紹RS485總線的文章很多,其他程序略。  

        3.2 USB軟件設(shè)計(jì):  

        USB設(shè)備與主機(jī)通過(guò)四根線連接,電源、地,以及兩根數(shù)據(jù)線,該模塊使用計(jì)算機(jī)提供的5v電源。連接速度由D+ , D-連線上的電阻位置決定的, 如果D+ 線上有上拉電阻, USB 設(shè)備為全速設(shè)備,如果D-連線上有上拉電阻, 則USB 設(shè)備為低速設(shè)備。PDIUSBD12 的softconnect 技術(shù)在片內(nèi)集成了1.5k的上拉電阻, 可以通過(guò)微處理器發(fā)送命令來(lái)控制D+上的上拉電阻是否與電源連接。  

        在usb設(shè)備中,我們使用描述符區(qū)別不同的設(shè)備、端口等。描述符主要包括設(shè)備描述符、配置描述符、接口描述符,在設(shè)備中預(yù)先設(shè)置這些參數(shù),主機(jī)通過(guò)對(duì)這些描述符的讀取,獲得該設(shè)備的信息。  

        當(dāng)一個(gè)設(shè)備剛插入計(jì)算機(jī)時(shí),主機(jī)需要對(duì)該設(shè)備枚舉,讀取該設(shè)備的相關(guān)參數(shù),首先使用默認(rèn)的設(shè)備地址0進(jìn)行通信。主機(jī)端先向設(shè)備地址0,端點(diǎn)0發(fā)送Get_Descriptor(獲取描述符)請(qǐng)求來(lái)查詢接入什么樣的設(shè)備,設(shè)備使用設(shè)備描述符回答,然后通過(guò)發(fā)送Set_Address(設(shè)定地址)請(qǐng)求來(lái)分配一個(gè)單獨(dú)的地址給設(shè)備。設(shè)備讀取這個(gè)請(qǐng)求,返回一個(gè)確認(rèn)且保存新的地址。主機(jī)給新地址發(fā)送一個(gè)Get_Descriptor請(qǐng)求來(lái)讀取這個(gè)設(shè)備完整的描述符,包括端點(diǎn)最大包的大小,設(shè)備支持的配置號(hào),以及該設(shè)備的其它信息,主機(jī)將這些信息用于往后的通信中。而后發(fā)出Get_configuration_Descriptor(獲取配置描述符)命令,用來(lái)獲取設(shè)備的節(jié)點(diǎn)和端點(diǎn)的配置信息。而后發(fā)出(Set_configuration)設(shè)定配置請(qǐng)求,以該配置號(hào)配置設(shè)備。設(shè)備就完全正確處于可操作狀態(tài),完成了枚舉過(guò)程,便可以通過(guò)端點(diǎn)進(jìn)行數(shù)據(jù)傳輸了。  

        以下是主設(shè)備讀取從設(shè)備描述符的過(guò)程 



        主機(jī)發(fā)起的setup包,使用默認(rèn)的地址0,端點(diǎn)0。其中SYNC字段為同步序列數(shù)據(jù)域,固定為01H,緊接著為標(biāo)識(shí)符數(shù)據(jù)域PID字段,用來(lái)表示數(shù)據(jù)封裝包的類型,可分為令牌、數(shù)據(jù)、握手或特殊四種封裝包類型。其中令牌封裝包細(xì)分為OUT,IN,SETUP,SOF四種封裝格式。隨后為地址數(shù)據(jù)域ADDR字段,用來(lái)尋址高達(dá)127個(gè)外圍設(shè)備,每個(gè)設(shè)備只有對(duì)應(yīng)唯一的地址,ENDP字段為端點(diǎn)數(shù)據(jù)域,最多可尋址32個(gè)端點(diǎn),它僅在IN,OUT,SETUP令牌封裝包中,最后為CRC校驗(yàn)和。

     

        主機(jī)發(fā)送數(shù)據(jù),其中數(shù)據(jù)域中的數(shù)據(jù)80表示設(shè)備標(biāo)準(zhǔn)請(qǐng)求,06描述符命令(get_descriptor)00 01 代表請(qǐng)求設(shè)備的描述符,00 00為語(yǔ)言類型,40 00,指出期望從設(shè)備返回的數(shù)據(jù)個(gè)數(shù),如果描述符的個(gè)數(shù)大于指定的字節(jié)個(gè)數(shù),則按照指定個(gè)數(shù)返回,如果描述符小于指定的字節(jié)數(shù),返回實(shí)際的字節(jié)個(gè)數(shù)。



        該幀為設(shè)備收到數(shù)據(jù)后的確認(rèn)幀



        該幀為向設(shè)備發(fā)送數(shù)據(jù)請(qǐng)求。



        12為描述符長(zhǎng)度,01為設(shè)備類型,10 01 為usb版本號(hào),bcd碼,這里是usb1.1,00 為設(shè)備類型碼,00為子類設(shè)備代碼,00為USB分配的設(shè)備協(xié)議代碼,10為端點(diǎn)0最大包的大小,d8,0d為廠商編號(hào),01 c0為產(chǎn)品編號(hào),04 01為設(shè)備出廠編號(hào),01為廠商字符串索引,02 為產(chǎn)品字符串索引,00為序列號(hào),01為設(shè)置編號(hào)。  

        在主程序中完成對(duì)系統(tǒng)、PDIUSBD12的初始化,以及完成對(duì)d12的枚舉,將數(shù)據(jù)的發(fā)送接收都放在中斷程序中。PDIUSBD12有3組端點(diǎn),使用默認(rèn)端點(diǎn)0和端點(diǎn)2。將端點(diǎn)2作為數(shù)據(jù)傳輸?shù)耐ǖ溃?dāng)PDIUSBD12從USB收到一個(gè)數(shù)據(jù)包時(shí),就對(duì)CPU產(chǎn)生一個(gè)外部中斷請(qǐng)求,CPU立即相應(yīng)中斷,在中斷服務(wù)子程序中,將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū)中,隨后清零PDIUSBD12的內(nèi)部緩沖區(qū),對(duì)數(shù)據(jù)校驗(yàn),如果接收得數(shù)據(jù)正確,直接調(diào)用RS485數(shù)據(jù)發(fā)送子程序,將數(shù)據(jù)發(fā)送到RS485網(wǎng)絡(luò)。  



                     圖3 外部中斷流程圖  

        3.3 計(jì)算機(jī)軟件設(shè)計(jì):  

        計(jì)算機(jī)軟件主要包括,驅(qū)動(dòng)的設(shè)計(jì),動(dòng)態(tài)連接庫(kù)的設(shè)計(jì)。驅(qū)動(dòng)程序采用飛利浦提供的驅(qū)動(dòng),上位機(jī)程序使用api函數(shù)并封裝RS485總線的上層協(xié)議,提供給用戶使用的接口。本例采用VC編寫用戶程序和動(dòng)態(tài)連接庫(kù)。從驅(qū)動(dòng)中讀數(shù)據(jù)的程序如下, 

    void   readdata(unsigned char *rec) 

    {   unsigned char outbuf[105]; 

        HANDLE hFile, hDevice=0; 

        BOOL bResult; 

      ULONG nBytes = 25; 

        hFile = open_file("PIPE02"); 

        if(hFile == INVALID_HANDLE_VALUE)  

          {return;} 

        hDevice = open_dev(); 

        bResult = ReadFile(hFile,outbuf,10,&nBytes,NULL); 

    if(bResult==FALSE) 

    { DeviceIoControl(hFile,IOCTL_D12_RESET_PIPE,0,0,0,0,&nBytes,NULL);   } 

     CloseHandle(hFile); 

     CloseHandle(hDevice); 

    }  

        在使用這個(gè)函數(shù)的時(shí)候,只需要添加如下說(shuō)明。 

    extern "C" DllImport void readdata ( unsigned char * );  

        4 結(jié)  論  

        由于采用了USB總線,克服了原來(lái)使用RS232接口速度慢的瓶頸,提高了遠(yuǎn)程抄表系統(tǒng)的數(shù)據(jù)傳輸速率,該方案已經(jīng)成功的得到應(yīng)用,穩(wěn)定可靠,有廣闊的應(yīng)用前景。
     
    免責(zé)聲明:
    本站所提供的文章資訊、圖片、音頻、視頻來(lái)源于互聯(lián)網(wǎng)及公開(kāi)渠道,僅供學(xué)習(xí)參考,版權(quán)歸原創(chuàng)者所有! 如有侵犯您的版權(quán),請(qǐng)通知我們,我們會(huì)遵循相關(guān)法律法規(guī)采取措施刪除相關(guān)內(nèi)容。


     
    [ 技術(shù)前沿搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]
     
    相關(guān)新聞
     
     
    人人妻人人澡人人爽人人精品电影| 久视频精品免费观看99| 国产精品主播叶子闺蜜| 91久久精品视频| 久久精品.com| 国产亚洲精品成人a v小说| 国产亚洲精品不卡在线| 国产精品三级av及在线观看 | 国内精品久久久久伊人av| 国产精品综合一区二区| 波霸在线精品视频免费观看| 韩国精品福利一区二区三区| 国产成人精品久久二区二区| 久久国产精品国产精品| 国农村精品国产自线拍| 国产vA免费精品高清在线观看| 国产精品爽爽V在线观看无码| 国产精品自在自线视频| 久久成人国产精品一区二区| 国产精品亚洲综合网站| 国产精品国产三级国产普通话 | 亚洲精品制服丝袜四区| 99久久精品午夜一区二区| 99久久免费看国产精品| 亚洲乱码日产精品a级毛片久久| 精品久久久中文字幕一区| 亚洲日韩精品无码AV海量| 精品国产乱码一区二区三区| 在线人成精品免费视频| 99精品国产高清一区二区| 日本午夜精品一区二区三区电影| 久久精品视频国产| 国产精品第12页| 亚洲国产精品成人精品无码区在线| 亚洲精品乱码久久久久久按摩 | 三级精品在线观看| 久久er国产精品免费观看8| 精品国产毛片一区二区无码| 精品无码综合一区| 国产午夜精品一本在线观看| 日韩人妻无码精品系列|