周 穎,沈 勇,范 菁,吳元凱
(云南民族大學云南省高校信息與通信安全災備重點實驗室,云南昆明 650500)
可編程邏輯控制器(Programmable Logic Controller,PLC)是用于自動控制的數字運算控制器,也是現代工業自動化系統的重要組成部分,被廣泛應用于國家重要基礎設施和各種工業控制領域[1]。
國內各大學工科專業均開設了與PLC 相關的課程,傳統的PLC 課程教學采用“先理論講解,后動手實驗”的教學模式[2-3]。傳統PLC 教學著重傳授學生理論知識,缺乏對學生實踐能力和綜合運用知識能力的培養,導致學生PLC 理論與實踐分離,而且老師講授的教學內容抽象,學生難以理解,教學效果并不理想[4-9]。
針對傳統教學模式的不足,文中采用了項目式教學方法,將理論教學和實踐教學有機結合。以洗衣機控制系統的項目為例,采用結構化編程進行洗衣機控制系統PLC 程序的設計,達到控制3 臺洗衣機的目的。同時引入有限狀態機的概念,結合WINCC 組態軟件,介紹了PLC 結構化編程方法,將PLC 編程化抽象為具體,便于學生理解,有利于培養學生對PLC 的綜合應用能力。
文中的洗衣機控制系統選用德國西門子S7-1200 系列CPU 1214C 作為控制單元,控制的對象包括電磁閥、電動機、繼電器、蜂鳴器[10]。其中電動機的工作狀況、工作時間,需要根據不同的程序來進行設定。洗衣機控制系統原理圖如圖1 所示。

圖1 洗衣機控制系統原理圖
電動機的正轉、反轉以及脫水工序皆由繼電器控制,繼電器與PLC 的輸出端相連,以PLC 的輸出信號控制繼電器。脫水繼電器組與電動機、電源直接相連,當洗衣機脫水時,電動機以額定轉速工作[11]。洗衣機脫水時的轉速與洗滌漂洗時的轉速不同,電動機脫水時的轉速要比洗滌時的轉速大[12]。進水電磁閥和排水電磁閥通過水位檢測傳感器進行控制,通過按鍵進行手動啟動、手動停止、選擇調試模式、調試啟動和調試停止操作,蜂鳴器用來報警。洗衣機控制系統開關量所需的輸入點和輸出點數各為19 個和18 個,I/O 分配表如表1 所示。

表1 系統I/O分配表
洗衣機的工作模式包括調試模式、遙控模式、手動模式。洗衣機控制系統開始啟動運行前,確保系統處于初始狀態。選擇洗衣機模式,按下啟動按鈕,進水電磁閥打開,當到達高水位時,停止進水,并開始進行正轉洗滌30 s,再暫停2 s 后開始進行反轉洗滌30 s,再暫停2 s 后重新開始正轉洗滌,如此反復循環5 次[13]。洗滌結束后,排水電磁閥打開,開始排水,當到達低水位時,脫水電磁閥打開,開始脫水,脫水時間為30 s,30 s 后報警,預示洗衣完成,按下停止按鈕,洗衣機停機。洗衣機控制系統的工藝流程圖如圖2 所示。

圖2 工藝流程圖
在系統程序設計的過程中,不僅涉及到PLC 控制系統的程序現態,還涉及到它的歷史狀態,故將此抽象成有限狀態機(Finite-State Machine,FSM),有限狀態機是有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型,由一組狀態、一個初始狀態、輸入和根據輸入及現有狀態轉換為下一個狀態的轉換函數組成[14]。現實世界中存在大量具有有限個狀態的系統:通信協議系統、編譯器、硬件電路系統等。有限狀態機的概念就是來自于現實世界中的這些有限系統。
設計洗衣機控制系統狀態轉移圖時,首先確定狀態轉移圖中具體包括幾個狀態以及狀態轉換關系。洗衣機控制系統涉及的狀態較多,為了便于分析程序,故將洗衣機控制系統的程序進行拆分,將狀態轉移圖劃分成主狀態轉移圖和子狀態轉移圖兩個部分,繪制兩個狀態轉移圖。主狀態轉移圖中包括6個狀態,分別是0 狀態停止、1 狀態進水、2 狀態運行、3 狀態排水、4 狀態脫水、5 狀態報警,如圖3(a)所示;子狀態轉移圖中包括6 個狀態,分別是9 狀態結束、10 狀態正洗、11 狀態正暫、12 狀態反洗、13 狀態反暫、14 狀態空閑,如圖3(b)所示。洗衣機控制系統狀態轉移圖如圖3 所示。

