郭 威,蔡 强,* ,张延军,徐勤利,王金辉
(1.杭州电子科技大学电子信息学院,杭州310018;2.浙江清华长三角研究院,浙江 嘉兴314006)
随着化石燃料的日趋枯竭,生物能源被认为是未来重要能源之一。微藻合成的油脂是一种极有前景的生物柴油大宗原料,微藻生物柴油产业化技术开发已成为近年来国内外生物能源领域和CO2减排领域的研究热点[1],其中,高效培养能源微藻是生物柴油产业的关键技术之一。能源微藻高效培养装置主要由生物反应器和监控系统两部分组成。对于能源微藻培养过程来说,需要监测的参数主要有温度、酸碱度(pH)、溶解氧(DO)和光照强度,通过监测能源微藻生长过程当中参数的变化,保存实验过程数据进行分析,不断改进实验条件,为中试放大研究提供依据。
CAN(Controller Area Network)总线是一种支持分布式和实时控制的串行通信网络[2]。CAN 总线与以往控制总线相比有如下特点:它是一种多主总线,即每个节点均可成为主节点,且从节点之间也可互相通信;通信速率可达1 Mbit/s;CAN 总线通信接口中集成了CAN 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理;CAN 协议的最大特点是废除了传统的节点地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11 位或29 位二进制数组成,因此可以定义211个或229 个不同的数据块,这种根据数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点对大规模分布式控制系统尤为重要。
能源微藻培养监控系统主要由采集从节点、控制从节点、CAN232MB 智能协议转换器、监控主机和远程计算机七部分组成,系统总体结构框图如图1 所示。本系统具有监控主机功能易于实现、功能可扩展和运行稳定等特点,系统方案设计流程:监控主机以工控机为核心,监控界面采用北京亚控科技发展有限公司的组态王Kingview6.53 来设计,在组态王Kingview6.53 中定义莫迪康串口设备作为主节点设备,采用ModbusRTU 通讯协议与各现场从节点之间通信。设计中使用CAN232MB 智能协议转换器来实现串口侧和CAN 侧之间ModbusRTU 协议的双向转换[3]。监控主机主要负责现场传感器数据的实时显示,将数据存储到数据库和实验流程组态,作为Web 服务器实现现场情况的Web 发布功能。采集从节点和控制从节点以意法半导体公司的STM32F107 为核心MCU来进行硬件电路设计[4]。采集从节点主要完成监测传感器的信号调理、转换和储存等任务,通过CAN 通信接口实现数据交互。控制从节点的主要任务是时刻监听主机发送过来的控制命令,根据控制命令的具体要求来完成现场蠕动泵和球阀的启停操作和控制蠕动泵的转速,达到实验流程组态的目的。
图1 系统总体结构框图
系统硬件部分主要由现场传感器信号提取电路、模数转换电路、功率驱动电路、数模转换电路和CAN 通信电路五部分组成。
本系统中采用PT100、pH 传感器、DO 传感器和照度传感器对能源微藻培养环境进行实时监测。PT100 的信号提取电路采用文氏电桥,将铂电阻阻值的变化转换成差分电压信号的变化,后级使用OP07 对差分信号进行放大处理。pH 传感器采用离子选择性的玻璃复合电极,电极本身阻值高为108Ω ~109Ω,输出信号为毫伏级信号,在实验过程中,由于pH 的动态变化比较缓慢,采取对输入信号进行一阶RC 滤波处理。为了减小传感器内阻对测量精度的影响,采用输入阻抗大于1012Ω 的ICL7621 来设计pH 传感器的信号调理电路。本设计中采用基于Clark 原理的极谱型溶解氧电极[5],极谱型的溶解氧电极需要在阴阳电极之间加0.7 V的极化电压,极化电压可以通过稳压管稳压和电位器调压的方式提供给溶解氧电极,电极输出为纳安级信号,微电流信号提取电路采用AD711 实现I/V转换[6]。DO 电极微电流信号提取电路如图2 所示。在能源微藻光自养过程中,光照强度对能源微藻的生长速率有直接影响,实验室条件下,采取日光灯补光的方法来控制光照强度的变化。照度传感器的量程为100 lux ~2 klux,对应的输出信号为0 ~5 V,采用集成运放OP07 来设计电压跟随电路。
图2 DO 电极微电流信号提取电路
为了提高对传感器提取信号的转换精度,本设计中选用美国模拟器件公司的16 位逐次逼近型模数转换芯片AD976[7],转换量程为-10 V ~+10 V,芯片外围电路采用外部参考源连接方式,使用AD780 为AD976 提供稳定的2.5 V 外部参考源。通过控制模拟开关MAX308 实现模拟信号输入通道的循环切换,MAX308 的COM 端与AD711 构成的电压跟随器连接。STM32F107 为AD976 提供R/C、CS 控制信号和读取AD976 的BUSY 信号,AD976 的操作流程:使用R/C 和CS 控制信号来控制AD976 的转换过程,R/C信号的下降沿将取样/保持转变为保持状态,在CS 信号下降沿时开始转换,BUSY 信号变为低,并保持到转换完成,BUSY 信号上升沿时将输出数据锁存到输出寄存器中,数据有效。当R/C 为高时,CS 下降沿输出数据。STM32F107 读取数字量输入引脚电平状态和进行数据转换处理。
为了满足监控系统的流程控制功能可扩展的要求,设计了16 路泵阀功率驱动电路。1 路功率驱动的实现方法:如图3 所示,当GPIO 引脚输出为高电平时,三极管S8050 导通,驱动光电耦合器TLP521打开,后级NPN 型功率达林顿管TIP142 导通,执行器接入供电电压回路开始工作;当GPIO 引脚输出为低电平时,供电回路断开,执行器停止工作,由于执行器大多为电感型器件,上电工作时会产生反电动势,采用二极管IN4007 可以起到续流保护作用。
图3 功率驱动电路
本系统采用高精度蠕动泵、球阀等执行器来实现实验流程的控制。在控制流程中,需要为4 个蠕动泵提供0 ~5 V 的电压信号来控制转速。本设计中采用了TI 公司的12 位并行输入的4 通道D/A 转换器DAC7724[8],内部带有双缓冲区的逻辑电路,可以同时更新4 个通道的数据,另外,其回读电路可以读取内部寄存器的内容。各内部寄存器均为电平触发,可由A0、A1、R/W 和CS 四个信号来控制。当R/和为低电平时,可以向输入寄存器写数据,由A0 和A1 决定写入哪组数据。DAC 寄存器随输入寄存器的更新而更新。当为低电平时,各通道都输出相应的电压,当为高电平时,各通道的输入数据被锁存在DAC 寄存器中。因此,通过控制A0、A1、R/和,使为高电平来依次修改四通道数据,然后再使LDAC 为低电平,完成四通道的输出,各通道的输出电压公式为:
其中:VREFL与模拟地连接。VREFH为正参考电压,由REF02 提供5 V 精准参考源,N 为微控制器输出的二进制数,N 的取值范围为0 ~4096。
CAN 通信电路由STM32F107 的片内CAN 控制器和通用CAN 收发模块CTM8251 组成。CAN 收发模块CTM8251 实现了CAN 控制器逻辑电平与CAN总线差分电平之间的转换,另外CTM8251 还对CAN控制器与CAN 总线之间起到隔离作用,增强了总线各节点的抗干扰能力,确保了通信的可靠性。
系统软件部分设计主要由采集从节点软件设计、控制从节点软件设计和监控主机软件设计三部分组成。采集从节点和控制从节点程序在Keil uvision4 开发环境下采用C 语言[9]编写。监控主机软件采用KingView 6.53 版本的组态软件开发。以下对各部分软件设计进行详细阐述。
采集从节点程序流程为:系统初始化后,进入主循环中,启动片外AD976 操作,连续16 次转换第1路外部模拟信号,将转换结果存入数组并对数据进行加权平均滤波处理后保存在AD 寄存器中,然后切换到下一路模拟信号输入通道进行处理。接下来,等待监控主机发送给本节点的请求命令,收到请求命令后利用CAN 控制器的过滤机制判断是否为发给本节点的请求命令,若不是本节点命令帧,放弃本帧;是则触发CAN 接收中断,进入接收中断程序接收存储并解析出功能码,当功能码为0x03 时,设置相应的标志位为1,表示请求传感器数据,根据寄存器的起始地址和长度信息,读取对应的AD 寄存器和组装响应帧通过CAN 通信电路发送给主机。采集从节点程序流程图如图4 所示。
图4 采集从节点程序流程图
控制从节点程序流程与采集从节点程序流程类似,系统初始化后,进入主循环,等待命令帧,收到命令后利用CAN 控制器的硬件过滤机制,判断是否为发给本站的命令帧,是的话,进入CAN 接收中断,存储收到的命令帧并解析出功能码,设置相应的标志位。通过判断标志位来执行相关动作,当功能码为0x0F 时,表示控制泵阀的启停状态信息,将启停状态信息保存到开关量寄存器中,当功能码为0x10时,表示控制蠕动泵的转速信息,将转速信息保存到DA 寄存器中。组装相应的响应帧发送给监控主机,然后根据保存的寄存器的值,执行蠕动泵和阀的启停动作,控制蠕动泵的转速。控制从节点程序流程图如图5 所示。
图5 控制从节点程序流程图
主监控界面采用组态王6.53 来设计[10]。在组态王工程浏览器的设备选项中添加ModbusRTU 设备作为主站设备,在数据字典中定义系统组态过程中所需要的IO 变量、内存变量和设置相应的寄存器值,来实现ModbusRTU 通讯协议中读1 路或多路开关量输出(功能码01)、写多路开关量输出(功能码0F)、读多路寄存器(功能码03)和写多路寄存器(功能码10)四种功能[11]。在组态王SQL 访问管理器中创建表格模板,定义时间、温度、pH、DO 和关照强度5 个字段;创建记录体,定义记录体字段与表格模板中的字段对应,选择相应的组态王变量与记录体中的字段对应;建立ODBC 数据源,在命令语言中执行SQLConnect()和SQLInsertt()函数,可以建立与MS Access 数据库的连接和数据存储。利用组态王的Web 功能实现画面发布和数据发布功能,为远程主机提供实时的现场信息。通过编写应用程序命令语言、数据改变命令语言和事件命令语言等完成数据的转换、显示和存储,实验流程组态等功能[12]。
在实验室调试过程中,监控主机在组态王6.53 运行环境下,主机设备为ModbusRTU 串口设备,串口参数设置为:波特率为9 600 bit/s,8 位数据位,1 位校验位(偶校验)和1 位停止位。通过CAN232MB 协议转换器与现场采集从节点和控制从节点连接。设置协议转换器转换模式为Modbus 协议双向转换方式,CAN 端波特率设置为250 kbit/s。设置完成,启动组态王运行系统。监控系统界面如图6 所示。在组态王运行系统中,主机每隔1 s 向采集从节点发送数据请求命令,当按下实验流程的按钮时,执行发送相关的控制命令。监控界面实现了现场传感器数据的实时曲线显示、实验流程控制、数据库存储和Web 发布功能。在实验过程中,该系统可以长时间正常运行。
图6 能源微藻培养监控系统界面
本文设计了一种基于CAN 总线的能源微藻培养监控系统,硬件部分选用STM32F107 作为控制器构建从节点,监控主机功能采用组态王6.53 来设计,开发了数据的实时曲线显示、实验流程控制、数据库存储和现场情况的Web 发布功能。本系统具有通信可靠性高、实时性高和功能可扩展性等特点,很好的满足了能源微藻培养过程中参数的实时监测和实验操作流程的控制功能的要求。
[1] 李元广,谭天伟,黄英明.微藻生物柴油产业化技术中的若干科学问题及其分析[J]. 中国基础科学·工业生物技术专刊,2009,11(5):64-70.
[2] 苏晨,刘敬彪,章雪挺.CAN 总线在海洋数据监控系统中的设计与实现[J].电子器件,2011,34(3):269-272.
[3] CAN232MB/CAN485MB 智能协议转换器产品数据手册V2.20[M].2007.
[4] 喻金钱,喻斌.STM32F 系列ARM Cortex-M3 核微控制器开发与应用[M].北京:清华大学出版社,2011.
[5] 刘庆.高精度溶解氧测量仪的研究与设计[D]. 南京:南京信息工程大学,2009.
[6] 郭晓宇,刘敬彪,刘纯虎. 基于酶电极的有机磷农药检测仪[J].仪表技术与传感器,2009,2(2):25-28.
[7] 李宏胜,朱欣华,许向华,等.16 位AD 转换器—AD976A 及应用[J].仪器仪表学报,2003,24(增刊):274-277.
[8] 黄爱芹.数模转换器DAC7724 与AT89S51 单片机的接口及程序设计[J].电子元器件应用,2010,12(12):18-20
[9] Kenneth A Reek,著.徐波,译.C 和指针POINTERS ON C[M].北京:人民邮电出版社,2008.
[10] 刘恩博,田敏,李江全,等.组态软件数据采集与串口通信测控应用实践[M].北京:人民邮电出版社,2010.
[11] 李伟.基于Modbus 协议的工控节点设计与实现[J].计算机工程,2010,36(16):226-231.
[12] 何谐. 基于组态王的生物发酵多参数优化控制系统的研究[D].镇江:江苏大学,2007.