国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Web技術(shù)的工業(yè)色譜虛擬儀器的設(shè)計(jì)與實(shí)現(xiàn)

2021-02-25 11:40張鵬程王愛民
儀表技術(shù)與傳感器 2021年1期
關(guān)鍵詞:服務(wù)端虛擬儀器瀏覽器

張鵬程,王愛民

(東南大學(xué)儀器科學(xué)與工程學(xué)院,江蘇南京 210000)

0 引言

色譜儀是進(jìn)行色譜分離分析[1-2]使用的裝置,包含檢測(cè)器、色譜泵、溫度控制等設(shè)備。工業(yè)色譜儀的操作過程較復(fù)雜,計(jì)算機(jī)技術(shù)的發(fā)展對(duì)色譜分析的自動(dòng)化起到了極大的促進(jìn)作用,用戶可以通過上位機(jī)對(duì)各色譜設(shè)備進(jìn)行遠(yuǎn)程控制,并監(jiān)控它們的狀態(tài),也可以實(shí)時(shí)接收譜峰信號(hào)進(jìn)行處理。而傳統(tǒng)基于LabVIEW、VB等技術(shù)研究開發(fā)的色譜虛擬儀器大多功能不夠完善,依賴特定的操作系統(tǒng)因此兼容性不足,色譜算法性能不高、擴(kuò)展性也較弱[3]。而隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,互聯(lián)網(wǎng)具有不受地域限制以及方便信息共享的優(yōu)點(diǎn),因此越來越多的測(cè)控系統(tǒng)被部署在Web端。通過網(wǎng)絡(luò)對(duì)色譜設(shè)備實(shí)現(xiàn)遠(yuǎn)程監(jiān)控、數(shù)據(jù)處理和存儲(chǔ)已經(jīng)成為現(xiàn)代色譜儀器的發(fā)展方向[4-5]。因此,本文利用Web技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于瀏覽器/服務(wù)器架構(gòu)的工業(yè)色譜虛擬儀器,用戶可以擺脫地域、時(shí)間的限制,通過瀏覽器遠(yuǎn)程監(jiān)控和操作色譜設(shè)備,促進(jìn)了設(shè)備的智能化;提供色譜算法分析功能,支持多任務(wù)同時(shí)執(zhí)行;開發(fā)人員也可以更好地依賴分布式系統(tǒng)對(duì)軟件功能進(jìn)行維護(hù)和擴(kuò)展[6],提高虛擬儀器性能。本虛擬儀器的主要功能如圖1所示,包括系統(tǒng)管理、實(shí)時(shí)色譜設(shè)備監(jiān)控、色譜信號(hào)分析及渲染等。

圖1 在線色譜控制與分析系統(tǒng)模塊圖

圖2 虛擬儀器架構(gòu)圖

1 色譜虛擬儀器架構(gòu)設(shè)計(jì)

1.1 設(shè)計(jì)思想

本系統(tǒng)使用Web技術(shù),采用瀏覽器/服務(wù)端模式開發(fā),整體設(shè)計(jì)架構(gòu)如圖2所示。其中瀏覽器主要進(jìn)行虛擬儀器監(jiān)控面板的展現(xiàn)以及色譜信號(hào)的譜圖渲染。服務(wù)端完成具體功能實(shí)現(xiàn),分為系統(tǒng)Web服務(wù)、儀器通信服務(wù)和色譜算法SDK。Web服務(wù)主要使用Python開發(fā),用以響應(yīng)用戶通過瀏覽器發(fā)送的請(qǐng)求,兩端之間通過AJAX與WebSocket兩種方式交換數(shù)據(jù),并提供了基本的項(xiàng)目管理、設(shè)備監(jiān)控、權(quán)限管理等功能。為了提高服務(wù)端的穩(wěn)定性,降低各功能模塊之間的耦合度,Web服務(wù)沒有直接實(shí)現(xiàn)與色譜設(shè)備的通信和色譜信號(hào)處理模塊,而是通過儀器通信服務(wù)和色譜算法SDK提供相關(guān)功能。系統(tǒng)Web服務(wù)與儀器通信服務(wù)通過系統(tǒng)三級(jí)消息格式使用Socket通信,從而避免由于儀器通信的出錯(cuò)導(dǎo)致Web服務(wù)的崩潰(或反之),做到故障隔離。同時(shí),考慮到色譜信號(hào)具有數(shù)據(jù)量大、流程復(fù)雜的特點(diǎn),為了保證數(shù)據(jù)處理的速度、精度,方便后期升級(jí)維護(hù),開發(fā)了色譜信號(hào)分析算法庫SDK,Web服務(wù)通過SDK提供算法分析功能,將算法功能插件化。用戶通過瀏覽器發(fā)送監(jiān)控指令并同時(shí)進(jìn)行色譜信號(hào)分析的時(shí)序圖如圖3所示。

