找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3247|回復: 0
打印 上一主題 下一主題
收起左側(cè)

通信協(xié)議書寫規(guī)范總規(guī)范

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72008 發(fā)表于 2015-1-12 18:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
通信類思維導圖(要求:在每次修改本協(xié)議時使用思維導圖進行程序該CLASS是否被占用)
通信協(xié)議書寫規(guī)范總規(guī)范        1
防盜系列產(chǎn)品終端開發(fā)協(xié)議        2
產(chǎn)品功能說明:        2
通信格式如下:        3
具體協(xié)議如下:        3
資產(chǎn)管理手持端開發(fā)協(xié)議        3
概述:        3
串口指令說明:        3
無線指令說明:        4
具體協(xié)議如下:        4
AirConditionerControler 無線協(xié)議        5
概述:        6
具體協(xié)議如下:        6
1、0x01  SET_ORDER  配置無線指令        6
2、0x02  SET_PLANT  設(shè)置工作計劃        7
3、0x03   SET_TIME  設(shè)置系統(tǒng)時間時間        8
4、0x04 REPORT 報告人員運動情況        8
5、0x05  GUARD  資產(chǎn)看管        9

通信協(xié)議書寫規(guī)范總規(guī)范
協(xié)議要求采用序列號+發(fā)送CLASS+發(fā)送ID+接收CLASS+接收ID+關(guān)鍵字+內(nèi)容長度+內(nèi)容+CRC校驗+0x0d結(jié)束標記的方式進行,這樣在多中設(shè)備進行通信時即使遇到相同的設(shè)備ID號也不會發(fā)生協(xié)議錯亂的事件發(fā)生。
無線通信的地址要求統(tǒng)一,所有設(shè)備的通信地址為 :0x12,0x34,0x56,0x78,0x9a
通信頻率為40,通信地址0,空中速率為2Mbit用于公共設(shè)備配置、心跳、應(yīng)答使用,其他地址用于各的同類中進行使用,在個獨立的系統(tǒng)內(nèi)部的通信也要求按照統(tǒng)一的關(guān)鍵字進行編排,這樣便于管理和通信數(shù)據(jù)的穩(wěn)定。
配置類指令要求采用雙向應(yīng)答機制,自動重發(fā),重發(fā)機制要求使用一個定時為1ms的定時器來保證整個系統(tǒng)通行的一致性。
各配置指令,要求每次最多要求最大允許數(shù)據(jù)長度為20bit
CLASS關(guān)鍵字在整個系統(tǒng)中都不允許重復且不予許為0x00,以保證每個設(shè)置在整個系統(tǒng)中都有一個唯一的通信地址。
所有設(shè)備的ID號禁止配置為0,并要求在程序中做數(shù)據(jù)檢測。
具備心跳類發(fā)送的設(shè)備要求最大每間隔5s發(fā)送一次心跳包,心跳包中要求提示自己下次喚醒的時間。心跳包的結(jié)構(gòu)如下:序列號+發(fā)送CLASS+發(fā)送ID+0x00+0x00+0x00+0x02+下次發(fā)送時間+故障標志位+CRC+結(jié)束符。
不同類設(shè)備要求進行兼容時,要求在各自的無線協(xié)議解析部分在接收端的無線解析下的CLASS進行添加已兼容不同的設(shè)備。這個可能會導致程序的空間變大,但是相對而言開發(fā)的統(tǒng)一性和兼容性會好一些,等做大后在進行對不同設(shè)備的CLASS進行統(tǒng)一標準。
關(guān)鍵字可以進行自定義,基本原則是0x00-0x7f為主設(shè)備,0x80-0xff為從設(shè)備的應(yīng)答。
備注:本文中所有紅色標記協(xié)議關(guān)鍵字都要求采用應(yīng)答雙向機制來進行數(shù)據(jù)確認。
研發(fā)部
201443無線樓道開發(fā)協(xié)議
20144714:24:24
概述:
本協(xié)議為節(jié)能無線樓道開發(fā)協(xié)議,用于無線樓道的配置任務(wù)和檢修任務(wù)。主要實現(xiàn)無線樓道的延時時間、開啟條件、工作模式的配置的配置。內(nèi)部數(shù)據(jù)的通信采用通道地址1進行,該系統(tǒng)內(nèi)的數(shù)據(jù)交換是無需進行對外進行設(shè)置的。
按照公司無線通信的約定,本設(shè)備的CLASS0x04

