戴京京,呂奎,史仲平
(江南大學 生物工程學院 工業生物技術教育部重點實驗室,江蘇 無錫,214122)
發酵工業作為生物產業的重要組成部分,與人民日常生活息息相關,是國民經濟中非常重要的產業[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端發酵遠程監控與控制功能。用戶可以使用本系統實現發酵數據的高效管理,可以利用數據可視化功能指導發酵生產,也可以利用遠程功能更好地監控和控制發酵過程。