基于LabVIEW队列状态机的岸基海洋水质集成在线监测系统控制方法研究
2017-03-14程长阔王雪莹
哈 谦,程长阔,王雪莹
(国家海洋技术中心,天津 300111)
基于LabVIEW队列状态机的岸基海洋水质集成在线监测系统控制方法研究
哈 谦,程长阔,王雪莹
(国家海洋技术中心,天津 300111)
随着经济社会的发展,海洋环境监测受到越来越多的关注。针对当前海洋环境监测中,采用海洋水质集成在线监测系统,开展现场自动化监测的实际需求,以国家海洋技术中心自主研发的四参数水质仪、浊度传感器和营养盐自动分析仪为基础,开发岸基海洋水质集成在线监测系统。按照海洋水质集成在线监测系统的总体工作顺序,将工作流程划分为多个状态进行管理。应用LabVIEW编程语言,采用队列状态机,对各状态进行合理安排,最终实现了岸基海洋水质集成在线监测系统工作流程的有序调度以及可靠控制。
队列状态机;流程控制;在线监测
目前海洋水质监测大多采用人工采样、实验室分析的方式,样品采集、保存、运输、分析检测工作繁琐,需要耗费大量的人力全程参与其中。岸基海洋水质集成在线监测系统能够在线测量多种海洋水质参数,测量全过程自动化,无需人工干预,是对当前海洋水质监测方式的重要补充。
1 海洋水质集成在线监测系统总体结构
本文所述海洋水质集成在线监测系统以工控机为控制核心,集成国家海洋技术中心自主研发的四参数水质仪、浊度传感器、营养盐自动分析仪,可实现温度、盐度、pH、溶解氧、浊度、亚硝酸盐、硝酸盐、铵盐、硅酸盐、磷酸盐的自动测量,既能用于岸基站固定位置监测,也可以用于车载移动应急监测。系统各主要组成部分、功能、工作所需时间及通信/采集接口如表1所示。工控机与四参数水质仪、浊度传感器、营养盐自动分析仪、自动过滤器通过RS232端口连接,采用主从机制进行通信控制,其中工控机为主设备,水质仪/传感器/分析仪/自动过滤器为从设备。工控机发送工作指令至水质仪/传感器/分析仪,经过一定测量时间的等待,测量完成,工控机再分别发送读取测量数据指令至水质仪/传感器/分析仪,水质仪/传感器/分析仪将测量数据回传至工控机;工控机发送工作指令至自动过滤器,自动过滤器对海水样品进行过滤,经过一定过滤时间的等待,自动过滤器工作完成。工控机通过扩展板卡的AD接口与液位计连接,采集进入海洋水质集成在线监测系统测量单元的海水液位信息。
表1 系统基本信息
海洋水质集成在线监测系统基本工作流程如图1所示,首先系统进行必要的初始化工作,通过水泵将海水泵入,经过管路,进入测量单元,通过液位计检测海水样品的液位,待液位达到测量要求时,对上述10参数进行测量,测量完成后,记录测量数据并显示,将管路内的水样排出,单次工作流程结束。
图1 基本工作流程
2 LabVIEW程序设计模式及队列状态机
程序设计模式是指一些固定有用的程序结构模式,LavVIEW支持的程序设计模式很多,包括基于事件结构的人机界面(UIEvent Loop)、状态机(State Machine)、主/从结构(Master/Slave)、生产者/消费者结构(Producer/Consumer)、队列消息结构(Queued Message Handler)。状态机是LabVIEW程序设计中最常使用的一种设计模式,可以清晰地实现状态之间的转移,常用于“决策”算法中,例如诊断、监测和控制等[1-3]。状态机三要素包括:状态(State)、事件(Event)和动作(Action)。
LabVIEW中的状态机由一个while主循环和一个case结构组成,并利用移位寄存器来实现状态的跳转。while循环保证状态机的连续运行;case结构的分支与系统的状态(State)一一对应。即case结构的分支名称对应着状态名称,分支里执行代码的功能对应着状态的行为(Action);而case结构的条件变量与系统的事件(Event)相对应,引发状态的变迁以及决定状态迁移的方向[3-4]。
队列状态机是把将要执行的状态排队,然后把它们的状态名存在队列里,队列里的状态名与状态机的各个状态一一对应,用来控制状态的转换顺序。执行了的状态,其名称会从队列中删除,同时根据运行时状态的动作和碰到的事件,新的状态名又会被添加到队列中,或者将队列中存储的状态名删除掉[3-4,7]。队列状态机有多种不同的类型,本文主要参考Anthony Lukindo改进型队列状态机[6],其结构如图2所示。
从图2中可以看出,该队列状态机由事件结构2、状态结构3和并行运行的子程序4.1~4.3组成,并通过队列引用1相互连接。1.1为获取子程序(4.1~4.3)的状态引用;1.2为通过Dequeue Element VI获取队列中的第一个元素,并从队列中删除该元素;1.3为通过Unbundle By Name VI获得的状态名和数据;1.4为获得的状态名与“EXIT”的比较,判断是否停止循环,如果相同则停止循环;1.5为队列管理(Queue Manager)子VI;2.1为前面板动作产生的指令,将所需跳转至的状态名添加到队列中;3.4为case结构;3.5为程序代码;3.6为下一个状态[3-6]。
Anthony Lukindo改进型队列状态机在数据采集系统中具有广泛的应用,合理分配并行子程序的工作任务,基于生产者/消费者架构,发挥并行运行的优势,能够同时完成数据的采集、分析以及显示。在岸基海洋水质集成在线监测系统中,主要任务是完成工作流程的调度,且工作流程具有明确的先后顺序,需要并行处理的任务不多,基于这样的需求,实际应用中对该队列状态机结构进行了精简,只采用队列引用1、事件结构2、状态结构3,其中事件结构2用于前面板人机交互处理,状态结构3用于完成各状态对应的动作,并通过下一个状态3.6和队列管理1.5控制状态的跳转,进而实现工作流程的控制。并行子程序4.1~4.3留作无线数据传输、定时操作等并行处理任务的扩展开发使用。
图2 Anthony Lukindo队列状态机结构示意图
3 工作状态的划分以及流程控制
按照岸基海洋水质集成在线监测系统的工作顺序,并综合考虑工作过程中某一阶段需要完成的特定功能,将整个工作流程划分为如下的状态进行管理:初始化、海水进样、检测液位、发送四参数及浊度测量指令、读取四参数及浊度测量数据、发送过滤指令、发送营养盐测量指令、读取营养盐测量数据、数据记录及显示、延时等待、错误处理、停止。各状态所对应的动作如表2所示,各状态之间的跳转关系如图3所示。系统开始运行之后,首先进行必要的初始化工作,然后进入IDLE状态,等待人机界面的“测量”指令;接到“测量”指令后,正常运行情况下将按照图3所示跳转关系进入每个状态并完成相应的动作,满足相应跳转条件后,进入下一个状态继续执行。异常情况包括“错误处理”和“停止”两个状态,正常执行过程中如果发生错误,将进入“错误处理”进行必要的处理,而后转入“停止”,完成端口关闭、释放队列引用等操作,结束工作;或者在正常执行过程中,由于特殊原因,需要立即停止,则人机界面发出“停止”指令,在执行完当前状态的动作后,立即进入“停止”状态进行处理。
表2 状态划分及其对应的动作
图3 工作状态跳转图
海水过滤、四参数及浊度测量和营养盐测量过程中都需要等待一定的时间,如果通过单一状态的延时操作来实现这一过程,由于不能及时处理队列中的下一个状态对应的操作,将阻塞对其他高优先级操作或事件的响应,因此将等待过程拆分为多个延时子过程来处理,即单一“延时等待”状态实现较短时间的延时操作,队列中多次写入“延时等待”状态名来实现较长时间的延时。在每次“延时等待”状态名出队列之前,排在队列最前端的高优先级事件或操作对应的队列状态将率先得到响应,从而能够避免高优先级操作或事件不能被及时处理的问题出现。
多次“延时等待”过程实际上是在进行单次延时和多次计数的处理,每次的延时时间是固定的,在进入“延时等待”之前的状态需要执行写入延时执行次数的操作,本系统的设计中采用移位寄存器来实现计数,即对用于计数的移位寄存器进行赋值,在之后每次“延时等待”操作执行时对移位寄存器的计数值进行递减处理。以发送四参数及浊度测量指令之后的等待过程为例,该过程共需要等待6 s,单一“延时等待”操作实现100ms的延时,过滤等待过程通过调用60次“延时等待”操作实现6 s的累计延时时间,因此在“发送四参数及浊度测量指令”的操作中将移位寄存器计数值置为60,每次“延时等待”延时100 ms并将计数值减1,直至计数值为0,整个延时等待过程结束,进入“读取四参数及浊度测量值”状态进行处理。具体执行过程如图4所示。营养盐测量的等待过程采用类似方法处理,只是在“发送营养盐测量指令”中设定移位寄存器计数值为6 000,从而在后续的延时过程中实现10min的累计延时等待时间。
图4 测量等待过程的处理流程
4 试验应用情况
2015年4 月-7月,采用上述队列状态机开发的岸基海洋水质集成在线监测系统,在天津市海洋局渤海海洋监测监视管理基地进行多次现场试验,系统工作稳定,见图5所示。
图5 现场试验
5 结论
本文根据岸基海洋水质集成在线监测系统的工作顺序,将整个工作流程划分为多个状态,采用Anthony Lukindo队列状态机进行状态的调度和管理,实现了岸基海洋水质集成在线监测系统工作流程的有序调度以及可靠控制,说明了该设计的合理性和可靠性。同时该队列状态机结构中并行子程序的存在,为将来相关并行处理功能的开发与扩展留有余地。
[1]陈锡辉,张银鸿.LabVIEW8.20程序设计从入门到精通[M].北京:清华大学出版社,2007.
[2]Jon Conway,SteveWatts.A Software Engineering Approach to LabVIEW[M].New Jersey:Prentice HallPTR,2003.
[3]叶枫桦,周新聪,白秀琴,等.基于LabVIEW队列状态机的数据采集系统设计[J].现代电子技术,2010(4):204-210.
[4]聂影,冯向军,廖瑛,等.基于LabVIEW的状态机模型研究[J].计算机测量与控制,2007,15(9):1166-1171.
[5]马凡华,齐政亮,赵建彪,等.基于LabVIEW的燃气发动机排放数据采集系统设计[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队列状态机的扫频仪设计与实现[J].工业控制计算机,2013,26(9):75-79.
[9]曾剑,周剑扬,刘舜奎.基于LabVIEW的SFP光模块测试平台的设计与实现[J].电子技术应用,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
海洋公益性行业科研专项资助项目(201405007)
哈谦(1984-),男,工程师,主要研究方向为海洋环境监测及系统集成。E-mail:hqnotc@163.com