PLC編程的結(jié)構(gòu)化 :走向成功的7個(gè)步驟
2022-05-09 來自: 黑龍江恒通電氣有限公司 瀏覽次數(shù):299
根據(jù)現(xiàn)代軟件開發(fā)環(huán)境的需求,國JI電工委員會(huì) (IEC) 的可編程邏輯控制器標(biāo)準(zhǔn)第 3 部分編程語言 IEC 61131-3 包括了強(qiáng)大的結(jié)構(gòu)化工具。其中關(guān)鍵部分是順序功能圖 (SFC) 和用戶自定義的功能塊。兩者都為將控制系統(tǒng)分解成可管理的單元提供了一個(gè)很好的方法。
這些單元更容易被不同背景的人使用和理解。它提供了系統(tǒng)工程師、軟件開發(fā)人員以及安裝和維護(hù)人員之間缺失的環(huán)節(jié)。此外,它還為這些不同的群體提供了一種表達(dá)和交流的工具。
通過這種方式,在更大的應(yīng)用中,多專YE團(tuán)隊(duì)也可以相互協(xié)作,編制更易于理解和可復(fù)用的代碼,并在程序員、安裝和維護(hù)人員以及用戶之間提供不同級(jí)別的隔離。
此外,在軟件開發(fā)初期就可以進(jìn)行錯(cuò)誤檢測(cè)和錯(cuò)誤處理。另一種方法,是在安裝過程中(甚至在運(yùn)行期間)創(chuàng)建這些程序,但對(duì)于供應(yīng)商(支持)和用戶(停機(jī))來說成本都太昂貴。
為控制系統(tǒng)編程提供結(jié)構(gòu)
控制系統(tǒng)代碼結(jié)構(gòu)化的優(yōu)點(diǎn)很多,包括:更hao的系統(tǒng)概覽,不僅對(duì)原始程序員很重要,對(duì)安裝和維護(hù)人員也很重要;為多專YE開發(fā)團(tuán)隊(duì)的內(nèi)部溝通提供更hao的基礎(chǔ);不同職責(zé)之間的明確分離;更hao地關(guān)注真正的問題和可能的解決方案;以及可復(fù)用軟件的基礎(chǔ)。
結(jié)構(gòu)化是通過將問題分成更小的部分來完成的。這些部分可以進(jìn)一步細(xì)分。但這樣做也有局限性 :不能無限制的持續(xù)細(xì)化,因?yàn)檫@會(huì)增加集成工作。
模塊化塊的使用涉及 5 個(gè)基本原則 :
● 編程語言應(yīng)支持模塊化單元。
● 單元的組成方式和數(shù)量,應(yīng)使其具有ZUI少的接口和ZUI少的交互。
● 接口要小,需要ZUI少的數(shù)據(jù)交換。
● 模塊交互需要明確定義,以增加其可復(fù)用性。
● 模塊應(yīng)該提供數(shù)據(jù)封裝功能 :應(yīng)用程序數(shù)據(jù)是分區(qū)的,每個(gè)分區(qū)只能由一組功能訪問,這 樣就可以將其隱藏起來,避免不必要的訪問。
編程軟件結(jié)構(gòu)化的 7 個(gè)步驟
以下 7 個(gè)步驟,為控制系統(tǒng)編程軟件的結(jié)構(gòu)化提供了一條成功之路 :
● 識(shí)別控制系統(tǒng)的外部接口。
● 定義控制系統(tǒng)和工廠其它部分之間交換的主要信號(hào)。
● 定義所有操作人員的交互、覆蓋和監(jiān)控?cái)?shù)據(jù)。
● 控制問題分析,從頂層到邏輯分區(qū),逐步分解。
● 定義所需的功能塊。
● 定義應(yīng)用程序不同部分的掃描周期要求。
● 通過定義資源、將程序與物理輸入和輸出相連接,以及將程序和功能塊分配給任務(wù)來配置系統(tǒng)。
IEC 61131-3 提供的合適環(huán)境可以支持這些步驟。下面將以發(fā)酵過程及其控制系統(tǒng)為例詳細(xì)探討編程軟件結(jié)構(gòu)化的過程。圖 1 是整個(gè)系統(tǒng)的示意圖。
發(fā)酵過程包括一個(gè)大容器,它可以裝滿液體(進(jìn)料閥),可以用加熱帶加熱(通過對(duì)流冷卻), 通過電機(jī)攪拌,并且可以添加酸和堿液進(jìn)入容器。處理完成后,就用收獲閥來收獲產(chǎn)品。要為此示例創(chuàng)建控制程序,需要完成上述 7個(gè)步驟 :
步驟一
識(shí)別控制系統(tǒng)的外部接口,包括 :
● 來自溫度傳感器的反饋 ;
● 來自 pH 傳感器的反饋 ;
● 來自閥門位置的反饋 ;
● 來自電機(jī)的反饋(速度);
● 輸出到閥門 ;
● 輸出到電機(jī) ;
● 輸出到加熱帶。
步驟二
定義控制系統(tǒng)和工廠其它部分之間交換的主要信號(hào)。
在該例中,系統(tǒng)與工廠的其余部分沒有耦合,但是在現(xiàn)實(shí)中不太可能。例如,人們可能需要 一個(gè)連接到容器的管道,該管道還需要接到接收系統(tǒng),如容器或瓶子的運(yùn)輸系統(tǒng)。也可能與企業(yè)資源規(guī)劃 (ERP) 系統(tǒng)耦合。
步驟三
定義所有操作人員交互、覆蓋和監(jiān)控?cái)?shù)據(jù)。
對(duì)于操作人員,我們定義了 “開始”、“停止”和“持續(xù)時(shí)間” 按鈕作為系統(tǒng)的輸入。
步驟四
控制問題分析,從頂層到邏輯分區(qū),逐步分解。
這個(gè)過程有 5 個(gè)主要功能 :
a. 主順序,例如,頂層工藝步驟——灌裝、加熱、攪拌、發(fā)酵、收獲、清潔 ;
b. 閥門控制,操作用于填充和清空容器的閥門 ;
c. 溫度控制,用于監(jiān)測(cè)容器溫度, 調(diào)節(jié)加熱器 ;
d. 攪拌器控制,用于根據(jù)主工藝順序的要求啟動(dòng)攪拌器電機(jī)。
e.pH 控制,用于監(jiān)測(cè)發(fā)酵內(nèi)容物的酸度,根據(jù)需要添加酸液或堿液。
步驟五
定義所需的功能塊。
使用上面的定義并向其添加(高級(jí))功能塊,我們就可以在編程語言中使用這些功能塊圖。發(fā)酵控制程序的功能塊圖如圖 2 所示。
圖 2 :此圖表示的是發(fā)酵過程的功能塊圖,左側(cè)是輸入,右側(cè)是輸出。
功能塊主序列連接到運(yùn)行人員輸入。它由其它控制塊支持,這些塊連接到相關(guān)的輸入和輸出。這些附加塊可以是供應(yīng)商提供的塊,例如使用 PID 控制的溫度控制塊 ;也可以由您自己創(chuàng)建(圖 3 所示的就是用 SFC 構(gòu) 造序列)。
圖3 :順序功能圖 (SFC) 提供了一種方法,可以將可編程控制器程序劃分為一系列的步驟和轉(zhuǎn)換,它們直接相互連接。
SFC 提供了一種方法,可以將可編程控制器程序劃分為一系列的步驟和轉(zhuǎn)換,它們直接相互連接。與每個(gè)步驟相關(guān)聯(lián)的是一組動(dòng)作,與每個(gè)轉(zhuǎn)移相關(guān)聯(lián)的是轉(zhuǎn)移條件。
從初始化開始,因?yàn)樵贒I1次啟動(dòng)系統(tǒng)時(shí),并不知道系統(tǒng)的狀態(tài),所以我們必XU檢查閥門的位置等。然后開始填充,直至達(dá)到合適的液位。下一階段是加熱直到發(fā)酵過程開始。接著,進(jìn)入實(shí)際發(fā)酵過程控制部分。
完成后,收獲產(chǎn)品,然后清理干凈,準(zhǔn)備重新開始。這種分解,使每個(gè)參與者都清楚地了解所涉及的序列,并進(jìn)一步模塊化為功能塊,然后用 4 種語言中的任何一種來進(jìn)行編程。
現(xiàn)在要完成執(zhí)行級(jí)別的編程工作。這些工作可以分配給不同背景的人。為此,IEC 定義了 2 種圖形和 2 種文本編程語言,即指令列表、結(jié)構(gòu)化文本、梯形圖和功能塊圖,以ZUI好地滿足需要和手頭的問題。此外,如果需要,還可以通過 SFC 進(jìn)一步分解執(zhí)行塊。
步驟六
定義應(yīng)用程序不同部分的掃描周期要求。
在這個(gè)例子中,我們?cè)瓌t上只有一個(gè)循環(huán),可以在連續(xù)模式下運(yùn)行?;蛘?,我們可以讓其定時(shí)運(yùn)行,例如每 20 毫秒運(yùn)行一次。剩余時(shí)間可用于附加序列,例如在收獲期間檢查,或控制運(yùn)輸 / 裝瓶系統(tǒng),或檢查所有邊界和錯(cuò)誤條件。
步驟七
通過定義資源,將程序與物理輸入和輸出相鏈接,以及將程序和功能塊分配給任務(wù)來配置系統(tǒng)。該階段是專門針對(duì)相關(guān)系統(tǒng)的。
它包括符號(hào)到 I/O 地址的物理映射。通過使用符號(hào)表示,可以獲得更HAO的硬件獨(dú)立性。這對(duì)于創(chuàng)建獨(dú)立于硬件的功能塊尤其有效。有了清晰的物理映射,在現(xiàn)場(chǎng)重新布線更容易完成。例如,交換兩個(gè)數(shù)字輸入的接線,在物理映射中只需更改 兩行,程序的其余部分仍然有效,無需更改。
在這里,資源是相互映射的,意味著無論哪個(gè)部分運(yùn)行在系統(tǒng)中的哪個(gè)處理器上,都能一一對(duì)應(yīng)。IEC 61131-3 支持多線程處理環(huán)境,盡管大多數(shù)系統(tǒng)實(shí)際仍使用一個(gè)處理器來處理程序。
用戶還必XU將任務(wù)映射到掃描周期和事件,如步驟 6 中定義的那樣。這樣,一個(gè)系統(tǒng)中可以有多個(gè)程序,例如這里描述的發(fā)酵過程,由整體檢查和控制支持,而其背后又有支持環(huán)境,例如供應(yīng)鏈前端的裝瓶或液位。
IEC 61131-3 編程標(biāo)準(zhǔn)為多層次的用戶和應(yīng)用,提供了強(qiáng)大的工具。使用高級(jí) SFC,可以為正在開發(fā)的系統(tǒng)提供很好的概覽,從而提高可讀性和透明度。它為手頭的控制問題的模塊化提供了指導(dǎo)。此外,它還為區(qū)分不同的開發(fā)任務(wù)提供了基礎(chǔ),并將注意力集中在實(shí)際編碼層,創(chuàng)建可復(fù)用的軟件代碼上。(作者:Eelco van der Wal)
關(guān)鍵概念:
■ IEC 61131-3 編程標(biāo)準(zhǔn)為多層次的用戶和應(yīng)用提供了強(qiáng)大的工具。
■ 順序功能圖 (SFC) 和用戶衍生功能塊,是必不可少的部分。
思考一下:
您是否充分利用了IEC 6113-3 標(biāo)準(zhǔn)進(jìn)行結(jié)構(gòu)化設(shè)計(jì)?
轉(zhuǎn)自控制工程網(wǎng),如若侵權(quán)請(qǐng)聯(lián)系刪除!