無線通信格式如下:

序列號
發(fā)送CLASS
設(shè)備ID
接收CLASS
接收目標ID
關(guān)鍵字
內(nèi)容長度
內(nèi)容
CRC校驗
協(xié)議尾
8bit
0x04
8bit
8bit
8bit
8bit
4bit
Nbit
8bit
0x0d

關(guān)鍵字                    宏定義             解釋說明
0x01                SET                        用于設(shè)置本機的運行參數(shù)
0x02                INTERIM                用于臨時開啟本設(shè)備
應(yīng)答內(nèi)容為:
0x81         ACK                        用于確認已經(jīng)成功的接收配置指令

內(nèi)部通信規(guī)則:
通信通道為:1
通信地址為: 0x01,0x02,0x03,0x04,0x05
通信頻率為: 40
通信的格式為:
標識0
標識1
標識2
發(fā)送ID
開燈原因
CRC校驗
結(jié)束標記
0xff
0xff
0xff
8bit
8bit
8bit
8bit
開燈原因:
0x01  表示本ID號是首次檢測到人體運動信息
0x02  表示本ID是因為上位ID號觸發(fā)后本設(shè)備才檢測到
0x03  表示本ID號是因為下位ID號觸發(fā)后本設(shè)備才檢測到
0x00  表示本設(shè)備ID號正常的內(nèi)部心跳通信。

防盜系列產(chǎn)品終端開發(fā)協(xié)議
20144709:24:19
產(chǎn)品功能說明:
本產(chǎn)品采用NRF24LE1 Nordic8051 SOC 芯片,采用232紐扣電池供電,具備低壓報警功能。采用TEA 80位的加密算法及雙向確認機制,以保證本卡不會被人復制。最大消失時間為3S,加密算法錯誤將導致直接觸發(fā)報警。在一個系統(tǒng)中最大允許同時監(jiān)聽設(shè)備數(shù)據(jù)位8張。只要設(shè)備申請了監(jiān)聽功能,在沒有主動撤銷的情況下設(shè)備丟失或者重啟都將引發(fā)報警。同時本卡在成功注冊后,在5s內(nèi)沒有接受到主機發(fā)送的心跳信息,將邀請以廣播方式在本公司所有無線產(chǎn)品中廣播被盜指令,便于在設(shè)備丟失后丟失物品。
概述:
本產(chǎn)品采用NRF24LE1作為終端RFID卡,采用乘法器來進行數(shù)據(jù)的加密算法。因為采用無線通信方式,因此在按照本公司的無線通信規(guī)則,該設(shè)備CLASS分配為0x03。加密規(guī)則為:使用TEA加密算法進行數(shù)據(jù)驗證,加密的內(nèi)容為使用隨機數(shù)來產(chǎn)生明文,并且按照每次產(chǎn)生一次的方式來進行逐步迭代明文,在申請開始時,內(nèi)部存儲的明文統(tǒng)一為0x00,暗文的數(shù)據(jù)長度為10bit,明文長度為1位,即有效內(nèi)容長度為11位。在接收端對給設(shè)備的合法性進行驗證。該通信無需進行自動應(yīng)答。
備注:此處的序列號取值范圍為0-9,用于原消息密匙中需要替換的數(shù)據(jù)。該序列號的獲得要求按照對隨機數(shù)進行%10的求于獲得。這樣即使被人監(jiān)聽也沒有辦法,因為監(jiān)聽者要么在設(shè)備一初始化的時候就開始監(jiān)聽,要么就要等待隨機數(shù)將0-9全部監(jiān)聽一篇后才有機會獲得10的明文數(shù)據(jù)。
通信格式如下:
序列號
發(fā)送CLASS
設(shè)備ID
接收CLASS
接收目標ID
關(guān)鍵字
內(nèi)容長度
內(nèi)容
CRC校驗
協(xié)議尾
8bit
0x03
8bit
8bit
8bit
8bit
4bit
Nbit
8bit
0x0d
具體協(xié)議如下:
關(guān)鍵字    宏定義             解釋說明
        0x01        NET                        用于向接收終端發(fā)送心跳信息