圖3 功能調(diào)用時(shí)序圖

1.2 色譜設(shè)備數(shù)據(jù)傳輸

本文色譜設(shè)備由高壓流動(dòng)相輸送系統(tǒng)(包括高壓泵、壓力控制器等)、色譜分離系統(tǒng)(進(jìn)樣器、色譜柱、恒溫箱)和色譜檢測(cè)系統(tǒng)等組成。各色譜設(shè)備通過RS232連接到DIGATTO T1008型串口通訊服務(wù)設(shè)備,該設(shè)備具有獨(dú)立的CPU以及完整的TCP協(xié)議棧,可以將RS232傳輸?shù)臄?shù)據(jù)轉(zhuǎn)換成以太網(wǎng)IP包,從而給傳統(tǒng)的串行設(shè)備增加聯(lián)網(wǎng)功能。色譜設(shè)備數(shù)據(jù)傳輸如圖4所示。

圖4 色譜設(shè)備數(shù)據(jù)傳輸

1.3 色譜設(shè)備實(shí)時(shí)監(jiān)控功能的實(shí)現(xiàn)

本系統(tǒng)基于瀏覽器/服務(wù)器架構(gòu),所有應(yīng)用功能都通過瀏覽器網(wǎng)頁呈現(xiàn)。因?yàn)榫W(wǎng)頁運(yùn)行在瀏覽器上,具有無需安裝、平臺(tái)無關(guān)的優(yōu)點(diǎn),因此在任意的操作系統(tǒng),任何終端上都可以訪問本系統(tǒng)進(jìn)行相關(guān)操作,無需考慮系統(tǒng)層面的兼容性。本虛擬儀器要提供以下功能:(1)用戶通過網(wǎng)頁管理、操控色譜設(shè)備,如設(shè)置運(yùn)行參數(shù),啟動(dòng)儀器運(yùn)行等。(2)前端頁面實(shí)時(shí)渲染設(shè)備采集的數(shù)據(jù),如顯示溫度/壓強(qiáng)、繪制色譜信號(hào)波形圖等,即做到實(shí)時(shí)監(jiān)控;在色譜信號(hào)分析完成后推送分析的結(jié)果。由于數(shù)據(jù)采集/分析功能都在服務(wù)端完成,網(wǎng)頁與服務(wù)端之間需要交換數(shù)據(jù),根據(jù)具體場(chǎng)景,本系統(tǒng)采用了AJAX與WebSocket結(jié)合的前后端通信方式。

