中科院上海技术物理研究所 刘方武 张 涛 郑伟波 鞠洪伟 蔡 萍
空间生物实验是了解重力在植物生长中的作用机理[1]的重要手段,空间高等植物培养箱是实现在太空培养高等植物的载体,它是在一个密闭箱体内为高等植物生长提供合适的生长环境,如光照、温度、水、营养液等。为实现这个目标,控制系统需实时监测箱内的环境因素,并能实时做出调整。本控制系统采用TI公司推出的32位定点DSP芯片DSP2812[2,3],其主要面向数字控制和运动控制领域。该DSP的最高主频可以达到150MHZ,片内集成了128K*16位的FLASH和18K*16位的RAM,调试时既可以将程序烧录到RAM中,也可以烧入FLASH以便长期使用。该款DSP可使用TI公司的集成开发环境CCS3.3进行软件开发,并支持JTAG在线仿真接口,可以实时分析以及设置断点。
空间高等植物培养箱为长日照植物和短日照植物提供满足空间培养的实验条件,科学家可通过数据注入指令控制实验进程,通过在轨下传的各类数据,了解植物的生长环境及状态,在此基础上分析获得实验研究结果。因此,控制系统需实时采集培养箱内的温度、湿度、照度等环境参数和灯、相机、泵、温控、水循环的开关状态,并下传给数管系统;根据实验流程需要,控制系统需定时控制长日照灯1、短日照灯2、返回单元灯3的开关,可见光相机1、2和荧光相机3的开关,水循环1、2的开关;根据指令控制温控的开关、泵1、2的开关,光照周期的调整,水循环周期的调整;根据广播时间码进行系统校时和自守时。培养箱通过422接口与数管系统进行通讯,接收注入指令并返回状态参数。
为了实现上述任务,给高等植物生长提供所需的适宜环境,控制系统需实现以下功能:
(1)实时与数管系统通讯,通讯接口为422异步串行通讯,波特率为115200bps。控制系统接收数据注入,对数据包进行解析,并执行指令;发送科学参数数据包,在接收到数据采集指令后,将采集到的模拟量和状态量按一定格式打包,并发送给数管系统。
(2)根据外部指令,实时响应对灯、温控、泵、水回收装置等10路继电器的开关操作。
(3)按照实验流程,对灯1、2开关(灯1为16h开、8h关,灯2为8h开、16关)、相机1、2、3开关(相机1、2分别在灯开时每2h开关1次,相机3根据数据注入进行开关控制)、水回收1、2开关(在灯开时关闭、在灯关时开启)等进行定时控制。
(4)为了监控培养箱的工作状态,控制系统需定时(512ms)采集温度、湿度、照度、工作电压等16路模拟量,和灯状态、输运泵状态、相机状态、激发光状态、温控状态、水回收状态等14路数字量。
(5)控制系统需自守时,并能根据数管系统注入的时间码,实现校时功能。
图1 控制系统硬件结构图
根据系统需求分析,对控制系统的功能进行模块划分,如图1所示,相应的硬件模块有:时钟晶振模块、电源变换模块、RS422通讯模块、复位电路模块、模拟量采集模块、状态量采集模块、继电器开关控制模块、DSP控制器模块等八部分。
图2 空间高等植物培养箱控制系统软件结构图
其中时钟晶振为DSP提供25MHZ的外部时钟源,电源变换电路使用MSK5101-3.3和LM117电源转换芯片将外部5V电源变换为DSP2812工作所需的3.3V外设电压和1.8V内核电压,串口通讯模块使用DS26LV31T和DS26LV32AT实现将DSP2812的SCI串口变换为422通讯所需的差分信号,复位电路实现系统复位功能,模拟量采集电路使用LM124放大器实现将外部模拟量送给DSP2812的内部ADC,状态量采集电路将外部状态量经SN74LS244缓冲后送DSP2812的GPIO口,继电器开关控制电路是将GPIO口输出的控制信号经达林顿管SG2003放大后控制继电器开关。
根据系统的需求分析,先将控制软件按照功能进行模块划分,其软件结构如图2所示。
其功能可分成五部分:数据注入接收与解析、模拟量和状态量的采集、科学参数包发送、实验流程控制、DSP系统初始化。对应于五个软件功能,控制软件分为五个模块来进行详细设计,具体为初始化模块、主循环模块和三个内部中断模块,按照优先级高低依次为:定时器中断、串口接收中断、串口发送中断。其中,主循环模块又由模拟量采集、状态量采集、指令响应、数据注入存储、立即令执行、延时指令处理、实验流程控制等七个子模块组成,每个子模块对应一个函数。指令响应子模块由于分支较多,又调用了三个单元,每个单元对应一个子函数。时间大小比较功能,相对比较独立,也写成一个子函数,作为一个单元调用。DSP系统初始化模块根据不同的外设也划分为系统控制初始化、GPIO口初始化、其它外设初始化、全局变量初始化、断电指令响应、喂狗等六个子模块。其中断电指令响应单元实现将所有继电器关断。
图3 控制系统软件流程图
根据实验流程的需要,主控软件的执行次序如图3所示。系统在上电后首先进行系统初始化,将系统时钟设为100MHZ,使能相应的外设如SCI口、ADC、GPIO口等,打开看门狗,并关闭所有的继电器;然后系统进入待机自检模式,实时接收数管系统发来的各种指令,并做出响应,实现对系统的检查;直到接收到数管系统发送的进入正常工作模式的指令,或自检时间结束自动进入正常工作模式;进入正常工作模式后,重新载入系统运行的参数,进入自主控制流程,按照协议要求定时开关灯、相机、水回收等。在正常工作模式里,控制系统将定时发送开关信号;在接收到数据采集指令后,将采集到的各类状态参数打包后发送数管系统;在接收到广播时间码后,进行系统校时,在两次广播时间码之间,进行系统自守时;在接收到断电指令后,关闭所有继电器,使系统进入确定状态,等待数管系统断电。
根据系统的软硬件设计,控制系统的实现按功能划分为422通信、注入指令的解析、模拟量和状态量的采集、开关指令的执行、系统守时校时定时等。由于篇幅有限,下面重点介绍422通信、开关指令的执行、指令解析和实验流程的控制四个部分。
空间高等植物培养箱控制系统与数管系统的通讯采用422接口,波特率为115200bps。DSP2812自带两路串行通信接口(SCI),可采用查询和中断两种方式进行串口通讯。为了实时接收数管系统注入的数据指令,本系统采用接收中断和发送中断来实现系统与数管系统的实时通信。此处需特别注意的是,在系统上电或复位操作时,由于422发送芯片的管脚电平不确定,会出现输出乱码的现象,这些乱码有时会造成不可预知的结果。在系统上电或复位进行初始化过程中,为保证422芯片输出无乱码,可选择使用三个措施:DSP输出信号控制使能,积分延时电路控制使能,RS422芯片输入端外接上拉电阻。为尽量简化电路,本系统采用第一种措施:由DSP2812输出RS422芯片的使能信号,在上电和复位初始化过程中,将RS422芯片的接口使能端设为禁止状态,初始化完成后才设为使能开状态,以此来达到禁止向外部发送乱码的目的。如图4所示,RS422接口芯片DS26LV31W有两个使能端pin4EN和pin12/EN。使用其中任何一个,都可达到使能控制该芯片的目的,但是因DSP2812的GPIO口为内部上拉,上电或复位至系统初始化完成前,GPIO口会输出高电平,所以,最终选用422芯片的低电平使能端pin12/EN,具体电路如图4所示。图4中肖特基二极管D36起防潜通作用[4]。
图4 RS422发送端原理图
RS422使能端控制信号/EN31的初始化程序为:
开关指令的执行是通过GPIO口输出控制信号,经达林顿管放大后控制继电器开关来实现的。DSP2812的GPIO口共有6组56个,其中除了GPIOE0、GPIOE1、GPIOF0、GPIOF1、GPIOF2、GPIOF3、GPIOF12、GPIOG4、GPIOG5这九个之外,全部为内部上拉[3]。这47个GPIO口在上电瞬间到初始化完成配置前的这段时间输出为高电平,在主频100MHZ的情况下,该脉冲宽度大约为60ms,如图5所示。第一个窄脉冲电平约为1.4V,脉宽为60ms。
图5 GPIO口未加下拉电阻时的波形
图6 GPIO口添加下拉电阻后的波形
因系统设计时,高电平为继电器开,低电平为继电器关,所以,在上电或复位瞬间这个窄脉冲会短暂打开继电器,这不仅会造成浪涌电流很大,而且还会造成继电器误操作。为了解决这个问题,本系统采用在每个带内部上拉功能的GPIO口增加下拉电阻的办法,其下拉电阻阻值为3.3KΩ。图5是增加下拉电阻前,示波器所抓取的带上拉功能的GPIO口的输出波形图。图6为增加3.3KΩ的下拉电阻后,同一端口所测波形。由图6可见上电瞬间所输出的1.4V脉冲已被下拉至0.2V。
控制系统接收的数管系统指令有广播时间码、数据采集指令、系统维护指令、系统断电指令和数据注入指令五种,其中前四种指令相对简单,而数据注入指令内含需要解析的参数设置等内容,相对比较复杂。为了及时响应数管系统指令,控制系统在串口接收中断中对5种指令先只做出分类标示,并直接放入数据缓存区,而将各种指令的解析与响应放在主循环中,当主循环中对指令做出响应后则将标示清零。
实验流程的实现需要有精确的定时,定时器的实现是由DSP自带的定时器中断来完成的。控制系统的主频为100MHZ,定时器中断设置为每5ms进一次中断,因此本系统的实际时间精度为5ms。由于系统流程是在一个无限循环中轮询实现,所以实验流程控制就是将设置好的时间标志与定时器中的累计时间标志做比较,当累计时间大于等于设置时间时,就实施某个开关动作。由于培养箱采用的继电器是磁保持继电器,所以,开关信号只需给出大于80ms的高电平脉冲即可完成开关动作,无需一直保持高电平。脉冲信号的产生一般使用delay()函数。使用delay()函数来实现高电平脉冲,可以避免同时开启多个继电器,避免浪涌电流过大。但是,如果连续使用多个delay()函数会造成看门狗超时,而导致系统复位。例如,在实验流程中,如果有多个开关需同时依次打开,则几个delay()函数的时间就会累加起来,超过系统看门狗的喂狗时间。综合考虑以上情况,本控制系统采取设置继电器开关时间标志的方法,当继电器开的控制信号置高电平后,在定时器中断内进行计时,当时间超过80ms则将控制信号拉低。这样做不仅避免了狗叫,而且提高了系统的实时响应性。
通过解读任务目标,分析任务的需求,提炼出空间高等植物培养箱控制系统的五个任务;然后从硬件模块划分和软件功能实现两条线给出了控制系统的详细设计;在系统实现部分,重点介绍了422通讯乱码的消除方法,上电或复位瞬间GPIO口的高电平脉冲抑制方法,指令解析的详细设计说明和实验流程控制中脉冲电平的实现。实验证明,控制系统工作稳定,实时响应性能好。
[1]孙建峰,赵琦,郭双生,等.微重力及模拟微重力对植物生长的影响[J].生物技术通报,2011(9).
[2]顾卫刚.手把手教你学DSP[M].北京:北京航空航天大学出版社,2009.
[3]TMS320F281x Datasheet.Texas Instruments,2003.
[4]尹申燕,刘敏,李靓.冷机低阻通路下的潜通电路分析及隔离方法[J].电讯技术,2010,50(8).