目前,我国生物发酵产品总量居世界第一位,是名副其实的发酵大国[1]。伴随着发酵产品产量的日益增长,工业发酵数据的数量和复杂性同样与日俱增,但发酵工厂对于数据的管理方式仍然较为落后。在传统的发酵过程监控系统中,可以将传感器在线测得的数据以文本形式保存于本地计算机或在组态软件内置的小型数据库中,而离线生产数据需由操作人员以纸质报表或Excel电子表格的形式保存。由于数据保存的方式不统一、保存介质分散,使得数据管理难度加大、数据检索效率降低、数据保密性下降,最终导致数据的综合分析利用困难,无法从数据中获取有用的信息进一步指导生产。因此,在发酵产业蓬勃发展的过程中亟需一套解决方案为其保驾护航。近年来,为了解决上述问题已有多家发酵罐生产厂商着力于开发与自身产品相配套的上位机软件。组态软件是目前市场上较为主流的发酵上位机软件开发工具,具有强大的数据采集和设备控制等功能[2],但在当前发酵产业对于数据管理和数据检索以及数据分析的高需求下,组态软件的功能已明显表现出滞后之势。为了弥补上述组态软件的不足,华东理工大学自主开发了Biosoft发酵之星软件包、江南大学发酵过程控制研究团队自主研发了BioJN发酵技术服务系统[3],均已在市场中得到应用。
上述发酵上位机软件均使用了客户端/服务器(client/serrer, C/S)架构。C/S架构的主要优点包括:a)能够在本地计算机中安装并且缓存大量的系统资源,能够提高数据和图像的处理性能;b)大量的处理工作,都在本地计算机中完成,能够有效减轻服务器的压力[4]。然而,在实际的使用过程中,却发现C/S架构的发酵上位机软件存在以下问题:a)客户端软件的运行依赖于本地数据库管理软件(如MySQL[5]),而数据库管理系统的安装和配置流程复杂,普通用户难以完成;b)用户所用计算机的操作系统版本存在差异,进一步加剧了客户端软件安装的难度;c)客户端软件具有较强的数据和图像处理能力,无法确保任意用户所用计算机的硬件配置能够满足客户端软件运行的需求。
鉴于上述问题,本文拟在嵌入式单板控制机(以树莓派为例)上开发一套基于浏览器/服务器(brower/server, B/S)架构的发酵过程监控及数据管理系统。首先,由于适用于工业用途的树莓派与PC机相比更为便宜,在推广过程中可以直接销售安装有软件系统的树莓派,能够保证硬件配置满足软件运行需求。其次,用户不需要安装客户端软件以及所依赖的数据库管理软件,只需要通过常用的Web浏览器(如IE、Chrome、FireFox等)就可以访问软件系统,完成数据管理和设备操作的功能。再次,树莓派上已安装Raspbian操作系统[6]以方便运维人员远程访问,直接对软件系统进行远程升级,降低了软件维护和升级的成本。
本发酵监控系统采用前后端分离的模式进行设计,如图1所示。系统后端使用基于Python语言的Django框架设计,包括设备通信模块、物联网通信模块、网页应用程序编程接口(Web application programming interface,Web服务器API)和本地数据管理[对象关系映射(object relational mapping, ORM)、数据库结构]。前端页面实现的设计主要使用了较为流行的VUE框架,它基于HTML、CSS、JavaScript 3种计算机语言[7],包括“批次管理”、“数据窗口”、“系统配置”、“用户管理”4个模块。本系统利用树莓派作为后端服务器与发酵设备的数据采集单元进行网络通信,将实时数据存入树莓派的本地数据库中,用户可以通过前端界面写入数据对发酵设备进行实时控制。除此之外,本系统还搭建了一套云服务器系统支持本地数据库和云端数据库同步存储,用户可以在任意一个能够访问公网的浏览器下远程监控发酵设备。
图1 系统总体结构
Fig.1 Overall system structure
考虑到发酵周期内采集的大量数据对硬件的处理要求及内存影响,本系统核心模块选用树莓派Raspberry Pi 4B。树莓派4B拥有博通BCM2711核心处理器(四核1.5 GHz,Cortex A72架构),1G LPDDR4运行内存,此外还提供40个外扩GPIO引脚、2个USB 3.0接口和2个USB 2.0接口、1个千兆以太网接口、支持2.4 G/5 G双Wi-Fi等,外部接口极其丰富,而且成本低廉、性能良好。Raspbian是专门用于ARM卡片式计算机树莓派的操作系统,支持Python开发环境,为Python提供大量扩展库,降低了开发成本。
2.2.1 设备通信模块
可编程逻辑控制器(programmable logic controller,PLC),在发酵设备中常用于收集传感器数据和自动化控制[8]。目前,在发酵设备中应用最广泛的PLC型号是德国西门子公司生产的S7系列PLC。针对西门子S7系列PLC,本软件系统的设备通信模块中集成了以下两种设备通信方式:
a)Snap7工具包直接读写PLC寄存器,结合Snap7的文档API和源码分析,使用read_area和write_area这两个方法对PLC变量的寄存器地址进行读写,从而实现对发酵过程参数的监测和控制。Python读写PLC变量的代码如下:
client=self.snap7_write_clients[param_config[0][‘plc’]]
client.write_area(area, db_number, start_db, pack_data)
data = client.read_area(area, db_number, start_db, 1)
b)开放平台通信(open platform communications unified architecture,OPC-UA),使用该种通信方式可以解决设备间的数据交换受限于同一系统的问题,实现跨平台通信[9]。本系统搭载于树莓派(linux系统)中,作为OPC-UA客户端与发酵设备(Windows,Linux,Mac,Android等系统)配套开发的OPC-UA服务器数据交换。
由于不同用户对发酵数据采集和设备控制的需求不同,数据来源可能不仅限于一台设备。例如温度、pH、溶氧等参数由发酵罐上标配的传感器测得,而尾气CO2、O2浓度则来源于发酵尾气分析仪。因此,为了提高软件系统的通用性和兼容性,设计了与Redis缓存数据库的通信方式。可以通过个性化开发的通信插件,以Redis数据库作为中转连接多种周边设备。具体通信流程如图2 所示。
图2 通信流程
Fig.2 Communication workflow
2.2.2 物联网通信
消息队列遥测传输协议(message queuing telemetry transport,MQTT),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议[10],该协议构建于TCP/IP协议上。MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。如果多台远程客户端同时访问一台设备时,全部从设备本身直接请求数据,将会导致树莓派所承载的本地服务器程序负载过重。因此,本软件采用MQTT协议将本地服务器实时数据推送至云端服务器。当远程客户端请求数据时,将直接从云端获取,这一设计能够有效减轻本地服务器的工作负担。除发送实时数据外,本系统还在MQTT服务器上建立了用户对设备的各类操作相对应的主题(topic),例如监控发酵设备、启停发酵批次、上传离线数据等操作。每当本地或云端服务器向指定topic发布了一个操作消息,所有订阅该topic的用户都会在系统的前端界面查看到相应变化,由此实现本地数据与云端数据的同步。
2.2.3 Web服务器API
Django是基于Python的Web服务器开发框架,采用了MVT的框架模式(图3),即模型(model),视图(view)和模版(template)[11]。本系统采用Django框架开发后端服务器,在View层编写API,用户在前端显示界面的交互操作均需通过调用后端API实现。为了进一步降低系统的耦合度,API分为以下类别:a)与用户相关的API,负责用户的增添和删减、登录和退出、权限分配以及修改密码等操作;b)与设备相关的API,负责用户查看设备连接状况、设备实时数据以及更改设备参数值等操作;c)与批次命名字段相关的API,负责用户根据实际生产情况增删改查发酵批次信息的操作;d)与数据采集相关的API,负责用户增删改查所需监控参数配置的操作;e)与批次相关的API,负责用户建立、启动、停止、检索发酵批次的操作;f)与实时数据相关的API,负责用户查看实时曲线和上传离线数据的操作;g)与历史数据相关的API,负责用户查看历史批次的数据报表和曲线分析的操作。云端系统的API同样按照上述类别编写,因此,远程用户可以在云端的前端界面用以操作本地系统相同的方式操作云端。
图3 MVT框架图
Fig.3 MVT framework
2.2.4 本地数据管理(ORM、数据库结构)
本系统在Django框架的Model层,即负责数据的存取方式和数据之间的关系的过程中,使用内嵌的ORM框架[12],将编写的每一个类和数据库中的每一个表一一对应。类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。通过ORM框架的映射作用,帮助开发人员减少了对SQL语句的编写并加强了对业务逻辑处理的专注度,进一步提高了开发效率。
发酵数据库的关联图如图4所示,在发酵过程中,每启动一个发酵批次,产生的数据都会依次按照批次信息、在线数据、离线数据、计算数据和事件记录等存入对应的数据库表格中。采集过程中会根据提前设定好的发酵参数配置来保存数据,包括自定义的参数名如(bailun5L_PH)、自定义的上下限和自定义的精确度。这些数据记录通过batch_id字段相互关联在一起,batch_id的唯一性确保了每条发酵数据的独立性。将具有唯一性的batch_id作为数据表格的主键,有关联的设备信息、用户信息、采集配置和特征字段(比如菌种、部门)设置成数据表格之间的外键。通过这些主键、外键和表格间的关联性,用户可以简单迅速地从本地数据库和云端数据库检索到任意想要的批次。
图4 发酵数据库E-R图
Fig.4 Fermentation database E-R diagram
如果本地模式下因意外导致的批次数据采集中断,那么在树莓派重启发酵系统时会根据数据库中批次信息表格的结束时间(stop_time)是否为空来判断批次是否结束,若为空则会恢复批次采集。
系统功能实现设计了“批次管理”、“数据窗口”、“系统配置”、“用户管理”4个模块,模块组成如图5所示。
图5 前端页面设计
Fig.5 Front-end page design
为了确保在大量的发酵批次中能够快速且准确地检索到目标批次,本系统在新建批次时会根据当前的年、月、日、时、分、秒和微秒组成batch_id。除此之外,在新建批次时还会增加由系统时间自动生成且不可更改的“初始时间”,由用户设定的“采样间隔”(最低间隔为5 s),由用户对该发酵批次特殊标注的“描述”,以及由用户自定义的5个预留字段,例如部门、操作人、验收人、发酵菌种、产品等来帮助用户对发酵批次分类。
数据窗口模块由以下3部分组成:设备状态、数据报表和曲线图展示。
3.2.1 设备状态
设备状态界面中,可展示实时发酵参数值,还可以修改发酵参数(如温度、pH等)的设定值。如果从云端入口访问系统,还可以获取当前被监控和数据共享的设备名。
3.2.2 数据报表
本发酵监控系统的数据报表由3种类型组成,分别为在线参数、离线参数和事件记录。
a)在线参数。由在线传感器检测的发酵过程参数(如pH、溶解氧和温度等),通过设备通信模块和前端用户设定的采样间隔将数据以报表的形式实时展示于本地和云端用户的系统前端界面,并存于本地和云端的数据库中。
b)离线数据。在发酵过程中,由人工取样检测的发酵过程参数(如细胞浓度、葡萄糖浓度、产物酶活等),可以同时存入本地和云端数据库。
c)事件记录。发酵过程中包含多个需要人工操作的时间节点,每个时间节点的操作细节需要以文本形式保存。这类数据在事件记录报表中手动添加、修改、删除。事件记录相关的数据同样在本地和云端数据库中同步保存。
3.2.3 曲线图展示
本系统的曲线图可以展示以下3类数据:实时在线参数、历史在线参数和离线数据。曲线图的展示界面基于以下几个库开发:基于JavaScript语言的Echarts数据可视化库[13];axios动态请求库和PubSub发布订阅库,确保曲线图可以在浏览器中动态更新、流畅运行。在实时监控模块中axios实时请求的数据会优先用于客户端的数据报表展示,曲线图页面再经由PubSub库订阅数据报表获取最新数据作图。通过这种方式,本系统能够避免前端页面对服务器端的重复请求,缓解服务器处理用户请求和数据检索的压力。
批次启动前,可以预先设定好每个参数的归一化参数(上限和下限),解决多参数曲线Y轴的范围不一致的问题,归一化参数也可以在批次启动后自定义修改。在历史在线参数曲线页面中,可以将多批次(包括实时批次)数据绘制在一起,支持多批次的参数比较。当历史和实时曲线绘制在一张图时,曲线展示还具有实时跟随功能。选定一条目标曲线,展示界面始终跟随该曲线而更新,可以实时比较当前批次与目标历史批次的差异,以方便工艺的调整和历史最优批次的复现。离线参数曲线同样支持多批次参数比较,且实时批次曲线可以根据用户手动录入的离线参数(如底物浓度、产物浓度等)同步更新。
以上曲线均可通过修改曲线的颜色、线型(如连续和断点等)以及隐藏与否,实现曲线的区分。
系统配置模块,主要包含批次管理模块中的5个自定义字段和数据采集。不同批次需要采集的在线、离线参数可能各不相同。因此,在新建批次时可以自行选择记录的在线、离线参数,数据展示页面会根据该配置来生成数据报表并绘制曲线图。当发酵参数配置和批次命名字段配置完成后,首先存于本地数据库,之后同步到云端,用户组成员均可使用。
为了控制用户对发酵设备的操作权限数据的管理权限,确保数据安全,本系统设计了树形用户结构和灵活的权限管理机制。系统初始化后会生成唯一的管理员用户,以管理员用户为父用户,可以新建、删除和修改子用户。子用户又可以管理下级子用户,从而形成树形的用户结构。用户权限通过树形用户向下传递,每个用户都可以将自己的设备操作和数据管理权限有选择性地赋予其子用户。
将本发酵监控系统应用于地衣芽孢杆菌BF-002高产芽孢的过程中,对系统的功能和性能进行分析评价。评价结果将从实验批次的数据管理及展示、远程控制和曲线展示3个方面描述。
该实验批次周期为48 h,共采集2 880条数据,每采集360条数据后树莓派发生1 s的采集滞后。通过该实验批次的实时在线参数报表(图6)以及离线数据报表(图7),可以看出本系统能够按照用户的设定间隔记录在线数据。手动添加离线数据的功能可以正常运行,手动录入的离线参数能够在本地和云端同步保存。
图6 实时在线参数报表
Fig.6 Real-time online parameter report
注:此图是地衣芽孢杆菌BF-002发酵过程中的实时在线参数界面,以1 min为周期定时记录传感器监测数据。
图7 离线数据报表
Fig.7 Offline data report
注:此图为地衣芽孢杆菌BF-002发酵过程中的离线参数界面,格式分布与实时在线参数报表界面相似。离线参数报表可编辑,具体操作为点击上方“添加”和“删除”按钮增添或删除下方
离线报表在该时刻的记录,点击某一参数某一时刻的表格项,可以直接修改其中的数据。离线数据同样可以导出为Excel文件。
在该实验批次发酵3 h时远程更改pH设定值为6.96,可以发现实时数据报表中发酵3 h的pH检测值随即改变(图8),响应延时<2 000 ms,设备远程监测与控制功能可以正常运行。
图8 远程设备状态
Fig.8 Remote devices′ status
注:此图为远程设备状态界面,左侧表格展示的是设备监测的发酵参数值,右侧表格展示的是发酵参数的设定值。点击“更改”按钮输入设定值,可实现云端模式下对远程设备的控制。
通过历史批次曲线与该实验批次实时曲线作同步跟随比较(图9),可以发现该实验批次在通气量和搅拌速率相同的条件下,溶解氧浓度(dissolved oxygen, DO)较低,表明该批次菌体的呼吸强度较高。通过对离线参数曲线的比较(图10),可以发现随着碳源和氮源的消耗,细胞持续生长。在性能方面,曲线的首次展示请求时长随着数据量的增大而增大,在48 h后响应时长在3 000~4 000 ms。
图9 实时与历史跟随比较
Fig.9 Real-time and historical follow-up comparison
注:此图为地衣芽孢杆菌BF-002发酵过程中实时曲线与历史曲线的同步跟随页面,图中绘有2个批次的温度、pH、搅拌转速和溶氧的曲线。当实时批次的发酵时间进行到6.057 h时,同步跟随历史批次在该时刻下的曲线,供用户进行实时对比分析。
图10 离线参数曲线
Fig.10 Offline parameter curve
注:此图为地衣芽孢杆菌BF-002发酵过程中实时获取的离线参数曲线,每当在图6(离线数据报表)录入最新时刻的离线数据后即可在离线参数曲线页面点击“更新”按钮获取当前时刻下的最新离线参数曲线。
目前我国生物制造产业已逐步进入数字化工业时代,如何打造设备互联、数据共享的数字化工厂是当前面临的主要问题。本发酵监控系统采用B/S架构技术开发,拥有操作简便、图形丰富、反应灵敏的用户界面,同时减小了服务器资源的浪费,安装与升级操作简便。与传统的基于组态软件开发的发酵罐上位机软件相比,本系统支持云端远程监控并建立了健全完善的数据管理系统,以满足来自客户、监管机构及企业内部日益严苛的质量管理要求。在数据可视化方面,本系统也提供多批次对照、实时批次同步追踪历史等功能,帮助用户可以在问题出现时做出快速有效的响应。此外,本系统具有作为搭载依靠云服务器计算的自动化控制算法平台潜力,在将来能够对发酵过程更好地指导和控制。
[1] 卢涛, 石维忱.我国生物发酵产业现状分析与发展策略[J].生物产业技术, 2019(2):5-8.
LU T, SHI W C.Current situation analysis and development strategy of biological fermentation industry in China[J].Biotechnology &Business, 2019(2):5-8.
[2] 刘力. 组态软件在PLC实验系统中的应用[J].实验室研究与探索, 2014, 33(4):127-129;136.
LIU L.The application of configuration software in PLC experimental system[J].Research and Exploration in Laboratory, 2014, 33(4):127-129;136.
[3] 戴京京, 吕奎, 史仲平.BioJN发酵技术服务系统PC端的设计、开发及应用[J].食品与发酵工业, 2021, 47(3):150-156.
DAI J J, LV K, SHI Z P.Design, development and application of BioJN fermentation technology service system PC terminal[J].Food and Fermentation Industries, 2021, 47(3):150-156.
[4] LI W H, PENG L F.Upgrade ERP from C/S to B/S based on Web service[C]//Proceedings of ICSSSM'05.2005 International Conference on Services Systems and Services Management, 2005.IEEE, 2005, 1:593-597.
[5] 郑智方, 魏恺乐, 李彬, 等.MySQL得到广泛使用的原因以及它的嵌入应用[J].科技, 2020(5):114.
ZHENG Z F, WEI K L, LI B, et al.Reasons for the widespreaduse of MySQL and its embedded applications[J].Technology Wind, 2020(5):114
[6] PEREIRA R I S, DUPONT I M, CARVALHO P C M, et al.IoT embedded linux system based on Raspberry Pi applied to real-time cloud monitoring of a decentralized photovoltaic plant[J].Measurement, 2018, 114:286-297.
[7] 王伊, 王韶红, 刘晋泽, 等.Vue.js与Django组合框架的网络社交系统单页面架构方案设计[J].信息技术与信息化, 2020(1):121-123.
WANG Y, WANG S H, LIU J Z, et al.Vue.js and Django combined framework for web social system single page architecture solution design[J].Information Technology and Informatization, 2020(1):121-123.
[8] 王建荣, 陈斌.基于PLC的工业物联网云平台研究与设计[J].自动化与仪器仪表, 2022(7):104-107.
WANG J R, CHEN B.Research and design of industrial IoT cloud platform based on PLC[J].Automation &Instrumentation, 2022(7):104-107.
[9] STOOP F, ELY G, MENNA R, et al.Smart factory equip-ment integration through standardised OPC UA communication with companion specifications and equipment specific information models[J].International Journal of Mechatronics and Manufacturing Systems, 2019, 12(3-4):344-364.
[10] 陈文艺, 梁宁宁, 杨辉.基于MQTT的物联网网关双向通信系统设计[J].传感器与微系统, 2022,41(8):100-103.
CHEN W Y, LIANG N N, YANG H.Design of two-way communication system of IoT gateway based on MQTT[J].Transducer and Microsystem Technologies, 2022,41(8):100-103.
[11] 陈衍鹏, 杜家兵.基于Django框架管理界面自动生成模块的设计与实现[J].自动化与仪器仪表, 2018(5):109-111;115.
CHEN Y P, DU J B.Design and implementation of automatic generation module based on Django framework management interface[J].Automation &Instrumentation, 2018(5):109-111;115.
[12] 吴俊锋. 基于Django的高性能地学计算Web系统的设计与实现[D].电子科技大学, 2016.
WU J F.Design and implementation of web system for HPGC based on Django[D].University of Electronic Science and Technology of China, 2016.
[13] 王子毅, 张春海.基于ECharts的数据可视化分析组件设计实现[J].微型机与应用, 2016, 35(14):46-48;51.
WANG Z Y, ZHANG C H.Design and implementation of a data visualization analysis component based on ECharts[J].Microcomputer &Its Applications, 2016, 35(14):46-48;51.