AJAX(Asynchronous JavaScript and XML)是目前比較主流的通信方式,可以避免網(wǎng)頁重新加載而實(shí)現(xiàn)內(nèi)容的異步更新[7]。當(dāng)用戶進(jìn)行操作需要進(jìn)行數(shù)據(jù)交換時(shí),將由前端發(fā)起HTTP連接請(qǐng)求,并將數(shù)據(jù)打包成JSON格式傳遞給服務(wù)端。服務(wù)端在收到AJAX請(qǐng)求之后解析JSON數(shù)據(jù)進(jìn)行后續(xù)操作,并將操作結(jié)果返回給前端,實(shí)現(xiàn)兩者之間的對(duì)接。這種方式適用于上述需求(1)的場(chǎng)景,即交互的主動(dòng)權(quán)掌握在前端手里,每次由用戶點(diǎn)擊操作觸發(fā)相應(yīng)數(shù)據(jù)交換,且能在較短時(shí)間內(nèi)得到返回結(jié)果。對(duì)于需求(2)的實(shí)時(shí)監(jiān)控場(chǎng)景,前后端在長(zhǎng)時(shí)間內(nèi)都需要進(jìn)行通信,并且數(shù)據(jù)交換主要發(fā)生在從服務(wù)端到前端。此時(shí)如果使用AJAX技術(shù)來實(shí)現(xiàn),就需要采用輪詢的方式,即由前端不斷地發(fā)起AJAX請(qǐng)求,詢問服務(wù)器是否有新的數(shù)據(jù)。使用這樣的方式會(huì)造成CPU資源、網(wǎng)絡(luò)帶寬資源的浪費(fèi),因?yàn)榍岸艘恢痹谶M(jìn)行HTTP的連接請(qǐng)求和處理;發(fā)送的HTTP請(qǐng)求也會(huì)包含較長(zhǎng)的頭部,但只有部分請(qǐng)求以及數(shù)據(jù)是有效的,而服務(wù)端也需要一直應(yīng)對(duì)無效的連接請(qǐng)求。為了提高性能,本文使用WebSocket技術(shù)解決這個(gè)問題,這種技術(shù)是一種在單個(gè)TCP連接上進(jìn)行的全雙工通訊協(xié)議,通過這個(gè)協(xié)議,允許從服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù),而不需要每次都由瀏覽器發(fā)起[8]。在使用WebSocket時(shí),首先由瀏覽器發(fā)起建立WebSocket連接的請(qǐng)求,這個(gè)請(qǐng)求通過HTTP實(shí)現(xiàn),但在附加頭信息之中包含“Upgrade:WebSocket”信息,服務(wù)端識(shí)別出這個(gè)附加信息產(chǎn)生應(yīng)答并建立好TCP連接。兩端之間就可以通過TCP連接直接交換數(shù)據(jù)。在收到WebSocket消息之后,就進(jìn)行相應(yīng)的網(wǎng)頁內(nèi)容更新,包括儀器面板和色譜信號(hào)的實(shí)時(shí)渲染,如圖5所示。目前主流瀏覽器都支持了WebSocket接口,服務(wù)器只需要按照協(xié)議向?yàn)g覽器推送數(shù)據(jù)。

圖5 WebSocket推送數(shù)據(jù)

1.4 設(shè)備控制和數(shù)據(jù)交換的實(shí)現(xiàn)

Web服務(wù)只用于響應(yīng)用戶的請(qǐng)求,而本虛擬儀器與色譜設(shè)備之間的通信由單獨(dú)的儀器通信服務(wù)提供,它與Web服務(wù)之間處于不同的進(jìn)程之中,通過套接字Socket按照系統(tǒng)消息格式交互,兩個(gè)進(jìn)程都各自監(jiān)聽對(duì)方的消息事件。當(dāng)用戶通過瀏覽器發(fā)送相關(guān)指令時(shí),Web服務(wù)便與儀器通信服務(wù)建立TCP連接;通過Socket將相應(yīng)指令和數(shù)據(jù)格式化成系統(tǒng)消息發(fā)送給儀器通信服務(wù),儀器通信服務(wù)解析出對(duì)應(yīng)的消息內(nèi)容,再由其寫入相應(yīng)下位機(jī)色譜設(shè)備;而在色譜設(shè)備檢測(cè)信號(hào)時(shí),便通過儀器通信服務(wù)向系統(tǒng)Web服務(wù)完成相應(yīng)數(shù)據(jù)的格式化和發(fā)送。

