基于μC/OS-Ⅱ的生物反应器监控系统设计
2021-03-19胡江为张国平李庆后德家吕顺远
胡江为,张国平,李庆,后德家,吕顺远
(1.华中师范大学 物理科学与技术学院,湖北 武汉 430079;2.华中农业大学 理学院,湖北 武汉 430079)
0 引 言
随着养殖业的规模化发展,畜禽粪便的大量排放造成严重的环境污染。通过水虻来转化畜禽粪便为虫体脂肪和蛋白,消除环境污染的方法已经越来越被相关研究人员认可[1]。但由于水虻的生长受季节和温度等影响比较大[2],目前市面上还缺少高效的水虻转化粪便生物反应器的环境自动监控技术。同时传统的人工管理及数据获取方法效率低下且环境恶劣, 不利于生物反应器的规模化和产业化发展。
为此,本文设计了一套基于μC/OS-Ⅱ实时操作系统的生物反应器监控系统。该系统应用于生物反应器环境参数的采集和控制,能够实时监控生物反应器内环境参数。并且,当环境参数超出设定阈值时,系统会驱动继电器打开指定设备来调节环境参数,保证生物反应器内各项环境指标正常。
1 系统总体设计
监测生物反应器需要不同时期的各项参数,因此反应器内含六层装置,对应六个不同反应阶段,每层装置配备一个监测器,监测器上挂载多种传感器,包含五个温度传感器,平均分布在每一层不同的区域,另外包含一个氧气传感器,一个氨气传感器和一个二氧化碳传感器来获取各项气体参数。以上环境数据通过485总线被不断发送至控制器,控制器则负责分析并处理相关数据。将各项参数实时显示到液晶屏上,并可通过液晶屏设定各项参数的阈值。判断当前参数是否超出设定阈值。当超出阈值时,会驱动继电器开启相关设备,包括通风设备、喷淋设备和翻转设备,从而有效调节生物反应器内的各项环境参数。系统设计框图如图1所示。
图1 系统设计框图
为了保证系统的稳定性和实时性[3],在控制器和监测器上都移植了μC/OS-Ⅱ嵌入式实时操作系统。同时,通信协议方面,由于μC/OS-Ⅱ内核本身却并不携带任何网络协议栈。考虑到系统的兼容性和扩展性,选择FreeModbus协议[4],FreeModbus协议是一个针对嵌入式应用的开源协议,其支持多种平台,可以通过RS485总线进行传输,完全可以满足生物反应器的通信需求[5]。
2 硬件设计
2.1 监测器
监测器挂载多种传感器,可以监测温度、氧气、二氧化碳和氨气等,主要负责采集所在区域内的各项环境参数,并通过RS485总线持续发送给控制器。由于传感器的输出方式不同,主芯片需要丰富的USART接口以及定时器。因此监测器主芯片采用基于Cortex-M3架构的STM32F103VET6,其模块构成如图2所示。
图2 监测器模块构成
2.2 控制器
控制器负责处理通过RS485总线收集来的多个监测器的数据,并通过液晶屏实时显示相关数据。控制器根据阈值判断反应器内各项环境参数是否异常,如果出现异常,会自动开启继电器来控制相关设备,从而调节反应器内各项环境参数,使其恢复正常状态。由于控制器需要良好的计算性能和中断响应系统,因此采用与监测器同系列的STM32F103ZET6,惟一区别是拥有更多的引脚,其模块构成如图3所示。
图3 控制器模块构成
2.3 控制器与监测器的通信
为满足数据采集子系统节点多、传输速率高和组网范围大等需求,控制器与监测器采用RS485总线进行数据传输[6]。RS485总线结构简单、传输速率高、传输距离远且扩展性强,符合本系统的要求。
3 软件设计
3.1 μC/OS-Ⅱ操作系统简介及移植
μC/OS-Ⅱ是源码公开的实时操作系统,是一种基于优先级的可抢占式的内核[7],具有可开源、可移植、可裁剪、可固化、多任务和抢占式等特点,并支持系统服务及中断管理嵌套。执行效率高,实时性能好且稳定。因此,μC/OS-Ⅱ操作系统被广泛应用于各类单片机、微控制器以及数字信号处理器等产品的开发[8]。
移植工作主要包括在官方网站下载相关源代码,然后根据STM32F103系列处理器的架构,修改os_cpu.h、os_cpu_a.asm和os_cpu_c.c等与处理器相关的文件。最后,创建多个用户任务,完成移植。
3.2 系统软件设计
在监测器和控制器上分别移植了μC/OS-Ⅱ实时操作系统。接下来需要根据功能添加相应的任务。
监测器需要完成多种类型传感器的数据实时采集和传输等,要实现多任务的并发执行,因此将每一路传感器均设置为单独的任务,统称为数据采集任务。另外还有数据上传任务。
数据采集任务:实现数据的并发高效采集,由以下几个子任务组成,包含:
(1) max31865_task任务:用于获取温度数据。
(2) o2_task任务:用于获取氧气数据。
(3) co2_task任务:用于获取二氧化碳数据。
(4) nh3_task任务:用于获取氨气数据。
数据上传任务:负责实现通信,通过RS485总线将数据上传给控制器。
监测器的工作流程如图4所示。
图4 监测器工作流程图
根据控制器所实现的功能,将控制器程序任务划分为3个任务,分别是:数据处理任务(usart_task)、设备控制任务(control_task)和人机交互任务(gui_task)。数据处理任务优先级最高,不允许遗漏接收的内容,设定为2。由于调节环境是一个相对而言较“漫长”的过程,因此设备控制任务优先级次之,定为3。人机交互任务,它的实时性稍低一点,优先级定为4。
数据处理任务:通过周期性的向监测器发送数据获取指令,控制器对接收到的数据进行解析,根据解析结果和监测器数量得到环境均值。
图5 控制器工作流程图
设备控制任务:将各项环境数据与设定的阈值参数进行对比,判断是否需要开启例如通风、喷淋和翻转等功能设备,来调节特定区域的环境数据。
人机交互任务:由主程序创建,将采集而来的数据展示到液晶屏上,并通过液晶屏修改阈值参数以及控制通风、喷淋和翻转等功能设备。
控制器的工作流程如图5所示。
4 系统测试与分析
4.1 功能测试
首先在PC上进行功能测试,对创建的三个任务进行测试,验证μC/OS-Ⅱ移植是否成功。一般通过打印日志来验证μC/OS-Ⅱ的实时性、多任务性。图6是打印出的部分日志。
由图6可知:第一行信息代表系统正在执行usart_task;第四行信息代表系统正在执行control_task;第十一行则为系统正在执行gui_task;到了第十七行,日志显示系统再次执行usart_task任务,证明系统正在多任务运行,也表明μC/OS-Ⅱ系统移植成功。
4.2 性能测试
系统搭建好并启动后,通过液晶屏可以查看反应器内的实时环境参数。实时数据界面如图7所示。
图6 控制器工作日志
图7 控制器实时环境参数
数据每间隔5 s会刷新一次。通过图7可以看到,当前反应器内层一至层五各区域的温度均超过25 ℃,而将通风设备开启阈值范围设定为20 ℃至25℃。喷淋设备开启阈值范围设定为25 ℃至30 ℃,翻转设备开启阈值范围设定为大于30 ℃。层一至层五各区域内最高温度均达到喷淋设备开启范围,故层一至层五喷淋设备均显示为开启。层六的各区域温度均大于20 ℃但小于25 ℃,符合通风设备开启范围,因此此时层六的通风设备显示为开启。
氧气、氨气以及二氧化碳的含量为六层所得数据的平均值,均位于正常状态,故无任何操作。
5 结束语
经过长时间不间断测试,本系统能正常稳定工作,准确地获取实时监测数据,并能准确判断环境是否异常,若有异常能及时处理,完全满足预期要求,具有一定的应用推广价值。