康 輝, 楊慶江, 許 超, 鄭哲鈺
(1.黑龍江科技大學(xué) 電子與信息工程學(xué)院, 哈爾濱 150022;2.國(guó)網(wǎng)黑龍江省電力有限公司黑河供電公司, 黑龍江 黑河 164300)
目前,物聯(lián)網(wǎng)技術(shù)已經(jīng)成熟地應(yīng)用于智能家居、智慧農(nóng)業(yè)等領(lǐng)域,隨著智能制造熱度的提升工業(yè)物聯(lián)網(wǎng)的應(yīng)用范圍也朝著縱深方向發(fā)展[1]。工業(yè)物聯(lián)網(wǎng)更多的是將大量具有串口通信功能的設(shè)備通過(guò)配置為STA工作模式的DTU設(shè)備及網(wǎng)絡(luò)服務(wù)器組建而成,網(wǎng)絡(luò)服務(wù)器將設(shè)備采集的數(shù)據(jù)直接透?jìng)髦猎贫?,在云服?wù)平臺(tái)完成數(shù)據(jù)的解析[2]。作為物聯(lián)網(wǎng)感知層的“神經(jīng)元”——無(wú)線(xiàn)傳感器網(wǎng)絡(luò),已有諸多學(xué)者[3-6]對(duì)其在多目標(biāo)優(yōu)化、虛擬化及互連上開(kāi)展了研究,研究成果解決了感知層的數(shù)據(jù)鏈路問(wèn)題。吳俊輝[7]對(duì)物聯(lián)網(wǎng)網(wǎng)關(guān)的設(shè)計(jì)提出了改進(jìn)措施,優(yōu)化了網(wǎng)絡(luò)層的查詢(xún)與應(yīng)答機(jī)制、增加了發(fā)布與訂閱權(quán)限的設(shè)定。而對(duì)于數(shù)據(jù)傳輸,工業(yè)界廣泛采用的是Modbus協(xié)議。若在物聯(lián)網(wǎng)中依此協(xié)議傳輸數(shù)據(jù),則由于Modbus報(bào)文長(zhǎng)度限制,實(shí)際上主機(jī)對(duì)從機(jī)一次查詢(xún)的寄存器數(shù)不能超過(guò)125個(gè),這對(duì)諸如電能質(zhì)量等工業(yè)應(yīng)用所需上傳的參數(shù)來(lái)講遠(yuǎn)遠(yuǎn)達(dá)不到要求。通常是利用一個(gè)由MCU及存儲(chǔ)芯片構(gòu)成的轉(zhuǎn)儲(chǔ)系統(tǒng)將各種參數(shù)信息暫存起來(lái)再通過(guò)UART協(xié)議上傳[8],但這勢(shì)必會(huì)增加硬件系統(tǒng)的復(fù)雜程度。鑒于對(duì)整個(gè)系統(tǒng)簡(jiǎn)潔化的考慮,筆者改進(jìn)查詢(xún)算法,將一個(gè)查詢(xún)周期分成若干時(shí)隙處理,在每個(gè)時(shí)隙內(nèi)完成對(duì)不同參數(shù)的查詢(xún),統(tǒng)一更新各時(shí)隙,在滿(mǎn)足參數(shù)刷新要求的情況下,降低硬件成本、提高性?xún)r(jià)比。
通用的物聯(lián)網(wǎng)連接拓?fù)淙鐖D1所示。
圖1 物聯(lián)網(wǎng)連接拓?fù)銯ig. 1 Connection topology of IOT
由圖1可見(jiàn),其中串行數(shù)據(jù)傳輸?shù)慕涌跇?biāo)準(zhǔn)通常采用RS232/RS485,傳輸協(xié)議采用業(yè)界標(biāo)準(zhǔn)的Modbus協(xié)議。數(shù)據(jù)采集與預(yù)處理模塊采集完設(shè)備數(shù)據(jù)后,通過(guò)計(jì)算產(chǎn)生需要的參數(shù)信息,DTU設(shè)備將該信息根據(jù)Modbus協(xié)議透?jìng)髦猎贫?。文中主要研究DTU設(shè)備與數(shù)據(jù)采集預(yù)處理模塊之間的Modbus報(bào)文傳輸模式。
網(wǎng)絡(luò)傳輸?shù)臄?shù)字信號(hào)均直接或間接來(lái)源于傳感器,而傳感器將感知到的模擬量轉(zhuǎn)換成數(shù)字量時(shí)需滿(mǎn)足Nyquist采樣定理
fs≥2fh,
(1)
式中:fs——采樣頻率;
fh——模擬信號(hào)的最高截止頻率。
由采樣信號(hào)恢復(fù)模擬信號(hào)的內(nèi)插公式為
(2)
式中:xa(t)——模擬信號(hào);
T——采樣周期,與采樣頻率fs互為倒數(shù);
Sa——抽樣函數(shù)。
模數(shù)轉(zhuǎn)換時(shí)只要滿(mǎn)足采樣定理,數(shù)字信號(hào)就可以無(wú)失真的代表原模擬信號(hào),但此時(shí)的數(shù)字信號(hào)為基帶信號(hào)。通信中為了最大限度地利用信道,降低傳輸成本,常在傳輸前對(duì)基帶信號(hào)進(jìn)行多路調(diào)制。時(shí)分多路復(fù)用簡(jiǎn)稱(chēng)時(shí)分復(fù)用(Time-division multiplexing, TDM)是一種常用的調(diào)制方式,它是將不同的時(shí)域信號(hào)相互交織在不同的時(shí)隙內(nèi),沿著同一個(gè)物理信道傳輸,在接收端再用某種方法將各個(gè)時(shí)隙內(nèi)的信號(hào)提取出來(lái)還原成原始信號(hào)的通信技術(shù)。工作原理如圖2所示。
圖2 時(shí)分復(fù)用原理Fig. 2 Schematic of TDM
由圖2可見(jiàn),在發(fā)送和接收端分別有一個(gè)機(jī)械旋轉(zhuǎn)開(kāi)關(guān),以采樣頻率同步地旋轉(zhuǎn)。在發(fā)送端,此開(kāi)關(guān)依次對(duì)輸入信號(hào)采樣,開(kāi)關(guān)旋轉(zhuǎn)一周得到的多路信號(hào)采樣值合為1幀。開(kāi)關(guān)周期旋轉(zhuǎn),依次輪詢(xún)各路信號(hào),各路信號(hào)輪流斷續(xù)地發(fā)送[9],各路信號(hào)傳輸時(shí)共用同一物理信道。時(shí)分復(fù)用技術(shù)便于實(shí)現(xiàn)數(shù)字通信、易于制造、大大提高了信道利用率,在保證通信質(zhì)量的同時(shí),也節(jié)約了硬件成本。
當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以RTU(遠(yuǎn)程終端單元)模式通信時(shí)的消息幀,文中以讀多個(gè)寄存器的值為例,主機(jī)查詢(xún)報(bào)文格式:設(shè)備地址,功能代碼,起始寄存器的高位和低位,寄存器數(shù)量的高位和低位分別為1個(gè)byte,校驗(yàn)位CRC16為2個(gè)byte。從機(jī)響應(yīng)報(bào)文格式:設(shè)備地址、功能代碼、返回?cái)?shù)據(jù)字節(jié)數(shù)分別為1個(gè)byte、返回?cái)?shù)據(jù)N個(gè)byte,校驗(yàn)位CRC16為2個(gè)byte。從機(jī)響應(yīng)報(bào)文格式中“返回?cái)?shù)據(jù)字節(jié)數(shù)”為主機(jī)查詢(xún)報(bào)文格式查詢(xún)“寄存器數(shù)量”的兩倍,由從機(jī)響應(yīng)報(bào)文格式“返回?cái)?shù)據(jù)字節(jié)數(shù)”僅為一個(gè)字節(jié)可知,理論上一次查詢(xún)最多只能獲取255個(gè)寄存器的數(shù)據(jù)。但是,在一些特定的工業(yè)應(yīng)用中往往通過(guò)邊緣計(jì)算產(chǎn)生大量屬性參數(shù),或者實(shí)際應(yīng)用中參數(shù)存儲(chǔ)的寄存器地址范圍并不連續(xù),為了保證實(shí)時(shí)監(jiān)測(cè)可以采取下面的方法將所有參數(shù)一并上傳。
在滿(mǎn)足Nyquist采樣定理,并且處理器對(duì)數(shù)據(jù)吞吐能及時(shí)處理的前提下,可將一個(gè)查詢(xún)周期分成若干時(shí)隙,然后每個(gè)時(shí)隙處理一路時(shí)序信號(hào)。時(shí)隙拆分示意如圖3所示。
圖3 時(shí)隙拆分示意Fig. 3 Time slot splitting diagram
圖3中將一個(gè)查詢(xún)周期拆分成3個(gè)時(shí)隙處理。文中針對(duì)電能質(zhì)量參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測(cè),秒級(jí)刷率新即可滿(mǎn)足要求。所以,串行通信時(shí)的波特率設(shè)為9 600已是相當(dāng)富余。
若一個(gè)心跳(查詢(xún)周期)需N條指令才能讀回所有參數(shù),則總體查詢(xún)指令滿(mǎn)足的關(guān)系為
(3)
(4)
式中:I(t)——一個(gè)心跳的總體查詢(xún)指令,它包含N條時(shí)隙指令;
Ci——不同時(shí)隙的查詢(xún)指令,取不同值時(shí)需訪(fǎng)問(wèn)的寄存器不同,查詢(xún)指令也不同;
RTs(t)——矩形函數(shù);
Ts——時(shí)隙間隔。
由于從機(jī)響應(yīng)的報(bào)文中“設(shè)備地址”和“功能代碼”對(duì)所有的時(shí)隙指令均相同,因此,發(fā)送每條時(shí)隙查詢(xún)指令時(shí)必須將“寄存器數(shù)量”設(shè)置為互不相同,以便于對(duì)返回的數(shù)據(jù)做正確解析。
結(jié)合項(xiàng)目實(shí)際將散布在480個(gè)寄存器范圍內(nèi)的141個(gè)電能質(zhì)量參數(shù)采用一次心跳、三條時(shí)隙指令來(lái)處理,其腳本程序流程如圖4所示。
圖4 程序流程Fig. 4 Program flow
圖4初始化部分完成時(shí)隙指令的定義,并初始化條件標(biāo)志位flag為3,設(shè)置心跳部分完成查詢(xún)周期的設(shè)定,該值可根據(jù)工程指標(biāo)要求具體指定。多分支部分,通過(guò)判斷條件標(biāo)志位flag的值來(lái)選擇執(zhí)行具體的語(yǔ)句。其中條件1為flag是否小于4,如果條件1滿(mǎn)足,則進(jìn)一步判斷條件2是否滿(mǎn)足,條件2是flag是否大于2;如果條件2滿(mǎn)足則執(zhí)行時(shí)隙指令1,同時(shí)將flag指定為2;否則執(zhí)行時(shí)隙指令2,同時(shí)將flag指定5。如果條件1不滿(mǎn)足則執(zhí)行時(shí)隙指令3,同時(shí)將flag指定為3。依此循環(huán)完成不同時(shí)隙指令的輪詢(xún)處理。程序中三條時(shí)隙指令的查詢(xún)寄存器個(gè)數(shù)互不相同,這樣在接收的數(shù)據(jù)報(bào)文中以第三個(gè)字節(jié)為標(biāo)志就可以對(duì)報(bào)文數(shù)據(jù)進(jìn)行正確解析,結(jié)合實(shí)際項(xiàng)目的指令說(shuō)明如表1所示。
表1 指令說(shuō)明Table 1 Instructions
將編輯好的腳本配置在DTU設(shè)備中,在物聯(lián)網(wǎng)平臺(tái)建立的產(chǎn)品下添加該設(shè)備,通過(guò)物聯(lián)網(wǎng)平臺(tái)查詢(xún)?cè)O(shè)備上報(bào)數(shù)據(jù)的日志即可獲知指令執(zhí)行情況。
以三相交流電機(jī)傳動(dòng)系統(tǒng)為研究對(duì)象,對(duì)其進(jìn)線(xiàn)端的電能質(zhì)量進(jìn)行監(jiān)測(cè)。數(shù)據(jù)采集器通過(guò)485轉(zhuǎn)WiFi設(shè)備(DTU)直連上網(wǎng),云端依托阿里云物聯(lián)網(wǎng)平臺(tái)構(gòu)建的產(chǎn)品如圖5所示。
圖5 電能質(zhì)量監(jiān)測(cè)物聯(lián)網(wǎng)產(chǎn)品Fig. 5 IOT product of power quality monitoring
采用文中所述方法將DTU腳本中的查詢(xún)周期配置1 s,通過(guò)讀取阿里云物聯(lián)網(wǎng)平臺(tái)產(chǎn)品下所添加設(shè)備的物模型屬性,即可獲得解析后的上報(bào)數(shù)據(jù),云端查詢(xún)到的數(shù)據(jù)上報(bào)結(jié)果整理如圖6所示。
圖6 數(shù)據(jù)上報(bào)結(jié)果Fig. 6 Result of data reported
從圖6可以看出,時(shí)隙指令執(zhí)行的時(shí)間呈線(xiàn)關(guān)系,獲取時(shí)隙指令執(zhí)行結(jié)果的時(shí)間間隔為320 ms, 能夠滿(mǎn)足所有參數(shù)的秒級(jí)刷新要求。
在大量的工業(yè)物聯(lián)網(wǎng)應(yīng)用中,感知層的數(shù)據(jù)采集預(yù)處理模塊與DTU設(shè)備之間的數(shù)據(jù)傳輸遵從Modbus協(xié)議,由于Modbus協(xié)議報(bào)文長(zhǎng)度限制,一旦需上傳的參數(shù)總量超過(guò)該限制則會(huì)發(fā)生丟包,造成數(shù)據(jù)漏報(bào)。對(duì)Modbus從機(jī)查詢(xún)模式加以改進(jìn),引入時(shí)分復(fù)用算法,在一個(gè)查詢(xún)周期中分多個(gè)時(shí)隙查詢(xún)不同的寄存器地址及數(shù)量,最后分條解析。該算法可依托現(xiàn)有的硬件設(shè)備實(shí)現(xiàn)更多物理參數(shù)的實(shí)時(shí)更新。在三相電電能質(zhì)量監(jiān)測(cè)系統(tǒng)物聯(lián)網(wǎng)應(yīng)用中,基于時(shí)分復(fù)用技術(shù)的Modbus報(bào)文傳輸在不增加硬件的情況下,能夠?qū)崿F(xiàn)141個(gè)電能質(zhì)量參數(shù)的實(shí)時(shí)查詢(xún)。該方法提高了信道利用率,節(jié)約了成本,另外,對(duì)于有大量參數(shù)需要上傳、或者參數(shù)分布在不連續(xù)的多個(gè)寄存器的應(yīng)用場(chǎng)景,該方法同樣具有一定的借鑒意義。