為了提高系統(tǒng)服務(wù)之間通信的健壯性,本文設(shè)計(jì)了系統(tǒng)Web服務(wù)與儀器通信服務(wù)之間的三級(jí)消息格式。如圖6所示,應(yīng)用層根據(jù)消息的頭部和尾部識(shí)別一條完整的消息,并對(duì)消息進(jìn)行CRC校驗(yàn)。對(duì)于一條合法消息,HEAD、END、SIZE字段分別標(biāo)識(shí)本條消息的開始、結(jié)束、長(zhǎng)度;TYPE1字段標(biāo)明本條消息的一級(jí)類型(如區(qū)分消息請(qǐng)求、應(yīng)答、心跳包),Type2和Type3字段分別標(biāo)明了需要操作的設(shè)備類型和具體指令類型,根據(jù)DataSize字段和DataX字段可以得到消息中的數(shù)據(jù)值。根據(jù)消息這三級(jí)字段可以判斷出消息類型對(duì)應(yīng)的對(duì)象設(shè)備、指令和數(shù)據(jù)值,然后根據(jù)指令類型調(diào)用對(duì)應(yīng)的函數(shù)對(duì)設(shè)備進(jìn)行操作。

(a)系統(tǒng)消息格式

(b)系統(tǒng)消息處理流程圖6 系統(tǒng)消息格式和流程

1.5 虛擬儀器信號(hào)處理功能的實(shí)現(xiàn)

本儀器需要提供對(duì)色譜信號(hào)進(jìn)行自動(dòng)分析的功能。服務(wù)端使用了Python開發(fā),主要是考慮到Python具有開發(fā)效率高、可移植性強(qiáng)、并具有較多非常強(qiáng)大的第三方庫的優(yōu)點(diǎn),可以快速開發(fā)出需要的功能應(yīng)用。但是由于它是一門動(dòng)態(tài)腳本語言,執(zhí)行速度較慢。多線程的Python程序,也因?yàn)槿纸忉屾i(GIL)的原因,都只能有一個(gè)線程在執(zhí)行,多線程對(duì)計(jì)算性能并沒有提升。在色譜分析領(lǐng)域,由于數(shù)據(jù)量較大,1 h的數(shù)據(jù)量可達(dá)數(shù)萬級(jí)。并且色譜信號(hào)分析需要多個(gè)步驟,包括信號(hào)去噪、信號(hào)求導(dǎo)、色譜峰識(shí)別、重疊峰分解、定量分析等步驟才能完成[9],計(jì)算量會(huì)成倍增加。因此,色譜分析是一個(gè)計(jì)算密集型的過程。此時(shí)若使用Python進(jìn)行信號(hào)處理模塊的編寫就不再合適,需要較長(zhǎng)時(shí)間才能得到計(jì)算的結(jié)果,這不滿足快速、實(shí)時(shí)的需求。倘若同時(shí)需要進(jìn)行多個(gè)項(xiàng)目的分析,將極大地影響整個(gè)虛擬儀器的性能。因此,考慮到色譜信號(hào)分析領(lǐng)域的特點(diǎn),設(shè)計(jì)采用C++編寫了色譜信號(hào)處理算法SDK,將信號(hào)處理模塊編譯成動(dòng)態(tài)鏈接庫,按C風(fēng)格導(dǎo)出SDK算法庫的接口,Python服務(wù)器通過Ctypes調(diào)用SDK提供的算法[10]。這樣在進(jìn)行信號(hào)處理時(shí),可以利用C++執(zhí)行效率高的優(yōu)點(diǎn),能夠快速得到運(yùn)算結(jié)果。除此之外,將色譜算法編寫成SDK的方式還降低了服務(wù)端應(yīng)用與算法模塊的耦合度,提高了靈活性和可維護(hù)性,將來也可復(fù)用于其他色譜分析項(xiàng)目。

