自動化軟件設計IEC61131-3標準專題(四)
IEC 1131-3 的編程語言(一):圖形化語言
本篇繼續介紹IEC 1131-3的三種編程語言:功能塊圖(FBD)、梯形圖(LAD)和順序功能流程圖(SFC)。
一、功能塊圖(FBD - Function Block Diagram)
功能塊圖用來描述功能、功能塊和程序的行為特征,還可以在順序功能流程圖中描述步、動作和轉變的行為特征。功能塊圖與電子線路圖中的信號流圖非常相似,在程序中,它可看作兩個過程元素之間的信息流。功能塊圖普遍地應用在過程控制領域。
功能塊用矩形塊來表示,每一功能塊的左側有不少于一個的輸入端,在右側有不少于一個的輸出端,功能塊的類型名稱通常寫在塊內,但功能塊實例的名稱通常寫在塊的上部,功能塊的輸入輸出名稱寫在塊內的輸入輸出點的相應地方。
1.1 功能塊圖的信號流
在功能塊網路中,信號通常是從一個功能或功能塊的輸出傳遞到另一個功能或功能塊的輸入。信號經由功能塊左端流入,并求值更新,在功能塊右端流輸出。
布爾信號的取反
在使用布爾信號時,功能或功能塊的取反輸入或輸出可以在輸入端或輸出端用一個小圓點來表示,這種表示與在輸入端或輸出端加一個“取反”功能是一致的。如下圖是一功能塊圖取反的實例。
l 信號反饋
功能塊圖允許功能塊的輸出反饋回網路左側的功能塊輸入,形成反饋路徑。下圖是一功能塊反饋路徑的實例,功能塊Load1的輸出端Level反饋回功能塊Loop1的輸入端ProcessValue。
1.2 功能塊網路設計
功能塊圖的設計首先應該保證主信號流的線路清晰,避免過多的信號跨接和線路方向改變。
1.3 功能的執行控制
功能塊圖網路中的功能執行控制隱含地從各功能所處的位置中表現出來。每一功能的執行隱含地是由一個輸入使能EN控制,該輸入EN是一個布爾類型變量,允許功能有選擇的求值。當輸入EN為TRUE時,該功能就執行,否則,功能不執行。功能的輸出ENO也是一個布爾變量,當ENO從FALSE變成TRUE就表明功能已經完成了求值。
1.4 跳轉和標注
功能塊圖允許使用“Jump”功能使得功能塊圖控制從程序的一個部分跳轉到另一個由標識符“Lable”標識的部分繼續執行。如下圖是一個跳轉的實例:當GasLevel的值超過0。15時,相應的控制即轉移到有表識符GAS_ALARM的程序段繼續執行。
1.5 結構化文本與功能塊圖之間的轉換特點
功能塊圖中的大部分程序能夠轉換為結構化文本。
結構化文本程序能夠容易地轉化為功能、功能塊及其相關的參數值。
結構化文本直接轉化為功能塊網路是很困難的,IF…THEN, CASE,FOR, WHILE,
REPEAT格式的語句還不能直接轉換為功能塊網路。
1.6 連續功能流程圖(CFC-Continuous Function Chart)
連續功能流程圖是功能塊圖的一種特殊形式,它用于描述資源的頂層結構以及程序和功能塊對任務的分配。
連續功能流程圖和功能塊圖之間的主要區別是資源和任務分配的不同。每一功能用任務的名稱來描述,如圖所示。程序也是箱是的情況。如果一個程序內的功能塊象它的父程序一樣在相同的任務下執行,任務關聯是隱含的。在這種情況下,任務名稱就沒有必要顯示在功能塊中。連續功能流程圖如圖7所示。
1.7 功能塊圖應用實例
如圖是一個功能塊應用的實例,該實例描述了用功能塊控制空氣風門的情況。信號ReqOpen以及ReqClose給出了所要求的風門的位置,該位置被保存在RS雙穩態功能塊中,來自“Position” 功能塊輸出及轉換輸出用于用于產生DemandOpen和DemandClose信號,這些信號驅動風門轉動到合適的位置。
風門上的限位開關OpenLS和CloseLS返回的是風門的實際位置信號。限位開關信號與要求的風門位置進行與比較,如果任何一個校對失敗,比如風門已打開到要求的位置,而限位開關OpenLS處于false,延時計時器將起動。如果風門未按要求移動到要求的位置并且在限定的有限時間MoveTimeOut內不能確定限位開關的情況,定時器Timer1將產生Discrepancy信號。
二. 梯形圖(LD-Ladder Diagram)
梯形圖IEC 1131-3的三種圖形化編程語言種一種,它可被用來描功能,功能塊和程序即程序組織單元(POU-Porgramm Orgnization Unit)的行為,以及順序功能圖(SFC - Sequential Function Charts)中的行為和轉移。
2.1 LD背景
梯形圖來源于美國,它基于圖形表示的繼電器邏輯,是PLC編程中被最廣泛使用一種圖形化語言。梯形圖程序的左、右兩側有兩垂直的電力軌線,左側的電力軌線名義上為功率流從左向右沿著水平梯級通過各個觸點、功能、功能塊、線圈等提供能量,功率流的終點是右側的電力軌線。每一個觸點代表了一個布爾變量的狀態,每一個線圈代表了一個實際設備的狀態,功能或功能塊與IEC 1131-3中的標準庫或用戶創建的功能或功能塊相對應。一簡單的梯形圖程序如圖(一)所示。
2.2 IEC 1131-3的LD圖形符號
IEC 1131-3中的梯形圖(LD)語言是對各PLC廠家的梯形圖(LD)語言合理地吸收、借鑒,語言中的各圖形符號與各PLC廠家的基本一致。IEC 1131-3的主要的圖形符號包括:1.觸點類:常開觸點、常閉觸點、正轉換讀出觸點、負轉換觸點。2. 線圈類:一般線圈、取反線圈、置位(鎖存)線圈、復位去鎖線圈、保持線圈、置位保持線圈、復位保持線圈、正轉換讀出線圈、負轉換讀出線圈。 3. 功能和功能塊:包括標準的功能和功能塊以及用戶自己定義的功能塊,圖形太多這里未給出。
2.3 IEC 1131-3的LD編程
2.3.1 在梯形圖中連接功能塊
功能塊能被連接在梯形圖的梯級中,每一功能塊有相應的布爾輸入和輸出量。輸入量可以被梯形圖梯級直接驅動,輸出可以提供驅動線圈的功率流。在每一個塊上至少應有一個布爾輸入和布爾輸出以允許功率流通過這個塊。功能塊可以是標準庫中的也可以是自定義的。如下圖二是一個在梯形圖中連接功能塊以驅動電動馬達的實例。
2.3.2 在梯形圖中連接功能
每一個功能有一個附加的布爾輸入EN和布爾輸出ENO。EN提供了流入功能的功率流信號;ENO提供了可用來驅動其它功能和線圈的功率流。如下圖三是在梯形圖中連接功能的實例,第一個功能是在三個數中取最大,第二個功能是從第一功能輸出的最大數與1000.0比較,根據比較1000.0的大小來控制線圈COOL。
2.3.3 在梯形圖中有反饋回路
在梯形圖程序中可包含反饋回路,例如,在反饋回路中,一個或多個觸點值被用作功能或功能塊的輸入的情況。如圖三是在梯形圖中有反饋回路的情況。
2.3.4 梯形圖中使用跳轉和標注
使用梯形圖的跳轉功能使得梯形圖程序可以從程序的一個部分跳轉到由一個標識符標識的另一部分。如下圖四是在梯形圖中使用跳轉和標注的實例,當變量OXYGEN或PRESSURE是OFF,控制即轉移到由SPARGE標識的控制程序處執行。
2.4 ST、FBD及LD之間的可移植性
簡單的主要包含“與”和“或”邏輯梯形圖程序可以與結構化文本程序轉換;在大部分的情況下,梯形圖程序可以與功能塊圖程序進行轉換。
用結構化文本描述的功能可以直接與梯形圖、功能塊轉換除簡單的邏輯描述外,由結構化文本程序到梯形圖程序的轉換常常是不可能的。
2.5 梯形圖編程
如圖五是一個用梯形圖編寫的火災報警程序。FD1,FD2和FD3 是三個火災探測器,
MAN1是一個手動按鈕,用來觸發火災報警。當三個探測器中的任兩個或三個全部探測到有火災情況發生時,于是Alarm_SR功能塊驅動報警線圈報警。ClearAlarm按鈕清除報警。當有一個探測器處于ON,相應的火災警告指示燈亮。如果該指示燈在報警清除后繼續保持亮,就表明該探測器或者有錯,或者在該探測器的附近有火災。
三. 順序功能流程圖(SFC-Sequential Function Chart)
順序功能流程圖是IEC 1131-3三種圖形化語言中的一種,是一種強大的描述控制程序的順序行為特征的圖形化語言,可對復雜的過程或操作由頂到底地進行輔助開發。SFC允許一個復雜的問題逐層地分解為步和較小的能夠被詳細分析的順序。
3.1 順序功能流程圖的基本概念
順序功能流程圖可以由步、有向連線和過渡的集合描述。如下圖反映了SFC的主要特征。
步用矩形框表示,描述了被控系統的每一特殊狀態。MFC中的每一步的名字應當是唯一的并且應當在MFC中僅僅出現一次。一個步可以是激活的,也可以是休止的,只有當步處于激活狀態時,與之相應的動作才會被執行,至于一個步是否處于激活狀態,則取決于上一步及過渡。
有向連線
有向連線表示功能圖的狀態轉化路線,每一步是通過有向連線連接的。
過渡
過渡表示從一個步到另一個步的轉化,這種轉化并非任意的,只有當滿足一定的轉換條件時,轉化才能發生。轉換條件可以用ST、LD或FBD來描述。轉換定義可以用ST、IL、LD或FBD來描述。過渡用一條橫線表示,可以對過渡進行編號。
動作(action)
每一步是用一個或多個動作(action)來描述的。動作包含了在步被執行時應當發生的一些行為的描述,動作用一個附加在步上的矩形框來表示。每一動作可以用IEC的任一語言如ST、FBD、LD或IL來編寫。每一動作有一個限定器(Qulifier),用來確定動作什么時候執行;標準還定義了一系列限定器(Qulifier),精確地定義了一個特定與步相關的動作什么時候執行。每一動作還有一個指示器變量,該變量僅僅是用于注釋。動作的表示如下圖所示:
l 轉化規則
順序功能流程圖的任一步可能是激活的,也可能是休止的,與之相應的動作(Action)只有在步處于激活狀態時,方能被執行,所以,步被激活和被休止的過程編確定了系統的行為。初始狀態是指指令運行的開始即被激活的那個狀態,這個步的標志為S0。每個過程都可以是有效的,也可以是無效的,只有緊接其前的各個階段都處于激活狀態時,過渡才是有效的,只有同時滿足(1)過渡是有效的 (2)過渡對應的接受特性為真,與過渡相連的下一步方能處于激活狀態,同時,緊接其前的各個步全部被休止。當幾個過渡可以同時被超越時,他們將同時被超越。
3.2 順序功能流程圖(SFC)的幾種主要形式
按著結構的不同,順序功能流程圖(SFC)可分為以下幾種形式:單序列控制、同時序列控制、分支結構序列、轉移序列和起始步。
3.3 順序功能流程圖(SFC)的程序執行
順序功能流程圖(SFC)程序的執行應遵循相應的規則,每一程序組織單元(POU)與一任務(task)相對應,任務負責周期性地執行程序組織單元(POU)內的IEC程序,順序功能流程圖(SFC)內的動作也是以同樣周期被執行。
3.4 對不安全的SFC的處理
SFC編譯器有能力采用相應的算法檢測到某些結構不安全的SFC。如果一個完全整個流程圖能分解為一個單步,該SFC就是安全的,否則是不安全的。
3.5 SFC編程舉例
我們現在用SFC編寫一個工業電梯(lift)程序。電梯(lift)系統如圖所示。電梯通過一個電動絞車控制上升或下降,可按要求停止在任一樓層。當電梯將到達某一被選樓層的位置時,一微型接近開關(Proximity Switch)起作用并發出信號,讓電梯減速并停在正確的位置。當電梯停下后,門微動開關(Floor Switches)起作用并將門打開。該工業電梯(lift)的MFC程序如圖所示。
程序從“Init”起始步開始。主要順序從“DoorOpen”步開始,依次執行“Shutting”步、“MoveLeft”步、“Inching”步、 “Stopping”步、 “Opening”步等,最終實現對電梯的順序控制。