圖3 洗衣機控制系統狀態轉移圖
傳統的小型系統可在程序循環OB中進行線性化編程,但這種編程方式僅適用于簡單程序。文中使用TIA Portal V15.1 軟件對洗衣機控制系統進行結構化程序設計,系統結構由程序組織塊、函數塊、函數、數據塊4 個部分組成。將系統分割成與工藝流程相對應或可重復使用的更小的子任務,這些子任務以獨立的塊來表示,更易于系統的處理和管理。通過結構化更容易進行復雜程序的編程,通過更改參數可以反復使用,使得程序結構更簡單,更改程序更容易,簡化了調試工作。結構化程序示意圖如圖4所示。

圖4 結構化程序示意圖
建立用戶自定義數據類型“washing machine interface”,在用戶自定義數據類型中定義3 臺洗衣機的輸入接口、輸出接口,如圖5 所示。

圖5 用戶自定義數據類型
數據塊(Data Block,DB)用于存儲用戶程序數據及程序的中間變量數據,數據塊與臨時數據不同,當數據塊工作結束時,數據塊中的數據會被保留下來。建立“equipment”DB 塊,添加3 臺洗衣機“M1、M2、M3”,數據類型為“washing machine interface”,如圖6 所示。

圖6 “equipment”DB塊
函數塊(Function Block,FB)是含有DB 塊的FC函數,具有“存儲器”功能。它將輸入、輸出和輸入/輸出參數永久地存儲在背景數據塊中,從而在執行塊之后,這些值仍然有效。函數塊(FB)易于移植,對于相同控制邏輯不同參數的被控對象,只要使用不同的背景DB,同一個FB 塊就可以實現控制,減少了重復工作,提高了工作效率[15]。文中通過建立“washing machine advanced”、“washing process advanced”、“master control”3 個FB 函數塊,分別在各自FB 函數塊的局部變量聲明表中進行定義,包括輸入接口、輸出接口、輸入/輸出接口以及靜態變量。
洗衣機控制系統函數塊里涉及的定時器、計數器皆為多重背景數據塊,可以把某一個FB 塊作為一個FB 類型的變量,方便多重數據塊多次、重復地按FB 接口參數建立FB 數據區,即多重數據塊包含多個背景數據塊的數據[16],使得3臺洗衣機工作時,彼此之間不會發生沖突。系統FB塊如圖7所示。

圖7 洗衣機控制系統的FB塊
函數(Function,FC)是不帶存儲器的代碼塊。由于沒有可以存儲塊參數值的數據存儲器,調用函數時,必須給所有形參分配實參,可以使用全局數據永久性存儲數據。常常在FC 函數中寫一些需要重復執行的代碼,可以在程序的不同地方調用,可以被OB 塊、FC 塊、FB 塊調用,也可以調用其他FB 塊、FC塊。使用FC 可以簡化需要重復執行的任務,提高代碼的運行效率,不占用額外的存儲資源。在洗衣機控制系統中建立"enter"、"out"兩個FC 塊,將信號傳送到每一臺設備對應的接口上。
組織塊(Organization Block,OB)是CPU 操作系統和用戶程序之間的接口,由操作系統調用,當建立一個程序時,系統會自動建立一個Main[OB1]程序,負責調用其他模塊[17]。如果程序簡單,只需要OB 塊就可以實現。該程序會在PLC 的每個掃描周期被調用,可以在CPU 上啟動時調用,可以循環調用,也可以在PLC 發生錯誤時調用。Main[OB1]程序類似于C語言里面的Main 函數,即為函數的入口點,可以在Main 程序里面調用各種函數塊[18]。
在"master control" FB 塊中進行調用"washing machine advanced"FB 塊,實現對3 臺洗衣機的控制,在"washing machine advanced" FB 塊中進行調用"washing process advanced" FB 塊,其中,每個被調用的FB 塊皆為多重背景數據塊。在Main[OB1]中調用"enter"FC 塊、"master control"FB 塊、"out"FC 塊。
在WINCC 組態軟件的項目視圖中新建一個洗衣機控制系統的畫面。畫面中能直觀地看到洗衣機的整個工藝流程。主畫面進行洗衣機臺號的選擇,子畫面為每一臺洗衣機的畫面,子畫面與主畫面可以進行切換,如圖8 所示。

圖8 洗衣機控制系統仿真畫面圖
通過教學實踐證明,與傳統的PLC 教學方法相比,文中采取的項目式教學PLC 編程方法從實際應用出發,使得編程方法通俗易懂,逐步引導學生進行控制系統的設計,既培養了學生的專業綜合素質,又能夠讓學生在今后的PLC 技術應用領域有一定的工程設計能力。