哈谦
(国家海洋技术中心,天津 300111)
多测量装置水质监测仪器集成控制系统开发
哈谦
(国家海洋技术中心,天津 300111)
介绍了一种具有多个测量装置的水质监测仪器集成控制系统的开发设计方案。该设计方案针对5套功能相似但相互独立的水质测量装置,以嵌入式系统为控制核心,灵活运用Modbus RTU通信协议及RS485总线,并自主开发通信协议,实现控制核心与触摸屏、PC机以及5套测量装置的通信连接;进而采用多任务的处理架构,对上述外围设备操作任务进行分时处理,最终成功将5套测量装置集成为一台水质监测仪器,并支持PC机和触摸屏双终端进行显示和控制。实际应用效果表明,该设计方案稳定、可靠。
集成控制系统;水质监测;Modbus
该水质监测仪器主要由3部分组成,测量装置部分、嵌入式控制核心以及显示控制终端,系统架构如图1所示。
测量装置部分共包括5套测量装置,各测量装置之间相互独立,每套测量装置具有各自的MCU、外围扩展控制电路、光源、光电检测等部件,可按照吸光光度法的基本原理,独立完成海水样品进样、化学试剂添加、水质参数检测等一系列工作,检测全过程自动化,通过RS485接口与外界进行数据和指令的通信。5套测量装置的区别在于采用了不同的化学工艺和检测波长,从而实现对5种水质参数的检测。
显示控制终端由PC机和触摸屏组成。PC机通过其运行的上位机软件,实现控制指令发送、测量数据显示、工作状态监控、历史数据保存与查询等功能;触摸屏是PC机之外的另一显示控制终端,既可独立于PC机之外单独实现显示控制功能,从而满足野外或船载等无计算机参与条件下的人机交互,也可以与PC机同时存在,实现双显示控制终端的自由选择。
嵌入式控制核心是该水质分析仪器的核心控制部分,是测量装置和显示控制终端之间的桥梁,嵌入式控制核心的存在,使得测量装置和显示控制终端能够建立起通信连接。嵌入式控制核心接收PC机和触摸屏的工作指令,进行必要的解析,再转发至测量装置;测量装置对工作指令的应答、工作过程中的状态信息、原始数据以及经过数据处理的最终测量结果发送至嵌入式控制核心,嵌入式控制核心将上述信息转发至PC机和触摸屏显示,并将测量结果存储于本地,供历史数据查询时使用。本文所述集成控制系统以Rabbit3000控制单板为嵌入式控制核心,应用Dynamic C进行控制程序开发[1-2]。
图1 系统总体架构
2.1 嵌入式控制核心与PC机之间的通信连接
PC机是主要的显示控制终端,该水质监测仪器通过PC机上运行的上位机软件完成指令的发送和测量数据、部件工作状态以及工作进程等信息的显示。嵌入式控制核心与PC机通过RS232端口连接,二者之间的通信协议根据实际应用需要自主制定开发,基本通信指令格式为“起始字符地址码功能码结束字符”,地址码的功能是对5套测量装置加以区分,5套测量装置分别对应地址码1~5。
2.2 嵌入式控制核心与触摸屏之间的通信连接
本系统中用于交互的触摸屏元件[3]主要是按钮和数据显示。按钮用于发送工作指令,数据显示元件用于显示测量数据和状态。嵌入式控制核心与触摸屏之间通过RS232端口连接。触摸屏收、发指令都按照Modbus RTU协议进行处理,为确保与触摸屏建立稳定的通信连接,嵌入式控制核心需按照Modbus RTU协议开发对触摸屏指令的处理程序。
Modbus协议是工业领域内全球最流行的协议之一,应用该协议的系统中有一个主设备,可以有一个或多个从设备,主设备发起查询,从设备进行应答。Modbus协议支持ASCII模式和RTU模式的数据传输。本文采用RTU模式,其信息帧结构如表1所示[4]。触摸屏与嵌入式控制核心之间应用Modbus RTU协议进行通信,以触摸屏为主设备,嵌入式控制核心为从设备,所有二者之间的发送工作指令、读取数据、时间、状态信息的操作都以查询应答的形式进行[5-7]。地址码是主设备区分多个从设备的标识,相对于触摸屏而言,本系统中只有嵌入式控制核心一个从设备,地址默认设置为01H。主设备通过功能码告知从设备执行何种操作,从设备通过功能码向主设备确认已执行了该操作,或修改功能码告知主设备出现错误。结合水质监测仪器的工作需求,实际使用的功能码及扩展实现的功能如表2所示。功能码01H取得一组工作指令状态切换开关的当前状态(ON/OFF),用于查询工作状态;功能码03H用于读取测量时间;功能码04H用于读取测量数据;功能码05H,强置一个工作指令状态切换开关的状态,用于发送工作指令。
2.3 嵌入式控制核心与测量装置之间的通信连接
嵌入式控制核心与5套测量装置进行通信,传输指令、数据及工作状态,为保证对5套测量装置的有效控制,采用RS485总线连接嵌入式控制核心与5套测量装置。根据实际需要,自主开发通信协议,基本格式为“起始字符地址码功能码结束字符”,地址码的功能是对5套测量装置加以区分,5套测量装置分别对应地址码1~5。以嵌入式控制核心为主设备,5套测量装置为从设备,为了避免嵌入式控制核心与5套测量装置之间的通信出现冲突,确保通信过程有序进行,建立查询应答的通信机制,嵌入式控制核心查询,5套测量装置进行应答,即嵌入式控制核心与5套测量装置之间的一切通信操作,都由嵌入式控制核心发起,测量装置不能主动启动通信操作,只能被动地进行应答。这确保了嵌入式控制核心对RS485总线的控制权。而且在任一时刻,只有查询指令的地址码与自身编号相一致的测量装置,可以占用RS485总线进行应答。
表1 Modbus RTU信息帧格式
表2 Modbus功能码及对应功能
建立上述嵌入式控制核心与PC机、触摸屏以及5套测量装置的通信连接后,进行集成系统开发,即建立起一种运行机制,使得PC机和触摸屏的指令能够发送到测量装置,测量装置的数据、状态等信息能够及时反馈到PC机和触摸屏进行显示[8],指令、数据通信架构如图2所示。嵌入式控制核心需要实现的具体功能可进一步进行划分:功能1,接收PC机工作指令并进行存储;功能2,接收触摸屏指令并解析,对于工作指令进行存储,留作向测量装置转发时使用,并向触摸屏立即做出应答;对于索要数据、状态信息等的指令,在本地存储区内检索存储的数据、状态等信息,按照Modbus RTU协议进行封装,并对触摸屏立即做出应答;功能3,将存储的PC机工作指令转发到测量装置;功能4,将存储的触摸屏工作指令转发到测量装置;功能5,向5套测量装置查询工作状态、测量时间、测量数据等信息,并进行解析和本地存储。对于解析出的需要PC机显示的数据、状态等信息,按照自主制定的通信协议封装,立即转发到PC机;对于需要触摸屏显示的数据和状态等信息,存储于本地,留作功能2中的触摸屏查询时填充Modbus RTU信息帧进行应答。鉴于涉及触摸屏的指令需要存储转发,需要按照按钮、数据显示等不同功能的触摸屏组态元件在嵌入式控制核心内开辟对应的存储区。
图2 指令、数据通信架构
为实现上述功能,开发各端口的处理函数。嵌入式控制核心与显示控制终端、测量装置相连的端口类型、端口命名以及开发的处理函数如表3所示。PC机、触摸屏和测量装置共占用了两个RS232端口和1个RS485端口,分别命名为COM_PC、COM_TS和COM_DEV,对应的端口处理函数分别命 名 为 PROC_COM_PC、PROC_COM_TS 和PROC_COM_DEV。其中PROC_COM_PC用于实现功 能 1,PROC_COM_TS用 于实 现 功 能 2,PROC_COM_DEV用于实现功能3、4、5。
表3 端口命名及其对应的处理函数
3.1 PROC_COM_PC函数的处理流程
函数PROC_COM_PC的处理流程如图3所示,首先接收COM_PC端口收到的指令,对指令进行解析,判断地址码,由地址码决定该指令需要转发到哪套测量装置。定义全局变量 dev_flag作为COM_PC端口指令向测量装置转发的标识。如地址码为1,则dev_flag置为1。在COM_DEV端口向测量装置转发指令时,通过该标识来决定转发到相应的测量装置。以此类推,地址码为2、3、4、5的情况采取相同的方法进行处理。
图3 PROC_COM_PC处理流程
另外,如果通过PC机发出的指令进行了正常的操作,而触摸屏没有相应的显示,则最终分析仪器的两个终端没有做到显示同步。因此在PROC_COM_PC中,dev_flag标识赋值的同时,要对触摸屏存储区进行相应的操作,从而在触摸屏通过COM_TS端口进行查询时,对应的元件会有相应的显示。比如通过PC机发出了“测量装置1工作”指令,因为PROC_COM_PC处理时,对嵌入式控制核心上“测量装置1工作”按钮元件所对应的存储区进行了操作,虽然没有人为去点击触摸屏“测量装置1工作”按钮元件,但通过触摸屏查询与嵌入式控制核心之间的查询应答,按钮元件会显示已切换到“工作”对应的状态,从而做到由PC机发出指令,触摸屏会跟随PC机显示也进行了同样的操作,实现两终端的同步。
3.2 PROC_COM_TS函数的处理流程
函数PROC_COM_TS的处理流程如图4所示,首先接收COM_TS端口收到的指令,对指令进行解析,检测功能码,并采取相应的操作。其中功能码01H、03H、04H对应读取存储区的操作,分别读取存储区中保存的相应元件的状态、测量时间以及测量数据;功能码05H对应写入存储区的操作,比如点击触摸屏上的“测量装置1工作”按钮元件,对应的功能码05H的查询指令就发送到COM_TS端口,PROC_COM_TS进行处理,对“测量装置1工作”按钮元件对应的存储区标识置位,即完成写入操作,在以后PROC_COM_DEV中检测到该标识被置位,则向测量装置1发送“工作”指令。无论是读取存储区或者写入存储区,操作完成后都要按照ModbusRTU协议对指令进行封装,通过COM_TS端口发送至触摸屏,从而完整地执行一次查询应答的操作,本次PROC_COM_TS处理流程结束。
图4 PROC_COM_TS处理流程
3.3 PROC_COM_DEV函数的处理流程
函数PROC_COM_DEV的处理流程如图5所示。如上所述,PROC_COM_DEV用于实现集成控制系统的功能3、4、5。PROC_COM_DEV由dev_flag区分为十个分支:dev_flag为1时,将储存的PC机、触摸屏工作指令转发至测量装置1;dev_flag为2~5时与dev_flag为1时类似,分别将指令转发至测量装置2~5;dev_flag为6时,按照RS485总线主从通信机制的约定,嵌入式控制核心作为主设备,主动向测量装置1发出查询读取指令,测量装置1收到指令后,立即进行应答,PROC_COM_DEV对收到的应答信息进行解析,将测量时间、测量数据、状态信息进行保存,并通过COM_PC直接转发至PC机,从而在PC机上实现了数据、监控信息的显示等功能;同时保存的信息,将会用于触摸屏查询时封装应答指令使用,从而间接实现了对触摸屏显示数据、状态信息的支持;dev_flag为7~10时采用类似方法,分别实现对测量装置2~5发送查询读取指令,并对读取回的应答信息执行相应的解析、存储、转发操作。
在各个分支执行完相应的操作后,都会对dev_flag进行操作:在dev_flag为1~9的分支中,dev_flag执行加1操作;在dev_flag为10的分支中,对dev_flag置1。对dev_flag的操作完成后,单个分支执行完毕,PROC_COM_DEV的单次操作也完成。PROC_COM_DEV内部dev_flag在1~10之间循环,从而决定了10个分支都能够得到执行。
图5 PROC_COM_DEV处理流程
3.4 程序总体运行调度
程序总体处理流程如图6所示,程序运行在一个大的循环中,轮流对3个端口COM_PC、COM_TS和COM_DEV进行处理,但PROC_COM_PC和PROC_COM_TS是否运行取决于其判断条件,即嵌入式控制核心是否接收到PC机或触摸屏的指令。如果端口接收到指令,则进入PROC_COM_PC或PROC_COM_TS进行处理,否则直接跳过,其端口对应的处理函数不予执行;而端口COM_DEV没有判断条件进行限制,循环运行到端口COM_DEV时立即进入PROC_COM_DEV进行相应的处理。
图6 程序总体处理流程
在程序的运行过程中,dev_flag也是决定程序运行方向的重要标识。在函数PROC_COM_PC和PROC_COM_DEV中,均有对dev_flag的操作。上述总体处理流程的建立,间接决定了PROC_COM_PC中对dev_flag的操作将会覆盖PROC_COM_DEV中对dev_flag的操作,具体体现如下:一是在COM_PC没有接收到指令的情况下,即PC没有发出操作指令,PROC_COM_PC不执行,PROC_COM_DEV照常执行,dev_flag从1到10循环往复;二是在PC机发出操作指令后,PROC_COM_PC执行,dev_flag将会按照PC机发出的指令进行赋值操作,赋值范围1~ 5,本次赋值覆盖掉了上次循环中,PROC_COM_DEV对dev_flag执行的1~10之间的累加操作。表面上看由于dev_flag的值被覆盖,干扰了程序的正常执行,实际上程序的运行并未受到影响。这是因为实际使用中,PC机(或触摸屏)发出的指令是后续一切操作的开始,程序的首要任务是将PC机(或触摸屏)的指令转发到测量装置,无论上次PROC_COM_DEV运行中dev_flag赋值为多少,都会为了确保指令下发这一首要任务的实现而将dev_flag赋新值,本次循环的PROC_COM_DEV将按照新的dev_flag执行,首先把PC机(或触摸屏)指令转发到对应的测量装置,后续循环的PROC_COM_DEV中再执行读取等其他操作。这符合实际工作中指令、数据产生的先后顺序和传输流程,因此程序的运行从逻辑上来说是正确的。
2014年,采用上述集成控制系统的5台水质监测仪器分别应用于国家海洋局北海分局和东海分局下属单位,至今已使用3 a有余。在使用过程中,集成控制系统工作稳定,PC机和触摸屏有效控制了5套测量装置的工作,同时各种测量数据、状态信息都及时回传到PC机和触摸屏得到显示。
本文针对5套相互独立的水质测量装置,灵活运用Modbus RTU通信协议、RS485总线,以及自主制定的通信协议,首先建立了嵌入式控制核心和PC机、触摸屏以及5套测量装置之间的通信连接,之后开发了各通信端口的处理函数,并采用多任务的处理架构,成功实现了5套水质测量装置的集成控制。实际应用情况表明,该设计方案稳定、可靠,可以针对具有类似通信架构的多测量装置水质监测仪器的集成控制系统开发时使用。
[1]Rabbit Semiconductor.Rabbit 3000 Microprocessor Designer’s Handbook[M].2006.
[2]Rabbit Semiconductor.Dynamic CUser’s Manual[M].2007.
[3]KincoHMIware使用手册[M].上海步科自动化股份有限公司,2011.
[4]Modicon Inc.Modicon Modbus Protocol Reference Guide[M].1996.
[5]李明伟,郭广峰,黄鸽.PIC单片机与触摸屏串行通信的MODBUS协议实现[J].电子技术应用,2005(9):40-42.
[6]路平,薛树琦.Modbus协议下单片机与eView触摸屏的通信方法[J].单片机与嵌入式系统应用,2007(1):46-48.
[7]尤慧芳.用MODBUS实现触摸屏与单片机的通信[J].工业控制计算机,2008,21(12):63-66.
[8]哈谦,王宁,李慧青,等.Modbus协议在水质监测仪器中的应用[J].海洋技术,2011,30(4):42-45.
Design of an Integrated Control System for Water Quality Monitoring Instruments with Multi-Measuring Devices
HA Qian
National Ocean Technology Center,Tianjin 300111,China
This paper introduces the design of an integrated control system for water quality monitoring instruments with multi-measuring devices.In this design,the embedded system is used as the control core.The communication link among the control core,one touch screen,one PC and five devices is established through the application of Modbus RTU protocol,RS485 bus and self-developed communication protocol.Then the multitasking architecture is introduced to process the peripheral tasks mentioned above.Finally,five devices are integrated into one instrument,with PC and touch screen serving as two terminal devices to display and control. The practical application shows that the design is both stable and reliable.
integrated control system;water quality monitoring;Modbus
TP311;X834
A
1003-2029(2017)03-0062-06
10.3969/j.issn.1003-2029.2017.03.012
2017-04-10
海洋公益性行业科研专项资助项目(201405007)
哈谦(1984-),男,工程师,主要从事海洋集成监测系统方面的研究。E-mail:hqnotc@163.com