发酵工业作为生物产业的重要组成部分,与人民日常生活息息相关,是国民经济中非常重要的产业[1]。随着工业生物技术的发展,工业发酵数据的数量和复杂性与日俱增,但大多数发酵工厂却依旧采用老旧的发酵操作模式:过于依赖人力,导致生产效率低下、数据管理方式落后,离线数据主要以纸质文件或Excel表格的形式保存,在线数据则以计算机自动记录的文本文件或组态软件内置的小型数据库文件保存。大量的发酵数据杂乱地堆砌在一起,难以进行合理的分类以及高效的查找与展示,想要利用历史数据指导发酵生产更是无从谈起。但是发酵生产积累的大量数据包含了发酵优化的重要信息,合理有效地管理和分析发酵历史数据对改进企业的发酵工艺、降低生产成本、提高生产的稳定性具有重要指导意义。因此,开发一套软件系统帮助发酵技术人员高效地管理、分析和利用发酵数据势在必行[2]。
为了解决上述难题,国内外各发酵罐生产厂商纷纷开发了与产品配套的上位机软件,各软件各具优劣。组态软件是目前比较主流的发酵上位机软件开发工具,为发酵上位机软件提供强大的数据采集及发酵设备控制功能[3]。然而组态软件在复杂的数据运算功能上有所欠缺,且其内置的实时数据库功能较弱,已渐渐满足不了发酵技术人员的需求。因此,已有开发人员利用高级编程语言设计单机封闭式的发酵上位机软件系统,以弥补组态软件的不足之处,如华东理工大学自主研发的Biosoft发酵之星软件包[4]、江南大学发酵过程控制研究团队自主研发的“百仑慧神”发酵数据采集及分析系统[2],已在发酵企业中得到应用。
随着互联网技术的快速发展,人类已经进入了大数据和人工智能时代,传统的发酵工业也需要进行工业互联网技术变革。纵观发酵上位机软件市场,组态软件开发的发酵上位机软件已逐渐失去市场,由高级编程语言设计的发酵上位机软件逐渐成为主流。基于以上背景,研究机构以及发酵工厂对发酵设备上位机软件应有以下功能需求:(1)上位机软件应具有通用性,通过简单的设置,即可从绝大多数发酵设备中采集数据并对其实施控制;(2)具备严格的用户管理权限功能,管理员可以灵活地管理每个用户所有的数据操作权限;(3)完善的历史数据管理和分析功能,用户可以根据预设的条件快速检索到目标批次,并对数据进行分析比较;(4)具有灵活强大的数据可视化功能和美观的可视化界面,用户可以根据自己的实际需求调整展示数据的内容和界面样式;(5)具有远程监控功能,用户可以随时随地对发酵状态实施监测和控制。
根据上述需求,本团队已经开发完成了相应的服务器程序,并提供相关的应用程序编程接口(application programming interface,API)。本研究将利用API开发直接面向发酵技术人员的PC端程序。
BioJN系统PC端软件共设计了4个模块:“批次管理”、“数据窗口”、“系统配置”和“用户管理”,模块功能如图1所示。
图1 系统功能模块
Fig.1 Client function module
2.1.1 批次管理功能设计
新建一个实时批次时,系统会自动生成一个与发酵批次一一对应的batch_id,是由点击“新建批次”按钮时的年、月、日、时、分、秒和微秒所组成,进而确保了batch_id的唯一性。此外,发酵批次信息还包含几个额外的字段:“批次名称”字段可供用户为发酵批次取名;“描述”字段要求用户输入一段描述发酵批次的文本;“起始日期”字段为批次的起始年月日,系统自动生成,不可以修改;“采样间隔”字段要求用户设定采集实时数据的周期,最低可以设置为30 s;“发酵罐”字段则要求用户选择发酵批次所对应的发酵设备。除了上述5个通用字段之外,系统还预留了5个自定义字段,在系统控制模块中的字段设置部分,用户可以根据实际情况自由定义字段的名称及内容选项。
以上所述的批次信息以及发酵过程中采集到的在线数据、录入的离线数据及操作记录等信息,系统都会在本机数据库和云端数据库中同步存储。只要是在用户权限内的历史批次,都可以通过设置批次字段信息的查找条件,在数据库批次信息中进行检索。检索到的批次可以在数据窗口模块查看数据、对比数据和绘制曲线,也可将数据导出为Excel文件。这种设计实现了云端发酵数据的共享,便于发酵技术人员管理不同生产现场的数据。
2.1.2 数据窗口功能设计
数据窗口模块主要分为3个部分:设备状态、数据报表和曲线展示:
(1)设备状态。包含在线参数的实时显示和对设备的直接控制2个功能。
(2)数据报表。BioJN系统PC端中的发酵数据主要分为3种类型,即在线数据、离线数据和事件,分别采用以下处理方式:
①在线数据:对于可以直接用传感器检测到的在线参数(如溶解氧、pH和温度等),通过通信模块的数据接口按采样间隔将最新的数据采集到系统,存于数据库中并以网格数据报表的形式展示给用户。
②离线数据:发酵过程中,有些参数难以在线测量,如细胞浓度、蛋白浓度和酶活性等,这些离线数据提供了有用信息,可以很好地显示发酵的水平[5]。用户可以将这类数据手工录入离线数据网格报表中,系统将其自动存于数据库中。
③事件:发酵过程的一些特定操作记录和突发事件的信息也是很重要的。用户同样可以将这些记录手工录入事件网格报表中,其文本类型的数据也会保存到数据库中。
以上这些发酵数据存于本地数据库的同时,系统会将其同步至云服务器数据库,用于数据共享和远程监控。
(3)曲线展示。将采集到的发酵参数通过Matplotlib进行可视化处理。Matplotlib是Python语言中应用最广泛的第三方数据可视化库,充分利用了Python数值计算包快速精确的矩阵运算能力,具有良好的作图能力[6-7]。
曲线图的X轴为时间轴,可以是发酵时间或采样时间,用户可以按需求切换。发酵参数值作为Y轴,由于不同参数的单位与数量级各不相同,因此把Y轴的参数数值做归一化处理(0~100%),这样就解决了绘制多条参数曲线时Y轴不统一的问题。
用户可以根据本地或云端的发酵数据,灵活地绘制曲线图,下面介绍3种常用绘制方式:(1)进行实时发酵时,选择关键参数进行曲线绘制,曲线图会随着发酵时间进行自动更新;(2)同时绘制多个历史批次的关键参数于同一曲线图中,用户可以根据参数的变化规律对发酵过程进行分析;(3)将生产率较高的历史批次与实时批次的关键参数绘制在同一张曲线图中,进行对照。同时,当绘制多条参数曲线在一张曲线图时,系统提供了曲线的自定义功能,用户可以通过修改曲线的颜色、线型(如实线和短划线等)、宽度和参数点的标识符,实现对曲线的区分。
2.1.3 系统配置功能设计
系统配置模块包含2个部分,一个是上述批次管理模块中自定义字段的配置,另一个是发酵参数的配置,数据展示模块会根据发酵参数配置来绘制数据网格报表。发酵参数配置和字段配置完成后保存于数据库并同步到云端,供系统运行时读取。
2.1.4 用户管理功能设计
为了保护各级用户的数据隐私,设计了用户管理模块,分为用户和权限2个部分。
用户:系统自带拥有最大权限的管理员用户,以管理员用户为父用户,可以新建、删除和修改子用户。
权限:父用户权限包含子用户的所有权限,子用户权限则继续向下延伸,当子用户需要查看上级某批次数据时,父用户可以将对应批次权限赋予给子用户。
基于上述等级分明的用户机制和灵活的权限管理机制,为发酵企业提供高效、安全的发酵数据管理平台。
MySQL是一款面向大众、开源的关系型数据库,也是一个多线程数据库,可以快速、高效地处理大量数据,而且操作简单,初学者可以很快上手,因此MySQL被广泛应用于中小型初创公司[8-9]。
综合发酵数据的特征以及MySQL关系型数据库的特性,设计了通用型发酵数据库系统。发酵过程中的数据参数关联性和规律性强,根据数据之间的关系设计若干数据表,分别用于存储参数值、配置信息、文字、控制点等不同类型的发酵数据。以主键连接外键的形式,关联起各个数据表,依靠数据表之间的关联性实现高效地数据管理。该数据库系统部署于本地计算机,并需要于云服务器同步数据,这是发酵数据共享与远程监控的关键环节。数据库E-R图如图2所示,展示数据库的关系结构。
图2 数据库E-R图
Fig.2 Database E-R diagram
BioJN系统采用3种数据通信接口进行数据采集,包括DDE接口、OPC DA接口和OPC UA接口。
DDE是Windows提供的一种动态数据交换机制(dynamic data exchange,DDE),可以实现2个程序之间的数据交换[10]。
OPC(object linking and embedding for process control)通信规范标准包含多种访问规范:OPC实时数据访问规范(OPC DA)、OPC历史数据访问规范(OPC HDA)和OPC报警事件访问规范(OPC AE)等[11-12]。BioJN系统PC端则可以通过OPC DA实现对设备的数据访问。
OPC基金会于2008年在以前的基础上推出了一个新的OPC标准-OPC UA(OPC unified architecture)[13]。BioJN系统PC端的通信模块同样支持OPC UA标准。
由于发酵罐来源于不同厂商,其下位机服务器的类型及通信参数的配置也各不相同。为了使通信模块可以与不同发酵设备建立连接并采集数据,将键-值(key-value)对形式描述的服务器类型和参数以JSON(Java Script Object Notation)格式存储于JSON文件中。当系统运行时,通信模块会从指定路径下的JSON配置文件中读取信息与对应服务器建立连接,进行数据采集。具体通信流程如图3所示。
图3 通信流程
Fig.3 Communication process
利用MySQL数据库管理软件按照图2所示的表格结构搭建通用型发酵数据库,发酵数据库需部署于运行PC端程序的本地计算机之上。
整个PC端程序完全使用开源的、跨平台计算机程序设计语言Python 3.6[14]来开发,各功能模块分别使用不同的Python扩展库实现:(1)图形用户界面采用Python中优秀的图形用户界面(graphical user interface,GUI)wx Python库[15]实现;(2)OPC通信使用Open OPC库实现;(3)DDE通信由调用.NET平台动态链接库文件间接实现;(4)数据可视化采用Matplotlib库实现;(5)远程控制指令转发采用paho-mqtt库实现。与此同时,PC端程序采用多线程编程方式开发,避免了单线程编程中CPU被占用导致的主程序堵塞的状况,提高了CPU的利用率[16],使系统运行更加流畅。
将BioJN系统的PC端程序应用于富硒酵母培养的过程中,来验证其功能及稳定性。BioJN系统PC端的应用流程如图4所示,接下来将从数据管理及展示、绘制曲线图和远程监控与控制这3个功能来描述BioJN系统PC端的应用过程和结果。
图4 系统PC端应用流程图
Fig.4 System application flow chart
在发酵过程中打开“在线数据报表”进行在线实时数据监控(图5)。用户可以将测量的离线数据录入“离线数据报表”(图6),同时也可以打开事件管理界面,录入事件记录的操作与离线数据操作相同(图7)。
图5 在线数据报表
Fig.5 Online data report
注:此图为发酵过程中实时数据显示界面,已打开的发酵批次显示在界面左上角的下拉框中,用户可以选择批次进行查看,与之对应的在线数据则在右侧表格中随着发酵的进行按照采样间隔进行自动更新,通过左侧的“表格导出”按钮可以将表格中的在线数据导出成Excel文件。
图6 离线数据报表
Fig.6 Offline data report
注:此图为发酵过程中离线数据显示界面,整体布局与在线数据界面类似,唯一不同的是,右侧数据表格是可编辑的,用户可以通过左侧“添加采样点”和“移除采样点”按钮添加或删除右侧离线数据记录,并且直接点击表格单元格可以修改其中内容。离线数据同样可以导出成Excel文件。
将发酵过程的在线数据和离线数据绘制成曲线图,可以实时观察发酵趋势(图8),作出精准工艺控制,并可以与历史发酵批次同时作图,通过比较参数变化来分析发酵批次之间的共性和差异(图9)。
在发酵过程中,可以从其他连接到互联网的计算机上,远程监控实时发酵批次。通过BioJN系统PC端“设备状态”中的远程连接功能连接运行中的发酵批次发酵批次。连接成功后,此次发酵批次的数据就会从云端服务器中加载到本地BioJN系统PC端的内存中,然后就可以通过上述数据窗口模块查看该批次的在线数据报表、离线数据报表和远程事件记录,并绘制曲线图。此外,还可以通过连接后的远程设备状态界面远程控制该批次的发酵参数,如图10所示。
图7 事件管理界面
Fig.7 Event management interface
注:此图为事件管理界面,用户打开的批次显示在左侧列表中,
通过选中不同批次,实现右侧事件表格的切换。事件表格的具体
操作与离线数据表格一样,且事件记录也可以导出成Excel文件。
图8 实时曲线图
Fig.8 Real time curves
注:此图为实时曲线界面,图中有4条参数曲线,分别为溶氧曲线、光密度曲线、搅拌曲线和葡萄糖浓度曲线,在线参数曲线会随着数据的采集进行自动更新。同时也添加了游标功能,游标跟着鼠标悬停的位置,于右侧显示鼠标所处位置的参数值。除此之外,工具栏还提供了曲线的缩放、移动、保存和初始化功能。
图9 历史曲线图
Fig.9 Historical curves
注:此图是历史曲线图界面,图中绘有2个批次的
溶氧曲线和光密度曲线供用户进行对比分析。
图10 远程设备状态
Fig.10 Remote tank status
注:此图为远程设备状态界面,连接此次发酵批次后,就会进入该批次的远程设备状态界面,表格中黄色单元格显示的是发酵参数值,
绿色单元格显示的则是参数设定值,通过双击绿色单元格,可以修改参数设定值,然后通过云端服务器实现对远程设备的控制。
本研究所开发的PC端程序是BioJN发酵技术服务系统的重要组成部分之一。目前,完整的BioJN发酵技术服务系统已经进入市场化阶段,且已在科研机构和发酵工厂投入使用,能为发酵技术人员提供相对完整的数据采集、数据管理、发酵过程监测与控制、批次管理以及用户权限管理等功能。然而,BioJN发酵技术服务系统仍然存在诸多的不足之处:(1)系统功能更多地偏重于数据管理,数据分析功能较弱,仅支持批次间发酵数据间的比较;(2)工艺控制功能偏弱,只能支持从本地或远程直接修改发酵参数的设定值,而无法自动执行复杂的预设工艺流程。基于上述不足,本团队将在以下几个方面对BioJN发酵技术服务系统进行改进:(1)将BioJN发酵技术服务系统作为一个可扩展的软件平台,预留发酵数据分析和工艺控制扩展软件包的接口;(2)用户使用现有版本的软件系统将会获取大量宝贵的原始数据,本团队将基于这些数据为用户开发个性化的数据分析和工艺控制软件包,并将这些扩展软件包从系统的扩展接口接入。
BioJN系统PC端拥有简单明了的GUI、关联性强的数据库管理系统以及高通用性的通信模块。相比较基于组态软件开发的上位机软件,本系统在数据管理与数据可视化方面更具优势。与其他同为高级编程语言设计的发酵上位机软件相比,本系统在满足基本功能稳定性的同时,基于本团队已经搭建好的服务器程序开发了PC端发酵远程监控与控制功能。用户可以使用本系统实现发酵数据的高效管理,可以利用数据可视化功能指导发酵生产,也可以利用远程功能更好地监控和控制发酵过程。
[1] 程辉,邵惠鹤.生物发酵装置上位机软件的开发和设计[J].自动化仪表,2005(1):49-51.
CHENG H,SHAO H H.Development and design of the software in host computerof biological fermentation device[J].Process Automation Instrumentation,2005(1):49-51.
[2] 张劲楠,丁健,严建,等.“百仑慧神”发酵数据采集/分析系统的设计及应用[J].食品与发酵工业,2019,45(2):107-112.
ZHANG J N,DING J,YAN J,et al.Design and application of“Bai Lun Hui Shen”data collection /analysissystem for fermentation industry[J].Food and Fermentation Industries,2019,45(2):107-112.
[3] 刘力.组态软件在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.
[4] http://www.nc-bio.com/products/reconstruction-projects/352.html[EB/OL]
[5] 陈亚华,王树青.用数据驱动实现的抗生素发酵过程监控软件[J].计算机工程与应用,2004(29):223-225.
CHI Y H,WANG S Q.The software of antibiotic fermentation monitoring based on data-driven[J].Computer Engineering and Applications,2004(29):223-225.
[6] 范丽.基于Python的数据可视化[J].电子世界,2020(8):52-53.
FAN L.Python-based data visualization[J].Electronics World,2020(8):52-53.
[7] 马佳琪,滕国文.基于Matplotlib的大数据可视化应用研究[J].电脑知识与技术,2019,15(17):18-19.
MA J Q,TENG G W.Big data visualization application research based on Matplotlib[J].Computer Knowledge and Technology,2019,15(17):18-19.
[8] DANIJELA M,SeLVER P,MUZAFER S,et al.Weighted moore-penrose generalized matrix inverse:MySQL vs.Cassandra database storage system[J].Sādhanā,2016,41(8):1-10.
[9] 郑智方,魏恺乐,李彬,等.MySQL得到广泛使用的原因以及它的嵌入应用[J].科技风,2020(5):114.
ZHENG Z F,WEI K L,LI B,XIE Y Z.Reasons for the widespread use of MySQL and its embedded applications[J].Technology Wind,2020(5):114.
[10] 唐东明,李磊民.DDE技术在Lon Works控制系统中的应用[J].电子测量技术,2007(1):123-124;127.
TANG D M,LI L M.Application of DDE in the Lon Works system[J].Electronic Measurement Technology,2007(1):123-124;127.
[11] 张建武,高国琴.OPC客户/服务器模型设计[J].计算机仿真,2005(4):152-154;171.
ZHANG J W,GAO G Q.OPC client/server model design[J].Computer Integrated Manufacturing Systems,2005(4):152-154;171.
[12] 周新民,涂铮.基于OPC技术的PC与S7-200 PLC的实时通信[J].武汉理工大学学报(交通科学与工程版),2008(2):354-357.
ZHOU X M,TU Z.Distribution regularity analysis of ship arrivaland department at the Tianjin port main channel[J].Journal of Wuhan University of Technology,2008(2):354-357.
[13] FABIAN S,GERALD E,ROBERT M,et al.Smart factory equipment 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.
[14] OZGUR C,COLLIAU T,ROGERS G,et al.MatLab vs.Python vs.R[J].Journal of Data Science,2017,15(3):355-372.
[15] 王宝,全雪贞.ArcPy与WxPython在地理国情普查数据检查中的应用[J].中国科技信息,2016(23):42-43;45;12.
WANG B,QUAN X Z.Application of arcPy and WxPython in geographic census data inspection[J].China Science and Technology Information,2016(23):42-43;45;12.
[16] 吕光帅,朱江华,潘丰.基于VC的发酵过程监控与状态预估软件开发[J].微计算机信息,2006(2):182-184.
LÜ G S,ZHU J H,PAN F.Design of ferment process monitoring and state prediction software based on VC[J].Microcomputer Information,2006(2):182-184.