算法SDK的整體架構(gòu)圖如圖7所示。應(yīng)用層通過引擎類(SDKEngine)初始化和管理算法服務(wù),SDKEngine為全局唯一對(duì)象,為整個(gè)SDK程序的入口。Engine下包含若干項(xiàng)目代理(SDKManager),以此實(shí)現(xiàn)對(duì)多項(xiàng)目同時(shí)分析的支持。項(xiàng)目代理中的各服務(wù)分別實(shí)現(xiàn)了色譜算法中的去噪、求導(dǎo)、尋峰、定量計(jì)算等算法流程。色譜分析各算法步驟之間為串行處理,不存在較強(qiáng)的耦合關(guān)系。因此本文采用了并發(fā)模型-生產(chǎn)者/消費(fèi)者模式實(shí)現(xiàn),使用多線程并發(fā)執(zhí)行各算法步驟,設(shè)置BUFFER作為2個(gè)步驟的數(shù)據(jù)緩沖。當(dāng)上一個(gè)步驟處理完一個(gè)數(shù)據(jù)點(diǎn)時(shí),通過緩沖區(qū)交由下一步驟進(jìn)行計(jì)算,將串行算法并發(fā)化,從而起到了加速計(jì)算的效果。而SDK的配置服務(wù)、數(shù)據(jù)庫服務(wù)與線程服務(wù)則為SDK提供了全局的基礎(chǔ)功能組件。

圖7 色譜算法SDK架構(gòu)圖

2 功能測(cè)試

本系統(tǒng)的各項(xiàng)功能均已實(shí)現(xiàn),支持PC、平板等多端操作,部分功能截圖如圖8、圖9所示,并已經(jīng)通過了第三方軟件檢測(cè)中心的驗(yàn)證。因此,以下系統(tǒng)測(cè)試和運(yùn)行的過程側(cè)重于性能測(cè)試方面。測(cè)試環(huán)境為聯(lián)想V730筆記本電腦,硬件配置為Intel i7-7700處理器,8 GB內(nèi)存,網(wǎng)絡(luò)環(huán)境為內(nèi)部局域網(wǎng)。

圖8 系統(tǒng)實(shí)時(shí)設(shè)備監(jiān)控

圖9 譜圖及信號(hào)處理結(jié)果渲染

首先對(duì)系統(tǒng)基準(zhǔn)性能進(jìn)行測(cè)試,測(cè)試服務(wù)器在空跑和進(jìn)行色譜分析實(shí)驗(yàn)(進(jìn)行信號(hào)實(shí)時(shí)采集和未調(diào)用SDK)時(shí)的CPU利用率以及內(nèi)存使用率。實(shí)驗(yàn)對(duì)系統(tǒng)Web服務(wù)和儀器通信服務(wù)進(jìn)行了分開統(tǒng)計(jì),如表1所示,服務(wù)器在忙碌狀態(tài)的CPU、內(nèi)存使用率能保持在合理的狀態(tài),未出現(xiàn)急速增長(zhǎng)的情況。

表1 系統(tǒng)基準(zhǔn)性能測(cè)試(未包括算法SDK部分)

由于本文使用了Web技術(shù),因此需要測(cè)試軟件的負(fù)載能力, 通過Apache自帶的apachebench命令模擬用戶并發(fā)請(qǐng)求。由于請(qǐng)求的是本地回環(huán)地址,因此可以排除網(wǎng)絡(luò)的因素,測(cè)試服務(wù)器多用戶操作時(shí)的穩(wěn)定性。測(cè)試的響應(yīng)時(shí)間如表2所示。

可見,本虛擬儀器的負(fù)載壓力測(cè)試性能良好。對(duì)于工業(yè)色譜儀器的實(shí)際使用而言,一般每s的請(qǐng)求量

表2 系統(tǒng)并發(fā)性能測(cè)試

不高,以上的并發(fā)性能可以滿足需求。

為了解決Python執(zhí)行較慢,不適用于計(jì)算密集型任務(wù)的缺點(diǎn),提高虛擬儀器性能,采用SDK色譜算法庫提供分析功能的方案。下面就對(duì)方案的性能進(jìn)行了測(cè)試,主要包括以下內(nèi)容:方案性能提升測(cè)試;同時(shí)多項(xiàng)目分析時(shí)的性能測(cè)試。

本文使用色譜儀分別對(duì)某乙醇溶液、氨基酸溶液、變壓油3種信號(hào)進(jìn)行了采集,數(shù)據(jù)點(diǎn)數(shù)分別是3×103、7×104、22×104。本文統(tǒng)計(jì)了算法處理以上樣品信號(hào)所用時(shí)間。為了進(jìn)行對(duì)比,還使用Python編寫了與本文SDK邏輯相同的代碼實(shí)現(xiàn),同時(shí)對(duì)以上樣品信號(hào)進(jìn)行分析。兩者的執(zhí)行時(shí)間結(jié)果如表3所示。

