曾天翔
(上海朗脈潔凈技術股份有限公司,上海201100)
西門子STEP7使用STL源文件快速創(chuàng)建潔凈空調程序的方法
曾天翔
(上海朗脈潔凈技術股份有限公司,上海201100)
針對當前自控領域需要快速創(chuàng)建西門子PLC程序的需求,提出了一套由原始I/O清單及設備清單按照程序模板自動生成西門子PLC程序的方法。對比傳統(tǒng)PLC編程方式的缺點,以制藥行業(yè)的潔凈空調項目為例,介紹了西門子PLC程序快速創(chuàng)建方法的具體實現(xiàn)步驟及所需條件。通過實踐證明,這種編程方法可以極大地提高程序的可靠性及編程效率,在自控領域有著廣闊的應用前景和推廣價值。
西門子;PLC程序;STEP7;STL源文件;VB腳本;潔凈空調
在藥廠的潔凈室中,為了使?jié)崈羰覂缺3炙枰臏貪穸取L速、壓力和潔凈度等參數(shù)運行,最常用的方法是向室內不斷送入一定量經過處理的空氣,以消除潔凈室內外各種熱濕干擾及塵埃污染。通常潔凈室為獲得滿足一定狀態(tài)的空氣,就需要一整套設備對空氣進行處理,并不斷送入室內,又不斷從室內排出一部分出來,這一整套設備就構成了潔凈空調系統(tǒng)。
藥廠的潔凈空調系統(tǒng)控制一般通過使用可編程控制器來實現(xiàn)??删幊踢壿嬁刂破鱌LC(Programmable Logic Controller)是通過存儲在可編程的存儲器中的程序,執(zhí)行有關邏輯運算、順序控制、定時、計數(shù)與算術操作等面向用戶的指令,并通過數(shù)字或模擬式輸入/輸出實現(xiàn)對各種類型的機械或生產過程的控制[1-2]。
這種PLC控制方式廣泛應用于目前的工業(yè)控制領域[1]。可編程邏輯控制器的系統(tǒng)程序分為系統(tǒng)程序和應用程序,系統(tǒng)程序一般在出廠前已經初始化完畢,而應用程序則是在系統(tǒng)程序運行的條件下,由用戶根據自己的需要自行編輯,目的是用來滿足不同的自動化生產要求[3]。
西門子STEP7是用于SIMATIC S7-300/400系列PLC創(chuàng)建可編程邏輯控制程序的標準軟件,通常采用梯形圖邏輯(LAD)、功能塊圖(FBD)和語句表(STL)等方式進行編程操作[1-3]。
利用西門子STEP7軟件編制西門子SIMATIC S7-300/400系列PLC程序的基本步驟包含以下幾個方面,其他類型PLC程序也基本類似。
2.1 設置硬件信息
由于西門子SIMATIC S7-300/400系列PLC程序分別為不同的應用場合配備了不同的硬件模塊,而且其種類非常繁多。因此,首先需要根據項目的工藝情況和控制要求設計方案,選用合適的PLC模塊及其相應硬件,組成合理的網絡拓撲結構,最終形成完整的PLC自控系統(tǒng)。
2.2 建立符號表
符號表是程序與PLC模塊之間連接的紐帶。在程序的編寫過程中,如果我們不建立符號表,直接使用I/O點位進行編寫程序的話,那么我們編制的程序中只會出現(xiàn)I/O點位。如果程序很短還好說,但是如果程序非常大,結構又非常復雜,那么我們就很難理解這個程序到底是什么意思,自然就給程序的修改與調試帶來了很大的困難。因此,我們希望看到程序中出現(xiàn)的是具有實際意義的符號,這樣我們的整個程序中每個點位都將有具體的含義,便于我們理解與調試程序。
2.3 建立數(shù)據類型
數(shù)據類型(UDT,User Defined Type)是用戶自定義的一種數(shù)據結構。
為了便于理解,舉個簡單的例子:有10個電機,它們的屬性都是基本相同的,如“正轉(bool)”、“反轉(bool)”、“速度(int)”、“加速度(int)”、“減速度(int)”等5個屬性,如果程序中需要用到這些屬性,那么可能需要為10個電機都建立這些變量,如果是單獨建立,就需要建立10×5=50個變量;如果用UDT來處理,那就簡單多了,先定義一個名為motor的UDT變量,里面添加上面所說的2個bool變量和3個int變量(當然有需要可以添加其他數(shù)據類型的變量),然后建立一個數(shù)據塊,在里面建立10個變量m1~m10,數(shù)據類型就是motor,保存后會發(fā)現(xiàn)這10個變量都包括以上的幾個屬性,這樣就可以直接在程序中使用了。
通常,每一種現(xiàn)場設備應當對應于一種UDT數(shù)據類型。這類設備通常包括開關閥門、調節(jié)閥門、開關電機、變頻電機及各類傳感器。
2.4 建立數(shù)據塊
數(shù)據塊(DB)的作用其實在上一個步驟中已經提及。從面向對象的編程方法來看,數(shù)據類型UDT就是類的概念,而DB塊中存放的是相應實例化的對象。所有現(xiàn)場設備的數(shù)據,都以UDT的形式存放在數(shù)據塊DB中。為了便于操作,將每一種設備的數(shù)據存放在同一個數(shù)據塊DB中。
2.5 建立功能(FC)及功能塊(FB)
所謂程序就是數(shù)據結構加上算法,以上幾步已經完成了數(shù)據結構的創(chuàng)建,剩下的是算法的創(chuàng)建。針對每種類型的設備,可以創(chuàng)建不同的功能或功能塊來滿足實際使用要求,這種功能被稱為設備驅動功能。當完成了設備驅動功能之后,就可以編寫整個系統(tǒng)的自動控制功能來滿足整體的自控要求。雖然不同項目的工藝要求有所不同,但是所用到的設備類型卻都一樣。因此,對于不同項目而言,雖然整個系統(tǒng)的自動控制功能不同,但是設備驅動功能卻是一樣的。
2.6 根據實際情況調用及實現(xiàn)功能
按照實際情況依次調用功能及功能塊,實現(xiàn)事先設計好的功能。首先,調用數(shù)據采集功能,將通道模塊所采集到的數(shù)據讀取到設備數(shù)據塊中,刷新設備當前狀態(tài);然后,調用系統(tǒng)自動控制功能,根據當前狀態(tài)決定設備的控制策略及動作;最后,根據上一步的運算結果,調用設備驅動功能和輸出功能,將控制數(shù)據輸出到輸出模塊,從而控制實際設備的動作。
一般從事不同行業(yè)的公司,會根據需要創(chuàng)建自己專用的數(shù)據類型(UDT)、設備驅動功能(FC)和功能塊(FB)來滿足自己編程的需要,并將其保存為程序模板。這樣一來,在實際的編程工作中,就不需要再重新建立數(shù)據類型和設備驅動功能塊了,編程步驟被簡化為設置硬件信息、建立符號表、建立數(shù)據塊、建立系統(tǒng)自動控制功能及根據實際情況調用功能這幾步。
編程步驟簡化前后對比如圖1所示。及數(shù)據塊。再根據所建立的數(shù)據塊類型及其中設備的數(shù)量,依次調用相應的功能。其特點是,整個過程都是由人工操作,但是所做的工作大多為數(shù)據復制與翻譯,歸根結底是簡單重復勞動。尤其是當所需要復制的數(shù)據比較多時,非常容易出現(xiàn)錯誤。
而西門子S7-SCL編程工具(圖2)提供了一種結構化控制語言編程方式,其結構與C語言和Pascal語言相似,適合習慣于使用高級語言編程的人使用。
圖2 S7-SCL編程工具
SCL程序可以在CPU314及其以上的S7(包括400)中運行[3]。S7-SCL編程工具中一項很有用的功能就是能夠通過對STL(語句表)源文件的編譯,生成程序中的數(shù)據塊(DB)和功能(FC)。
圖1 編程步驟簡化前后對比圖
I/O清單及設備清單是編程所必需的重要文件。其中I/O清單描述了I/O點位的實際地址與符號名之間的關系,是建立符號表的依據。設備清單描述了系統(tǒng)中所有設備的類型,是建立數(shù)據塊的依據。現(xiàn)有的編程方法,需要編程人員預先整理這兩個文件,然后根據文件內容在STEP7中建立符號表
4.1 方案構想
從簡化后的程序編寫步驟來看,設置硬件信息、建立符號表、建立數(shù)據塊、建立系統(tǒng)自動控制功能及根據實際情況調用功能這幾步都是由人工通過查看I/O清單及設備清單的內容來完成的,效率低且容易出錯。如果有一種方法能將I/O清單的內容自動轉化為符號表,將設備清單的內容自動轉換為STL(語句表)源文件,并利用西門子S7-SCL編程工具直接生成數(shù)據塊和功能,那么將極大地提高編程的效率及正確性。由于不同的項目僅系統(tǒng)的自動控制功能不同,因此,除了自動控制功能外,其他的功能都是能夠實現(xiàn)自動生成的。
方案示意如圖3所示。
圖3 方案示意圖
4.2 方案的實現(xiàn)
當今絕大多數(shù)的I/O清單及設備清單都是由微軟的Excel格式保存的。為了可以使用Excel的宏語言使Excel實現(xiàn)自動化,Microsoft決定讓其開發(fā)出來的應用程序共享一種通用的自動化語言——Visual Basicfor Application(VBA),即我們通常所說的VB腳本,而不是使用不同的自動化語言??梢哉J為Visual Basicfor Application是非常流行的應用程序開發(fā)語言——Visual Basic的子集。下面我們不妨以Excel格式的I/O清單及設備清單為例,描述一下如何利用Excel中的VBA實現(xiàn)以上方案。在I/O清單中打開VBA編輯器,可以通過新建腳本實現(xiàn)我們預期的功能[4]。
4.3 符號表的自動生成
在生成符號表前,首先需要對當前I/O清單的內容做一下檢查。由于I/O清單是由人工輸入的,其中可能產生一些重復位號的錯誤,所以需要在生成符號表之前先檢查一下數(shù)據的合法性,以免出現(xiàn)重復的位號名稱,實現(xiàn)的腳本如下:
在完成了位號檢查之后,就可以生成符號表
表1 符號表的自動生成運行結果
符號表的自動生成運行結果如表1所示。
至此,我們已經完成了從I/O清單自動生成STEP7符號表的工作,所生成的符號表只需要簡單的復制/粘貼操作即可復制到STEP7程序中去。
4.4 數(shù)據塊及其他功能調用的自動生成
通過Excel中的VBA編程,可以使得設備清單中的內容轉換成STL(語句表)源文件。
首先,要保證I/O清單中的位號名稱都是按照設備清單中的設備位號命名規(guī)則命名的,如表2所示。
對于傳感器類型的設備還需要定義其量程范圍及報警數(shù)值等參數(shù),如表3所示。
根據以上用戶輸入的信息及定義的規(guī)則,可以通過VBA腳本將設備清單內容轉換成相應的STL(語句表)源文件內容。
數(shù)據塊及其他功能調用的自動生成運行結果如表4所示(僅顯示了部分程序)。
表2 設備位號命名規(guī)則
表3 傳感器類型變量參數(shù)設置
表4 數(shù)據塊及其他功能調用的自動生成運行結果
將以上生成的內容復制到西門子S7-SCL編程工具中,點擊“編譯”命令,即可自動生成所需的數(shù)據塊(DB)和調用功能(FC)。S7-SCL編譯環(huán)境如圖4所示。
至此,預期的方案構想已經全部完成。
圖4 S7-SCL編譯環(huán)境
首先,這種新型的程序生成方法能夠直接從原始的I/O清單及設備清單讀取數(shù)據并生成程序,減少了中間環(huán)節(jié)不必要的人工參與,所以能夠最大限度地保證所生成程序的正確性。
其次,這種新型的程序生成方法由于是由程序自動生成,因此極大地提高了編程工作的效率。尤其是當程序需要修改的時候,原先在更改了I/O清單及設備清單后還要再次修改程序。而使用了新方法后,則只需要從“新編譯”中即可生成程序。
[1] 吳作明.深入淺出西門子STEP7[M].北京:北京航空航天大學出版社,2012:2-17.
[2] 任雙艷,邊春元,滿永奎.STEP7開發(fā)基礎及應用指南[M].北京:機械工業(yè)出版社,2009:56-118.
[3] SIEMENS.S7-SCL編程手冊[Z].
[4] 羅剛君.Excel VBA程序開發(fā)自學寶典[M].北京:電子工業(yè)出版社,2011:12-29.
Create a PLC Program by Uusing SIMATIC STEP7 STL Source File
Zeng Tianxiang
(Shanghai Macroprocess Lustration Technology Co., Ltd., Shanghai 201100)
Current automation field need us to create Siemens PLC program as quickly as possible, a new method that can generate Siemens PLC program by redefined template from I/O list and instrument list automatically is introduced accordingly. This paper analyzes the shortcoming of traditional PLC programming method, by then example of the BMS of the pharmaceutical industry, introduces the concrete implementation steps and required conditions of the new method. The practice proved that the new method can greatly improve the reliability of the program and the programming efficiency and shows that it has broad prospect of application and popularization in automation field.
SIEMENS;PLC program;STEP7; STL source file;VB scripts;AHU
2015-09-06
曾天翔(1979—),男,上海人,工程師,從事工業(yè)自控系統(tǒng)的設計及應用工作。