苗建科 郭丹洋 孟科 周天鳴
摘? 要:傳統(tǒng)的PLC程序配置方法效率低,且容易出錯(cuò),為調(diào)試增加了不小的工作量。文章提供一種基于VBA的PLC程序批量配置方法,可降低程序配置的錯(cuò)誤率,提高程序配置效率,為工程節(jié)省人工和時(shí)間成本。文章介紹了PLC程序配置輸入數(shù)據(jù)整理、PLC導(dǎo)出文件格式和內(nèi)容分析、VBA批量配置PLC程序代碼實(shí)現(xiàn)、PLC導(dǎo)入配置文件等步驟及方法。
關(guān)鍵詞:VBA;PLC;程序配置;xbd文件;BAS系統(tǒng)
中圖分類號(hào):TP393? ? ? ? ?文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2019)25-0085-02
Abstract: The traditional PLC program configuration method is inefficient and error-prone, which increases the workload of debugging. This paper provides a batch configuration method of PLC program based on VBA, which can reduce the error rate of program configuration, improve the efficiency of program configuration, and save labor and time cost for engineering. This paper introduces the steps and methods of PLC program configuration input data collation, PLC export file format and content analysis, VBA batch configuration PLC program code implementation, and PLC import configuration file.
Keywords: VBA; PLC; program configuration; xbd file; BAS system
1 問題及方法提出
PLC全稱可編程邏輯控制器,在現(xiàn)代工業(yè)控制領(lǐng)域有廣泛應(yīng)用,應(yīng)用場景種類繁多,但總體可概括為單機(jī)運(yùn)動(dòng)控制和數(shù)據(jù)采集兩大類。在數(shù)據(jù)采集應(yīng)用中,PLC介于上層監(jiān)控系統(tǒng)和現(xiàn)場單機(jī)設(shè)備之間,不需關(guān)心單機(jī)設(shè)備運(yùn)行的環(huán)境、工藝等條件,只需和單機(jī)設(shè)備之間定義好數(shù)據(jù)接口即可,PLC只負(fù)責(zé)通過接口收集數(shù)據(jù)和下發(fā)命令,程序較容易實(shí)現(xiàn)標(biāo)準(zhǔn)化。
在一些工程中將PLC用于系統(tǒng)數(shù)據(jù)采集,如地鐵的BAS系統(tǒng)。在地鐵線路中每個(gè)車站均設(shè)置一套BAS系統(tǒng),每個(gè)車站BAS系統(tǒng)PLC程序框架相同,監(jiān)控的設(shè)備種類也相同,但由于各車站被監(jiān)控設(shè)備數(shù)量的差異,PLC數(shù)據(jù)點(diǎn)位配置均不相同,而且數(shù)量巨大,這給BAS系統(tǒng)的程序配置帶來了不小的工作量。而且人工配置大量數(shù)據(jù)時(shí)不可避免的會(huì)存在一些配置錯(cuò)誤,這也給工程調(diào)試帶來了不小的額外工作量。
VBA主要用于Windows應(yīng)用程序的功能擴(kuò)展,如在Excel中可用VBA批量處理數(shù)據(jù)。PLC應(yīng)用于數(shù)據(jù)采集時(shí),監(jiān)控設(shè)備可實(shí)現(xiàn)標(biāo)準(zhǔn)化,對(duì)同類設(shè)備的接口是相同的,對(duì)同類設(shè)備的邏輯處理可封裝成功能塊。在這樣的應(yīng)用場景下程序配置只需調(diào)用相應(yīng)的設(shè)備功能塊,為設(shè)備功能塊輸入、輸出引腳配置相應(yīng)變量即可,無復(fù)雜的邏輯關(guān)系。無論是梯形圖編程還是功能塊圖編程,程序文件均具有極強(qiáng)的規(guī)律性,這為使用VBA批量配置PLC程序提供了可能。本文為數(shù)據(jù)采集應(yīng)用場景下PLC程序配置提供一種基于VBA代碼批量配置方法,降低配置錯(cuò)誤率,提高配置效率,為工程節(jié)省用人成本和時(shí)間。
2 使用VBA批量配置PLC程序
PLC程序配置首先應(yīng)具備輸入文件,輸入文件即配置PLC程序的點(diǎn)表文件,點(diǎn)表包含了被監(jiān)控設(shè)備的狀態(tài)、命令在PLC內(nèi)對(duì)應(yīng)的變量、地址信息,根據(jù)點(diǎn)表可配置出PLC的程序段,即目標(biāo)文件,這是一般的PLC程序配置方法。采用VBA批量配置PLC程序的步驟是運(yùn)行VBA語言編輯的批量程序配置工具,提取輸入文件信息,生成輸出文件。輸出文件即程序源文件,將程序源文件導(dǎo)入到PLC程序,就完成了PLC目標(biāo)文件的配置。
2.1 輸入文件的整理
在工程實(shí)施過程中點(diǎn)表文件的整理并非一蹴而就,其整理過程也需根據(jù)工程進(jìn)度分為幾個(gè)步驟,而在各個(gè)步驟中又有相應(yīng)的文件產(chǎn)生,點(diǎn)表文件的整理需依據(jù)各步驟中產(chǎn)生的文件,因此在整理出點(diǎn)表文件之前產(chǎn)生的所有文件均可歸屬于輸入文件的范疇。
例如在地鐵BAS系統(tǒng)中,點(diǎn)表文件的整理需依據(jù)設(shè)備一覽表和設(shè)備類表,因此BAS系統(tǒng)的輸入文件包括設(shè)備類表、設(shè)備一覽表和設(shè)備點(diǎn)表。設(shè)備類表包含各類設(shè)備的監(jiān)控點(diǎn)位信息,設(shè)備一覽表羅列了所有BAS監(jiān)控設(shè)備的基本信息,設(shè)備一覽表結(jié)合設(shè)備類表即可整理輸出設(shè)備點(diǎn)表。Excel軟件內(nèi)嵌了VBA功能,本文提到的各種輸入點(diǎn)表均是使用Excel整理,當(dāng)然VBA代碼也包含在Excel文件中。
在設(shè)計(jì)聯(lián)絡(luò)階段,以會(huì)議形式確定BAS系統(tǒng)各個(gè)細(xì)節(jié)的技術(shù)要求,其中包括BAS系統(tǒng)與被監(jiān)控設(shè)備的接口方式及監(jiān)控內(nèi)容。BAS供貨單位可以根據(jù)會(huì)議確定的內(nèi)容整理出BAS監(jiān)控設(shè)備類表。設(shè)備類表用于定義各類設(shè)備被監(jiān)控點(diǎn)位信息,設(shè)備類表中至少應(yīng)包含設(shè)備類型名稱、類型編號(hào)、點(diǎn)位類型、點(diǎn)位描述等字段信息,還需包含各類設(shè)備在PLC中的地址分配區(qū)域信息,以便在生成PLC程序時(shí)可以自動(dòng)為設(shè)備分配PLC地址。
在工程調(diào)試前,設(shè)計(jì)院向BAS供貨單位提供BAS施工圖紙,BAS供貨單位可以根據(jù)設(shè)計(jì)院提供的BAS施工圖整理輸出BAS監(jiān)控設(shè)備一覽表。設(shè)備一覽表中包含所有BAS監(jiān)控設(shè)備的基本信息,如設(shè)備類型、設(shè)備名稱、設(shè)備編號(hào)等。
整理出設(shè)備類表和設(shè)備一覽表后,兩表結(jié)合即可整理輸出設(shè)備點(diǎn)表,設(shè)備點(diǎn)表既包含設(shè)備一覽表中的每一個(gè)設(shè)備信息,也包含了每個(gè)設(shè)備在設(shè)備類表中的監(jiān)控點(diǎn)位信息。除此之外設(shè)備點(diǎn)表中還包含了設(shè)備點(diǎn)位對(duì)應(yīng)的PLC變量信息,這部分內(nèi)容對(duì)于PLC程序配置至關(guān)重要。
2.2 PLC導(dǎo)出文件格式分析
用VBA代碼批量配置PLC程序,其目的就是生成可導(dǎo)入PLC程序的程序配置文件,然后將生成的配置文件導(dǎo)入到PLC程序完成PLC程序配置。但在用VBA代碼生成配置文件前,首先得了解要生成文件所包含的內(nèi)容及格式,以便用代碼實(shí)現(xiàn)文件生成。
在常用的PLC當(dāng)中,導(dǎo)出的原文件格式不盡相同,如西門子PLC編程軟件STEP 7導(dǎo)出源文件為AWL格式,施耐德PLC編程軟件Unity Pro導(dǎo)出源文件為xbd格式。無論是AWL文件還是xbd文件,在公開渠道獲取其格式定義的相關(guān)資料數(shù)量有限。本文以施耐德PLC編程軟件Unity Pro為例,以反推法分析得到xbd文件格式及包含內(nèi)容。
首先手動(dòng)配置一個(gè)PLC程序段,導(dǎo)出得到一個(gè)xbd格式的程序配置源文件,以文本方式打開xbd文件,即可對(duì)文件格式和內(nèi)容進(jìn)行分析。分析過程需結(jié)合程序配置,不同的程序分析過程會(huì)存在一些差別,本文不再描述,直接給出分析結(jié)果。
通過分析驗(yàn)證,xbd文件包含軟件信息、編碼信息、項(xiàng)目信息、程序段信息和設(shè)備功能塊配置信息,此部分內(nèi)容是用VBA代碼批量配置的主要內(nèi)容。除此之外,從PLC導(dǎo)出的xbd文件還包含了在本程序段用到的變量定義及功能塊定義,此部分內(nèi)容在PLC程序中已經(jīng)存在,所以用VBA生成的配置文件可不包含這些內(nèi)容。
2.3 VBA代碼編寫
VBA內(nèi)嵌于各種Windows應(yīng)用程序中,具有強(qiáng)大的文件處理能力,文件及文件中的元素均是VBA可以操作的對(duì)象。本文討論的基于VBA批量配置PLC程序的方法主要使用到了窗體調(diào)用、打開文件、創(chuàng)建文件、讀取文件、寫入文件、關(guān)閉文件等功能。
程序按照一定的步驟執(zhí)行即可實(shí)現(xiàn)批量配置PLC程序的目的,包括選擇輸入文件、提取輸入文件信息、創(chuàng)建輸出文件、寫輸出文件、輸出配置狀態(tài)信息、關(guān)閉文件等過程。首先,創(chuàng)建一個(gè)窗體作為配置的主界面,實(shí)現(xiàn)選擇輸入文件、顯示配置狀態(tài)信息、執(zhí)行功能操作等功能。然后點(diǎn)擊配置功能按鈕,開始執(zhí)行配置代碼,這個(gè)過程包括提取輸入文件信息、創(chuàng)建輸出文件、寫輸出文件等功能。同時(shí)在配置代碼執(zhí)行過程中的關(guān)鍵節(jié)點(diǎn)和一些故障會(huì)在主界面進(jìn)行顯示。最后,保存輸出文件,關(guān)閉相關(guān)文件,配置結(jié)束。配置代碼執(zhí)行流程如圖1所示。
2.4 PLC導(dǎo)入源文件
通過上述步驟,最終得到可以導(dǎo)入到PLC的xbd文件,將文件導(dǎo)入到PLC程序,檢查生成文件的配置,確認(rèn)無誤,編譯生成最終的程序文件。
3 結(jié)束語
本文論述的基于VBA批量配置PLC程序即是一個(gè)工程數(shù)據(jù)從提取到應(yīng)用的一個(gè)典型案例,在本案例中VBA的應(yīng)用不只是在PLC程序配置這個(gè)環(huán)節(jié),在整個(gè)過程的各個(gè)環(huán)節(jié)均有應(yīng)用,如提取CAD數(shù)據(jù)、處理Excel表格數(shù)據(jù)、配置PLC變量、配置上位機(jī)組態(tài)軟件變量等,使整改過程高效、準(zhǔn)確。
參考文獻(xiàn):
[1]周作偉,馬萬太,蘇朝陽.基于XML語言的軟PLC控制平臺(tái)研究[J].機(jī)械制造與自動(dòng)化,2019(03):112-114+124.
[2]付宏剛.PLC應(yīng)用過程控制研究[J].化工設(shè)計(jì)通訊,2019,45(04):82-83.
[3]陳優(yōu)明.Excel在PLC程序開發(fā)方面的應(yīng)用[J].機(jī)電工程技術(shù),2016,45(03):93-96.