0x02        ENROLL                用于向接收終端注冊請求被監(jiān)控信息
0x03        LOGOUT                用于向接收終端撤銷被監(jiān)控信息
0x04        KEY                        用于向本機寫入32位的加密密匙
0x05                 POWER                        低壓報警
0x06                ALARM                        廣播發(fā)送被盜指令(包含4bit的設(shè)備ID號)
0x07                SET                                用于設(shè)備本卡的設(shè)備ID
備注:要求在注冊請求被監(jiān)控中,包含一個電池電量的狀態(tài)。


資產(chǎn)管理手持端開發(fā)協(xié)議
20144622:45:44
備注:暫時使用數(shù)碼管來進行數(shù)據(jù)的顯示,后期要求采用5110顯示屏來進行數(shù)據(jù)顯示
概述:
本產(chǎn)品專門用于物流管理方向,用于在庫房中快速尋找到自己產(chǎn)品的數(shù)量和種類。
本產(chǎn)品具備具備雙按鍵,左鍵用于確認操作,右鍵用于切換顯示內(nèi)容。確認后將自動轉(zhuǎn)入下一個需要搜索的目標,切換用于顯示搜索物品名稱/需要搜索的物品數(shù)量。
本產(chǎn)品具備無線通信能力,按照本公司無線分配規(guī)則,本產(chǎn)品所屬的CLASS0x02

串口指令說明:
指令名稱
指令功能說明
示例
SEARCH
用于查找?guī)齑嬷兴业奈锲访Q及數(shù)量
SEARCH(回車)
返回值:
N(名稱)Q(數(shù)量)
NO 表示滿意該物品
SHOW
用于顯示庫存中所有產(chǎn)品的詳細數(shù)據(jù)包括各物品名稱及數(shù)量
SHOW(回車)
返回值:
Total = 2
N 001Q003
N003Q002
表示本庫存中物品種類有2中,名稱001中有貨物3件,名稱003中有2
IN
用于向庫存中輸入一個新產(chǎn)品或向原有產(chǎn)品中添加等多數(shù)量
IN001030(回車)
說明:表示向物品名稱為001的產(chǎn)品中添加30個產(chǎn)品
OUT
用于向庫存中輸出一個產(chǎn)品及減少該產(chǎn)品在庫存中的數(shù)量
OUT002030(回車)
說明:表示從物品名稱為002的產(chǎn)品種類中移除30
返回值:
N(名稱)Q(數(shù)量)

DELETE
從庫存中刪除一個產(chǎn)品種類及其數(shù)量
DELETE003(回車)
說明:表示從庫存中刪除名稱為003的產(chǎn)品數(shù)據(jù)

無線指令說明:
序列號
發(fā)送CLASS
設(shè)備ID
接收CLASS
接收目標ID
關(guān)鍵字
內(nèi)容長度
內(nèi)容
CRC校驗
協(xié)議尾
8bit
0x03
8bit
8bit
8bit
8bit
4bit
Nbit
8bit
0x0d
具體協(xié)議如下:
關(guān)鍵字    宏定義             解釋說明
        0x01       DOWNLOARD         從主機下載需要查找的數(shù)據(jù)量總數(shù)
0x02       DOWNPACK                 從主機下載詳細的數(shù)據(jù)內(nèi)容并且寫入到flash
0x03       UPLOARD                本機向主機發(fā)送任務(wù)完成情況總數(shù)
0x04       UPPACK                        本機向主機發(fā)送詳細的數(shù)據(jù)完成情況
0x05       SEARCH                        本機向其他設(shè)備發(fā)送尋找物品指令
0x06       CHECK                        本機向特定的設(shè)備發(fā)送盤點信息

應(yīng)答協(xié)議:
        總述:對于關(guān)鍵字0x01-0x04只需要回答相應(yīng)的發(fā)送序列號即可。
        0x05 0x06 要求接收端報告自己的詳細數(shù)據(jù)情況,具體內(nèi)容參考詳細說明!
關(guān)鍵字    宏定義             解釋說明
0x81        SEARCH_ACK                用于應(yīng)答搜索指令
備注: 僅自身包含該物品名稱的設(shè)備進行應(yīng)答,應(yīng)答內(nèi)容僅為自身設(shè)備ID號,自身外設(shè)提示設(shè)備需要自動的開啟一段時間以便于人員快速發(fā)現(xiàn)該物品所在位置。
0x82        CHECK_ACK                用于應(yīng)答盤點指令
備注:該指令用于其他外設(shè)向本機發(fā)送自身所攜帶的全部內(nèi)容,發(fā)送內(nèi)容方式為:首先發(fā)送自己需要發(fā)送數(shù)據(jù)的大小,讓后等待對方應(yīng)答。在對方完成應(yīng)答后再發(fā)送下一包數(shù)據(jù)直至全部內(nèi)容發(fā)送完畢。



