1引言
在工業(yè)現(xiàn)場(chǎng)中,由于有些環(huán)境比較惡劣,布線不方便等因素可以采用藍(lán)牙無線通信技術(shù)來實(shí)現(xiàn)數(shù)據(jù)的通信。同時(shí),工業(yè)現(xiàn)場(chǎng)中有很多以不同方式互連的設(shè)備,其中包括非智能化簡(jiǎn)單數(shù)據(jù)連接單元 (I/O)、智能化設(shè)備 (比如智能傳感器、單回路控制器和 PLC)和監(jiān)控系統(tǒng) (作為 HMI使用,用于數(shù)據(jù)記錄和監(jiān)控 )等。這些設(shè)備大都是以各種不同的通信協(xié)議和媒介來互連的,其中有些就可以用藍(lán)牙無線技術(shù)代替。本文以 AT91R40008為例,結(jié)合 BCM04藍(lán)牙模塊開發(fā)了基于藍(lán)牙通信的工業(yè)接入點(diǎn),組建了基于藍(lán)牙通信的閥門、流量計(jì)、溫度變送器測(cè)試系統(tǒng),實(shí)現(xiàn)了帶有藍(lán)牙通信模塊的工業(yè)設(shè)備和現(xiàn)有的有線網(wǎng)路的通信。
????? 2藍(lán)牙技術(shù)簡(jiǎn)介
藍(lán)牙(bluetooth)是一種短距的無線通訊技術(shù),電子裝置彼此可以透過藍(lán)牙模塊而連接起來,省去了傳統(tǒng)的電線。透過芯片上的無線接收器,配有藍(lán)牙技術(shù)的電子產(chǎn)品能夠在十公尺的距離內(nèi)彼此相通,傳輸速度可以達(dá)到每秒鐘 1兆字節(jié)。同時(shí),藍(lán)牙支持設(shè)備短距離通信(一般是 10m之內(nèi))。能在包括移動(dòng)電話、 PDA、無線耳機(jī)、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進(jìn)行無線信息交換。藍(lán)牙的標(biāo)準(zhǔn)是 IEEE802.15,工作在 2.4GHZ頻帶,帶寬為 1Mb/s。
藍(lán)牙技術(shù)在工業(yè)現(xiàn)場(chǎng)上的應(yīng)用大致可以分為四個(gè)方面:
(1) 代替串行線纜。無線藍(lán)牙連接可以代替當(dāng)前的串行線纜。
(2) 結(jié)合藍(lán)牙和互聯(lián)網(wǎng)技術(shù)。利用藍(lán)牙帶來的 CPU處理能力,給設(shè)備添加更多功能,如內(nèi)置的 WEB用戶接口。
(3) 工業(yè)接入點(diǎn)。通過接入點(diǎn)將數(shù)個(gè)藍(lán)牙設(shè)備連接到傳統(tǒng)的有線網(wǎng)絡(luò)中,比如 IP網(wǎng)絡(luò)(如以太網(wǎng))或者工業(yè)現(xiàn)場(chǎng)總線網(wǎng)絡(luò)(如 Controlnet和 Profibus等)。
(4) 無線傳感器和起動(dòng)器。利用藍(lán)牙來將與物理制程關(guān)系昀密切的設(shè)備 (傳感器、起動(dòng)器和簡(jiǎn)單的模擬 /數(shù)字 IO設(shè)備)連接到監(jiān)控系統(tǒng)。
3 藍(lán)牙接入點(diǎn)的系統(tǒng)設(shè)計(jì)
在工業(yè)現(xiàn)場(chǎng)中使用無線通信技術(shù)。這就要求工業(yè)設(shè)備使用藍(lán)牙功能,并能和現(xiàn)有的以太網(wǎng)或者工業(yè)現(xiàn)場(chǎng)總線網(wǎng)絡(luò)相連。在這里,藍(lán)牙接入點(diǎn)就好像一個(gè) “電話交換機(jī)”,通過以太網(wǎng)供電設(shè)備和上位機(jī)進(jìn)行通信,以及通過無線方式和工業(yè)現(xiàn)場(chǎng)設(shè)備進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)上位機(jī)對(duì)現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)采集、監(jiān)測(cè)和控制。本文將藍(lán)牙接入點(diǎn)的系統(tǒng)設(shè)計(jì)分為硬件體系結(jié)構(gòu)和軟件設(shè)計(jì)兩個(gè)部分。下面將對(duì)這兩部分進(jìn)行具體說明。
3.1 硬件體系結(jié)構(gòu)
該藍(lán)牙接入點(diǎn)包含了微處理器( AT91R40008)、存儲(chǔ)器、藍(lán)牙通信模塊、網(wǎng)絡(luò)通信接口、串口通信等重要組成部分。在該設(shè)計(jì)中,電源使用了以太網(wǎng)供電設(shè)備,該設(shè)備除了用于網(wǎng)口通信,還提供設(shè)計(jì)中所需要的電源。該電源經(jīng)過電平轉(zhuǎn)換,為微處理器、存儲(chǔ)器、藍(lán)牙通信模塊等提供所需的 +3.3V和+1.8V電源。 32位的微處理器 AT91R40008通過串口 0和串口 1與串口通信部分和藍(lán)牙模塊進(jìn)行數(shù)據(jù)交換。圖 1為藍(lán)牙接入點(diǎn)的硬件框圖。下面就其具體原理進(jìn)行說明。
3.1.1 微處理器 AT91R40008
AT91R40008是 Atmel AT9116的 32位的微控制器系列產(chǎn)品。它以 ARM7TDMI 處理器內(nèi)核為基礎(chǔ)。該處理器有一個(gè)高性能 32位精簡(jiǎn)指令系統(tǒng)和一個(gè)高密度 16位的指令系統(tǒng),同時(shí)具有較低的能耗。AT91R40008具有片上的 SRAM或 ROM、完全可編成的外部總線接口(EBI)、32個(gè)可編程的 I/O口、8個(gè)優(yōu)先級(jí)、4個(gè)外部中斷、2個(gè) USART及 16位的定時(shí)器/計(jì)數(shù)器等特點(diǎn)。除此之外,在內(nèi)部寄存器實(shí)現(xiàn)對(duì)異常情況的快速處理,可以方便的進(jìn)行即時(shí)控制和應(yīng)用編程。
AT91R40008以與外部存儲(chǔ)器的直聯(lián)為特色,由外部 FLASH,經(jīng)過完全可編程外部總線接口 (EBI)、一個(gè)八位優(yōu)先向量中斷控制器,,及外部數(shù)據(jù)控制器,大大提高了處理器的即時(shí)性能。 AT91R40008使用 Atmel的高密度 CMOS技術(shù), ARM7TDMI 處理器內(nèi)核結(jié)合了片上高速存儲(chǔ)器及其外部設(shè)備,使其具有非常強(qiáng)大的功能。
微處理器部分的設(shè)計(jì)包含系統(tǒng)硬件的啟動(dòng)與復(fù)位,地址總線、數(shù)據(jù)總線的分配和定義,通過串行線對(duì)藍(lán)牙模塊的讀寫等。
系統(tǒng)由外部的 50M鐘振作為時(shí)鐘源向 cpu輸入時(shí)鐘信號(hào)。復(fù)位電路由 10uF的電容、10K的電阻及按鍵組成低電平復(fù)位電路。該復(fù)位電路可實(shí)現(xiàn)上電低電平自動(dòng)復(fù)位或者手動(dòng)復(fù)位。AT91R40008內(nèi)部 ROM為 128K,外部昀大可擴(kuò) 64M的存儲(chǔ)器,由于設(shè)計(jì)需要,在設(shè)計(jì)中擴(kuò)展了一片 2M字節(jié)的 SST36VF160對(duì)大量的軟件程序進(jìn)行存儲(chǔ)。由于 AT91R40008內(nèi)部包含的 SRAM已達(dá) 256K,對(duì)于數(shù)據(jù)存儲(chǔ)已夠用了,所以在外部沒有進(jìn)行 RAM的擴(kuò)展。網(wǎng)卡芯片 AX88796通過片選線、中斷線、讀寫信號(hào)控制線和地址數(shù)據(jù)總線和 cpu相連,實(shí)現(xiàn)藍(lán)牙接入點(diǎn)和上位機(jī)的網(wǎng)絡(luò)通信。AT91R40008通過串口 1實(shí)現(xiàn)與藍(lán)牙模塊的數(shù)據(jù)交換,通過串口 0實(shí)現(xiàn)和上位機(jī)之間的串口調(diào)試。
3.1.2? FLASH存儲(chǔ)器 SST36VF160
由于該系統(tǒng)是應(yīng)用與工業(yè)現(xiàn)場(chǎng)以太網(wǎng)中,在軟件中必須加入相應(yīng)的以太網(wǎng)規(guī)范標(biāo)準(zhǔn),所以在系統(tǒng)設(shè)計(jì)中,在 cpu的外部拓展了 2M字節(jié)的 FLASH。SST39VF160是一個(gè) 1M×16的 CMOS多功能 FLASH器件,由 SST特有的高性能的 SupeRFlash技術(shù)制造而成。 SST39VF160功耗較低,工作電壓為 3.3V,具有高性能的編程功能,字編程時(shí)間為 14us。基于 SST39F160的這些優(yōu)點(diǎn)選用這款 FLASH,在實(shí)踐中證明這款 FLASH能夠更方便和更低成本的滿足程序配置和數(shù)據(jù)存儲(chǔ)的要求。
3.1.3? 藍(lán)牙模塊 BCM04是滿足自適應(yīng)的可進(jìn)行數(shù)據(jù)交換和語(yǔ)音通信的藍(lán)牙通信模塊。其體積小,為 17.5×15.0×2.3mm;工
作電壓為 1.8V,功耗較低;以 UART為主接口,另有語(yǔ)音接口、 SPI接口、 PIO口等,其結(jié)構(gòu)框圖如圖 2所示; BCM04內(nèi)部集成了 16Kbits的 EEPROM和 4Mbits的 FLASH/ROM,具有豐富的存儲(chǔ)器資源。
在設(shè)計(jì)中,使用了藍(lán)牙模塊的 UART口和微處理器 AT91R40008的串口 1相連,通過藍(lán)牙模塊向工業(yè)現(xiàn)場(chǎng)的無線設(shè)備發(fā)送和接收數(shù)據(jù),在由 cpu,經(jīng)工業(yè)以太網(wǎng)將數(shù)據(jù)傳送到上位機(jī)中,實(shí)現(xiàn)上位機(jī)對(duì)藍(lán)牙設(shè)備的訪問與監(jiān)控。
3.1.4? 網(wǎng)絡(luò)通信接口在設(shè)計(jì)中采用采用網(wǎng)絡(luò)接口將藍(lán)牙接入點(diǎn)接入工業(yè)以太網(wǎng),數(shù)據(jù)由以太網(wǎng)傳遞到上位機(jī)中,實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)的無線設(shè)備和上位機(jī)的通信。網(wǎng)絡(luò)隔離器采用的是 HR61H50L,網(wǎng)卡芯片使用的是 AX88796。
AX88796是臺(tái)灣 Asix公司推出的 NE2000兼容快速以太網(wǎng)控制器。其內(nèi)部集成有 10/100 Mb/s自適應(yīng)的物理層收發(fā)器和 8K×16位的 SRAM,支持 MCS-51系列、80186系列以及 MC68K系列等多種 CPU總線類型。 AX88796執(zhí)行基于 IEEE802.3/IEEE802.3u 局域網(wǎng)標(biāo)準(zhǔn)的 10Mb/s和100Mb/s以太網(wǎng)控制功能,并提供IEEE802.3u兼容的媒質(zhì)無關(guān)接口 MII(Media Independent Interface),用以支持在其它媒質(zhì)上的應(yīng)用。 AX88796的地址總線 SA[9:0]與數(shù)據(jù)總線 SD[15:0]分別與 CPU的地址/數(shù)據(jù)總線相連。 CPU通過 I/O讀寫 NE2000寄存器來控制 AX88796的工作狀態(tài),通過遠(yuǎn)程 DMA FIFOs與 AX88796的內(nèi)部緩存 SRAM進(jìn)行數(shù)據(jù)交換。SRAM與 MAC核之間進(jìn)行 Local DMA將數(shù)據(jù)發(fā)送至 MAC層,再經(jīng)由內(nèi)部的 PHY層發(fā)送至 RJ45接口,或者經(jīng)過 MII接口送至外部的物理層芯片。SEEPROM接口可以用來連接串行 EEPROM。EEPROM可用于存儲(chǔ) MAC地址,供 AX88796每次初始化時(shí)讀取。
3.1.5? 電源部分
電源采用的是以太網(wǎng)供電設(shè)備,該設(shè)備采用符合 802.3受電設(shè)備標(biāo)準(zhǔn),輸出標(biāo)準(zhǔn)的 +24V,經(jīng)過 LM2576-5、 AS1117-1.8和 AS1117-3.3電源芯片,電平轉(zhuǎn)換后,輸出藍(lán)牙接入點(diǎn)上的 cpu、存儲(chǔ)器、網(wǎng)卡芯片和藍(lán)牙模塊上所需的 1.8V和 3.3V電源。
3.1.6? 串口通信
串口通信使用的是 MAX3232芯片。這里使用串口通信接口主要是為了調(diào)試藍(lán)牙模塊、 cpu和上位機(jī)之間的通信,及測(cè)試其通信性能。
3.2 軟件部分
在軟件設(shè)計(jì)部分,主要介紹一下藍(lán)牙模塊的通信原理。首先,初始化藍(lán)牙模塊,直到初始化成功。接著對(duì)通信模塊的各個(gè)端口進(jìn)行定義。AT91R40008有 32位的 I/O口,設(shè)計(jì)時(shí)結(jié)合實(shí)際中的情況,考慮具體所用的端口,結(jié)合其他通信模塊定義這些端口。定義通信模塊端口完成以后,立即與現(xiàn)場(chǎng)無線設(shè)備進(jìn)行連接。隨后,藍(lán)牙接入點(diǎn)開始搜索現(xiàn)場(chǎng)設(shè)備,并對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行讀寫,接收藍(lán)牙指令并更新。其藍(lán)牙模塊的通信流程圖如圖 3。
藍(lán)牙接入點(diǎn)向本地子網(wǎng)廣播自己的設(shè)備聲明,并接收其他設(shè)備的設(shè)備聲明。初始化完后 5秒鐘內(nèi)用來搜尋子網(wǎng)中的鄰居設(shè)備,搜尋完成后,開始建立鄰居表,并把鄰居表內(nèi)的其他從設(shè)備加入到無線調(diào)度列表中。網(wǎng)絡(luò)組建完成后,接入點(diǎn)按照確定性調(diào)度算法輪詢從設(shè)備。并把藍(lán)牙數(shù)據(jù)報(bào)文轉(zhuǎn)換成工業(yè)以太網(wǎng)的報(bào)文,放入工業(yè)
以太網(wǎng)的調(diào)度器中。設(shè)備聲明報(bào)文:
typedef struct _zgb_pkt_ann {
} zgb_pkt_ann;
信息分發(fā)報(bào)文:
typedef struct _zgb_distribute { INT8U devdesp[16]; INT8U mdata[16];
} zgb_distribute;
令牌:
typedef struct _zgb_pass_token { INT8U ans;INT8U res[3]; // 設(shè)備描述, 字符串?? //主 or從? 0主設(shè)備; 1 從設(shè)備? //設(shè)備狀態(tài): 0設(shè)備未組態(tài) , 自由發(fā)包;??????? //1設(shè)備已組態(tài) , 獲取令牌才能發(fā)包 // 保留字段
// 設(shè)備描述, 字符串 // 信息分發(fā)的內(nèi)容
//確認(rèn)? 0不確認(rèn) ; 1確認(rèn) // 保留信息
} zgb_pass_token;
藍(lán)牙接入點(diǎn)在工業(yè)現(xiàn)場(chǎng)中的應(yīng)用
在設(shè)計(jì)中,將工業(yè)以太網(wǎng)的有線網(wǎng)絡(luò)與工業(yè)現(xiàn)場(chǎng)的無線設(shè)備之間建立連接,如圖 4。工業(yè)現(xiàn)場(chǎng)的無線設(shè)備通過一個(gè)藍(lán)牙專用的傳輸協(xié)議將數(shù)據(jù)傳輸?shù)剿{(lán)牙接入點(diǎn)。數(shù)據(jù)經(jīng)過轉(zhuǎn)換,成為工業(yè)以太網(wǎng)能夠識(shí)別和支持的格式,并傳輸?shù)焦I(yè)以太網(wǎng)中的一個(gè)發(fā)出指令請(qǐng)求的設(shè)備中。上位機(jī)同時(shí)可以通過以太網(wǎng)對(duì)數(shù)據(jù)進(jìn)行監(jiān)控。工業(yè)現(xiàn)場(chǎng)的無線設(shè)備還可以同時(shí)與一個(gè)帶有藍(lán)牙模塊的手持設(shè)備和一個(gè)藍(lán)牙接入點(diǎn)進(jìn)行連接,對(duì)數(shù)據(jù)進(jìn)行訪問和采集。
5 小結(jié)
在搭建完整個(gè)系統(tǒng),并對(duì)藍(lán)牙的通信性能進(jìn)行檢測(cè)的過程中發(fā)現(xiàn),藍(lán)牙模塊由于采用的是信息無線傳輸方式,所以在傳輸過程中干擾較大,傳輸距離也較短。工業(yè)現(xiàn)場(chǎng)設(shè)備安裝的環(huán)境往往比較惡劣,怎樣使藍(lán)牙設(shè)備擁有更好的穩(wěn)定性、更低的功耗、更廣的工作范圍,這些對(duì)硬件設(shè)計(jì)和軟件優(yōu)化提出了更高的要求。
評(píng)論
查看更多