IEC 61131-3標準包括強大的結構化工具,可以幫助用戶將控制系統分解為可管理的單元,從而提高整體效率。
根據現代軟件開發環境的需求,國際電工委員會 (IEC) 的可編程邏輯控制器標準第 3 部分編程語言 IEC 61131-3 包括了強大的結構化工具。其中關鍵部分是順序功能圖 (SFC) 和用戶自定義的功能塊。兩者都為將控制系統分解成可管理的單元提供了一個很好的方法。
這些單元更容易被不同背景的人使用和理解。它提供了系統工程師、軟件開發人員以及安裝和維護人員之間缺失的環節。此外,它還為這些不同的群體提供了一種表達和交流的工具。
通過這種方式,在更大的應用中,多專業團隊也可以相互協作,編制更易于理解和可復用的代碼,并在程序員、安裝和維護人員以及用戶之間提供不同級別的隔離。
此外,在軟件開發初期就可以進行錯誤檢測和錯誤處理。另一種方法,是在安裝過程中(甚至在運行期間)創建這些程序,但對于供應商(支持)和用戶(停機)來說成本都太昂貴。
為控制系統編程提供結構
控制系統代碼結構化的優點很多,包括:更好的系統概覽,不僅對原始程序員很重要,對安裝和維護人員也很重要;為多專業開發團隊的內部溝通提供更好的基礎;不同職責之間的明確分離;更好地關注真正的問題和可能的解決方案;以及可復用軟件的基礎。
結構化是通過將問題分成更小的部分來完成的。這些部分可以進一步細分。但這樣做也有局限性 :不能無限制的持續細化,因為這會增加集成工作。
模塊化塊的使用涉及 5 個基本原則 :
? 編程語言應支持模塊化單元。
? 單元的組成方式和數量,應使其具有最少的接口和最少的交互。
? 接口要小,需要最少的數據交換。
? 模塊交互需要明確定義,以增加其可復用性。
? 模塊應該提供數據封裝功能 :應用程序數據是分區的,每個分區只能由一組功能訪問,這 樣就可以將其隱藏起來,避免不必要的訪問。
編程軟件結構化的 7 個步驟
以下 7 個步驟,為控制系統編程軟件的結構化提供了一條成功之路 :
? 識別控制系統的外部接口。
? 定義控制系統和工廠其它部分之間交換的主要信號。
? 定義所有操作人員的交互、覆蓋和監控數據。
? 控制問題分析,從頂層到邏輯分區,逐步分解。
? 定義所需的功能塊。
? 定義應用程序不同部分的掃描周期要求。
? 通過定義資源、將程序與物理輸入和輸出相連接,以及將程序和功能塊分配給任務來配置系統。
IEC 61131-3 提供的合適環境可以支持這些步驟。下面將以發酵過程及其控制系統為例詳細探討編程軟件結構化的過程。圖 1 是整個系統的示意圖。
發酵過程包括一個大容器,它可以裝滿液體(進料閥),可以用加熱帶加熱(通過對流冷卻), 通過電機攪拌,并且可以添加酸和堿液進入容器。處理完成后,就用收獲閥來收獲產品。要為此示例創建控制程序,需要完成上述 7個步驟 :
1、步驟一
識別控制系統的外部接口,包括 :
? 來自溫度傳感器的反饋 ;
? 來自 pH 傳感器的反饋 ;
? 來自閥門位置的反饋 ;
? 來自電機的反饋(速度);
? 輸出到閥門 ;
? 輸出到電機 ;
? 輸出到加熱帶。
2、步驟二
定義控制系統和工廠其它部分之間交換的主要信號。
在該例中,系統與工廠的其余部分沒有耦合,但是在現實中不太可能。例如,人們可能需要 一個連接到容器的管道,該管道還需要接到接收系統,如容器或瓶子的運輸系統。也可能與企業資源規劃 (ERP) 系統耦合。
3、步驟三
定義所有操作人員交互、覆蓋和監控數據。
對于操作人員,我們定義了 “開始”、“停止”和“持續時間” 按鈕作為系統的輸入。
4、步驟四
控制問題分析,從頂層到邏輯分區,逐步分解。
這個過程有 5 個主要功能 :
a. 主順序,例如,頂層工藝步驟——灌裝、加熱、攪拌、發酵、收獲、清潔 ;
b. 閥門控制,操作用于填充和清空容器的閥門 ;
c. 溫度控制,用于監測容器溫度, 調節加熱器 ;
d. 攪拌器控制,用于根據主工藝順序的要求啟動攪拌器電機。
e.pH 控制,用于監測發酵內容物的酸度,根據需要添加酸液或堿液。
5、步驟五
定義所需的功能塊。
使用上面的定義并向其添加(高級)功能塊,我們就可以在編程語言中使用這些功能塊圖。發酵控制程序的功能塊圖如圖 2 所示。
圖 2 :此圖表示的是發酵過程的功能塊圖,左側是輸入,右側是輸出。
功能塊主序列連接到運行人員輸入。它由其它控制塊支持,這些塊連接到相關的輸入和輸出。這些附加塊可以是供應商提供的塊,例如使用 PID 控制的溫度控制塊 ;也可以由您自己創建(圖 3 所示的就是用 SFC 構 造序列)。
圖3 :順序功能圖 (SFC) 提供了一種方法,可以將可編程控制器程序劃分為一系列的步驟和轉換,它們直接相互連接。
SFC 提供了一種方法,可以將可編程控制器程序劃分為一系列的步驟和轉換,它們直接相互連接。與每個步驟相關聯的是一組動作,與每個轉移相關聯的是轉移條件。
從初始化開始,因為在第一次啟動系統時,并不知道系統的狀態,所以我們必須檢查閥門的位置等。然后開始填充,直至達到合適的液位。下一階段是加熱直到發酵過程開始。接著,進入實際發酵過程控制部分。
完成后,收獲產品,然后清理干凈,準備重新開始。這種分解,使每個參與者都清楚地了解所涉及的序列,并進一步模塊化為功能塊,然后用 4 種語言中的任何一種來進行編程。
現在要完成執行級別的編程工作。這些工作可以分配給不同背景的人。為此,IEC 定義了 2 種圖形和 2 種文本編程語言,即指令列表、結構化文本、梯形圖和功能塊圖,以最好地滿足需要和手頭的問題。此外,如果需要,還可以通過 SFC 進一步分解執行塊。
6、步驟六
定義應用程序不同部分的掃描周期要求。
在這個例子中,我們原則上只有一個循環,可以在連續模式下運行。或者,我們可以讓其定時運行,例如每 20 毫秒運行一次。剩余時間可用于附加序列,例如在收獲期間檢查,或控制運輸 / 裝瓶系統,或檢查所有邊界和錯誤條件。
7、步驟七
通過定義資源,將程序與物理輸入和輸出相鏈接,以及將程序和功能塊分配給任務來配置系統。該階段是專門針對相關系統的。
它包括符號到 I/O 地址的物理映射。通過使用符號表示,可以獲得更好的硬件獨立性。這對于創建獨立于硬件的功能塊尤其有效。有了清晰的物理映射,在現場重新布線更容易完成。例如,交換兩個數字輸入的接線,在物理映射中只需更改 兩行,程序的其余部分仍然有效,無需更改。
在這里,資源是相互映射的,意味著無論哪個部分運行在系統中的哪個處理器上,都能一一對應。IEC 61131-3 支持多線程處理環境,盡管大多數系統實際仍使用一個處理器來處理程序。
用戶還必須將任務映射到掃描周期和事件,如步驟 6 中定義的那樣。這樣,一個系統中可以有多個程序,例如這里描述的發酵過程,由整體檢查和控制支持,而其背后又有支持環境,例如供應鏈前端的裝瓶或液位。
IEC 61131-3 編程標準為多層次的用戶和應用,提供了強大的工具。使用高級 SFC,可以為正在開發的系統提供很好的概覽,從而提高可讀性和透明度。它為手頭的控制問題的模塊化提供了指導。此外,它還為區分不同的開發任務提供了基礎,并將注意力集中在實際編碼層,創建可復用的軟件代碼上。
-
plc
+關注
關注
5014文章
13347瀏覽量
464432 -
編程語言
+關注
關注
10文章
1949瀏覽量
34851
發布評論請先 登錄
相關推薦
評論