應用於嵌入式系統之網路連線介面協定
RS-232
Introduction UART 9600 8-N-1 is in common use Universal Asynchronous Receiver/Transmitter 9600 8-N-1 is in common use 9600 bps 8-bit data, no parity bit and 1 stop bit logic 1 -15V -3V 0V 3V 15V Options Typical Values Speed(bps) 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 Start Bits 1-bit '0' Data Length 5, 6, 7 or 8 bits Parity bit None(N) or 1 bit even(E)/odd(O) parity Stop Bits 1-bit or 2-bit '1'
Oscilloscope Trace Figure source: http://en.wikipedia.org/wiki/RS-232
Network Device 1 Receiver Transmitter RS-232 Transceiver Device 2 clk_1 and clk_2 are set up separately clk_1 should be equal to clk_2 MAX232, HIN232 are in common used transceivers for RS-232 Device 1 Receiver clk_1 Transmitter RS-232 Transceiver rxd txd rx tx Device 2 clk_2
Modbus 及 MAX485 IC介紹 以微控器為基礎之電路設計實務-微處理器實驗室
Outline Modbus 介紹 MAX485 IC介紹 差動傳輸波形 以微控器為基礎之電路設計實務-微處理器實驗室 1
Modbus 介紹 什麼是Modbus? Modbus是一種串列通訊協定,用於Serial Port、Ethernet 以及其他支援網際網路協定的裝置 Modbus為master/slave架構之協議。其中一裝置為Master 節點,其他使用Modbus協定參與通訊的裝置為slave節點, 而每一個slave裝置都有一個唯一的位址。 可用於將數個感應裝置的數值回傳給電腦 以微控器為基礎之電路設計實務-微處理器實驗室 2
Modbus 通訊格式_1/2 MODBUS 資料傳送種類有ASCII 及RTU兩種可供選擇, 如圖1、2所示。 圖1 ASCII 訊息格式
Modbus 通訊格式_2/2 ASCII與RTU的資料傳送方式。 圖3 ASCII 格式 圖4 RTU 格式
Holding Register _High Modbus 介紹 Modbus封包格式 Modbus為不固定長度封包,每次傳送大小均為8 Bits,封 包格式如上表格所示 Modbus封包無結束訊號,其結束之判定使用”Time Out” 機制,一定時間內(Ex.10us)沒接收到一下筆資料即判斷為 封包結尾 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 3
Holding Register _High Modbus 介紹 Modbus封包格式 Device Address: 所有連線的裝置均會收到Modbus Command,每個裝 置均擁有唯一的Address,若Command的Device Address與 Slave裝置的Address符合,即該指令對象為該Slave裝置。 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 1
Holding Register _High Modbus 介紹 Modbus封包格式 Command Function: Modbus Command支援數種Function,依據Function不 同,Slave裝置會執行不同的動作。Ex. 當Command為03時, Slave會回傳特定暫存器數值回Master。 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 1
Holding Register _High Modbus 介紹 Modbus封包格式 Holding Register (High/Low): 每個Slave裝置上為符合Modbus協定,都會規劃一區 塊為Holding Register供Master存取, Holding Register (High/Low)為Holding Register 的位址,並分為High Byte以 及Low Byte。 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 4
Holding Register _High Modbus 介紹 Modbus封包格式 Length(High/Low): 指定存取自Holding Register(High/Low)起的數個暫存 器 EX . Lenth_High =0x00、Lenth_Low =0x02,即表示存取從 指定HR起的兩個暫存器。 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 5
Holding Register _High Modbus 介紹 Modbus封包格式 CRC : Cyclic Redundancy Check,為檢查封包有無錯誤時使用。 Data: 在特定Function中會使用該區塊。 Device Address Command Function Holding Register _High Holding Register _Low Length_ High Length_ Low CRC , data…… 以微控器為基礎之電路設計實務-微處理器實驗室 6
MAX485 IC介紹 7 MAX485-RS232轉RS485 IC B: D-,為RO、DI之反相電壓 DE: Driver Enable,此腳位為高電位時DE有效 RE: Rx Enable,此腳位為低電位時RO有效 DI Driver In,將RS232端TX的資料送至RS485端 RO: Rx Out,將RS485端收到的資料傳至RS232之RX端 A: D+,為RO、DI之同相電壓 以微控器為基礎之電路設計實務-微處理器實驗室 7
差動傳輸波形 8 D+ D - Result RS485原理 以微控器為基礎之電路設計實務-微處理器實驗室 為半雙工(同一時間只能進行傳送/接收的動作),多點通訊之標準 為差動傳輸,使用纜線兩端(D+、D-)的電壓差來表示傳遞訊號 僅規定接收端 、傳送端的電氣特性,沒有規定任何資料協定 提供高速的資料通訊速率(10m時可達35Mbits/s;1200m時可達100kbits/s) 抗雜訊能力強,可支援長距離傳輸(最遠可達1200m) 常用於廣域網路,以及單機傳送(Master),多機接收(Slave)的通訊鏈結 D+ D - Result 以微控器為基礎之電路設計實務-微處理器實驗室 8
差動傳輸波形 9 實作-以MCU控制RE、DE之狀態 0100001101 0x61 D- D+ start end 以微控器為基礎之電路設計實務-微處理器實驗室 9
I2C介紹與練習
Outline I2C基本介紹 I2C傳輸練習
I2C基本介紹 Overview Inter-Integrated Circuit (I²C) bus Two wire communication ─ SCL:Clock line ─ SDA:Bi-direction data line Master ─ Slave network ─ Master:Control data flow ─ Slave:Synchronize data transfer by introducing wait states Clock frequency:normal is 100k,high speed 400k
I2C基本介紹 Physical bus Vcc can driver by 3.3v or 5v At least one master and multiple slaves Both SCL and SDA are open drain drivers Rp ─ Pull up resistors ─ 1.8k to 47k (1.8k、4.7k、10k are common)
I2C基本介紹 Physical Protocol(1/2) Start condition(S):當SCL為1時, SDA從1→0。 Stop condition(P):當SCL為1時, SDA從0→1。
I2C基本介紹 Physical Protocol(2/2) 傳輸型式:一個Byte為單位,從 MSB開始傳,最後回傳一 訊號。 ─ 指為0時是有acknowledge, 1是no-acknowledge。 ─ 傳輸有分傳送 address(7bits/10bits)及data(8bits),一 般使用7bits address。 ─ 若為傳送address,則後面會有 一R/W bit,形成(7+1) bits傳送。 Address傳輸 Data傳輸
I2C基本介紹 I2C讀/寫 一完整的資料讀/寫為先傳輸一salve address與R/W signal,若 為0, 則再傳data,否則直接stop。 連續多筆資料讀寫:當一筆data傳 輸完後,接收到 後即繼續傳送, 直到最後一筆data傳完再送stop。
I2C傳輸練習 MCC的I2C 1.於MCC物件選單中,選擇 MSSP→MSSP2→I2C Master(Slave) Interrupt
I2C傳輸練習 MCC的I2C 2. I2C Master Interrupt 設定
I2C傳輸練習 MCC的I2C 3. I2C Slave Interrupt 設定
I2C傳輸練習 MCC的I2C Note 1.Slave address為slave的識別 address可自由設定。 2.SDA Hold time:當slave收到 master的read訊號後,到準備傳送data 給 master的時間,此段時間 先將SCL拉到低電位。
I2C傳輸練習 實際波形 PIC設定後,I2C傳輸波形可透過示 波器看到。 ─Write Start R/W Stop
I2C傳輸練習 實際波形 PIC設定後,I2C傳輸波形可透過示 波器看到。 ─Read Start R/W Stop
CANBUS ‧CAN(Controller area network) ‧提供偵錯機制確保資料正確性 ‧訊息有分優先次序 ‧可分辨資料是網路傳送錯誤或是裝 置不正常運作所造成,進而將有問 題的網路節點關閉 2
相關背景 CAN(Controller Area Network) 定位 Bosch公司開發 ISO/OSI的資料鏈結層和實體層 用途 早期用在車用通訊,後來也推廣至製程自動化、智 能建築等通訊 特性 建立在基於資訊導向傳輸協定的廣播傳輸機制 允許網路上的設備直接互相通訊 優先權仲裁機制 具備五種偵錯機制─CRC、訊框校驗、ACK、發送 監視、位元填充 傳輸速率高達1Mbit/sec 控制器與線材價格低廉 控制器60元 收發器30元 電線 微處理器發展實驗室 國立中山大學電機工程學系
CANBUS 3
CANBUS CAN-H與CAN-L的電壓均為2.5V → 1 CAN-H = 3.5V與CAN-L = 1.5V → 0 4
訊息類型 ‧傳送資料的資料訊框 ‧徵求傳送資料的遠程訊框 ‧報告錯誤的錯誤訊框 ‧要求延遲的過載訊框 5
CAN的標準資料訊框格式 6 •1位元的Start of Frame:dominant •12位元的Arbitration Field 11位元的Identifier:訊息識別,區別不同訊息類型 1位元的RTR:遠程傳輸請求,dominant •6位元的Control Field 1位元的IDE:訊息識別擴展,dominant 1位元的RB0:保留,dominant 4位元的DLC:資料長度 •0~8位元組的Data Field •16位元的CRC Field 15位元的CRC 1位元的CRC分隔符:Recessive •2位元的ACK Field 1位元的ACK 1位元的ACK分隔符:Recessive •7位元的End of Frame:Recessive 6
遠程傳送請求訊框 7 •1位元的Start of Frame:dominant •12位元的Arbitration Field 11位元的Identifier:訊息識別,區別不同訊息類型 1位元的RTR:遠程傳輸請求,dominant Recessive •6位元的Control Field 1位元的IDE:訊息識別擴展,dominant 1位元的RB0:保留,dominant 4位元的DLC:資料長度(需回傳資料的Data Bytes) •0~8位元組的Data Field •16位元的CRC Field 15位元的CRC 1位元的CRC分隔符:Recessive •2位元的ACK Field 1位元的ACK 1位元的ACK分隔符:Recessive •7位元的End of Frame:Recessive 7
錯誤訊框 ‧連續6個dominant位元的錯誤旗標(Error Flag):中斷正在傳送的訊框 到錯誤,並響應錯誤旗標 ‧8個recessive位元的錯誤分隔 8
CAN的偵錯機制 9 循環冗餘校驗 訊息校驗 應答錯誤 發送監視 位元填充 15位元的CRC 檢查固定值的欄位,如CRC分隔符、ACK分隔符、End of Frame 應答錯誤 發送端沒有監聽到ACK 發送監視 發送端監聽到匯流排上的狀態與發送的狀態不同 位元填充 連續收到6個相同狀態的位元 9
CAN的仲裁機制 •發生在仲裁域的訊息識別和RTR •標準資料訊框較擴展資料訊框優先 •資料訊框較遠程訊框優先 •較小的訊息識別擁有較高的優先權 10
CAN的仲裁機制 •閒置期間檢測到 0 ,其他節點自動轉成監聽 模式,直到該筆訊息送完 •節點 A 優先權高於節點 B 11
CANBUS •dsPIC30F4011 微控制器內建 有一組CAN控 制器 •CAN收發器為 Microchip MCP2551 12
PIC16F1827 SPI使用教學
Outline SPI介紹 實作
SPI介紹 SPI原理 為同步(synchronous)且全雙工(Full- Duplex)傳輸 裝置(Device)分為Master以及Slave, Master由Slave select選擇溝通對象 SPI模組共使用三個Port進行資料傳輸, 分別是SDI、SDO、SCK, 由Master之CLK訊號控制資料傳輸,且 一次傳輸資料量為8bits(1byte)
SPI介紹 SCK:由Master控制,為同步傳輸之時脈訊號
SPI介紹 SDO:Data Output,為SPI模組資料輸出阜,連接至其他設備之SDI
SPI介紹 SDI:Data Input,為SPI模組資料輸入阜,連接至其他設備之SDO
SPI介紹 SSX:Slave Select,可設置為default或enable,若enable則受Master控制是否接收資料
SPI介紹 1 1 1 1 1 1 1 1
SPI介紹
實作 兩人一組,一人負責Master,一人負責 Slave SPI-Master/Slave資料傳輸 兩人一組,一人負責Master,一人負責 Slave 使用MCC開啟MSSP-SPI模組,Master 以及Slave選擇對應的SPI Mode 參照MCC產生之標頭檔,學習使用SPI 函式,進行資料傳輸 使用示波器檢查兩模組產生之波形是否 與欲傳輸資料相同
實作 Master SDO = 0x11 SCK Slave SDO = 0x62
藍牙 微處理器發展實驗室
Outline 藍牙簡介 藍芽歷史 藍牙協定 KSM008藍牙模組介紹 KSM008原廠預設值 藍牙協定 KSM008藍牙模組介紹 KSM008原廠預設值 修改KSM008 Configuration 微處理器發展實驗室
藍牙簡介 起源 藍芽起源於 1994 年,由易利信公 司(Ericsson)開始研究在行動電話和其他 配件間進行低功耗、低成本無線通訊連 線的方法。這項無線技術的名稱取自古 代丹麥維京國王Harald Blåtand的名字 (英文便是Harald Bluetooth )。 藍牙標誌 微處理器發展實驗室
藍牙歷史(1/2) 1998年時藍牙推出0.7規格,支援 Baseband與LMP通訊協定兩部份。1999 年完成SDP及TCS協定。1999年7月26日 正式公布1.0版,使用2.4GHz的ISM頻段 來進行通訊,最高資料傳輸速度1Mbps。 2001年的1.1版標準化為IEEE 802.15.1 , 但是這個標準已經不再繼續使用。藍牙技 術目前由藍牙技術聯盟(SIG)來負責維護其 技術標準。 藍芽版本 改進 最高資料傳輸速度 1.2 遮蔽裝置的硬體位址 自適應頻率跳躍(AFH, Adaptive Frequency Hopping) L2CAP層引入了流量控制和錯誤糾正機制 192Kbps 2.0+EDR 非跳躍窄頻通道(Non-hopping narrowband channel) 2240Kbps 微處理器發展實驗室
藍牙歷史(2/2) 微處理器發展實驗室 藍芽版本 改進 最高資料傳輸速度 2.1+EDR Sniff省電功能 簡單安全配對(SSP, Secure Simple Pairing) 2240Kbps 3.0+HS 整合802.11PAL 引入了增強電源控制 25Mbps 4.0 提出了「低功耗藍牙」、「傳統藍牙」和「高速藍牙」模式 傳輸距離提升到100m以上(低功耗模式下) 分Single mode(僅BT4.0互傳);Dual mode(可以向下相容) 所有封包都使用24-bit CRC校驗 使用AES-128 CCM加密。 4.1 提供了更高的靈活性和掌控度 支援多裝置連接 5 有效傳輸距離理論上可達300m 支援室內定位導航功能 允許無需配對接受信標的資料(比如廣告、Beacon…) 50Mbps 微處理器發展實驗室
藍牙協定(1/3) 微處理器發展實驗室
藍牙協定(2/3) 微網 散網 藍芽中連網的基本單元 一個主機與可從一到七個活動中的從屬裝置所 組成 主機者決定頻道與相位 在一微網內的裝置也可以是另一微網的一部分, 並且在每個散網中都可當主機或從屬裝置 允許許多裝置分享相同的實體區域 充分運用頻寬 微處理器發展實驗室
藍牙協定(3/3) 微處理器發展實驗室
KSM008藍芽模組介紹(1/2) KSM008藍芽模組(含底板)共有六個腳 位 1. KEY 2. RXD 3. TXD 4.VCC 5. GND 6. STATUS 微處理器發展實驗室
KSM008藍芽模組介紹(2/2) 正常接線方式 KEY 若要進行設定,須接 3.3 V;若是要進 行連接就不接 RXD 另一端TXD TXD 另一端RXD VCC 接 3.3 V GND 必須共地 STATUS 空接 微處理器發展實驗室
KSM008原廠預設值 設備值:0 查詢碼:0x009e8b33 模塊工作角色:Slave Mode(被連線) 連接模式:指定專用藍芽設備連接模式 (必須先配對) UART: Baud rate:38400bps Stop bit: 1 bit Even parity:non even parity 配對碼:1234 設備ID:HC-2010-06-01 微處理器發展實驗室
修改KSM008 Configuration 步驟 Step1:將藍芽模組接上TTL-to-USB Step2:USB接上電腦,藍芽模組接好PIN腳 Step3:輸入AT command Step4:拔除藍芽模組電源與KEY腳電源重 新接電開機 微處理器發展實驗室
Step1:將藍芽模組接上TTL-to-USB 微處理器發展實驗室
Step1:將藍芽模組接上TTL-to-USB 步驟 Step1:藍芽TX BM77 EVB TX Step2:藍芽RX BM77 EVB RX Step3:接上GND(共地) 微處理器發展實驗室
Step2:USB接上電腦,藍芽模組接好PIN腳 去MicroChip官網下載Driver URL: http://www.microchip.com/DevelopmentTools /ProductDetails.aspx?PartNO=ev77spps3mc 2a 下載”MCP2200 Windows Driver & Installer” 微處理器發展實驗室
Step2:USB接上電腦,藍芽模組接好PIN腳 VCC接 3.3V KEY接 3.3V TX, RX, GND依照原接法即可 微處理器發展實驗室
Step3:輸入AT command 步驟 AT command 常用設定總整理 查詢USB to Serial COM port 設定PUTTY AT command測試 AT command 常用設定總整理 微處理器發展實驗室
查詢USB to Serial COM port 控制台所有控制台項目系統裝置 管理員連接埠(COM和LPT) USB Serial Port 微處理器發展實驗室
設定PUTTY 微處理器發展實驗室
AT command測試 接完後,接上電源,會發現PIO8的 LED緩慢閃爍,表示已經進入Config狀 態,此時開啟終端機,先看是否可以輸 入字元,若可輸入的話即可進行下列測 試 輸入AT(或是小寫at)並按兩次Enter,若 結果為數個OK print出代表成功 微處理器發展實驗室
AT command測試 為何會有數個OK? 若使用PUTTY,必須每次輸入指令完 後按下兩次Enter AT command的格式為”AT + 指令 + \r\n” 而我們在Terminal端有設定一個CR + LF,其 目的僅有讓下一個收到或是輸入的字串可以換 到下一行所以多按一次Enter代表輸入”\r\n” 才算是指令結尾 若使用PUTTY,必須每次輸入指令完 後按下兩次Enter 微處理器發展實驗室
AT command 常用設定總整理 測試指令 重啟模組 獲取軟體版本 微處理器發展實驗室 指令 回應內容 參數 AT OK 無 指令 AT+RESET OK 無 指令 回應內容 參數 AT+VERSION? +VERSION:<Param> OK Param:軟體版本號碼 微處理器發展實驗室
AT command 常用設定總整理 恢復原廠狀態 取得模組藍芽位址 查詢藍芽設備名稱 微處理器發展實驗室 指令 回應內容 參數 AT+ORGL OK 無 指令 回應內容 參數 AT+ADDR? +ADDR:<Param> OK Param:模組藍芽位址 指令 回應內容 參數 AT+NAME? +NAME:<Param> OK―成功 FAIL―失敗 Param:藍芽設備名稱 微處理器發展實驗室
AT+NAME=<Param> AT command 常用設定總整理 設定藍芽設備名稱 查詢模組角色 指令 回應內容 參數 AT+NAME=<Param> OK <Param> = 設備名稱 指令 回應內容 參數 AT+ROLE? +ROLE:<Param> OK Param: 0―Slave 1―Master 2―Slave-Loop 微處理器發展實驗室
AT command 常用設定總整理 設定藍芽模組角色 查詢配對碼 設定配對碼 微處理器發展實驗室 指令 回應內容 參數 AT+ROLE=<Param> OK Param: 0―Slave 1―Master 2―Slave-Loop 指令 回應內容 參數 AT+PSWD? +PSWD:<Param> OK Param:配對碼 指令 回應內容 參數 AT+PSWD=<Param> OK <Param>:配對碼 微處理器發展實驗室
AT command 常用設定總整理 設定藍牙連接模式 查詢藍牙連接模式 微處理器發展實驗室 指令 回應內容 參數 AT+CMODE=<Param> OK Param: 0―指定連接 1―任意連接 2―Slave-Loop 指令 回應內容 參數 AT+CMODE? +CMODE:<Param> OK Param: 0―指定連接 1―任意連接 2―Slave-Loop 微處理器發展實驗室
AT+BIND=<Param> AT command 常用設定總整理 設定綁定藍牙連接地址 查詢綁定藍牙連接地址 指令 回應內容 參數 AT+BIND=<Param> OK Param: XXXX,XX,XXXXX 指令 回應內容 參數 AT+BIND? +BIND:<Param> OK Param: XXXX:XX:XXXXX 微處理器發展實驗室
AT command 常用設定總整理 查詢藍芽模組UART參數 微處理器發展實驗室 指令 回應內容 參數 AT+UART? +UART=<Param1>,<Param2>, <Param3> OK Param1:BaudRate 4800 9600 19200 38400 57600 115200 230400 460800 921600 1382400 Para2 : Stop bit 0 ―1 bit 1 ―2 bit Param3: Error Check 0― None; 1―Odd 微處理器發展實驗室
AT command 常用設定總整理 錯誤回應資訊 微處理器發展實驗室 Error(16進位值) 註釋 AT命令錯誤 1 指令結果微默認值 AT命令錯誤 1 指令結果微默認值 2 PSKEY寫入錯誤 3 設備名稱太長(超過32 Word) 4 設備名稱長度為0 5 藍芽地址 NAP過長 6 藍芽地址 UAP過長 7 藍芽地址 LAP過長 8 PIO序號長度為0 9 無效的PIO序號 微處理器發展實驗室
Android BluetoothChat
主程式 BluetoothChat BluetoothChatService Android Android Develpers 使用者介面 ->Classic Bluetooth BluetoothChat BluetoothChatService
主程式 BluetoothChat BluetoothChatService Android Android Develpers 使用者介面 ->Classic Bluetooth BluetoothChat BluetoothChatService
BluetoothChatService 宣告 public synchronized void stop() { …… setState(STATE_NONE); } private BluetoothChatService mChatService = null; 呼叫method public synchronized void start() { …… setState(STATE_LISTEN); } mChatService.stop(); mChatService.start(); mChatService.write(send); . mChatService.connect(device); . Android 使用者介面 Android Develpers ->Classic Bluetooth BluetoothChat private synchronized void setState(int state){ mState = state; mHandler.obtainMessage(BluetoothChat.MESSAGE_STATE_CHANGE, state, -1).sendToTarget(); } BluetoothChatService
public class BluetoothChatService {
public class BluetoothChatService {
public class BluetoothChatService - AcceptTH public synchronized void start() { mSecureAcceptThread.start(); public synchronized void connected(BluetoothSocket socket, BluetoothDevice device, final String socketType) { public synchronized void stop() mSecureAcceptThread.cancel();
public class BluetoothChatService - ConnectTH public synchronized void start() { public synchronized void connect(BluetoothDevice device, boolean secure) { public synchronized void connected(BluetoothSocket socket, BluetoothDevicedevice, final String socketType) { public synchronized void stop() { mConnectThread.cancel(); public synchronized void connect(BluetoothDevice device, boolean secure) { 關掉重開 的意思 mConnectThread = new ConnectThread(device, secure);
public class BluetoothChatService - ConnectedTH public synchronized void start() { public synchronized void connect(BluetoothDevice device, boolean secure) { public synchronized void connected(BluetoothSocket socket,BluetoothDevice device, final String socketType) { public synchronized void stop() { mConnectedThread.cancel(); public synchronized void connected(BluetoothSocket socket,BluetoothDevice device, final String socketType) { 關掉重開 的意思 mConnectedThread.start();
BluetoothAdapter Class BluetoothAdapter.getDefaultAdapter(): 得到本地默認的BluetoothAdapter,若返回為null 則表示本地不支持藍芽。 isDiscovering(): 返回的device是否正在發現周圍的藍芽設備。 cancelDiscovery(): 取消搜尋遠程藍芽device。 startDiscovery(): 開始搜尋。 getScanMode(): 得到本地藍芽device的scan mode。 getBondedDevices(): 得到已配對的設備。 isEnabled() 檢測藍芽是否啟用。
BluetoothDevice Class createRfcommSocketToServiceRecord(): 創建該device的Socket。 BluetoothSocket Class connect(): 請求連接藍芽。 getInputStream(): 得到輸入流,用於接收遠程方信息。 getOutputStream(): 得到輸出流,發送給遠程方的信息。 close(): 關閉藍芽連接。
OutputStream Class InputStream Class read(byte[]): write(byte[]): 讀取輸入流。 OutputStream Class write(byte[]): 寫入輸入流。
onStart 藍芽是否啟動 是 否 否 詢問是否開起藍芽 結束程式 是 private void setupChat() { Log.d(TAG, "setupChat()"); mChatService = new BluetoothChatService(this, mHandler); } onResume start(){ … } setState(STATE_LISTEN);
private void setupChat() { Log.d(TAG, "setupChat()"); onStart 藍芽是否啟動 是 否 否 詢問是否開起藍芽 結束程式 是 private void setupChat() { Log.d(TAG, "setupChat()"); mChatService = new BluetoothChatService(this, mHandler); } onResume start(){ … } setState(STATE_LISTEN); AcceptThread while (mState != STATE_CONNECTED) { try {socket = mmServerSocket.accept(); … (嘗試接收) } catch … switch (mState) { (若有改變狀態則跳出) case STATE_LISTEN: case STATE_CONNECTING: connected(socket, socket.getRemoteDevice(),mSocketType); break; case STATE_NONE: case STATE_CONNECTED: try { socket.close(); } catch (IOException e) { Log.e(TAG, "Could not close unwanted socket", e); }
setState(STATE_LISTEN); onResume start(){ … } setState(STATE_LISTEN); AcceptThread while (mState != STATE_CONNECTED) { try {socket = mmServerSocket.accept(); … (嘗試接收) } catch … switch (mState) { (若有改變狀態則跳出) case STATE_LISTEN: case STATE_CONNECTING: connected(socket, socket.getRemoteDevice(),mSocketType); break; case STATE_NONE: case STATE_CONNECTED: try { socket.close(); } catch (IOException e) { Log.e(TAG, "Could not close unwanted socket", e); } 偵測事件 onOptionsItemSelected 若選擇device mChatService.connect(device); setState(STATE_CONNECTING); ConnectThread … try { mmSocket.connect(); } 成功 失敗 connectionFailed(); connected(mmSocket, mmDevice, mSocketType);
setState(STATE_LISTEN); onResume start(){ … } setState(STATE_LISTEN); AcceptThread 偵測事件 onOptionsItemSelected 若選擇device mChatService.connect(device); setState(STATE_CONNECTING); ConnectThread … try { mmSocket.connect(); } 成功 失敗 connectionFailed(); connected(mmSocket, mmDevice, mSocketType);
setState(STATE_CONNECTED); connected(mmSocket, mmDevice, mSocketType); setState(STATE_CONNECTED); AcceptThread ConnectedThread InputStream tmpIn = null; OutputStream tmpOut = null; … try { tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream(); } mmInStream = tmpIn; mmOutStream = tmpOut; while (true) { bytes = mmInStream.read(buffer); mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer).sendToTarget(); }catch {connectionLost(); BluetoothChatService.this.start();}
setState(STATE_CONNECTED); public void sendMessage(byte[] send) { if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) { return; } mChatService.write(send); connected(mmSocket, mmDevice, mSocketType); public void write(byte[] buffer) { try { mmOutStream.write(buffer); … } catch { … } setState(STATE_CONNECTED); AcceptThread ConnectedThread InputStream tmpIn = null; OutputStream tmpOut = null; … try { tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream(); } mmInStream = tmpIn; mmOutStream = tmpOut; while (true) { bytes = mmInStream.read(buffer); mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer).sendToTarget(); }catch {connectionLost(); BluetoothChatService.this.start();}
ZigBee 介紹 2016/08/27
大綱 ZigBee 簡介特色 協定概訴 IEEE802.15.4規範 ZigBee協定 通道存取方式 CSMA載波偵聽多路存取機制
ZigBee 簡介特色 1998年由HONEYWELL 公司組成的 ZigBee ALLIANCE制定,2001提案納入IEEE 802.15.4協定,廣為各業界共同通用支 通訊技術之一。 ZigBee是以IEEE802.15.4規範底層所建 立之協定 特色: 低速、短距之無線傳輸網路協定 底層採取IEEE 802.15.4標準規範 低耗電、低成本 支援多節點 支援多種網路拓撲
IEEE802.15.4 協定概述 IEEE 802.15.4協定為Low Rate WPAN制 定之標準,定義了在個人區網中透過射 頻方式在裝置間進行互連的方式。 IEEE 802.15.4中指定了三個物理頻段: 868/915MHz支援20kb/s~40kb/s傳輸率 2.4GHz支援250kb/s傳輸率 協定模型分為兩大層: 實體層(Physical Layer) 媒體存取控制層(Medium Access Control Layer)
WMAN 無線都會網路: 802.16 WLAN 無線區域網路: 802.11 WPAN 無線個人網路: 802.15
為什麼選擇ZigBee? Feature(s) IEEE 802.11b Bluetooth ZigBee 電源持續力 hours days years 複雜度 Very complex complex Simple 節點數 Many 建立連線速度 Upto 3 seconds Upto 10 seconds 30 ms 傳輸距離 100m 10m 70m ~ 300m 擴充性 Roaming possible no Yes 資料傳輸率 11 Mbps 1 Mpbs 250 Kbps 安全性 SSID 64bit, 128bit 128bit AES 具有最省電、最大網路節點數及最低成本等優點,專為低成本多 節點的低功耗網路所設計
IEEE802.15.4 底層 負責啟動與停止無線電收發器、選擇通 道、能量偵測、封包傳輸與接收 三個操作頻帶共27個通道 以全球標準2.4GHz頻段為例,訊號接收 器敏感度>-85bBm,在0dBm(~1W)傳輸功 率下,單一跳躍節點距離為10m~20m
ZigBee所使用的頻段 Area Frequency Band Channel Numbering Europe 868-870 MHz America 902-928 MHz 1 to 10 Global 2.4-2.4835 GHz 11 to 26 ZigBee所使用的頻段: 全球通用頻段2.4GHz ISM 分成16個頻道,channel的編號為11~26 美國使用915MHz 分成10個頻道,channel的編號為1~10 歐洲使用868MHz 只用1個頻道,channel的編號為0 112
ZigBee Radio ZigBee所使用的頻段不同,其展頻所使用的 參數也就不同。 在2.4GHz頻帶下所使用的modulation type是 32個PN-code長度的O-QPSK, Chip Rate為 2Mchip/s 868/915MHz則使用15PN-code的BPSK, Chip Rate分別為300/600kchip/s PHY Spreading Parameters Data Parameters Chip Rate Modulation Bit Rate Symbol Rate 868/915 MHz 300 kchip/s BPSK 20 kb/s 20 kbaud 600 kchip/s 40 kb/s 40 kbaud 2.4 GHz 2.0 Mchip/s O-QPSK 250 kb/s 62.5 kbaud 16-ary Othogonal ZigBee所使用的頻段不同,其展頻所使用的參數也就不同。 在2.4GHz頻帶下所使用的modulation type是32個PN-code長度的O-QPSK, Chip Rate為2Mchip/s 868/915MHz則使用15PN-code的BPSK, Chip Rate分別為300/600kchip/s Chip Rate是每個位元經過延展所得出的結果。 例如,2.4GHz頻段的Bit Rate為250kb/s,PN-code長度為32,所以其Chip Rate為250x32=2.0Mchips 113
ZigBee 協定概述 ZigBee協定由ZigBee聯盟制定,建立全球統一標 準,實作簡單、價格低、低功耗、低複雜度,以 IEEE802.15.4規範為底層 協定層分為主要四大層: 實體層(Physical Layer) 媒體存取控制層(Medium Access Control Layer) 網路層(Network Layer) 應用層(Application Layer) 網路裝置腳色可分為三種: ZigBee Coordinator ZigBee Router ZigBee End Device
通道存取方式 ZigBee 封包在通道間存取方式分為兩者 非信標的網路(Non-Beacon network) , 採取時槽型CSMA/CA(Carrier Sense multiple Access with Collision Avoidance)競爭發言。 信標的網路(Beacon-enabled network) , 採取非時槽型CSMA/CA發言。 信標網路裝置的運作週期為超訊框 (Superframe),起始/截止皆由協調者所 發出的信標定義
CSMA載波偵聽多路存取機制 CSMA(Carrier Sense Multiple Access)載波偵聽 多路存取,是一種強佔型的半雙工介質存取控制 機制 載波偵聽是指說任何連線到的裝置要傳輸前, 必須對介質進行偵聽,確認閒置才可以傳送 多路存取是指說多個裝置可以同時存取介質, 一個裝置傳送也可以被多裝置接收 分為四類型 CSMA/CD(Collision Detection) CSMA/CA(Collision Avoidance) CSMA/BA(Bitwise Arbitration) CSMA/CD(Carrier Preemption) IEEE802.15.4 MAC層支援 CSMA/CA 機制
ZigBee MAC 層訊框結構 MAC層訊框結構我們稱為MPDU(MAC Protocol Data Unit) 通常主要由MAC header、MAC Payload、MAC Footer MAC header:2 Bytes Frame Control、1 Byte Sequence Number、0~20 Bytes的位址資訊 MAC Payload:根據不一樣的訊框類型不同 MAC Footer:2 Byte校驗碼,檢查bit error,採用ITU- 16CRC 𝐺 16 𝑥 = 𝑥 16 + 𝑥 12 + 𝑥 5 +1,表示法 0x1021/0x8408/0x0811。
ZigBee MAC 層訊框結構 Beacon Frame: Data Frame: ACK Frame: MAC CMD Frame: 控制框 序列 地址 超框 GTS 待處理 信標負載 校驗碼 MHR MAC Payload MFR 控制框 序列 地址 資料有效資料負載(MSDU) 校驗碼 MHR MAC Payload MFR 控制框 序列 校驗碼 MHR MFR 控制框 序列 地址 命令訊框標示 命令有效資料負載 校驗碼 MHR MAC Payload MFR
ZigBee 模組傳輸示意 RTS與DO為一組;CTS與DI為一組 RTS由微控器控制,通知模組將資料傳回微控器
Some Application Profiles 家庭自動化 [HA] Defines set of devices used in home automation 燈光開關 自動調溫器 遮陽廉 加熱器 etc. 工廠監控 Consists of device definitions for sensors used in industrial control 溫度 壓力感測 紅外線 etc. Thermostat 自動調溫器 ZigBee Alliance PPT
居家病患監控 Patients receive better care at reduced cost with more freedom and comfort--- Patients can remain in their own home 監測生理參數,並傳至網際網路 醫生可根據資料來調整用藥量 允許監控家庭成員中的年長者 當離開床上,可以自動點亮燈光。 當有異於平常的情況,可經由行動電話通知。 Wireless panic buttons for falls or other problems 可用於醫院照護 病患允許有更大的移動空間 減少醫護人員服務病患的比率 graphic graphic ZigBee Alliance PPT
節點板資源介紹
EB板圖示
Z-Stack/SimpleStack協定分析
ZigBee Package顯示
CC2430/31晶片規格簡介 高性能、低功耗的8051微控制器內核 。 128K FLASH程式記憶體,8K SRAM資料記 憶體。 2.4 GHz IEEE 802.15.4相容RF收發器。 定位引擎計算一個節點在一個網路中的位置。 電流消耗小(當微控制器內核執行在32 MHz 時,RX 為27 mA,TX為25mA)。 硬體支援避免衝突的載波偵聽多路存取 (CSMA-CA)。
CC2430/31晶片規格簡介 支援數位化的接收信號強度指示器/鏈路品質指示 (RSSI/LQI)。 電池監視器和溫度感測器。 128位元AES輔助運算器。 2個支援多種串列通信協定的USART。 支援硬體除錯。 看門狗計時器。 1個 IEEE 802.15.4媒體存取控制(MAC)計時 器,1個通用的16位元和2個8位元計時器。
SOC腳位圖
LoRa- Long Range comuincation
What’s LoRa? 一種Long Range, Low Power的通訊標準 是一種針對M2M和IOT的無線通訊準則 不需要複雜的在地安裝程序且開發者和使用者 皆有高度的自由度 終端設備和伺服器採用雙向溝通(Bi-directional), 且之間的通訊會根據通訊距離(communication range)和資料長短(message duration)間的trade-off 來決定其頻道和data rate
Specification/feature LoRa Support? Specification/feature Lora Support 範圍 在人口密集的區域:2-5km 在人口疏散的區域:15km 頻率 ISM band 868MHz和915MHz 協定 IEEE 802.15.4g 調變技術 寬頻線性FM pulses,比FSK提升了30db 可容性 一個LoRa閘道器可容納千個以上的節點 電池 電池壽命長 物理層 須注意節點和閘道器間的頻率、發訊、調變…….等
LoRa Network – LoRaWAN Architecture 採用star-of-stars topology,也就是樹形拓墣(tree topology) 主要由終端設備(end-devices)、網路伺服器(network server) 、和閘道器 (gateway)所組成 閘道器與伺服器端使用IP協定連線,並採用single-hop的無線通訊與數個 終端設備連結 樹形拓墣
LoRa Network – LoRaWAN Architecture(續) 終端設備與閘道器是採用雙向通訊,但在特別情況下也能支援多點傳輸 (multicast)以減少傳輸時間 如前面所說,終端設備與閘道器間會根據傳輸距離和資料長短的trade-off決定使 用何種頻道和data rate, data rate的範圍從0.3kbs~50kbs,而為了最大化的延長終端 設備的電池壽命, LoRaWAN會根據adaptive data rate (ADR) scheme來自行調整 data rate和RF 而若如需傳送需保護的資料的話,可藉由在網路層和應用層加密來達到需求 LoRaWAN架構(一)
LoRa Network – LoRaWAN Architecture(續)
IEEE 802.15.4g協定簡介 SUN : smart metering utility network,為一藉由低 data rate的雙向無線傳輸來控制與溝通探測器 等設備的網路 而IEEE 802.15.4g便是為了支援低複雜度(low- complexity)、低成本(low-cost)、低功耗(low- power)的無線通訊SUN所制定的協定 規範了物理層和MAC的調變與解調方式
SUN PHYs Overview 有三種物理層標準可供選擇分別為MR-FSK、MR-Q-QPSK、MR-OFDM MR-FSK提供了良好的功率,是LoRa採用的物理層協議 MR-Q-QPSK兼容了802.15.4的協議,擁有多模式且易於操作 MR-OFDM則適用於較大data rate的頻道中 SUN PHYs Overview
MR-FSK PSY MR即為Multi Rate,可以藉由不同的頻率和頻道選擇不同的data rate MR-PSK的封包包含了有preamble、frame起始符(SFD)、物理層header、和PSDU Preamble設定為”01010101” SFD為16bit,其值決定於FEC(forward error correction)的可容性和PIB的屬性 Header也為16bit,決定了PSDU該如何被還原,其內容包括了length和data whitening flag 而PSDU即為MAC的header、payload、HCS等
802.15.4g MAC Frame Format 分為beacon, data, acknowledgment, command四種類型 一般結構如下圖所示:
Ethernet --TCP/IP
Introduction – Basic Term IP 32-bits, Unique Internet Address of a host Port 16-bits, Uniquely identify application MAC Address Media Access Control Address 48-bits, Network Interface Card (NIC) Hardware address sabsd [/home/chwong] -chwong- ifconfig sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> inet 140.117.17.215 netmask 0xffffff00 broadcast 140.117.17.255 inet 140.117.17.221 netmask 0xffffffff broadcast 140.117.17.221 ether 00:11:d8:06:1e:81 media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000
Introduction – Why TCP/IP ? The gap between applications and Network Network 802.3 Ethernet 802.4 Token bus 802.5 Token Ring 802.11 Wireless Application Reliable Performance We need something to do the translating work! TCP/IP it is!!
TCP/IP stack layout applications applications applications Wire/fiber UDP Other protocols ICMP Routing IP ARP Other protocols Lan drivers Lan adapters Wire/fiber
Introduction –TCP/IP Family arp FTP HTTP SMTP DNS TFTP traceroute TCP UDP IP ICMP ARP, Device drivers
Network Interface and Hardware – Media Coaxial Cable Thicknet v.s. thinnet BNC connector Twisted Pair Standards Straight-through v.s. Crossover RJ-45 connector Fiber Optic Cable Multimode v.s. single mode Wireless IrDA, Radio (2.4GHz, 5GHz) Pin# 1 2 3 4 5 6 7 8 T568-A W/G Green W/O Blue W/Blue Orange W/Br Brown T568-B
The Link Layer Ethernet: the common LAN Ethernet Address (48bits) 10 Mb/s 100 Mb/s 1Gb/s 802.3 802.3u 802.3z CSMA/CD (Carrier Sense Multiple Access/Collision Detect) Ethernet Address (48bits) 00:80:c8:92:0e:e1 Ethernet Frame Ethernet MTU is 1500 bytes. Preamble 64 bits D addr 48 bits S addr Type 16 bits Data (max 1500 bytes) CRC 32 bits
From the wire into the application On the Ethernet wire Preamble SFD Data data data CRC Dest MAC Src Mac Data data data Type From lan adapter IP header Data data data pad To protocol stack TCP header Data data data Data data data Application gets this. All else is overhead.
IP addresses An IP V4 address is a 32-bit binary quantity It is not a numeric value, even though we humans write it in dotted decimal or hexadecmial forms An IP address represents both a network and a host field, and optionally a locally constructed “subnet” field IP fields are bit widths, not decimal values
IP Address Classes Class A:0..b 0.host - 127.host Class B:10..b 128.x.host - 191.x.host Class C:110..b 192.x.x.host - 223.x.x.host Class D:111..b 224.multicast Class E:1111..b 240.reserved Classless Internet Domain Routing (CIDR) groups contiguous nets (typically Class C nets). Uses an explicit netmask in routers.
ICMP Internet Control Message Protocol IP to IP comms for network control Carried in IP datagram, so routable too Ping uses ICMP “Echo Request” “Source Quench” means slow down “Host unreachable” Many other detailed kinds Not accessible to normal user level programs
User Datagram Protocol (UDP) Does almost nothing Adds “ports” to support multiple apps at same time over UDP Adds optional checksum over entire UDP datagram Uses send and forget mode (datagrams) Each datagram is the entire message
Transmission Control Protocol The major protocol of the suite Validated robust service Checksum covers header and payload Continuous session (data delivered in sequence without gaps or duplication) Has timers to discover missing packets and to quickly replace them (dynamic)
TCP, cont’d Has “ports” to support multiple applications using TCP at the same time Transmission unit is named a “segment” IP can send a segment in one or more pieces (fragments if more than one) Max Segment Size (MSS) negotiated at connection startup, can be 64KB, typ. 536B(576-40) to 1460B(1500-40)
TCP, cont’d Each session is full duplex: an independent data channel for each direction No concept of message boundaries: data is a stream of octets sent however and whenever TCP wishes Typically 4-32KB buffers for transmit and receive, can be much larger Receive buffer capacity (window) in pkts
TCP, cont’d Supports a number of options Typical header size is 20 bytes Every header carries both sequence number (of data being sent, if any) and acknowledgment number (of last data octet +1 received in order) Numbering is by byte in stream IP header provides TCP length value
TCP, cont’d Because sessions span individual segments/packets there is state kept for each session Session startup and shutdown requires 3-4 packets, called a “three way handshake” Poor clients can leave sessions half open (SYN attack style) or half closed
Root: I dunno www.cnn.com. the way to one level down DNS name resolution Root: I dunno www.cnn.com. I will ask .COM below Each name server knows the way to one level down and to root Other top domains COM: I dunno www.cnn.com, I will ask CNN.COM below IP for www.cnn.com? I have no clue Other COM domains CNN.COM: I know www.cnn.com! Here is its IP address Other CNN.COM machines
DNS name resolution DNS servers cache/remember answers to recent queries Caching-only DNS server asks a local friend (forwarding) or root (otherwise) for answers it does not have cached. This is a good item to keep on a wire. Reference DNS server is BIND, Berkeley Internet Name Daemon, see www.isc.org
Internetworking with TCP/IP (Winsock version)
Client/Server Paradigm
Client/Server Paradigm 資訊的建置管理與維護 回應 Client 端所要求的服務 Client (客戶端) 依照使用者的要求,向 Server 端提出要求資訊 處理取得的資訊,並將結果呈現給使用者 這裡的Server/Client, 通常指的是軟體程式
Client/Server Paradigm
Program Interface to Protocols Socket: defines interface between application and transport layer. is created by the application and controlled by the OS. two processes communicate by sending data into socket, reading data out of socket.
Introduction to Winsock 有不少廠商在網路的環境下開發一些給使用者使用的軟體(如 Telnet、FTP、 News、Mail等等)。早期發展時,由於沒有共同的標準介面,所以各家廠商 均各自發展其環境系統及應用軟體;所以開發出來的應用程式也無法在不同 廠商的系統上執行 包括 Microsoft、Sun Microsystems、HP、Informix、Novell、3Com ...等 公司組成的協會,開始著手於整合定義出一套微軟視窗環境下的標準 TCP/IP 網路開發介面 利用微軟視窗環境下「動態連結程式庫」(DLL, Dynamic Link Library)的 特性,讓廠商能夠各自分開發展而彼此不受限;換句話說,也就是你若遵循 此一標準介面所開發出來的網路軟體應該可以在各家不同的環境上執行
Introduction to Winsock 這個標準的微軟視窗 TCP/IP 網路開發介面稱之為「Windows Sockets」 (簡稱「Winsock」), 這些 API 介面適用於 Internet Protocol Suite (IPS,通常稱之為 TCP/IP),支援 Stream (TCP) 及 Datagram (UDP) Socket。 Stream (TCP) Socket 提供「雙向」、「可靠」、「有次序」、「不重 覆」之資料傳送。Datagram (UDP) Socket 則提供「雙向」之溝通,但 沒有「可靠」、「有次序」、「不重覆」等之保證; 所以使用者可能會 收到無次序、重覆之資料,甚至資料在傳輸過程中也可能會遺漏。
Introduction to Winsock Winsock是以 UNIX 系統上 Berkeley Sockets 的函式為基礎,並加上了 一些符合視窗環境「訊息驅動」(Message driven)特性的函式。 1993 年 1 月定出 1.1 版。 明白地表示一定要提供 Stream socket (TCP)及 Datagram socket (UDP)的功能。 1995年定義2.0 版。 Winsock 總共定義了 46 個函式,包括了 30 個 BSD 函式(名稱、參數、 回返值都和 UNIX 的 BSD 函式相同),及 16 個視窗特性的函式(WSA 開頭的函式)。
Berkeley Socket Functions 1、BSD 函式 --------------------------------------------------------- accept() bind() closesocket() connect() getpeername() getsockname() getsockopt() htonl() htons() inet_addr() inet_ntoa() ioctlsocket() listen() ntohl() ntohs() recv() recvfrom() select() send() sendto() setsockopt() shutdown() socket() gethostname() gethostbyaddr() gethostbyname() getprotobyname() getprotobynumber() getservbyname() getservbyport() ----------------------------------------------------------
Winsock API 2、視窗特性函式 ------------------------------------------------------------- WSAAsyncGetHostByAddr() WSAAsyncGetHostByName() WSAAsyncGetProtoByName() WSAAsyncGetProtoByNumber() WSAAsyncGetServByName() WSAAsyncGetServByPort() WSAAsyncSelect() WSACancelAsyncRequest() WSACancelBlockingCall() WSACleanup() WSAGetLastError() WSAIsBlocking() WSASetBlockingHook() WSASetLastError() WSAStartup() WSAUnhookBlockingHook()
使用socket API 的順序 伺服端 WSAStartup socket 客戶端 WSAStartup bind socket listen Connection establishment connect accept blocking Data (request) send recv recv Data (reply) send closesocket closesocket WSACleanup WSACleanup
EtherCAT – 簡介 Ethernet Control Automation Technology ( 乙太網控制自動化技術 ) EtherCAT是確定性的工業以太網,最早是由德國的Beckhoff公司所研發。 自動化對通訊一般會要求較短的資料更新時間(或稱為週期時間)、資料同步時的通訊抖動量低,而且硬體的成本要低,EtherCAT開發的目的就是讓乙太網可以運用在自動化應用中。 一般工業通訊的網路各節點傳送的資料長度不長,多半都比乙太網幀的最小長度要小。而每個節點每次更新資料都要送出一個幀,造成頻寬的低利用率,網路的整體性能也隨之下降。EtherCAT利用一種稱為「飛速傳輸」(processing on the fly)的技術改善以上的問題。 一般而言只用一個幀的資料就可以供所有的網路上的節點傳送及接收資料。 On the fly 影片 (40秒)
EtherCAT – 通訊 EtherCAT通訊協定是針對程序資料而進行優化,利用標準的IEEE 802.3以太網幀傳遞,Ethertype為0x88a4。其資料順序和網站上設備的實體順序無關,定址順序也沒有限制。主站可以和從站進行廣播及多播等通訊。若需要IP路由,EtherCAT通訊協定可以放入UDP/IP資料包中。 封包
EtherCAT – 特色 EtherCAT的週期時間短,是因從站的微處理器不需處理乙太網的封包。所有程序資料都是由從站控制器的硬體來處理。 此特性再配合EtherCAT的機能原理( on the fly ),使得EtherCAT可以成為高性能的分散式I/O系統:包含一千個分散式數位輸入/輸出的程序資料交換只需30us,相當於在100Mbit/s的乙太網傳輸125個位元組的資料。讀寫一百個伺服軸的系統可以以10 kHz的速率更新,一般的更新速率約為1–30 kHz。 由於使用100BASE-TX的以太網物理層,二個設備之間的距離可以到100公尺,一個EtherCAT區段的網路最多可以有65535個設備。若EtherCAT網路是使用環狀拓撲(主站設備需要有二個通訊埠),則此網路還有纜線冗餘的機能。
EtherCAT – 應用 設備自動化 通過整合運動控制與機器視覺、機械手臂、自動導引車(AGV),以減少人力需求、加強生產,實現現代化無人生產。機械自動化系統包括: 板卡廠/系統廠測試作業自動化 機箱廠傳送作業機器手臂 自動饋送器(透過電力、 氣動或水力) 現場操作互動平台 (ESD, ESOP) 實時控制 ( Real Time ) Time-Deterministic control EtherCAT 的網路性能達到了新的高效能表現,1000個I/O 點的更新時間只需30μs,包括I/O 週期時間。可達到精確的即時控制。同時,EPS從端系統支援DC(分散式時鐘),以保證每個從端設備的同步,還支援MDP(多設備設定檔)功能, 為嚴苛的應用提供精準的本地I/O同步,如印刷機、飲料加工和包裝業。
EtherCAT – 設備 EtherCAT使用全雙工的以太網實體層,從站可能有二個或二個以上的埠。若設備沒偵測到其下游有其他設備,從站的控制器會自動關閉對應的埠並回傳以太網幀。由於上述的特性,EtherCAT幾乎支援所有的網路拓撲,包括 總線式 樹狀 星狀 現場總線 兩個乙太網埠