表3 算法SDK性能測(cè)試

可以看到,本文開發(fā)的算法SDK的計(jì)算效率,是Python實(shí)現(xiàn)的10倍以上。即使是22×104數(shù)據(jù)點(diǎn)的信號(hào),也能在9 s內(nèi)計(jì)算完成。由此可知,本系統(tǒng)采用C++單獨(dú)開發(fā)算法SDK提供信號(hào)處理功能的方式,成功避免了Python不適用于密集計(jì)算的缺點(diǎn);通過算法并發(fā)模型實(shí)現(xiàn),將串行算法并發(fā)化,也達(dá)到了提高分析效率的目的。

本文SDK支持同時(shí)進(jìn)行多個(gè)項(xiàng)目的分析任務(wù),并能保持較好的性能。使用數(shù)據(jù)量為7×104的氨基酸信號(hào)樣本,分別同時(shí)開啟3、5、10個(gè)相同的分析任務(wù),SDK算法庫的計(jì)算性能如表4所示,運(yùn)行時(shí)間和內(nèi)存使用基本成線性增長(zhǎng)。即使是同時(shí)開啟10個(gè)7×104數(shù)據(jù)點(diǎn)的分析任務(wù),運(yùn)行總時(shí)間也未超過10 s,運(yùn)行內(nèi)存未超過30 MB,可見本軟件對(duì)于多任務(wù)并行具有非常好的支持。

表4 算法SDK多項(xiàng)目分析性能測(cè)試

3 結(jié)束語

隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)化的實(shí)驗(yàn)工作站將影響現(xiàn)在傳統(tǒng)儀器儀表的工作方式。本文設(shè)計(jì)并實(shí)現(xiàn)的基于Web技術(shù)的工業(yè)色譜虛擬儀器,提供了色譜設(shè)備實(shí)時(shí)監(jiān)控和色譜信號(hào)分析處理等核心功能,實(shí)現(xiàn)了色譜儀器的網(wǎng)絡(luò)化和智能化。試驗(yàn)結(jié)果表明:本軟件功能完善,性能可靠,算法執(zhí)行效率良好。本系統(tǒng)使用的Web服務(wù)+通信服務(wù)+算法SDK的設(shè)計(jì)模式也可為相似系統(tǒng)的虛擬儀器開發(fā)提供參考。

猜你喜歡
服務(wù)端虛擬儀器瀏覽器
微軟發(fā)布新Edge瀏覽器預(yù)覽版下載換裝Chrome內(nèi)核
多人聯(lián)機(jī)對(duì)戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)
基于三層結(jié)構(gòu)下機(jī)房管理系統(tǒng)的實(shí)現(xiàn)分析
基于三層結(jié)構(gòu)下機(jī)房管理系統(tǒng)的實(shí)現(xiàn)分析
高職院校應(yīng)用虛擬儀器技術(shù)的研究與實(shí)踐①
基于LabVIEW與USB的虛擬儀器接口設(shè)計(jì)
基于虛擬儀器技術(shù)測(cè)控人才培養(yǎng)模式的研究與探索
瀏覽器
lE8設(shè)置技巧大放送
虛擬儀器的類型及其發(fā)展情況
鄂州市| 榆树市| 襄汾县| 葫芦岛市| 石景山区| 马龙县| 安阳市| 东城区| 文成县| 永胜县| 涿鹿县| 瓦房店市| 金川县| 钦州市| 武清区| 长治县| 西丰县| 洪泽县| 高邑县| 怀柔区| 合山市| 宝应县| 长治市| 余庆县| 凤阳县| 保亭| 开平市| 大宁县| 稻城县| 晋州市| 新化县| 额济纳旗| 台江县| 苏尼特右旗| 普定县| 博野县| 勃利县| 万州区| 南溪县| 三亚市| 尼木县|