nrf24le1通信協(xié)議
20144421:12:21
概述:
本通信協(xié)議用于nrf24le1在巡更、資產(chǎn)管理方向的使用,按照本公司的無線通信分配規(guī),本產(chǎn)品的CLASS0x01
無線通信協(xié)議格式:
序列號+發(fā)送CLASS+發(fā)送ID+接收CLASS+接收ID+關(guān)鍵字+內(nèi)容長度+內(nèi)容+CRC校驗+0x0d結(jié)束標記
序列號
發(fā)送CLASS
設(shè)備ID
接收CLASS
接收目標ID
關(guān)鍵字
內(nèi)容長度
內(nèi)容
CRC校驗
協(xié)議尾
8bit
0x01
8bit
8bit
8bit
8bit
4bit
Nbit
8bit
0x0d
備注:
具體指令說明如下:


串口指令說明:
概述:
本串口指令僅適用用本產(chǎn)品,要求嚴格按照串口指令說明進行操作,否則將出現(xiàn)“cmd error”提示。
具體指令如下:(備注:所有串口指令均以回車鍵結(jié)束(0x0d))
指令名稱
指令格式說明
示例
TEST
用于測試串口是否正常返回值“uart ok
TEST(回車)
VT
用于查看系統(tǒng)電壓情況是否高于2.3V,如果高于則返回H,否則返回L
VT(回車)
AD
用于獲得通道6P06)端電壓,放回值為D=2bit 16進制數(shù),高位在前
AD(回車)
AD=0x00x01




AirConditionerControler 無線協(xié)議
時間:20144312:38:29
概述:
本協(xié)議用于生產(chǎn)的AirConditionerControler設(shè)備無線配置及接口的通信規(guī)范。
協(xié)議格式:
本協(xié)議由協(xié)議序列號、設(shè)備ID號、設(shè)備權(quán)利、接收目標ID、關(guān)鍵字、內(nèi)容長度、內(nèi)容、CRC校驗和協(xié)議尾組成。
序列號
設(shè)備ID
接收目標ID
關(guān)鍵字
(首位)
關(guān)鍵字
內(nèi)容長度
內(nèi)容
CRC校驗
協(xié)議尾
8bit
8bit
8bit
0x01
8bit
4bit
Nbit
8bit
0x0d
備注:協(xié)議總長度不得超過32bit
序列號——為發(fā)送者(sender)發(fā)送時自動產(chǎn)生的信息,用于檢測是否出現(xiàn)丟包的情況;
設(shè)備ID號——在整個系統(tǒng)中該設(shè)備ID為唯一ID號,用于彼此相互通信時進行點對點交流使用;
接收目標ID——接收者對比該ID號,于自己的ID號相同者對協(xié)議進行解析并對sender做出相應(yīng)的回答;
關(guān)鍵字——占用8bit,為通信協(xié)議的指令內(nèi)容,0x00-0x7f為下發(fā)協(xié)議(主機向從機發(fā)送為下發(fā)),0x80-0xff為上發(fā)發(fā)協(xié)議(從機向主機發(fā)送為下發(fā)),具體說明如下:

關(guān)鍵字    宏定義             解釋說明
0x01    SET_ORDER    設(shè)置運行參數(shù)
0x02    SET_PLANT     設(shè)置運行計劃
0x03    SET_TIME       設(shè)置系統(tǒng)時鐘
0x04    REPORT         報告人員運動情況
0x05    GUARD          資產(chǎn)看管

0x81   REPLAY_ORDER     應(yīng)答設(shè)置指令
0x82   REPLAY_PLANT      應(yīng)答運行計劃
0x83   REPLAY_TIME       應(yīng)答系統(tǒng)時鐘


