◎ 范灼航
(廣東省儲備糧管理總公司東莞直屬庫,廣東 東莞 523000)
保障國家糧食安全是一個永恒的課題,任何時候這根弦都不能松。抓好糧食物流的信息化建設(shè)是保障國家糧食安全的重要一環(huán)。其中,糧食物流作業(yè)流程信息記錄的電子化有利于提高生產(chǎn)作業(yè)管理的精細化水平。
為此,在基于InTouch 的糧食物流輸送控制系統(tǒng)中,與MySQL 數(shù)據(jù)庫進行連接及數(shù)據(jù)交互,實現(xiàn)了自動記錄生產(chǎn)作業(yè)流程的路線、啟動時間、停止時間、日期、流程號等作業(yè)信息的功能,并可在InTouch 中進行查詢顯示。
InTouch 是一種工業(yè)自動化組態(tài)軟件,用于可視化和控制工業(yè)生產(chǎn)過程,是一個開放、可擴展的人機界面,為定制應(yīng)用程序設(shè)計提供了靈活性,同時為工業(yè)中的各種自動化設(shè)備提供了連接能力[1-2]。
MySQL 是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),使用標準的SQL 數(shù)據(jù)語言形式,可允許運行于多個系統(tǒng)上,并支持多種編程語言,包括C、C++、Python、Java、Perl、PHP、Ruby 等[3-4]。
開放數(shù)據(jù)庫連接(Open Database Connectivity,ODBC)為異構(gòu)數(shù)據(jù)庫訪問提供統(tǒng)一接口,允許應(yīng)用程序以SQL 為數(shù)據(jù)存取標準,存取不同DBMS 管理的數(shù)據(jù)[5-6]。
InTouch 通過向ODBC 發(fā)送數(shù)據(jù)庫操作指令,實現(xiàn)對MySQL 數(shù)據(jù)庫中的數(shù)據(jù)列表進行插入新數(shù)據(jù)行、更新數(shù)據(jù)信息、查詢數(shù)據(jù)信息等操作,其數(shù)據(jù)交互如圖1 所示。

圖1 數(shù)據(jù)交互示意圖
InTouch 與SQL 交互需在InTouch 中建立綁定列表,變量標記名需與SQL 數(shù)據(jù)表中的列名一一對應(yīng),實現(xiàn)流程信息自動記錄的綁定列表配置,如表1 所示[7-8]。

表1 InTouch 與SQL 綁定列表配置表
在InTouch 中,通過觸發(fā)腳本程序的形式實現(xiàn)流程信息的自動記錄,其設(shè)計思路如圖2 所示。

圖2 流程信息自動記錄設(shè)計思路圖
系統(tǒng)上電運行后,判斷流程是否啟動,當作業(yè)流程啟動時,觸發(fā)SQL 插入表腳本程序,依次完成連接ODBC、發(fā)送SQL 插入語句、記錄唯一序號、斷開ODBC 的操作,實現(xiàn)記錄流程啟動日期、時間、流程號等信息;當作業(yè)流程停止時,觸發(fā)SQL 更新表腳本程序,依次完成連接ODBC、發(fā)送SQL 更新語句、斷開ODBC 的操作,實現(xiàn)記錄該次流程的停止日期及時間。流程信息自動記錄腳本代碼如下:


當流程運行變量標志R1_STR_OK_REAL 為1 時,即流程啟動時,對相關(guān)信息變量進行賦值,通過函數(shù)SQLConnect()連接指定的數(shù)據(jù)庫成功后,通過函數(shù)SQLInsert()按InTouch 的綁定表“PLC_RECORD_STR”執(zhí)行插入新數(shù)據(jù)行的命令,插入新數(shù)據(jù)行完成后,將該新數(shù)據(jù)行的唯一序號賦值到變量PLC_RECORD_ID_R1 中,最后斷開數(shù)據(jù)庫連接,完成記錄流程啟動的相關(guān)信息。
當流程運行變量標志R1_STR_OK_REAL 為0時,即流程停止時,對相關(guān)變量進行賦值后,通過函數(shù)SQLConnect()連接指定的數(shù)據(jù)庫成功后,通過函數(shù)SQLUpdate()按流程記錄唯一序號的變量PLC_RECORD_ID_R1 進行檢索,并按InTouch 的綁定表“PLC_RECORD_STP”執(zhí)行更新數(shù)據(jù)行的命令,完成后斷開數(shù)據(jù)庫連接,完成記錄該條流程停止的相關(guān)信息。
實現(xiàn)流程信息查詢的綁定列表配置如表2 所示。

表2 InTouch 與SQL 綁定列表配置表
在InTouch 中通過窗口按鈕觸發(fā)程序的形式實現(xiàn)流程信息查詢,其設(shè)計思路如圖3 所示。

圖3 流程信息查詢設(shè)計思路圖
系統(tǒng)上電運行后,判斷查詢信息按鈕是否按下,當按下查詢流程信息按鈕時,觸發(fā)流程信息查詢程序,依次完成連接ODBC、發(fā)送SQL 查詢語句、根據(jù)查詢結(jié)果編譯表格控件、斷開ODBC 的操作,其中表格控件按(1,0)、(1,1)、(1,2)…(n,6)的陣列順序依次編譯。流程信息查詢代碼如下:


按下流程信息查詢按鈕,連接數(shù)據(jù)庫成功后,通過函數(shù)SQLSelect()按InTouch 的綁定表“LC”按檢索條件查詢數(shù)據(jù)行,設(shè)置表格控件列表的表頭為“序號|日期|流程號|流程信息|開機時間|停機時間”。
先按(1,0)、(1,1)、(1,2)、(1,3)、(1,4)、(1,5)的順序依次編寫單元格內(nèi)容為查詢結(jié)果第一條數(shù)據(jù)中的“數(shù)據(jù)序號”“開機日期”“流程號”“流程信息”“開機時間”及“停機時間”。完成第一條數(shù)據(jù)的單元格內(nèi)容編寫后,轉(zhuǎn)至第二條數(shù)據(jù)并開始編寫第二行,按順序循環(huán)執(zhí)行至查詢結(jié)果列表的最后一行,完成查詢流程信息及編寫表格控件的操作。實現(xiàn)流程信息的便捷查詢。
完成程序設(shè)計調(diào)試后,系統(tǒng)能實現(xiàn)自動記錄流程作業(yè)信息的功能,InTouch 實現(xiàn)便捷查詢流程信息功能,數(shù)據(jù)庫數(shù)據(jù)如表3,InTouch 查詢流程信息功能如圖4。

圖4 InTouch 查詢流程信息功能圖