哈 謙,程長闊,王雪瑩
(國家海洋技術(shù)中心,天津 300111)
基于LabVIEW隊(duì)列狀態(tài)機(jī)的岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)控制方法研究
哈 謙,程長闊,王雪瑩
(國家海洋技術(shù)中心,天津 300111)
隨著經(jīng)濟(jì)社會的發(fā)展,海洋環(huán)境監(jiān)測受到越來越多的關(guān)注。針對當(dāng)前海洋環(huán)境監(jiān)測中,采用海洋水質(zhì)集成在線監(jiān)測系統(tǒng),開展現(xiàn)場自動化監(jiān)測的實(shí)際需求,以國家海洋技術(shù)中心自主研發(fā)的四參數(shù)水質(zhì)儀、濁度傳感器和營養(yǎng)鹽自動分析儀為基礎(chǔ),開發(fā)岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)。按照海洋水質(zhì)集成在線監(jiān)測系統(tǒng)的總體工作順序,將工作流程劃分為多個(gè)狀態(tài)進(jìn)行管理。應(yīng)用LabVIEW編程語言,采用隊(duì)列狀態(tài)機(jī),對各狀態(tài)進(jìn)行合理安排,最終實(shí)現(xiàn)了岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)工作流程的有序調(diào)度以及可靠控制。
隊(duì)列狀態(tài)機(jī);流程控制;在線監(jiān)測
目前海洋水質(zhì)監(jiān)測大多采用人工采樣、實(shí)驗(yàn)室分析的方式,樣品采集、保存、運(yùn)輸、分析檢測工作繁瑣,需要耗費(fèi)大量的人力全程參與其中。岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)能夠在線測量多種海洋水質(zhì)參數(shù),測量全過程自動化,無需人工干預(yù),是對當(dāng)前海洋水質(zhì)監(jiān)測方式的重要補(bǔ)充。
本文所述海洋水質(zhì)集成在線監(jiān)測系統(tǒng)以工控機(jī)為控制核心,集成國家海洋技術(shù)中心自主研發(fā)的四參數(shù)水質(zhì)儀、濁度傳感器、營養(yǎng)鹽自動分析儀,可實(shí)現(xiàn)溫度、鹽度、pH、溶解氧、濁度、亞硝酸鹽、硝酸鹽、銨鹽、硅酸鹽、磷酸鹽的自動測量,既能用于岸基站固定位置監(jiān)測,也可以用于車載移動應(yīng)急監(jiān)測。系統(tǒng)各主要組成部分、功能、工作所需時(shí)間及通信/采集接口如表1所示。工控機(jī)與四參數(shù)水質(zhì)儀、濁度傳感器、營養(yǎng)鹽自動分析儀、自動過濾器通過RS232端口連接,采用主從機(jī)制進(jìn)行通信控制,其中工控機(jī)為主設(shè)備,水質(zhì)儀/傳感器/分析儀/自動過濾器為從設(shè)備。工控機(jī)發(fā)送工作指令至水質(zhì)儀/傳感器/分析儀,經(jīng)過一定測量時(shí)間的等待,測量完成,工控機(jī)再分別發(fā)送讀取測量數(shù)據(jù)指令至水質(zhì)儀/傳感器/分析儀,水質(zhì)儀/傳感器/分析儀將測量數(shù)據(jù)回傳至工控機(jī);工控機(jī)發(fā)送工作指令至自動過濾器,自動過濾器對海水樣品進(jìn)行過濾,經(jīng)過一定過濾時(shí)間的等待,自動過濾器工作完成。工控機(jī)通過擴(kuò)展板卡的AD接口與液位計(jì)連接,采集進(jìn)入海洋水質(zhì)集成在線監(jiān)測系統(tǒng)測量單元的海水液位信息。
表1 系統(tǒng)基本信息
海洋水質(zhì)集成在線監(jiān)測系統(tǒng)基本工作流程如圖1所示,首先系統(tǒng)進(jìn)行必要的初始化工作,通過水泵將海水泵入,經(jīng)過管路,進(jìn)入測量單元,通過液位計(jì)檢測海水樣品的液位,待液位達(dá)到測量要求時(shí),對上述10參數(shù)進(jìn)行測量,測量完成后,記錄測量數(shù)據(jù)并顯示,將管路內(nèi)的水樣排出,單次工作流程結(jié)束。
圖1 基本工作流程
程序設(shè)計(jì)模式是指一些固定有用的程序結(jié)構(gòu)模式,LavVIEW支持的程序設(shè)計(jì)模式很多,包括基于事件結(jié)構(gòu)的人機(jī)界面(UIEvent Loop)、狀態(tài)機(jī)(State Machine)、主/從結(jié)構(gòu)(Master/Slave)、生產(chǎn)者/消費(fèi)者結(jié)構(gòu)(Producer/Consumer)、隊(duì)列消息結(jié)構(gòu)(Queued Message Handler)。狀態(tài)機(jī)是LabVIEW程序設(shè)計(jì)中最常使用的一種設(shè)計(jì)模式,可以清晰地實(shí)現(xiàn)狀態(tài)之間的轉(zhuǎn)移,常用于“決策”算法中,例如診斷、監(jiān)測和控制等[1-3]。狀態(tài)機(jī)三要素包括:狀態(tài)(State)、事件(Event)和動作(Action)。
LabVIEW中的狀態(tài)機(jī)由一個(gè)while主循環(huán)和一個(gè)case結(jié)構(gòu)組成,并利用移位寄存器來實(shí)現(xiàn)狀態(tài)的跳轉(zhuǎn)。while循環(huán)保證狀態(tài)機(jī)的連續(xù)運(yùn)行;case結(jié)構(gòu)的分支與系統(tǒng)的狀態(tài)(State)一一對應(yīng)。即case結(jié)構(gòu)的分支名稱對應(yīng)著狀態(tài)名稱,分支里執(zhí)行代碼的功能對應(yīng)著狀態(tài)的行為(Action);而case結(jié)構(gòu)的條件變量與系統(tǒng)的事件(Event)相對應(yīng),引發(fā)狀態(tài)的變遷以及決定狀態(tài)遷移的方向[3-4]。
隊(duì)列狀態(tài)機(jī)是把將要執(zhí)行的狀態(tài)排隊(duì),然后把它們的狀態(tài)名存在隊(duì)列里,隊(duì)列里的狀態(tài)名與狀態(tài)機(jī)的各個(gè)狀態(tài)一一對應(yīng),用來控制狀態(tài)的轉(zhuǎn)換順序。執(zhí)行了的狀態(tài),其名稱會從隊(duì)列中刪除,同時(shí)根據(jù)運(yùn)行時(shí)狀態(tài)的動作和碰到的事件,新的狀態(tài)名又會被添加到隊(duì)列中,或者將隊(duì)列中存儲的狀態(tài)名刪除掉[3-4,7]。隊(duì)列狀態(tài)機(jī)有多種不同的類型,本文主要參考Anthony Lukindo改進(jìn)型隊(duì)列狀態(tài)機(jī)[6],其結(jié)構(gòu)如圖2所示。
從圖2中可以看出,該隊(duì)列狀態(tài)機(jī)由事件結(jié)構(gòu)2、狀態(tài)結(jié)構(gòu)3和并行運(yùn)行的子程序4.1~4.3組成,并通過隊(duì)列引用1相互連接。1.1為獲取子程序(4.1~4.3)的狀態(tài)引用;1.2為通過Dequeue Element VI獲取隊(duì)列中的第一個(gè)元素,并從隊(duì)列中刪除該元素;1.3為通過Unbundle By Name VI獲得的狀態(tài)名和數(shù)據(jù);1.4為獲得的狀態(tài)名與“EXIT”的比較,判斷是否停止循環(huán),如果相同則停止循環(huán);1.5為隊(duì)列管理(Queue Manager)子VI;2.1為前面板動作產(chǎn)生的指令,將所需跳轉(zhuǎn)至的狀態(tài)名添加到隊(duì)列中;3.4為case結(jié)構(gòu);3.5為程序代碼;3.6為下一個(gè)狀態(tài)[3-6]。
Anthony Lukindo改進(jìn)型隊(duì)列狀態(tài)機(jī)在數(shù)據(jù)采集系統(tǒng)中具有廣泛的應(yīng)用,合理分配并行子程序的工作任務(wù),基于生產(chǎn)者/消費(fèi)者架構(gòu),發(fā)揮并行運(yùn)行的優(yōu)勢,能夠同時(shí)完成數(shù)據(jù)的采集、分析以及顯示。在岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)中,主要任務(wù)是完成工作流程的調(diào)度,且工作流程具有明確的先后順序,需要并行處理的任務(wù)不多,基于這樣的需求,實(shí)際應(yīng)用中對該隊(duì)列狀態(tài)機(jī)結(jié)構(gòu)進(jìn)行了精簡,只采用隊(duì)列引用1、事件結(jié)構(gòu)2、狀態(tài)結(jié)構(gòu)3,其中事件結(jié)構(gòu)2用于前面板人機(jī)交互處理,狀態(tài)結(jié)構(gòu)3用于完成各狀態(tài)對應(yīng)的動作,并通過下一個(gè)狀態(tài)3.6和隊(duì)列管理1.5控制狀態(tài)的跳轉(zhuǎn),進(jìn)而實(shí)現(xiàn)工作流程的控制。并行子程序4.1~4.3留作無線數(shù)據(jù)傳輸、定時(shí)操作等并行處理任務(wù)的擴(kuò)展開發(fā)使用。
圖2 Anthony Lukindo隊(duì)列狀態(tài)機(jī)結(jié)構(gòu)示意圖
按照岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)的工作順序,并綜合考慮工作過程中某一階段需要完成的特定功能,將整個(gè)工作流程劃分為如下的狀態(tài)進(jìn)行管理:初始化、海水進(jìn)樣、檢測液位、發(fā)送四參數(shù)及濁度測量指令、讀取四參數(shù)及濁度測量數(shù)據(jù)、發(fā)送過濾指令、發(fā)送營養(yǎng)鹽測量指令、讀取營養(yǎng)鹽測量數(shù)據(jù)、數(shù)據(jù)記錄及顯示、延時(shí)等待、錯(cuò)誤處理、停止。各狀態(tài)所對應(yīng)的動作如表2所示,各狀態(tài)之間的跳轉(zhuǎn)關(guān)系如圖3所示。系統(tǒng)開始運(yùn)行之后,首先進(jìn)行必要的初始化工作,然后進(jìn)入IDLE狀態(tài),等待人機(jī)界面的“測量”指令;接到“測量”指令后,正常運(yùn)行情況下將按照圖3所示跳轉(zhuǎn)關(guān)系進(jìn)入每個(gè)狀態(tài)并完成相應(yīng)的動作,滿足相應(yīng)跳轉(zhuǎn)條件后,進(jìn)入下一個(gè)狀態(tài)繼續(xù)執(zhí)行。異常情況包括“錯(cuò)誤處理”和“停止”兩個(gè)狀態(tài),正常執(zhí)行過程中如果發(fā)生錯(cuò)誤,將進(jìn)入“錯(cuò)誤處理”進(jìn)行必要的處理,而后轉(zhuǎn)入“停止”,完成端口關(guān)閉、釋放隊(duì)列引用等操作,結(jié)束工作;或者在正常執(zhí)行過程中,由于特殊原因,需要立即停止,則人機(jī)界面發(fā)出“停止”指令,在執(zhí)行完當(dāng)前狀態(tài)的動作后,立即進(jìn)入“停止”狀態(tài)進(jìn)行處理。
表2 狀態(tài)劃分及其對應(yīng)的動作
圖3 工作狀態(tài)跳轉(zhuǎn)圖
海水過濾、四參數(shù)及濁度測量和營養(yǎng)鹽測量過程中都需要等待一定的時(shí)間,如果通過單一狀態(tài)的延時(shí)操作來實(shí)現(xiàn)這一過程,由于不能及時(shí)處理隊(duì)列中的下一個(gè)狀態(tài)對應(yīng)的操作,將阻塞對其他高優(yōu)先級操作或事件的響應(yīng),因此將等待過程拆分為多個(gè)延時(shí)子過程來處理,即單一“延時(shí)等待”狀態(tài)實(shí)現(xiàn)較短時(shí)間的延時(shí)操作,隊(duì)列中多次寫入“延時(shí)等待”狀態(tài)名來實(shí)現(xiàn)較長時(shí)間的延時(shí)。在每次“延時(shí)等待”狀態(tài)名出隊(duì)列之前,排在隊(duì)列最前端的高優(yōu)先級事件或操作對應(yīng)的隊(duì)列狀態(tài)將率先得到響應(yīng),從而能夠避免高優(yōu)先級操作或事件不能被及時(shí)處理的問題出現(xiàn)。
多次“延時(shí)等待”過程實(shí)際上是在進(jìn)行單次延時(shí)和多次計(jì)數(shù)的處理,每次的延時(shí)時(shí)間是固定的,在進(jìn)入“延時(shí)等待”之前的狀態(tài)需要執(zhí)行寫入延時(shí)執(zhí)行次數(shù)的操作,本系統(tǒng)的設(shè)計(jì)中采用移位寄存器來實(shí)現(xiàn)計(jì)數(shù),即對用于計(jì)數(shù)的移位寄存器進(jìn)行賦值,在之后每次“延時(shí)等待”操作執(zhí)行時(shí)對移位寄存器的計(jì)數(shù)值進(jìn)行遞減處理。以發(fā)送四參數(shù)及濁度測量指令之后的等待過程為例,該過程共需要等待6 s,單一“延時(shí)等待”操作實(shí)現(xiàn)100ms的延時(shí),過濾等待過程通過調(diào)用60次“延時(shí)等待”操作實(shí)現(xiàn)6 s的累計(jì)延時(shí)時(shí)間,因此在“發(fā)送四參數(shù)及濁度測量指令”的操作中將移位寄存器計(jì)數(shù)值置為60,每次“延時(shí)等待”延時(shí)100 ms并將計(jì)數(shù)值減1,直至計(jì)數(shù)值為0,整個(gè)延時(shí)等待過程結(jié)束,進(jìn)入“讀取四參數(shù)及濁度測量值”狀態(tài)進(jìn)行處理。具體執(zhí)行過程如圖4所示。營養(yǎng)鹽測量的等待過程采用類似方法處理,只是在“發(fā)送營養(yǎng)鹽測量指令”中設(shè)定移位寄存器計(jì)數(shù)值為6 000,從而在后續(xù)的延時(shí)過程中實(shí)現(xiàn)10min的累計(jì)延時(shí)等待時(shí)間。
圖4 測量等待過程的處理流程
2015年4 月-7月,采用上述隊(duì)列狀態(tài)機(jī)開發(fā)的岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng),在天津市海洋局渤海海洋監(jiān)測監(jiān)視管理基地進(jìn)行多次現(xiàn)場試驗(yàn),系統(tǒng)工作穩(wěn)定,見圖5所示。
圖5 現(xiàn)場試驗(yàn)
本文根據(jù)岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)的工作順序,將整個(gè)工作流程劃分為多個(gè)狀態(tài),采用Anthony Lukindo隊(duì)列狀態(tài)機(jī)進(jìn)行狀態(tài)的調(diào)度和管理,實(shí)現(xiàn)了岸基海洋水質(zhì)集成在線監(jiān)測系統(tǒng)工作流程的有序調(diào)度以及可靠控制,說明了該設(shè)計(jì)的合理性和可靠性。同時(shí)該隊(duì)列狀態(tài)機(jī)結(jié)構(gòu)中并行子程序的存在,為將來相關(guān)并行處理功能的開發(fā)與擴(kuò)展留有余地。
[1]陳錫輝,張銀鴻.LabVIEW8.20程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2007.
[2]Jon Conway,SteveWatts.A Software Engineering Approach to LabVIEW[M].New Jersey:Prentice HallPTR,2003.
[3]葉楓樺,周新聰,白秀琴,等.基于LabVIEW隊(duì)列狀態(tài)機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010(4):204-210.
[4]聶影,馮向軍,廖瑛,等.基于LabVIEW的狀態(tài)機(jī)模型研究[J].計(jì)算機(jī)測量與控制,2007,15(9):1166-1171.
[5]馬凡華,齊政亮,趙建彪,等.基于LabVIEW的燃?xì)獍l(fā)動機(jī)排放數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].汽車科技,2012(6):73-76.
[6]Anthony Lukindo.LabVIEW Queued StateMachine Architecture[EB/OL].http://expressionflow.com,2007.
[7]Rick Bitter,TaqiMohiuddin,Matt Nawrocki.LabVIEW Advanced Programming Techniques[M].Second Edition.Boca Raton:CRC Press LLC,2007.
[8]許霽.基于LabVIEW隊(duì)列狀態(tài)機(jī)的掃頻儀設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2013,26(9):75-79.
[9]曾劍,周劍揚(yáng),劉舜奎.基于LabVIEW的SFP光模塊測試平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2011,37(4):67-73.
Study on the Controlling Means of Shore-Based Seawater Quality Integrated Online Monitoring System Based on Queued State Machine with LabVIEW
HA Qian,CHENG Chang-kuo,WANG Xue-ying
National Ocean Technology Center,Tianjin 300111,China
Along with China's socio-economic development,the field of marine environmental monitoring has attracted increasing research attention.Tomeet the actual demand ofmarine environmentmonitoring,this paper adopts an integrated online seawatermonitoring system.On the basis of the 4-parameterwater quality instrument, turbidity sensor and automatic nutrient analyzer developed by the National Ocean Technology Center,this paper presents an integrated online system for monitoring offshore seawater quality.According to the overall working sequence of the monitoring system,the working process can be divided into several states for management. Through arranging every state in a proper way and using queued state machine as well as the LabVIEW programming language,orderly dispatchment and reliable control in the working flow can be realized for the online integrated shore-based seawatermonitoring system.
queued statemachine;process control;onlinemonitoring
TP311;X834
A
1003-2029(2017)01-0109-05
10.3969/j.issn.1003-2029.2017.01.020
2015-08-24
海洋公益性行業(yè)科研專項(xiàng)資助項(xiàng)目(201405007)
哈謙(1984-),男,工程師,主要研究方向?yàn)楹Q蟓h(huán)境監(jiān)測及系統(tǒng)集成。E-mail:hqnotc@163.com