具體協(xié)議如下:1、0x01  SET_ORDER  配置無線指令
說明:使用其他設(shè)備對本機器進行無線配置運行參數(shù)
具體配置內(nèi)容及格式如下:
0x01............................................................................序列號
0xff.......................................................................設(shè)備ID
0x00.......................................................................接收目標ID
0x01.................................................................關(guān)鍵字(SET_ORDER)
0x0e.......................................................................內(nèi)容長度
0x1c.......................................................................夏季高溫開啟值(28℃)
0x19.......................................................................夏季低溫關(guān)閉值(25℃)
0x11.......................................................................冬季高溫關(guān)閉值(17℃)
0x05.......................................................................冬季低溫開啟值(5℃)
0x07.......................................................................夏季時間(開始月份)
0x01.......................................................................夏季時間(開始日)
0x09.......................................................................夏季時間(結(jié)束月份)
0x1e.......................................................................夏季時間(結(jié)束日)
0x0c.......................................................................冬季時間(開始月份)
0x0c.......................................................................冬季時間(開始日)
0x02.......................................................................冬季時間(結(jié)束月份)
0x01.......................................................................冬季時間(結(jié)束日)
0x00.......................................................................運行模式
0x0a.......................................................................延時時間(10min
0x01...................................................................... CRC校驗(此處CRC校驗錯誤)
0x0d.............................................................................協(xié)議尾
備注:1、運行模式可分為4種,0x00  自動模式,基于時間溫度運行
0x01 強制開啟模式  0x02 強制關(guān)閉模式  0x03 自動模式,基于時間 溫度 人運行

2、0x02  SET_PLANT  設(shè)置工作計劃
說明:該指令用于配制設(shè)備每天的有效工作時間段
0x01............................................................................序列號
0xff.......................................................................設(shè)備ID
0x00.......................................................................接收目標ID
0x02.................................................................關(guān)鍵字(SET_PLANT)

0x03.......................................................................內(nèi)容長度

0x03.......................................................................設(shè)置時間段次數(shù)(3

0x08.......................................................................開啟時間(8點)
0x00.......................................................................開啟時間(0分)
0x09.......................................................................關(guān)閉時間(9點)
0x1e.......................................................................關(guān)閉時間(30點)

0x0a.......................................................................開啟時間(10點)
0x00.......................................................................開啟時間(0分)
0x0c.......................................................................關(guān)閉時間(12點)
0x1e.......................................................................關(guān)閉時間(30點)

0x0e.......................................................................開啟時間(14點)
0x00.......................................................................開啟時間(0分)
0x12.......................................................................關(guān)閉時間(18點)
0x1e.......................................................................關(guān)閉時間(30點)
0x1e.......................................................................關(guān)閉時間(30點)
0x1e.......................................................................CRC校驗
0x0d.......................................................................結(jié)束標記
備注:對多可支持7個時間段的配置

3、0x03   SET_TIME  設(shè)置系統(tǒng)時間時間
說明:使用該指令可以校正系統(tǒng)時鐘。
0x01............................................................................序列號
0xff.......................................................................設(shè)備ID
0x00.......................................................................接收目標ID
0x03.................................................................關(guān)鍵字(SET_TIME)
0x06.................................................................內(nèi)容長度(6bit
0x0e.......................................................................14年(對2000求余后的值)
0x04.......................................................................4
0x03.......................................................................3
0x0e.......................................................................15
0x11.......................................................................17
0x03.......................................................................03
0x03.......................................................................CRC校驗
0x0d.......................................................................結(jié)束符


4、0x04 REPORT 報告人員運動情況
說明:該指令用于提醒本機已經(jīng)成功檢測到一次人員運動情況,可以將設(shè)置的延時時間清零一次
0x01............................................................................序列號
0xff.......................................................................設(shè)備ID
0x00.......................................................................接收目標ID
0x04.................................................................關(guān)鍵字(REPORT)
0x00.................................................................內(nèi)容長度為0
0x00.................................................................CRC校驗
0x0d.................................................................結(jié)束符


5、0x05  GUARD  資產(chǎn)看管
說明:一旦啟動該指令,則要求被看管設(shè)備在每間隔至多1s向本設(shè)備發(fā)送一條報告消息,如果沒有按時或者提前發(fā)送將會觸發(fā)本設(shè)備報警;
0x01............................................................................序列號
0xff.......................................................................設(shè)備ID
0x00.......................................................................接收目標ID
0x05.................................................................關(guān)鍵字(GUARD)
0x01.................................................................內(nèi)容長度為1
0x02.................................................................被看管設(shè)備ID
0x00.................................................................CRC校驗
0x0d.................................................................結(jié)束符




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表