◎ 范灼航
(廣東省儲備糧管理總公司東莞直屬庫,廣東 東莞 523000)
保障國家糧食安全是一個(gè)永恒的課題,任何時(shí)候這根弦都不能松。抓好糧食物流的信息化建設(shè)是保障國家糧食安全的重要一環(huán)。其中,糧食物流作業(yè)流程信息記錄的電子化有利于提高生產(chǎn)作業(yè)管理的精細(xì)化水平。
為此,在基于InTouch 的糧食物流輸送控制系統(tǒng)中,與MySQL 數(shù)據(jù)庫進(jìn)行連接及數(shù)據(jù)交互,實(shí)現(xiàn)了自動記錄生產(chǎn)作業(yè)流程的路線、啟動時(shí)間、停止時(shí)間、日期、流程號等作業(yè)信息的功能,并可在InTouch 中進(jìn)行查詢顯示。
InTouch 是一種工業(yè)自動化組態(tài)軟件,用于可視化和控制工業(yè)生產(chǎn)過程,是一個(gè)開放、可擴(kuò)展的人機(jī)界面,為定制應(yīng)用程序設(shè)計(jì)提供了靈活性,同時(shí)為工業(yè)中的各種自動化設(shè)備提供了連接能力[1-2]。
MySQL 是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),使用標(biāo)準(zhǔn)的SQL 數(shù)據(jù)語言形式,可允許運(yùn)行于多個(gè)系統(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ù)存取標(biāo)準(zhǔn),存取不同DBMS 管理的數(shù)據(jù)[5-6]。
InTouch 通過向ODBC 發(fā)送數(shù)據(jù)庫操作指令,實(shí)現(xiàn)對MySQL 數(shù)據(jù)庫中的數(shù)據(jù)列表進(jìn)行插入新數(shù)據(jù)行、更新數(shù)據(jù)信息、查詢數(shù)據(jù)信息等操作,其數(shù)據(jù)交互如圖1 所示。
圖1 數(shù)據(jù)交互示意圖
InTouch 與SQL 交互需在InTouch 中建立綁定列表,變量標(biāo)記名需與SQL 數(shù)據(jù)表中的列名一一對應(yīng),實(shí)現(xiàn)流程信息自動記錄的綁定列表配置,如表1 所示[7-8]。
表1 InTouch 與SQL 綁定列表配置表
在InTouch 中,通過觸發(fā)腳本程序的形式實(shí)現(xiàn)流程信息的自動記錄,其設(shè)計(jì)思路如圖2 所示。
圖2 流程信息自動記錄設(shè)計(jì)思路圖
系統(tǒng)上電運(yùn)行后,判斷流程是否啟動,當(dāng)作業(yè)流程啟動時(shí),觸發(fā)SQL 插入表腳本程序,依次完成連接ODBC、發(fā)送SQL 插入語句、記錄唯一序號、斷開ODBC 的操作,實(shí)現(xiàn)記錄流程啟動日期、時(shí)間、流程號等信息;當(dāng)作業(yè)流程停止時(shí),觸發(fā)SQL 更新表腳本程序,依次完成連接ODBC、發(fā)送SQL 更新語句、斷開ODBC 的操作,實(shí)現(xiàn)記錄該次流程的停止日期及時(shí)間。流程信息自動記錄腳本代碼如下:
當(dāng)流程運(yùn)行變量標(biāo)志R1_STR_OK_REAL 為1 時(shí),即流程啟動時(shí),對相關(guān)信息變量進(jì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)信息。
當(dāng)流程運(yùn)行變量標(biāo)志R1_STR_OK_REAL 為0時(shí),即流程停止時(shí),對相關(guān)變量進(jìn)行賦值后,通過函數(shù)SQLConnect()連接指定的數(shù)據(jù)庫成功后,通過函數(shù)SQLUpdate()按流程記錄唯一序號的變量PLC_RECORD_ID_R1 進(jìn)行檢索,并按InTouch 的綁定表“PLC_RECORD_STP”執(zhí)行更新數(shù)據(jù)行的命令,完成后斷開數(shù)據(jù)庫連接,完成記錄該條流程停止的相關(guān)信息。
實(shí)現(xiàn)流程信息查詢的綁定列表配置如表2 所示。
表2 InTouch 與SQL 綁定列表配置表
在InTouch 中通過窗口按鈕觸發(fā)程序的形式實(shí)現(xiàn)流程信息查詢,其設(shè)計(jì)思路如圖3 所示。
圖3 流程信息查詢設(shè)計(jì)思路圖
系統(tǒng)上電運(yùn)行后,判斷查詢信息按鈕是否按下,當(dāng)按下查詢流程信息按鈕時(shí),觸發(fā)流程信息查詢程序,依次完成連接ODBC、發(fā)送SQL 查詢語句、根據(jù)查詢結(jié)果編譯表格控件、斷開ODBC 的操作,其中表格控件按(1,0)、(1,1)、(1,2)…(n,6)的陣列順序依次編譯。流程信息查詢代碼如下:
按下流程信息查詢按鈕,連接數(shù)據(jù)庫成功后,通過函數(shù)SQLSelect()按InTouch 的綁定表“LC”按檢索條件查詢數(shù)據(jù)行,設(shè)置表格控件列表的表頭為“序號|日期|流程號|流程信息|開機(jī)時(shí)間|停機(jī)時(shí)間”。
先按(1,0)、(1,1)、(1,2)、(1,3)、(1,4)、(1,5)的順序依次編寫單元格內(nèi)容為查詢結(jié)果第一條數(shù)據(jù)中的“數(shù)據(jù)序號”“開機(jī)日期”“流程號”“流程信息”“開機(jī)時(shí)間”及“停機(jī)時(shí)間”。完成第一條數(shù)據(jù)的單元格內(nèi)容編寫后,轉(zhuǎn)至第二條數(shù)據(jù)并開始編寫第二行,按順序循環(huán)執(zhí)行至查詢結(jié)果列表的最后一行,完成查詢流程信息及編寫表格控件的操作。實(shí)現(xiàn)流程信息的便捷查詢。
完成程序設(shè)計(jì)調(diào)試后,系統(tǒng)能實(shí)現(xiàn)自動記錄流程作業(yè)信息的功能,InTouch 實(shí)現(xiàn)便捷查詢流程信息功能,數(shù)據(jù)庫數(shù)據(jù)如表3,InTouch 查詢流程信息功能如圖4。
圖4 InTouch 查詢流程信息功能圖