一種符合ISA100.11a標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法
【專利摘要】本發(fā)明提供了一種符合ISA100.11a標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,從軟件實現(xiàn)的角度將無線網(wǎng)絡(luò)通信功能和終端采集控制功能分開,分別定義為通信模塊和應(yīng)用模塊,并且在這兩個模塊之間設(shè)計了可擴(kuò)展的API消息通信機(jī)制以將其組合起來。每個API消息都由通信模塊根據(jù)終端裝置與ISA100.11a網(wǎng)絡(luò)溝通的需求而創(chuàng)建,并將其作為請求消息發(fā)送至應(yīng)用模塊,應(yīng)用模塊根據(jù)消息內(nèi)容完成采集與控制任務(wù)后回復(fù)該消息對應(yīng)的響應(yīng)消息,通信模塊再根據(jù)響應(yīng)消息的內(nèi)容進(jìn)一步與ISA100.11a網(wǎng)絡(luò)交互。本發(fā)明能夠?qū)崿F(xiàn)通信協(xié)議的通用性與具體用戶應(yīng)用的靈活性之間的結(jié)合。
【專利說明】
一種符合ISA1OO. 11 a標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于工業(yè)無線傳感網(wǎng)技術(shù)領(lǐng)域,涉及一種符合ISA100.1 la標(biāo)準(zhǔn)的工業(yè)無線 傳感網(wǎng)終端方法。
【背景技術(shù)】
[0002] 目前最常見的并且適用于工業(yè)現(xiàn)場的無線傳感器網(wǎng)絡(luò)標(biāo)準(zhǔn)分別有ISA100.11a、 ZigBee、Wireless HART和WIA-PA協(xié)議。相比于其他三種標(biāo)準(zhǔn),ISAlOO.lla標(biāo)準(zhǔn)定義于工業(yè) 環(huán)境下無線系統(tǒng)的相關(guān)規(guī)程和實現(xiàn)技術(shù),更適用于面向工業(yè)現(xiàn)場的采集與控制應(yīng)用。該標(biāo) 準(zhǔn)定義的工業(yè)無線終端設(shè)備包括:傳感器、控制器、無線手持設(shè)備等現(xiàn)場自動化設(shè)備。 ISAlOO.lla標(biāo)準(zhǔn)的目標(biāo),是將上述各種終端設(shè)備以無線的方式集成到ISAlOO.lla網(wǎng)絡(luò)中, 使工業(yè)無線設(shè)備能夠以低成本、低功耗以及適當(dāng)?shù)耐ㄐ艛?shù)據(jù)速率支持工業(yè)現(xiàn)場應(yīng)用。
[0003] 然而,目前的主流無線終端實現(xiàn)方法都是建立在具體需求的基礎(chǔ)上,將無線網(wǎng)絡(luò) 通信功能和終端采集控制功能集成在一個軟件模塊中,因此具有相當(dāng)?shù)奶厥庑裕贿m用于 其所在場合,不具備通用性和可擴(kuò)展性。此外,根據(jù)ISAlOO.lla標(biāo)準(zhǔn)的內(nèi)容,其應(yīng)用層包含 用戶應(yīng)用進(jìn)程(User Application Process,UAP)和應(yīng)用子層(Application Sub-Layer, ASL),標(biāo)準(zhǔn)規(guī)定了ASL向UAP提供各種服務(wù)接口,也規(guī)定了UAP內(nèi)部由不同的對象作為具體應(yīng) 用層功能的載體。但應(yīng)用層的UAP之上的具體用戶應(yīng)用卻并非標(biāo)準(zhǔn)的規(guī)定范圍,即用戶應(yīng)用 如何使用UAP的各種對象功能需要開發(fā)者自行設(shè)計。
【發(fā)明內(nèi)容】
[0004] 為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種符合ISAlOO.lla標(biāo)準(zhǔn)的工業(yè)無線傳感 網(wǎng)終端實現(xiàn)方法,從軟件實現(xiàn)的角度將無線網(wǎng)絡(luò)通信功能和終端采集控制功能分開,實現(xiàn) 通信協(xié)議的通用性與具體用戶應(yīng)用的靈活性之間的結(jié)合。
[0005] 本發(fā)明所采用的具體技術(shù)方案包括以下步驟:
[0006] 步驟1,定義通信模塊和應(yīng)用模塊;所述的通信模塊負(fù)責(zé)執(zhí)行無線網(wǎng)絡(luò)通信功能, 硬件平臺滿足ISAlOO.lla標(biāo)準(zhǔn)物理層需求;所述的應(yīng)用模塊負(fù)責(zé)終端采集控制功能,能夠 搭載傳感器和控制器;
[0007] 所述通信模塊運行ISA100.1 la協(xié)議棧,按照ISA100.1 la標(biāo)準(zhǔn)包括物理層、數(shù)據(jù)鏈 路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層;應(yīng)用層之中的用戶應(yīng)用進(jìn)程UAP實現(xiàn)至少兩種ISAlOO.lla 標(biāo)準(zhǔn)規(guī)定的對象,分別是集中器對象(Concentrator 0bject,CO)和接口對象(Interface Object,10); CO負(fù)責(zé)將應(yīng)用模塊采集獲得的各個傳感器數(shù)據(jù)集中起來,然后使用 ISAlOO.lla標(biāo)準(zhǔn)的發(fā)布訂閱服務(wù)(Publish/Subscribe)發(fā)送給ISAlOO.lla網(wǎng)關(guān);10使用 ISAlOO.lla標(biāo)準(zhǔn)的客戶端服務(wù)器服務(wù)(Client/Server),將ISAlOO.lla網(wǎng)關(guān)下發(fā)的控制指 令送給應(yīng)用模塊的傳感器和控制器。
[0008] 步驟2,定義API消息作為應(yīng)用模塊和通信模塊之間的交互規(guī)則;通信模塊向應(yīng)用 模塊發(fā)送API請求消息,應(yīng)用模塊針對每個處理后的API請求消息,向通信模塊回復(fù)其響應(yīng) 消息;
[0009]所述 API 消息的數(shù)據(jù)結(jié)構(gòu)包括 Head、ID、Direct ion、API、Length、Pay load 和CRC;所 述的Head為API消息的第一個字節(jié),表示數(shù)據(jù)幀的開頭;ID為每個實例化的API消息的唯一 標(biāo)識符,由通信模塊創(chuàng)建請求消息時分配;Direct i on為API消息的方向,區(qū)分消息為請求消 息或響應(yīng)消息;API為標(biāo)識API消息的具體類型,即每種API的字節(jié)代號;Length為負(fù)載數(shù)據(jù) 的字節(jié)長度,即Payload的長度;Payload為API消息的負(fù)載數(shù)據(jù),即消息所攜帶的具體數(shù)據(jù); CRC為API消息的CRC校驗值,確保數(shù)據(jù)幀內(nèi)容正確。
[0010] 所述的API包括滿足CO和IO功能的至少5種API,分別為Get Initial Info、 Notify Jo in、Noti fyAddContract、APDURequest和AF1DUIndi cate;所述的Get Initial Info 表 示通信模塊通知應(yīng)用模塊初始化;Notify Join表示通信模塊告知應(yīng)用模塊當(dāng)前通信模塊在 ISA100.1 la網(wǎng)絡(luò)中的入網(wǎng)狀態(tài);NotifyAddContract表示通信模塊告知應(yīng)用模塊用于 ISAlOO.lla網(wǎng)絡(luò)通信的無線網(wǎng)絡(luò)資源已經(jīng)準(zhǔn)備好;AroURequest表示通信模塊告知應(yīng)用模 塊遍歷獲取所有傳感器的讀數(shù),作為響應(yīng)消息送回給通信模塊;APDUIndicate表示通信模 塊通知應(yīng)用模塊使相關(guān)的控制器作出控制動作。
[0011 ]步驟3,通信模塊初始化之后向應(yīng)用模塊發(fā)送GetInitialInfo請求消息,通知應(yīng)用 模塊進(jìn)行初始化,應(yīng)用模塊收到該消息后進(jìn)行初始化并回復(fù)Get Initial Info響應(yīng)消息,通 信模塊獲取響應(yīng)消息后執(zhí)行ISA100.1 la協(xié)議棧并代表終端設(shè)備開始入網(wǎng);
[0012] 所述應(yīng)用模塊回復(fù)Get Initial Inf 〇響應(yīng)消息時在Pay load中填寫終端所攜帶的傳 感器和控制器的屬性參數(shù)。
[0013] 步驟4,通信模塊完成ISAlOO.lla終端入網(wǎng),入網(wǎng)后向應(yīng)用模塊發(fā)送Notify Join請 求消息,請求消息Pay load內(nèi)容為0或者1,為0表示通信模塊當(dāng)前處于未入網(wǎng)的掉線狀態(tài),為 1表示通信模塊已經(jīng)正常入網(wǎng);應(yīng)用模塊根據(jù)請求消息Payload內(nèi)容做出不同處理,內(nèi)容為0 則應(yīng)用模塊停止對傳感器和控制器的訪問以待下一次消息通知,內(nèi)容為1則應(yīng)用模塊開始 初始化傳感器和控制器以準(zhǔn)備使用;應(yīng)用模塊處理完成后,向通信模塊回復(fù)Notify Join響 應(yīng)消息;通信模塊收到Notify Join響應(yīng)消息后,若終端確實已經(jīng)入網(wǎng),則進(jìn)入步驟5;若終端 未入網(wǎng),則繼續(xù)代表終端設(shè)備向I SAl 00.11 a網(wǎng)絡(luò)申請入網(wǎng);
[0014] 步驟5,通信模塊申請Contract資源,周期性Contract用于終端向ISAlOO · Ila網(wǎng)絡(luò) 中傳輸所采集的數(shù)據(jù),非周期性Contract用于終端向控制器發(fā)送來自ISAlOO.lla網(wǎng)絡(luò)的控 制指令;申請完成后由通信模塊向應(yīng)用模塊發(fā)送NotifyAddContract請求消息,消息 Pay load內(nèi)容為ISA100.1 la標(biāo)準(zhǔn)規(guī)定的Contract屬性參數(shù),應(yīng)用模塊收到請求消息后記錄 所有Contract的屬性參數(shù)信息;應(yīng)用模塊向通信模塊回復(fù)NotifyAddContract響應(yīng)消息,消 息的Payload至少包括所涉及的Contract屬性參數(shù)中的ContractID,即每個Contract在整 個無線網(wǎng)絡(luò)中的唯一標(biāo)識符,將其作為NotifyAddContract響應(yīng)消息的Payload內(nèi)容通知通 信模塊相關(guān)的Contract確實有效而無需重新申請;
[0015] Contract準(zhǔn)備完畢后,進(jìn)行采集功能或控制功能;執(zhí)行采集功能進(jìn)入步驟6,執(zhí)行 控制功能進(jìn)入步驟7;
[00?6] 步驟6,通信模塊的CO向應(yīng)用模塊發(fā)送APDUReque s t請求消息,消息的Pay I oad至少 包括所使用的周期性Contract的ContractID,以指明所需要的傳感器數(shù)據(jù)將使用該 Contract完成Publish/Subscribe傳輸;應(yīng)用模塊收到請求消息后將各個傳感器的數(shù)據(jù)集 中起來,再以ISA100.1Ia協(xié)議標(biāo)準(zhǔn)規(guī)定的Publish/Subscribe服務(wù)要求的方式和所記錄的 Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元(APDU),作為Pay load隨著APDURequest響應(yīng) 消息回復(fù)給通信模塊的CO;最后由CO使用Publish/Subscribe服務(wù)向ISA100.1 la網(wǎng)關(guān)傳輸 包含傳感器數(shù)據(jù)和Contract屬性參數(shù)的數(shù)據(jù)集,網(wǎng)關(guān)根據(jù)Contract的內(nèi)容識別終端的傳感 器數(shù)據(jù)的合法性;
[0017]步驟7,通信模塊的IO向應(yīng)用模塊發(fā)送APDUIndicate請求消息,消息的Pay load內(nèi) 容除控制指令數(shù)據(jù)以外包括所使用的非周期性Contract的ContractID,以指明所要使用的 控制器將使用該Contract完成Client/Server傳輸;應(yīng)用模塊收到請求消息后,根據(jù)控制指 令的內(nèi)容使用具體的控制器完成控制功能,然后以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Client/ Server服務(wù)要求的方式將控制結(jié)果和所記錄的Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù) 單元(APDU),作為Payload隨著APDUIndicate響應(yīng)消息回復(fù)給通信模塊的10;最后由IO使用 Client/Server服務(wù)向ISA100.1 la網(wǎng)關(guān)反饋包含控制結(jié)果和Contract屬性參數(shù)的數(shù)據(jù)集, 網(wǎng)關(guān)根據(jù)Contract的內(nèi)容識別終端的控制結(jié)果數(shù)據(jù)的合法性以判定控制是否成功。
[0018] 本發(fā)明的有益效果是:將無線終端方法中涉及無線組網(wǎng)通信的部分與涉及具體采 集控制執(zhí)行的部分分開,分別定義為通信模塊和應(yīng)用模塊,并且在這兩個模塊之間設(shè)計了 可擴(kuò)展的API消息通信機(jī)制以將其組合起來,以兼顧終端方法在通信協(xié)議方面的通用性與 采集控制方面的靈活性。通用性方面,從ISA100.1 la協(xié)議的角度來看,通信模塊即符合標(biāo)準(zhǔn) 的終端設(shè)備通信協(xié)議棧,應(yīng)用模塊為通信協(xié)議棧之上的具體用戶應(yīng)用,總體結(jié)構(gòu)遵循 ISA100.1 la協(xié)議標(biāo)準(zhǔn)。靈活性方面,API消息定義可以根據(jù)需求擴(kuò)展或縮減,使得所述終端 方法在滿足最基本的采集與控制的基礎(chǔ)之上可以根據(jù)需要進(jìn)一步拓展其功能。此外,通信 與應(yīng)用雙模塊分開的設(shè)計還可以盡量減少采集控制在執(zhí)行時對維持終端設(shè)備在線的正常 通信所產(chǎn)生的影響和干擾。
【附圖說明】
[0019] 圖1是所述符合ISA100.1 la標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端方法軟件結(jié)構(gòu)圖。
[0020] 圖2是一個實例化API在網(wǎng)絡(luò)及終端方法中使用的一般性時序圖。
[0021] 圖3是終端方法集中器對象(CO)使用API完成采集數(shù)據(jù)上傳的時序圖。
[0022]圖4是終端方法接口對象(10)使用API完成控制行為的時序圖。
[0023] 圖5是參考ISAlOO.lla標(biāo)準(zhǔn)的發(fā)布訂閱服務(wù)(Publish/Subscribe)時序圖。
[0024] 圖6是參考ISAlOO.lla標(biāo)準(zhǔn)的客戶端服務(wù)器服務(wù)(Client/Server)時序圖。
[0025]圖7是周期性Contract的建立及用于發(fā)布訂閱服務(wù)的示意圖。
[0026]圖8是非周期性Contract的建立及用于客戶端服務(wù)器服務(wù)的示意圖。
【具體實施方式】
[0027] 本發(fā)明所采用的具體技術(shù)方案包括以下步驟:
[0028] 步驟1,定義通信模塊負(fù)責(zé)執(zhí)行無線網(wǎng)絡(luò)通信功能,定義應(yīng)用模塊負(fù)責(zé)終端采集控 制功能。這兩個模塊各自是獨立的軟件實體,對實現(xiàn)的硬件平臺沒有具體的要求,既可以是 單片機(jī)式的嵌入式軟件,也可以是嵌入式PC上運行的軟件。對硬件平臺的唯二要求在于,通 信模塊的硬件平臺必須具備滿足ISAlOO.lla標(biāo)準(zhǔn)物理層需求的無線射頻設(shè)備的條件,以及 應(yīng)用模塊必須具備可以搭載采集控制設(shè)備的條件。
[0029] 所述通信模塊主要運行ISA100.1Ia協(xié)議棧,可以按照ISA100.1 Ia標(biāo)準(zhǔn)的規(guī)定完全 實現(xiàn)從物理層到應(yīng)用層的所有必要內(nèi)容,具體為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng) 用層。應(yīng)用層之中的用戶應(yīng)用進(jìn)程(UAP)需要實現(xiàn)至少兩種ISA100.1 la標(biāo)準(zhǔn)規(guī)定的對象,分 別是集中器對象(CO)和接口對象(IO)XO負(fù)責(zé)將應(yīng)用模塊采集獲得的多種傳感器數(shù)據(jù)或其 他數(shù)據(jù)集中起來,然后使用ISAlOO.lla標(biāo)準(zhǔn)的發(fā)布訂閱服務(wù)(Publish/Subscribe)將集中 器準(zhǔn)備好的數(shù)據(jù)發(fā)送給ISAlOO.lla網(wǎng)關(guān)。IO則使用ISAlOO.lla標(biāo)準(zhǔn)的客戶端服務(wù)器服務(wù) (Client/Server),將ISA100.1 la網(wǎng)關(guān)下發(fā)的控制指令進(jìn)一步送給應(yīng)用模塊的具體控制設(shè) 備。
[0030] 所述應(yīng)用模塊主要使用采集與控制設(shè)備,概念上可以看作是UAP中負(fù)責(zé)具體功能 的CO與10的延伸。在應(yīng)用模塊中進(jìn)一步定義采集功能子模塊、控制功能子模塊和API解析子 模塊。采集功能子模塊負(fù)責(zé)管理終端所有的傳感器,控制功能子模塊負(fù)責(zé)管理所有的控制 器,API解析子模塊負(fù)責(zé)應(yīng)用模塊和通信模塊之間的交互。API的進(jìn)一步實現(xiàn)在后續(xù)步驟展 開。
[0031] 步驟2,定義API消息作為終端方法內(nèi)部的應(yīng)用模塊和通信模塊之間的交互規(guī)則, 為實現(xiàn)ISAlOO.lla終端對多個傳感器與控制器的靈活使用提供途徑。API消息的定義可以 根據(jù)實際需求擴(kuò)展或縮減,但作為終端必須滿足CO與10這兩種對象的基本功能。每個具體 的API消息都將由通信模塊的應(yīng)用層UAP發(fā)送,在應(yīng)用模塊的API解析子模塊接收,最后由應(yīng) 用模塊對每個處理后的API向通信模塊回復(fù)其響應(yīng)消息。
[0032]所述通信模塊和應(yīng)用模塊之間使用API進(jìn)行消息交互的數(shù)據(jù)幀格式及說明如下:
[0034] HeacUAPI消息數(shù)據(jù)幀的第一個字節(jié),表示數(shù)據(jù)幀的開頭;
[0035] ID:每個實例化的API消息的唯一標(biāo)識符,由通信模塊創(chuàng)建請求消息時分配;
[0036] Direction:API消息的方向,可區(qū)分消息具體為請求消息還是響應(yīng)消息,請求消息 由通信模塊的應(yīng)用層UAP發(fā)送,響應(yīng)消息則是應(yīng)用模塊的API解析子模塊根據(jù)請求消息的內(nèi) 容向通信模塊回送;
[0037] API:標(biāo)識API消息的具體類型,即每種API的字節(jié)代號,可根據(jù)實際需求定義,本發(fā) 明定義了至少滿足⑶和10功能的5種API,分別稱為Get Initial Info、NotifyJo in、 Not if yAddContract、APDURequest和APDUIndi cate,這些API實際所使用的字節(jié)代號可以任 意選擇不同數(shù)值以區(qū)別;
[0038] Length:負(fù)載數(shù)據(jù)的字節(jié)長度,即Pay load的長度;
[0039] Payload: API消息數(shù)據(jù)幀的負(fù)載,即消息所攜帶的具體數(shù)據(jù);
[0040] CRC: API消息數(shù)據(jù)幀的CRC校驗值,可確保數(shù)據(jù)幀內(nèi)容正確。
[0041 ]結(jié)合ISAlOO.lla標(biāo)準(zhǔn)的相關(guān)規(guī)定,本發(fā)明定義5種API實現(xiàn)終端方法的⑶與10功 能:
[0042] GetInitial Info,通信模塊通知應(yīng)用模塊初始化;
[0043] Notify Join,通信模塊告知應(yīng)用模塊當(dāng)前通信模塊在ISAlOO.lla網(wǎng)絡(luò)中的入網(wǎng)狀 態(tài);
[0044] NotifyAddContract,通信模塊告知應(yīng)用模塊用于ISA100.1 la網(wǎng)絡(luò)通信的無線網(wǎng) 絡(luò)資源已經(jīng)準(zhǔn)備好,所謂Contract是ISA100.1 la標(biāo)準(zhǔn)之中規(guī)定的一種由系統(tǒng)管理器分配的 代表每一個實例化的單向無線網(wǎng)絡(luò)通信所需要使用的資源,周期性Contract-般用于終端 使用Publish/Subscribe服務(wù)發(fā)布傳感器數(shù)據(jù),非周期性Contract-般用于終端使用 Client/Server服務(wù)處理控制指令;
[0045] APDURequest,通信模塊告知應(yīng)用模塊遍歷獲取所有傳感器的讀數(shù),整理完畢后作 為響應(yīng)內(nèi)容送回給通信模塊;
[0046] APDUIndicate,通信模塊通知應(yīng)用模塊使相關(guān)的控制器作出控制動作。
[0047]步驟3,終端方法在本步驟開始運行,通信模塊初始化之后向應(yīng)用模塊發(fā)送 GetInitialInfo請求消息以通知應(yīng)用模塊進(jìn)行初始化,應(yīng)用模塊收到該消息后進(jìn)行初始化 并回復(fù)GetInitialInfo響應(yīng)消息,通信模塊獲取響應(yīng)消息后執(zhí)行ISA100.1 la協(xié)議棧并代表 終端設(shè)備開始入網(wǎng)。GetInitial Info請求和響應(yīng)消息的Payload-般都可以為空,如果想要 令終端申請入網(wǎng)時能夠上報終端所攜帶的傳感器和控制器的屬性參數(shù),則可以令應(yīng)用模塊 回復(fù)Get Initial Info響應(yīng)消息時在Pay load中填寫相關(guān)參數(shù),具體內(nèi)容可視實地的終端設(shè) 備所搭載的傳感器和控制器的種類數(shù)量而定。
[0048] 步驟4,通信模塊完成ISA100.1 la終端入網(wǎng),入網(wǎng)后向應(yīng)用模塊發(fā)送Notify Join請 求消息,消息Payload內(nèi)容為0或者1,為0表示通信模塊當(dāng)前處于未入網(wǎng)的掉線狀態(tài),為1表 示通信模塊已經(jīng)正常入網(wǎng)。應(yīng)用模塊根據(jù)請求消息Payload內(nèi)容做出不同處理,內(nèi)容為0則 應(yīng)用模塊停止對傳感器和控制器的訪問以待下一次消息通知,內(nèi)容為1則應(yīng)用模塊開始初 始化傳感器和控制器以準(zhǔn)備使用。應(yīng)用模塊處理完成后,向通信模塊回復(fù)Notify Join響應(yīng) 消息,響應(yīng)消息的Pay load內(nèi)容為空即可。通信模塊收到NotifyJoin響應(yīng)消息后,若終端確 實已經(jīng)入網(wǎng),則開始向ISA100.1 la網(wǎng)絡(luò)申請采集和控制功能所必需的Contract資源,若終 端未入網(wǎng),則繼續(xù)代表終端設(shè)備向ISAlOO. I Ia網(wǎng)絡(luò)申請入網(wǎng)。
[0049] 步驟5,通信模塊申請Contract資源,周期性Contract用于終端向ISAlOO · Ila網(wǎng)絡(luò) 中傳輸所采集的數(shù)據(jù),非周期性Contract用于終端向控制器發(fā)送來自ISA100.1 la網(wǎng)絡(luò)的控 制指令。申請完成后由通信模塊向應(yīng)用模塊發(fā)送NotifyAddContract請求消息,消息 Pay load內(nèi)容為ISA100.1 la標(biāo)準(zhǔn)規(guī)定的Contract屬性參數(shù),應(yīng)用模塊收到請求消息后記錄 所有Contract的屬性參數(shù)信息。接著,應(yīng)用模塊向通信模塊回復(fù)NotifyAddContract響應(yīng)消 息,消息的Pay load至少要包括所涉及的Contract屬性參數(shù)中的Contract ID,ISAlOO · Ila標(biāo) 準(zhǔn)規(guī)定了 ContractID在整個無線網(wǎng)絡(luò)中是每個Contract的唯一標(biāo)識符,將其作為 NotifyAddContract響應(yīng)消息的Pay load內(nèi)容可以通知通信模塊相關(guān)的Contract確實有效 而無需重新申請。
[0050] 需要注意本步驟中控制功能所用的非周期性Contract在ISA100.1 la網(wǎng)絡(luò)中必須 是成對的,這與采集功能所用的周期性Contract不同。因為ISA100.1 la協(xié)議規(guī)定采集功能 的Publish/Subscribe服務(wù)的周期性Contract只涉及終端的CO單方面向ISAlOO. Ila網(wǎng)關(guān)傳 輸數(shù)據(jù),控制功能的非周期性Contract則涉及Client/Server服務(wù)執(zhí)行時網(wǎng)關(guān)和終端的IO 之間的雙向傳輸。但實際上,對于通信模塊與應(yīng)用模塊之間的API消息交互而言,只需要記 錄成對Contract的其中一個由終端指向網(wǎng)關(guān)的實例即可,本步驟NotifyAddContract消息 的Pay load內(nèi)容也只涉及這個指向網(wǎng)關(guān)的Contract,因為網(wǎng)關(guān)指向終端的另一個Contract 只負(fù)責(zé)ISAlOO. I Ia網(wǎng)絡(luò)范圍內(nèi)的指令傳輸,通信模塊在收到來自網(wǎng)關(guān)的控制指令后,指向 終端的Contract即完成了其功能,API消息實質(zhì)上與指向終端的Contract無關(guān)。
[0051] Contract準(zhǔn)備完畢后,就可以進(jìn)行具體的采集功能和控制功能。執(zhí)行采集功能進(jìn) 入步驟6,執(zhí)行控制功能進(jìn)入步驟7。
[0052 ]步驟6,采集功能由通信模塊的⑶向應(yīng)用模塊發(fā)送APDUReque st請求消息,消息的 Pay load至少要包括所使用的周期性Contract的ContractID,以指明所需要的傳感器數(shù)據(jù) 將使用該Contract完成Publish/Subscribe傳輸。應(yīng)用模塊收到請求消息后,采集功能子模 塊會將各個傳感器的數(shù)據(jù)依次集中起來,再以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Publish/ Subscribe服務(wù)要求的方式和所記錄的Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元 (APDU),作為Payload隨著APDURequest響應(yīng)消息回復(fù)給通信模塊的⑶。最后由⑶使用 Publish/Subscribe服務(wù)向ISAlOO. Ila網(wǎng)關(guān)傳輸包含傳感器數(shù)據(jù)和Contract屬性參數(shù)的數(shù) 據(jù)集,網(wǎng)關(guān)會根據(jù)Contract的內(nèi)容識別終端的傳感器數(shù)據(jù)的合法性。
[0053]由于采集功能使用的是周期性的Contract,所以本步驟的終端傳感器數(shù)據(jù)傳輸會 不斷自動循環(huán)執(zhí)行來及時上報最新的傳感器讀數(shù),除非終端在ISA100.1 la網(wǎng)絡(luò)中的通信狀 態(tài)發(fā)生變化導(dǎo)致離線或重新入網(wǎng)的情況。
[0054]步驟7,控制功能由通信模塊的10向應(yīng)用模塊發(fā)送APDUIndicate請求消息,消息的 Pay load內(nèi)容除控制指令數(shù)據(jù)以外必須包括所使用的非周期性Contract的ContractID,以 指明所要使用的控制器將使用該Contract完成Client/Server傳輸,APDUIndicate請求消 息的Payload所包含的控制指令數(shù)據(jù)需要視終端所搭載的具體控制器信息而定。應(yīng)用模塊 收到請求消息后,控制功能子模塊會根據(jù)控制指令的內(nèi)容使用具體的控制器完成控制功 能,然后以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Client/Server服務(wù)要求的方式將控制結(jié)果和所記 錄的Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元(APDU),作為Payload隨著 APDUIndi cate響應(yīng)消息回復(fù)給通信模塊的10。最后由10使用Cl ient/Server服務(wù)向 ISA100.1 la網(wǎng)關(guān)反饋包含控制結(jié)果和Contract屬性參數(shù)的數(shù)據(jù)集,網(wǎng)關(guān)會根據(jù)Contract的 內(nèi)容識別終端的控制結(jié)果數(shù)據(jù)的合法性以判定控制是否成功。
[0055]由于控制功能使用的是非周期性的Contract,所以本步驟的終端控制一般是根據(jù) 用戶的需求隨時激活執(zhí)行的,ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定了使用Client/Server服務(wù)向終端 傳遞數(shù)據(jù)時必須申請新的或激活已存在的非周期性Contract資源。
[0056] 下面結(jié)合附圖和實施例對本發(fā)明進(jìn)一步說明,本發(fā)明包括但不僅限于下述實施 例。
[0057] 傳統(tǒng)的無線傳感網(wǎng)終端設(shè)備為了體積等成本方面的考慮,往往使用單芯片的結(jié) 構(gòu),但其采集控制性能和可擴(kuò)展性必然受到限制。ISA100.1 la標(biāo)準(zhǔn)是一種面向工業(yè)現(xiàn)場的 無線傳感網(wǎng)協(xié)議,因此更強(qiáng)調(diào)綜合性能是否可以滿足復(fù)雜環(huán)境中的需要。根據(jù)ISA100.1 la 協(xié)議棧的特點,其應(yīng)用層采取了一定的面向?qū)ο蟮脑O(shè)計思想,協(xié)議未規(guī)定的用戶應(yīng)用只需 要和應(yīng)用層UAP之中可擴(kuò)展的對象進(jìn)行交互,故而本發(fā)明可以將具體的用戶應(yīng)用與協(xié)議棧 網(wǎng)絡(luò)通信分離開來。本發(fā)明所涉及的用戶應(yīng)用至少包括終端的采集功能和控制功能,具體 實施方式包括以下幾個步驟。
[0058]步驟1,首先在軟件結(jié)構(gòu)設(shè)計上定義為通信模塊和應(yīng)用模塊兩大部分,通信模塊負(fù) 責(zé)基本的ISA100.1 la協(xié)議棧網(wǎng)絡(luò)通信,應(yīng)用模塊則專注于面向工業(yè)現(xiàn)場環(huán)境的可擴(kuò)展采集 控制功能,如圖1所示。
[0059] 通信模塊和應(yīng)用模塊不應(yīng)該過分拘泥于某種類型的硬件平臺,因此這兩種模塊在 概念上是兩個可以互相通信交互的軟件實體,如此則它們既可以分別部署于各自的單片機(jī) 上,也可以根據(jù)需要各自部署于嵌入式操作系統(tǒng)上。通信模塊和應(yīng)用模塊這兩個軟件模塊 之間的交互方式在物理上也無要求,可以是網(wǎng)口直連的Socket通信,也可以是串口直連的 串口通信,本發(fā)明只強(qiáng)調(diào)軟件模塊之間交互規(guī)則的確定,因此采用自定義API的方式并規(guī)定 了其交互流程。但需要強(qiáng)調(diào)的是,最終所選用的硬件平臺一定要滿足兩點:一是通信模塊所 部署的硬件平臺需要具備ISA100.1 la物理層所要求的基于IEEE 802.15.4標(biāo)準(zhǔn)的無線射頻 通信設(shè)備,并且通信模塊的物理層需要實現(xiàn)對所選無線射頻通信設(shè)備的驅(qū)動;二是應(yīng)用模 塊所部署的硬件平臺應(yīng)可以掛載多種傳感器和控制器,使應(yīng)用模塊可以訪問這些傳感器和 控制器。
[0060] 圖1中的通信模塊的主要任務(wù)是運行ISA100.1 la協(xié)議棧以便使終端能夠加入 ISA100.1 la無線傳感網(wǎng)絡(luò)。協(xié)議棧從上到下包括:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物 理層,各個層在ISA100.1 Ia標(biāo)準(zhǔn)中均有詳細(xì)規(guī)定,只需按照標(biāo)準(zhǔn)內(nèi)容將各個層的必要內(nèi)容 實現(xiàn)即可。特殊之處只在于物理層需要根據(jù)硬件平臺具體使用的無線射頻通信設(shè)備的型號 來實現(xiàn)對應(yīng)的驅(qū)動。
[0061 ] UAP中的各種標(biāo)準(zhǔn)對象可以按照ISA100 .1 Ia標(biāo)準(zhǔn)的定義來實現(xiàn),對本發(fā)明而言至 少需要實現(xiàn)集中器對象(CO)和接口對象(10),這是因為CO和IO需要分別外接采集和控制的 具體用戶應(yīng)用功能,但用戶應(yīng)用部分則是ISAlOO.lla標(biāo)準(zhǔn)不作規(guī)定的。因此,從ISAlOO.lla 標(biāo)準(zhǔn)的概念角度可以將所述應(yīng)用模塊看作是UAP的CO與10的延伸,這部分延伸是 ISAlOO.lla標(biāo)準(zhǔn)未規(guī)定的。
[0062]本步驟的重點在于細(xì)化應(yīng)用模塊的內(nèi)部定義,應(yīng)按圖1所示定義采集功能子模塊、 控制功能子模塊和API解析子模塊。采集功能子模塊是CO的延伸,可以搭載多個傳感器,并 負(fù)責(zé)將這些傳感器的數(shù)據(jù)集中起來作為預(yù)備上傳的終端設(shè)備采集數(shù)據(jù)。控制功能子模塊是 10的延伸,可以搭載多個控制器,并負(fù)責(zé)將網(wǎng)關(guān)傳來的控制指令發(fā)送到指定的控制器中從 而完成控制執(zhí)行。API解析子模塊則負(fù)責(zé)應(yīng)用模塊與通信模塊之間的通信,通信方式為自定 義的API控制消息交互,API的具體細(xì)節(jié)在后續(xù)步驟完成。
[0063]步驟2,定義API消息作為終端方法內(nèi)部的應(yīng)用模塊和通信模塊之間的交互規(guī)則, 為實現(xiàn)ISAlOO.lla終端對多個傳感器與控制器的靈活使用提供途徑,定義的內(nèi)容包括API 消息的數(shù)據(jù)幀結(jié)構(gòu)的定義和API消息種類的定義。API消息種類的定義可以根據(jù)需求進(jìn)行擴(kuò) 展,但至少要滿足⑶和10所必備的采集與控制功能,本發(fā)明定義了 GetInitial Info、 NotifyJoin、NotifyAddContract、APDURequest和APDUIndicate這5種API〇
[0064] API消息的數(shù)據(jù)幀結(jié)構(gòu)定義如下:
[0066] HeacUAPI消息數(shù)據(jù)幀的第一個字節(jié),表示數(shù)據(jù)幀的開頭;
[0067] ID:每個實例化的API消息的唯一標(biāo)識符,由通信模塊創(chuàng)建請求消息時分配;
[0068] Direction:API消息的方向,可區(qū)分消息具體為請求消息還是響應(yīng)消息,請求消息 由通信模塊的應(yīng)用層UAP發(fā)送,響應(yīng)消息則是應(yīng)用模塊的API解析子模塊根據(jù)請求消息的內(nèi) 容向通信模塊回送;
[0069] API:標(biāo)識API消息的具體類型,即每種API的字節(jié)代號,可根據(jù)實際需求定義,本發(fā) 明定義了上述滿足CO和IO功能的5種API,即GetInitialInfo、NotifyJoin、 Not if yAddContract、APDURequest和APDUIndi cate,各API種類的字節(jié)代號可以任意取值以 互相區(qū)別即可;
[0070] Length:負(fù)載數(shù)據(jù)的字節(jié)長度,即Pay load的長度;
[007? ] Payload:API消息數(shù)據(jù)幀的負(fù)載,即消息所攜帶的具體數(shù)據(jù);
[0072] CRC = API消息數(shù)據(jù)幀的CRC校驗值,可確保數(shù)據(jù)幀內(nèi)容正確。
[0073] API消息種類定義如下,本發(fā)明利用這5種API實現(xiàn)符合ISA100.1 la標(biāo)準(zhǔn)的終端采 集與控制功能:
[0074] GetInitial Info,通信模塊通知應(yīng)用模塊初始化;
[0075] Notify Join,通信模塊告知應(yīng)用模塊當(dāng)前通信模塊在ISA100.1 la網(wǎng)絡(luò)中的入網(wǎng)狀 態(tài);
[0076] NotifyAddContract,通信模塊告知應(yīng)用模塊用于ISA100.1 la網(wǎng)絡(luò)通信的 Contract無線網(wǎng)絡(luò)資源已經(jīng)準(zhǔn)備好,一般而言只需告知涉及具體采集與控制操作的周期性 和非周期性Contract即可;
[0077] APDURequest,通信模塊告知應(yīng)用模塊遍歷獲取所有傳感器的讀數(shù),整理完畢后作 為響應(yīng)內(nèi)容送回給通信模塊;
[0078] APDUIndicate,通信模塊通知應(yīng)用模塊使相關(guān)的控制器作出控制動作。
[0079] 圖2為實例化的API消息在終端方法中運作的時序圖,每個具體的API消息都將由 通信模塊的應(yīng)用層UAP發(fā)送,在應(yīng)用模塊的API解析子模塊接收,如果是使用傳感器或控制 器的API消息則還要在解析消息之后將消息內(nèi)容送給采集功能子模塊或者控制功能子模 塊,最后由應(yīng)用模塊將每個處理后的API消息向通信模塊回復(fù)。注意圖中的API范圍不涉及 采集功能子模塊和控制功能子模塊,一般的API消息可直接由API解析子模塊完成響應(yīng)消息 的準(zhǔn)備,只有涉及采集控制功能時才會由API解析子模塊將API消息的內(nèi)容而不是API消息 實例發(fā)送給具體的傳感器或控制器。
[0080] 步驟3,基于步驟1的終端方法軟件實體結(jié)構(gòu)定義和步驟2的API消息交互規(guī)則定 義,本步驟開始正式展開終端方法的實際運行流程的實現(xiàn)。本步驟主要完成初始化任務(wù),通 信模塊優(yōu)先初始化之后向應(yīng)用模塊發(fā)送GetInitialInfo請求消息以通知應(yīng)用模塊進(jìn)行初 始化,應(yīng)用模塊收到該消息后進(jìn)行初始化并回復(fù)GetInitialInfo響應(yīng)消息,通信模塊獲取 響應(yīng)消息后執(zhí)行ISA100.1 Ia協(xié)議棧并代表終端設(shè)備開始入網(wǎng)。
[0081] 圖3展示了終端CO基于API完成傳感器采集數(shù)據(jù)上傳的時序圖,圖4展示了終端10 基于API完成控制器控制任務(wù)的時序圖,圖中第一步的API消息都是使用GetInitialInfo消 息進(jìn)行初始化工作且基本完全相同。因此,在實現(xiàn)過程中也可以將圖3和圖4的第一步API消 息調(diào)用合而為一,由通信模塊的其他部分統(tǒng)一完成GetInitial Info消息的使用及初始化工 作。
[0082] GetInitial Inf 〇消息的Pay load內(nèi)容可以靈活掌握,請求響應(yīng)的內(nèi)容皆為空也不 影響初始化任務(wù)的完成,因為初始化工作本身相對簡單不需要太多的參數(shù)進(jìn)行補(bǔ)充。但為 了終端方法的實用性更強(qiáng),一般還是需要借助GetInitialInf0消息完成一些額外工作,主 要集中在初始化后向ISA100.1 la網(wǎng)絡(luò)中告知終端設(shè)備的詳細(xì)功能信息,如傳感器信息和控 制器信息,否則只能采用人為將所有終端的功能信息以配置文件的形式輸入網(wǎng)關(guān)的非自動 化方法。具體的,可以在GetInitial Inf 〇響應(yīng)消息的Pay load內(nèi)容中填充傳感器或控制器的 參數(shù),如傳感器在終端的編號、傳感器數(shù)據(jù)名稱和類型、控制器在終端的編號、控制器信號 類型等,具體內(nèi)容由實地的終端所搭載的采集控制設(shè)備而定。當(dāng)初始化任務(wù)完成后終端開 始入網(wǎng),若具備詳細(xì)功能信息,則可將這些信息隨著終端入網(wǎng)請求發(fā)送給ISA100.1 la網(wǎng)絡(luò), 并在網(wǎng)關(guān)收到請求信息后記錄之,如果允許終端入網(wǎng),那么ISA100.1 la網(wǎng)絡(luò)就會知曉該終 端具備何種采集和控制功能。
[0083] 步驟4,通信模塊完成ISA100.1 la終端入網(wǎng),入網(wǎng)后向應(yīng)用模塊發(fā)送Notify Join請 求消息,消息Payload內(nèi)容為0或者1,為0表示通信模塊當(dāng)前處于未入網(wǎng)的掉線狀態(tài),為1表 示通信模塊已經(jīng)正常入網(wǎng)。如果應(yīng)用模塊收到的請求消息Payload內(nèi)容為1,則開始對傳感 器和控制器進(jìn)行初始化以備使用,同時回復(fù)No t i f y Jo i η響應(yīng)消息,響應(yīng)消息的Pay I oad內(nèi)容 為空即可。圖3中第二步的API消息為終端CO使用Notify Join消息并啟動傳感器初始化的工 作,圖4中第二步的API消息為終端IO使用NotifyJoin消息并啟動控制器初始化的工作。本 步驟中,⑶和IO分別使用Notify Join請求消息的活動也可以在實現(xiàn)的過程中適當(dāng)合并,雖 然概念上CO負(fù)責(zé)傳感器而IO負(fù)責(zé)控制器,但實際上NotifyJoin請求消息的Pay load內(nèi)容并 不因 CO或IO而有所不同,因此完全可以由通信模塊的其他部分統(tǒng)一完成Notify Join請求消 息,應(yīng)用模塊只需將所有傳感器控制器初始化即可。
[0084] 需要注意Notif yjoin請求消息的Payload內(nèi)容為0的情況,這種情況不會在終端初 次初始化入網(wǎng)時出現(xiàn),而是往往出現(xiàn)在終端離線后重新入網(wǎng)的過程中。根據(jù)ISA100.1 la協(xié) 議標(biāo)準(zhǔn),所有無線終端會由系統(tǒng)管理器維護(hù)其在線狀態(tài),具體的維護(hù)方式可以采用終端與 網(wǎng)關(guān)之間的定時心跳包交互。如果維持終端在線的交互出現(xiàn)問題,那么終端的ISAlOO . I Ia 協(xié)議棧會重新提交入網(wǎng)請求。為了在終端離線期間減少終端的功耗,也為了方便終端重新 入網(wǎng)后順利進(jìn)行后續(xù)步驟,可以在通信模塊的協(xié)議棧確定離線且重新入網(wǎng)時,向應(yīng)用模塊 發(fā)送Pay load內(nèi)容為0的NotifyJoin請求消息,應(yīng)用模塊收到這種消息后將停止對傳感器和 控制器的使用,直到下一次收到Payload內(nèi)容為1的NotifyJoin請求消息后繼續(xù)正常步驟流 程。
[0085] 步驟5,通信模塊申請Contract資源,周期性Contract用于終端向ISAlOO · Ila網(wǎng)絡(luò) 中傳輸所采集的數(shù)據(jù),非周期性Contract用于終端向控制器發(fā)送來自ISA100.1 la網(wǎng)絡(luò)的控 制指令。
[0086] 本步驟所申請的Contract資源都是直接涉及傳感器和控制器的,ISA100.1 la協(xié)議 標(biāo)準(zhǔn)規(guī)定周期性Contract資源是CO可以使用網(wǎng)關(guān)提供的發(fā)布訂閱(Publish/Subscribe)月艮 務(wù)上傳數(shù)據(jù)的前提,也規(guī)定了非周期性Contract資源是IO可以使用網(wǎng)關(guān)提供的客戶端服務(wù) 器(Client/Server)服務(wù)向終端傳達(dá)控制指令的前提。為了描述清楚本步驟所申請的 Contract資源的特殊之處,應(yīng)首先討論Publ ish/Subscribe服務(wù)和Client/Server服務(wù)的特 點。
[0087] 圖5描述了參考154100.11&標(biāo)準(zhǔn)的?11131丨811/3油8(^訃6服務(wù)建立過程,總體上分為 訂閱(Subscribe)和發(fā)布(Publish)兩個階段:先由網(wǎng)關(guān)的用戶應(yīng)用根據(jù)其所需要得到的采 集數(shù)據(jù)類型等內(nèi)容向網(wǎng)關(guān)發(fā)起Subscribe服務(wù)請求,網(wǎng)關(guān)允許后即表示網(wǎng)關(guān)的用戶應(yīng)用可 以"訂閱"所需的采集數(shù)據(jù);隨后,網(wǎng)關(guān)可以根據(jù)"訂閱"的內(nèi)容建立對應(yīng)的Publish服務(wù),并 在服務(wù)建立后通知相關(guān)的終端以告知它們可以開始向網(wǎng)關(guān)持續(xù)性"發(fā)布"采集數(shù)據(jù),網(wǎng)關(guān)此 后將通過Publish服務(wù)接收來自終端發(fā)送的數(shù)據(jù),圖5中的定時循環(huán)即體現(xiàn)了 Publish服務(wù) 不斷發(fā)布數(shù)據(jù)的效果。網(wǎng)關(guān)根據(jù)"訂閱"與"發(fā)布"之間的對應(yīng)關(guān)系,將符合條件的Publish月艮 務(wù)上傳的發(fā)布數(shù)據(jù)送給需要這些數(shù)據(jù)的Subscribe服務(wù)的訂閱者。
[0088] 圖6描述了參考ISA100.1 la標(biāo)準(zhǔn)的Client/Server服務(wù)建立過程,總體上分為請求 和響應(yīng)兩個階段:首先是網(wǎng)關(guān)的用戶應(yīng)用提出控制需求,網(wǎng)關(guān)將其轉(zhuǎn)化為ISA100.1 la網(wǎng)絡(luò) 中的控制指令,終端收到控制指令后交給具體的控制設(shè)備作出控制動作;隨后,終端的控制 動作完成,將相關(guān)響應(yīng)信息回復(fù)給網(wǎng)關(guān),網(wǎng)關(guān)再將響應(yīng)送給網(wǎng)關(guān)的用戶應(yīng)用以告知控制結(jié) 果。Client/Server服務(wù)相對于Publish/Subscribe服務(wù)而言屬于一次性服務(wù),不需要 Publish/Subscribe服務(wù)的持續(xù)性。此外,理論上Client/Server服務(wù)的方向性可以是任意 的,既可以是網(wǎng)關(guān)向終端提出控制要求,也可以是終端向網(wǎng)關(guān)主動反映情況。
[0089 ] 本步驟所申請的C O n t r a C t資源是IS A10 0.11 a標(biāo)準(zhǔn)規(guī)定的網(wǎng)絡(luò)傳輸所必需的單方 向通信資源,雙向通信一般需要兩個方向相反的成對的Contract。周期性Contract是長期 存在的,可以使用這種Contract傳輸相對穩(wěn)定的固定數(shù)據(jù)通信。非周期性Contract是一次 性的,可以使用這種Contract完成特定的即時數(shù)據(jù)通信。所有Contract資源都由系統(tǒng)管理 器分配,但發(fā)出申請的網(wǎng)絡(luò)角色可以是該Contract相關(guān)的其他網(wǎng)絡(luò)角色,例如網(wǎng)關(guān)和終端 之間的Contract就可以由網(wǎng)關(guān)或者該終端發(fā)起申請。
[0090]根據(jù)以上內(nèi)容的討論,周期性的Contract最適合CO用來長期上傳其所收集的傳感 器數(shù)據(jù),此類使用Publ ish/Subscribe服務(wù)向網(wǎng)關(guān)長期發(fā)送信息的周期性Contract的方向 由終端指向網(wǎng)關(guān),一般由終端向系統(tǒng)管理器申請,如圖7所示。非周期性的Contract最適合 10用來傳送一次性的控制指令,此類使用Client/Server服務(wù)與網(wǎng)關(guān)之間進(jìn)行一次性控制 通信的非周期性Contract是兩個單向成對的,即一個Contract的方向由網(wǎng)關(guān)指向終端,另 一個則由終端指向網(wǎng)關(guān),可以由終端或網(wǎng)關(guān)向系統(tǒng)管理器申請,如圖8所示。
[0091 ]本步驟的C 〇 n t r a c t資源申請完成后由通信模塊向應(yīng)用模塊發(fā)送 Not if yAddContract請求消息,消息Pay load內(nèi)容為ISA100 · I Ia標(biāo)準(zhǔn)規(guī)定的Contract屬性參 數(shù),應(yīng)用模塊收到請求消息后記錄所有Contract的屬性參數(shù)信息。接著,應(yīng)用模塊向通信模 塊回復(fù)Not if yAddContract響應(yīng)消息,消息的Pay load至少要包括所涉及的Contract屬性參 數(shù)中的Contract ID,ISA100 · Ila標(biāo)準(zhǔn)規(guī)定了 ContractID在整個無線網(wǎng)絡(luò)中是每個Contract 的唯一標(biāo)識符,將其作為Not if yAddContract響應(yīng)消息的Pay load內(nèi)容可以通知通信模塊相 關(guān)的Contract確實有效而無需重新申請。雖然控制功能所涉及的非周期性Contract是成對 的,但Not i f yAddContract請求消息的Pay I oad只需要填寫其中一個方向為終端指向網(wǎng)關(guān)的 Contract的屬性參數(shù)信息即可,因為另一個方向為網(wǎng)關(guān)指向終端的Contract將用于網(wǎng)關(guān)將 控制指令送給終端通信模塊的任務(wù),并且此指向終端的Contract會隨著通信模塊收到來自 網(wǎng)關(guān)的控制指令后完成其任務(wù),也就是說本步驟中的Not if yAddContract請求響應(yīng)消息與 指向終端的非周期性Contract沒有關(guān)系。
[0092] 在完成本步驟的NotifyAddContract消息交互后,應(yīng)用模塊即可開始使用傳感器 或控制器,如開始輪詢各個傳感器管腳輸入口或者激活正在待機(jī)的控制器以準(zhǔn)備接受動 作,圖3第三步的API消息為CO通知應(yīng)用模塊相關(guān)的周期性Contract信息并開始啟動傳感 器,圖4第三步的API消息為IO通知應(yīng)用模塊相關(guān)的非周期性Contract信息并激活控制器。 通信模塊隨后可以選擇告知ISA100.1 la網(wǎng)絡(luò)CO與IO的準(zhǔn)備情況,也可以根據(jù)實際情況選擇 不告知,因為Contract資源是采集與控制實現(xiàn)的最關(guān)鍵要素 ,一般而言Contract的成功建 立即代表采集與控制功能的即時可用,除非傳感器或控制器出現(xiàn)硬件方面的設(shè)備問題。
[0093] Contract準(zhǔn)備完畢后,就可以進(jìn)行具體的采集功能和控制功能。執(zhí)行采集功能進(jìn) 入步驟6,執(zhí)行控制功能進(jìn)入步驟7。
[0094]步驟6,采集功能由通信模塊的⑶向應(yīng)用模塊發(fā)送APDURequest請求消息,消息的 Pay load至少要包括所使用的周期性Contract的ContractID,以指明所需要的傳感器數(shù)據(jù) 將使用該Contract完成Publish/Subscribe傳輸。應(yīng)用模塊收到請求消息后,采集功能子模 塊會將各個傳感器的數(shù)據(jù)依次集中起來,再以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Publish/ Subscri be服務(wù)要求的方式和所記錄的Con tract屬性參數(shù)結(jié)合,作為Pay load隨著 APDURequest響應(yīng)消息回復(fù)給通信模塊的⑶。最后由⑶使用Publish/Subscribe服務(wù)向 ISA100.1 la網(wǎng)關(guān)傳輸包含傳感器數(shù)據(jù)和Contract屬性參數(shù)的數(shù)據(jù)集,網(wǎng)關(guān)會根據(jù)Contract 的內(nèi)容識別終端的傳感器數(shù)據(jù)的合法性。
[0095]由于采集功能使用的是周期性的Contract,所以本步驟的終端傳感器數(shù)據(jù)傳輸會 不斷自動循環(huán)執(zhí)行來及時上報最新的傳感器讀數(shù),除非終端在ISA100.1 la網(wǎng)絡(luò)中的通信狀 態(tài)發(fā)生變化導(dǎo)致離線或重新入網(wǎng)的情況。
[0096]圖3第四步的API消息為CO向應(yīng)用模塊請求傳感器采集數(shù)據(jù)集合,應(yīng)用層響應(yīng)請求 并發(fā)回封裝采樣數(shù)據(jù)的APDU。圖中的定時循環(huán)即表現(xiàn)了終端借助Publish服務(wù)使用周期性 Con tract不斷上傳數(shù)據(jù)的情況。還需要注意的是,圖中應(yīng)用模塊開始讀取傳感器的時間會 早于收到APDURequest請求消息的時間,因為所述終端方法的通信模塊和應(yīng)用模塊各自是 獨立的軟件模塊,為了更及時的反映傳感器最新采樣數(shù)據(jù),可以令應(yīng)用模塊提前獲取傳感 器讀數(shù)并暫時存于緩存中,待收到APDURequest請求消息時可以馬上將最新傳感器數(shù)據(jù)反 饋。
[0097]步驟7,控制功能由通信模塊的10向應(yīng)用模塊發(fā)送APDUIndicate請求消息,消息的 Pay load內(nèi)容除控制指令數(shù)據(jù)以外必須包括所使用的非周期性Contract的ContractID,以 指明所要使用的控制器將使用該Contract完成Client/Server傳輸,APDUIndicate請求消 息的Payload所包含的控制指令數(shù)據(jù)需要視終端所搭載的具體控制器信息而定。注意請求 消息的Pay I oad內(nèi)容所涉及的非周期性Con trac t的方向一定是由終端指向網(wǎng)關(guān),由網(wǎng)關(guān)指 向終端的Contract在此時已經(jīng)隨著網(wǎng)關(guān)所發(fā)送的控制指令的到達(dá)而結(jié)束其任務(wù)。應(yīng)用模塊 收到請求消息后,控制功能子模塊會根據(jù)控制指令的內(nèi)容使用具體的控制器完成控制功 能,然后以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Client/Server服務(wù)要求的方式將控制結(jié)果和所記 錄的Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元(APDU),作為Payload隨著 APDUIndi cate響應(yīng)消息回復(fù)給通信模塊的10。最后由10使用Cl ient/Server服務(wù)向 ISA100.1 la網(wǎng)關(guān)反饋包含控制結(jié)果和Contract屬性參數(shù)的數(shù)據(jù)集,網(wǎng)關(guān)會根據(jù)Contract的 內(nèi)容識別終端的控制結(jié)果數(shù)據(jù)的合法性以判定控制是否成功。
[0098]由于控制功能使用的是非周期性的Contract,所以本步驟的終端控制一般是根據(jù) 用戶的需求隨時激活執(zhí)行的,ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定了使用Client/Server服務(wù)向終端 傳遞數(shù)據(jù)時必須申請新的或激活已存在的非周期性Contract資源。
[0099]圖4第四步的API消息為IO向應(yīng)用模塊發(fā)送控制指令請求,應(yīng)用模塊完成控制活動 后返回封裝控制結(jié)果的APDU。圖中的按需啟動表現(xiàn)了每次控制指令的完成都必須由 Client/Server服務(wù)激活非周期性Contract的情況,可以與圖6的Client/Server服務(wù)時序 圖互相印證。
【主權(quán)項】
1.一種符合ISA100.1Ia標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,其特征在于包括下述步 驟: 步驟1,定義通信模塊和應(yīng)用模塊;所述的通信模塊負(fù)責(zé)執(zhí)行無線網(wǎng)絡(luò)通信功能,硬件 平臺滿足ISA100.1 la標(biāo)準(zhǔn)物理層需求;所述的應(yīng)用模塊負(fù)責(zé)終端采集控制功能,能夠搭載 傳感器和控制器; 步驟2,定義API消息作為應(yīng)用模塊和通信模塊之間的交互規(guī)則;通信模塊向應(yīng)用模塊 發(fā)送API請求消息,應(yīng)用模塊針對每個處理后的API請求消息,向通信模塊回復(fù)其響應(yīng)消息; 步驟3,通信模塊初始化之后向應(yīng)用模塊發(fā)送GetInitialInfo請求消息,通知應(yīng)用模塊 進(jìn)行初始化,應(yīng)用模塊收到該消息后進(jìn)行初始化并回復(fù)GetInitialInfo響應(yīng)消息,通信模 塊獲取響應(yīng)消息后執(zhí)行ISA100.1 la協(xié)議棧并代表終端設(shè)備開始入網(wǎng); 步驟4,通信模塊完成ISA100.1 la終端入網(wǎng),入網(wǎng)后向應(yīng)用模塊發(fā)送Notify Join請求消 息,請求消息Payload內(nèi)容為0或者1,為0表示通信模塊當(dāng)前處于未入網(wǎng)的掉線狀態(tài),為1表 示通信模塊已經(jīng)正常入網(wǎng);應(yīng)用模塊根據(jù)請求消息Payload內(nèi)容做出不同處理,內(nèi)容為0則 應(yīng)用模塊停止對傳感器和控制器的訪問以待下一次消息通知,內(nèi)容為1則應(yīng)用模塊開始初 始化傳感器和控制器以準(zhǔn)備使用;應(yīng)用模塊處理完成后,向通信模塊回復(fù)Notify Join響應(yīng) 消息;通信模塊收到Notify Join響應(yīng)消息后,若終端確實已經(jīng)入網(wǎng),則進(jìn)入步驟5;若終端未 入網(wǎng),則繼續(xù)代表終端設(shè)備向I SAl 00.11 a網(wǎng)絡(luò)申請入網(wǎng); 步驟5,通信模塊申請Contract資源,周期性Contract用于終端向ISA100 · Ila網(wǎng)絡(luò)中傳 輸所采集的數(shù)據(jù),非周期性Contract用于終端向控制器發(fā)送來自ISA100.1 la網(wǎng)絡(luò)的控制指 令;申請完成后由通信模塊向應(yīng)用模塊發(fā)送NotifyAddContract請求消息,消息Pay load內(nèi) 容為ISAlOO . Ila標(biāo)準(zhǔn)規(guī)定的Contract屬性參數(shù),應(yīng)用模塊收到請求消息后記錄所有 Contract的屬性參數(shù)信息;應(yīng)用模塊向通信模塊回復(fù)NotifyAddContract響應(yīng)消息,消息的 Pay load至少包括所涉及的Contract屬性參數(shù)中的Contract ID,即每個Contract在整個無 線網(wǎng)絡(luò)中的唯一標(biāo)識符,將其作為NotifyAddContract響應(yīng)消息的Pay load內(nèi)容通知通信模 塊相關(guān)的Contract確實有效而無需重新申請; Contract準(zhǔn)備完畢后,進(jìn)行采集功能或控制功能;執(zhí)行采集功能進(jìn)入步驟6,執(zhí)行控制 功能進(jìn)入步驟7; 步驟6,通信模塊的CO向應(yīng)用模塊發(fā)送APDURequest請求消息,消息的Payload至少包括 所使用的周期性Contract的ContractID,以指明所需要的傳感器數(shù)據(jù)將使用該Contract完 成Publish/Subscribe傳輸;應(yīng)用模塊收到請求消息后將各個傳感器的數(shù)據(jù)集中起來,再以 ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Publish/Subscribe服務(wù)要求的方式和所記錄的Contract屬性 參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元AF 1DtL作為Payload隨著APDURequest響應(yīng)消息回復(fù)給通信 模塊的CO;最后由CO使用Publish/Subscribe服務(wù)向ISA100.1 la網(wǎng)關(guān)傳輸包含傳感器數(shù)據(jù) 和Contract屬性參數(shù)的數(shù)據(jù)集,網(wǎng)關(guān)根據(jù)Contract的內(nèi)容識別終端的傳感器數(shù)據(jù)的合法 性; 步驟7,通信模塊的IO向應(yīng)用模塊發(fā)送APDUIndi cate請求消息,消息的Pay load內(nèi)容除 控制指令數(shù)據(jù)以外包括所使用的非周期性Contract的ContractID,以指明所要使用的控制 器將使用該Contract完成Client/Server傳輸;應(yīng)用模塊收到請求消息后,根據(jù)控制指令的 內(nèi)容使用具體的控制器完成控制功能,然后以ISA100.1 la協(xié)議標(biāo)準(zhǔn)規(guī)定的Client/Server 服務(wù)要求的方式將控制結(jié)果和所記錄的Contract屬性參數(shù)結(jié)合為應(yīng)用層協(xié)議數(shù)據(jù)單元 APDU,作為Pay load隨著APDUIndicate響應(yīng)消息回復(fù)給通信模塊的10;最后由IO使用 Client/Server服務(wù)向ISA100.1 la網(wǎng)關(guān)反饋包含控制結(jié)果和Contract屬性參數(shù)的數(shù)據(jù)集, 網(wǎng)關(guān)根據(jù)Contract的內(nèi)容識別終端的控制結(jié)果數(shù)據(jù)的合法性以判定控制是否成功。2. 根據(jù)權(quán)利要求1所述的符合ISA100.1 la標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,其特 征在于:所述通信模塊運行ISA100.1 Ia協(xié)議棧,按照ISA100.1 Ia標(biāo)準(zhǔn)包括物理層、數(shù)據(jù)鏈路 層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層;應(yīng)用層之中的用戶應(yīng)用進(jìn)程UAP實現(xiàn)至少兩種ISA100.1 la標(biāo) 準(zhǔn)規(guī)定的對象,分別是集中器對象CO和接口對象IO; CO負(fù)責(zé)將應(yīng)用模塊采集獲得的各個傳 感器數(shù)據(jù)集中起來,然后使用ISAlOO.lla標(biāo)準(zhǔn)的發(fā)布訂閱服務(wù)發(fā)送給ISAlOO.lla網(wǎng)關(guān);10 使用ISAlOO.lla標(biāo)準(zhǔn)的客戶端服務(wù)器服務(wù),將ISAlOO.lla網(wǎng)關(guān)下發(fā)的控制指令送給應(yīng)用模 塊的傳感器和控制器。3. 根據(jù)權(quán)利要求1所述的符合ISAlOO.lla標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,其特 征在于:所述API消息的數(shù)據(jù)結(jié)構(gòu)包括Head、ID、Direct ion、API、Length、Pay load和CRC;所 述的Head為API消息的第一個字節(jié),表示數(shù)據(jù)幀的開頭;ID為每個實例化的API消息的唯一 標(biāo)識符,由通信模塊創(chuàng)建請求消息時分配;Direct i on為API消息的方向,區(qū)分消息為請求消 息或響應(yīng)消息;API為標(biāo)識API消息的具體類型,即每種API的字節(jié)代號;Length為負(fù)載數(shù)據(jù) 的字節(jié)長度,即Payload的長度;Payload為API消息的負(fù)載數(shù)據(jù),即消息所攜帶的具體數(shù)據(jù); CRC為API消息的CRC校驗值,確保數(shù)據(jù)幀內(nèi)容正確。4. 根據(jù)權(quán)利要求1所述的符合ISAlOO.lla標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,其特 征在于:所述的API包括滿足CO和10功能的至少5種API,分別為Get Initial Info、 Notify Jo in、Noti fyAddContract、APDURequest和AF1DUIndi cate;所述的Get Initial Info 表 示通信模塊通知應(yīng)用模塊初始化;Notify Join表示通信模塊告知應(yīng)用模塊當(dāng)前通信模塊在 ISAlOO.lla網(wǎng)絡(luò)中的入網(wǎng)狀態(tài);NotifyAddContract表示通信模塊告知應(yīng)用模塊用于 ISAlOO.lla網(wǎng)絡(luò)通信的無線網(wǎng)絡(luò)資源已經(jīng)準(zhǔn)備好;AroURequest表示通信模塊告知應(yīng)用模 塊遍歷獲取所有傳感器的讀數(shù),作為響應(yīng)消息送回給通信模塊;APDUIndicate表示通信模 塊通知應(yīng)用模塊使相關(guān)的控制器作出控制動作。5. 根據(jù)權(quán)利要求1所述的符合ISAlOO.lla標(biāo)準(zhǔn)的工業(yè)無線傳感網(wǎng)終端實現(xiàn)方法,其特 征在于:所述應(yīng)用模塊回復(fù)GetInitial Inf 〇響應(yīng)消息時在Pay load中填寫終端所攜帶的傳 感器和控制器的屬性參數(shù)。
【文檔編號】H04W40/22GK105916184SQ201610394586
【公開日】2016年8月31日
【申請日】2016年6月6日
【發(fā)明人】王鼎衡, 楊??? 張建奇, 成斐鳴
【申請人】西安航天自動化股份有限公司