• <bdo id="06t49"><optgroup id="06t49"><dd id="06t49"></dd></optgroup></bdo>
    1. <bdo id="06t49"><optgroup id="06t49"><thead id="06t49"></thead></optgroup></bdo>
      1. <track id="06t49"></track>
        <tbody id="06t49"></tbody>

        1. <bdo id="06t49"><optgroup id="06t49"></optgroup></bdo>
          <tbody id="06t49"><div id="06t49"></div></tbody>

          如何利用PLC編程語言提高編程的工作效率和質量

          文章出處:gkb01 閱讀量:1012 發表時間:2022-07-21 09:17

                 本文主要從方法論的視角討論在PLC的編程過程中如何通過導出若干規則來改善當前的編程實踐,提高編程的工作效率和編程的質量。

                 軟件結構化和模塊化的主要前提條件 

                 軟件的結構化和模塊化意味著軟件是按照一定的規則將按結構劃分/功能劃分的單元(即模塊)進行弱耦合,而這些單元或模塊是完全遵循獨立開發和獨立測試的原則進行的。

                 構成軟件結構化和模塊化的主要前提條件是進行周密的設計和遵循相關的標準。所謂進行周密的設計就是要增加設計階段在整個開發過程中的權重;只有在清晰定義控制程序的結構和定義模塊之間的相互關系之后才著手開始程序的開發。所謂遵循相關標準的含義是,充分挖掘IEC 61131-3規范的編程語言的潛在能力,在設計和開發階段加以利用,因為這些工控編程語言足足可以滿足編程人員的絕大部分的需要。當然隨著編程平臺和集成開發環境的提升和進步,目前還引入了IT領域流行的語言如C、C++、JAVA、Python等作為加強及補充。

                 之所以特別強調設計的重要,是因為良好準確的軟件設計規范強烈地影響所開發的軟件的質量。一般而言,軟件的設計規范書對每一個編程人員的影響可以用代碼的正確性和執行效率來衡量。即使是沒有經驗和技巧的編程人員所造成的可能的缺陷,雖然會對系統的運行產生影響,但也可以在調試中予以消減甚至消除。然而一個設計得有問題的軟件規范書交給有經驗的編程人員,很難找到那些不完善或者錯誤的分析所造成的問題,并確定問題具體表現在哪些程序段,因而很難運用編程技巧來避免和消除??傊?,在軟件設計階段所產生的后果將涉及以下各個方面:調試困難和耗費時間,很低的重復使用率,軟件客制化的難度加大,以及阻礙軟件進一步擴展等。另外,從軟件開發的成本的角度看,如果消除代碼的bug所耗費的時間和成本為1,那么消除一個設計不完善的問題其耗費的時間和成本將會是10倍,如果要把這一問題隔離開來并找到解決方法可能會再高一個數量級,也就是100倍了。

          至于為什么要遵循IEC 61131-3的國際標準就不必多言了。我們需要研究的是,在開發PLC的應用程序的整個過程中,這個標準所規范的編程語言應該如何分工,各司其職,才能收到良好的效果。

                 SFC兼具PLC系統行為描述的作用 

                 PLC的控制程序的開發一般可劃分為三個階段,即分析、設計和寫代碼。在IEC 61131-3標準中并沒有規定在PLC軟件開發生命周期的哪個階段一定要使用哪種語言。我們必須自行去了解在這5種語言中哪一種最適合于支持軟件開發的初始關鍵階段,而哪些語言適用于寫程序代碼的階段。

                 從結構化的完整性和表達的能力這兩個準則來觀察,明顯可見SFC處于高端的級別,可以用作設計系統控制軟件的主要工具。SFC所表達的模塊化是結構性的模塊化,區別于功能塊圖語言FBD所表達的功能性的模塊化。功能性的模塊化雖然重要,但在PLC控制程序的開發過程中,難以從工藝控制的完整性的視角來分析如何通過結構化來實現模塊化。因為在PLC軟件開發生命周期的初始關鍵階段,最重要的是分析控制的構成結構,導出每個構成單元都是整個完整結構中的一個獨立組成單位(也即是模塊),每個獨立的組成單元具有各自的功能性,但相互之間的關系卻是弱耦合,而非強耦合。由此可見SFC最適合于按軟件工程的方法進行分析和設計,而其它4種語言,還有SFC語言本身,都可用于寫程序代碼的階段。由于結構文本化語言ST類似于C語言和Pascal語言,結構化的表達能力遠勝于FBD和LD,適于對各種算法特別是復雜算法進行編程。而梯形圖語言LD因為歷史的原因在電氣自動化控制領域已經形成為一種技術文化傳承,有著很深的應用基礎,所以在以SFC為主線的程序結構中適合用于動作塊和轉移條件的編程。如何應用,則視具體情況而定。圖1給出了5種語言在PLC軟件設計階段中所處的級別和作用。

          圖1 5種語言在PLC軟件設計中的作用

                 為什么推薦采用SFC作為設計系統控制的主要工具,而其他的語言則用在控制軟件代碼開發階段,主要是因為SFC適用于多狀態操作運行的場景,而且特別容易表達多狀態操作運行的場景。而SFC所具有的獨特優勢在于它能夠把大型復雜的過程分解為許多較小的易于了解、便于操作的過程。具體分析如下:

                 1)表達控制要求的超強能力;

                 2)圖形表達的形式方法:

                 3)支持初步設計;

                 4)支持詳細設計;

                 5)與其它編程語言的天然連接;

                 6)支持軟件的分段執行

          01、表達控制要求的超強能力  

                 SFC順序功能圖語言有效繼承了法國PLC編程語言標準Grafcet的精髓,在表達的潛力方面與狀態圖無異,而在針對并行或并發問題上又吸收了Petri網優勢。正因為狀態圖和Petri網被認為在建模的動態過程方面是最合適的工具,同時又被擴展到各個領域,因此SFC語言在本質上就具有對系統的行為建模的強大能力。

          02、圖形表達的形式方法

                 SFC不僅是IEC 61131-3標準規范的圖形化的語言,而且在與同樣是標準所規范的另外兩種圖形化語言LD和FBD相比,在描述和表達系統的動態過程的能力方面顯然居于更高的級別。進一步說,SFC語言的圖形化的語法容易學習掌握和使用,也是優勢之一。實際使用的經驗表明,對同一個工藝要求和控制過程,不同的編程人員編制出來程序具有高度的一致性,至少是大同小異,或者完全一樣,這也表明用SFC語言編制的程序可讀性很強

          03、支持初步設計  

                 在設計的初始階段,當許多方面尚未清晰,或者設計人員還未深入了解之前,仍可以用SFC的圖形方法進行系統行為的形式表達,因此可以說SFC在初步設計階段就是一種有價值的工具。運用SFC能夠避免在用自然語言描述系統規范時可能出現的模糊不清,這樣就可以大大減少客戶、設計者和編程人員之間的相互不理解的次數。

          04、支持詳細設計  

                 在設計的早期階段運用SFC得出的方案,可以在取得新的信息之后逐漸深化,由概略進一步細化,尤其是與狀態不關聯的動作塊可進一步細化,使之成為新的嵌套的SFC方案。依此方法一步步地深入,直到得到所希望的詳細深度。不論是在初步設計階段還是在詳細設計階段,這種在語義和語法上的連貫性,對編程人員來講,采用SFC語言是很順手的。

          05、與其它編程語言的天然連接  

                 明顯可見SFC非常適合于IEC 61131-3標準規范的其它編程語言組合使用,特別是在詳細描述控制細節(如轉移條件和基本的動作)時采用梯形圖LD或ST語言,既可以收到提高整體的編程效率的效果,又可以提升可執行代碼的性能。這就是所謂“在正確的時刻或正確的編程過程中視具體情況選擇正確的編程語言”的結果。

          06、支持軟件的分段執行  

                 運用SFC語言可以簡便地處理按不同的掃描執行周期將整個控制軟件分割為多個程序段,這為減少最大的掃描時間提供了先決條件。應該指出,在運用SFC語言表達程序段的分割時均表現為顯性,按執行條件是否滿足來啟動不同程序段的執行順序,這些執行條件都是顯性條件,不存在隱含條件。

          順序功能圖語言SFC概述 

                 IEC 61131-3標準中,順序功能表圖(SFC:Squence Function Chart)是作為編程語言的公用元素定義的。它是采用文字敘述和圖形符號相結合的方法描述順序控制系統的過程、功能和特性的一種編程方法。它既可作為文本類編程語言,也可作為圖形類編程語言,但通常將它歸為圖形類編程語言。因此,通常講IEC 61131-3有三種圖形類編程語言。

          順序功能表圖(法文為GRADCET:Graphe de CommandeEtape-Transistion)最早由法國國家自動化促進會(ADEPA)提出。它針對順序控制系統的控制條件和過程,提出的一套表示邏輯控制功能的方法。由于該方法精確嚴密,簡單易學,有利于設計人員和其他專業人員設計意圖的溝通和交流,因此,該方法公布不久就被許多國家和國際電工委員會所接受,并制定了相應的國家標準和國際標準。IEC 60848《用于順序功能表圖的GRAFCET規范語言》以及中國國標GB/T 21654《順序功能表圖用GRAFCET規范語言》的頒布,為我國應用順序功能表圖編程語言提供了堅實理論基礎。

          繪制一個控制系統SFC表達的基礎是要確定該控制系統的邊界和順序功能表圖的范圍。通常,把一個控制系統分為施控系統和被控系統兩個相互依賴的部分。圖2表示施控系統和被控系統之間的關系。

          圖2 控制系統的SFC表達舉例

                 施控系統接受來自操作員、過程等信息,并向被控系統發出操作命令。

                 被控系統包括執行實際過程的操作設備,它接受來自施控系統的命令,并為施控系統提供反饋信息。圖中表示了這些系統順序功能表圖的界限。

                 施控系統的輸入是操作員和可能的前級施控系統的命令及被控系統的反饋信息,它的輸出包括送到操作員的反饋信息,前級施控系統的輸出命令和送到被控系統的命令。

                 被控系統的輸入是施控系統的輸出命令和輸入過程流程的參數,它的輸出包括反饋到施控系統的信息、過程流程中執行的動作,它使該流程具有所需的特性。

                 施控系統的順序功能表圖描述控制設備的功能,由設計人員根據其對過程的了解來繪制,并作為詳細設計控制設備的基礎。

                 被控系統的順序功能表圖描述操作設備的功能,由工程設計人員繪制,作為操作設備工程設計的基礎,它也用于繪制施控系統順序功能表圖。

                 順序功能表圖只提供描述系統功能的原則和方法,不涉及系統所采用的具體技術,因此,用順序功能表圖可以描述控制系統的控制工程、功能和特性,可描述控制系統組成部分的技術特性而不必考慮具體的執行過程。它適用于繪制電氣控制系統的順序功能表圖,也適用于繪制非電氣控制系統(如氣動、液動和機械的)的順序功能表圖。

                 圖3顯示了數控機床的被控系統和施控系統。圖中,被控系統是機床,施控系統是數控裝置??刂葡到y用于將材料進行加工成為零件。

          圖3 數控機床的被控系統和施控系統示例

                  SFC是一種按照自動控制的要求對Petre網方法加以適當簡化和改進的程序設計法。它數學基礎嚴格,嚴密精確;但又簡單易學。描述元素只有3種,即:步(step)、轉換(transition)和有向連線(oriented line)。表1是順序功能表圖編程語言的有關術語。圖4是SFC的典型的表述方式。由一系列順序相連的狀態描述順序控制的過程,對應每一個狀態有一個步序。由有向連線將前后各個狀態(步序)連接,僅當前一個狀態(活動步)執行完成其規定的動作,且由當前狀態向排列在其后的狀態轉移的條件成立,才執行有當前狀態向下一個狀態轉移,直到整個順序過程完成后即停止。

          表1 順序功能表圖編程語言的術語

          術語英文名稱說明
          表圖Chart用圖形方式描述系統的行為,例如兩個或更多變量、操作或狀態之間的關系
          Step定義系統順序部分狀態的GRAFCT語言元素,步分為活動步和非活動步
          轉換TransitionGRAFCT語言元素,指示在兩個步或多步之間活動的可能進展
          有向連線Directed Link表示步之間進展的GRAFCT語言元素,將步連接到轉換,并將轉換連接到步
          動作Action表示輸出變量所進行活動與步有關的GRAFCT語言元素
          狀態Situation在給定時刻由GRAFCT描述,并由活動步表征的系統狀態的名稱
          轉換條件Transition Condition用布爾表達式結果表示的與轉換有關的GRAFCT語言元素,轉換條件是與每個轉換有關的邏輯表達式

          圖4 SFC典型的表達方式

                  SFC 結構化的優勢 

          眾所周知IEC 61131-3實現結構化分三個層次:

                 ①通過軟件模型表現了配置、資源、任務、程序組織單元的結構層次;

                 ②創建了結構文本化語言ST,為程序組織單元的結構化程序實現,提供了文本化語言;

                 ③順序功能圖語言既為程序組織單元的結構化程序實現,提供了圖形化語言;又為整個程序設計的各個階段提供了實現結構化設計的工具。

                 SFC可以表述單一的順序過程,也可以表述各種復雜的順序過程,如循環的順序過程,具有可控終止的順序循環過程,具有分支的循環順序過程(見圖5),并行分支的順序過程,選擇性的分支順序過程,同步的并行分支順序過程(見圖6),在完成分支過程之后再行合并的順序過程,等等??傊ㄟ^靈活的使用跳轉(有向連線)和轉移條件,可以將各種操作狀態組成各種結構化的順序控制過程。

          圖5 具有分支的循環順序過程

          圖6 同步的并行分支順序過程

                 SFC描述方法直觀,十分便于程序設計人員和工藝專業人員在設計階段進行溝通和交流。它特別便于用戶直接按工藝流程編制控制程序,不同的編程人員編的程序極少差異,提高了編程的正確性和程序的可讀性;用SFC表達控制內容時,實際工序與程序一一對應,一目了然;在控制工序發生異常時容易確認問題的所在,因而修改與維護均很方便。概括起來說,SFC具有結構化的屬性:其自頂向下的設計方法,以及可將步用作宏步,十分便于在初步設計時作為結構化的工具。進入詳細設計階段,再根據已明確的控制步驟和要求細節,將宏步擴展為每個具體的步,列出轉換條件和與每一步相關聯的動作,控制程序就在這樣有條不紊的氛圍中完成。

                 如果遇到相當復雜的控制問題,我們可以借助于有限狀態自動機的方法,畫出狀態圖,只要掌握了狀態圖與SFC語義的異同,由狀態圖轉換為SFC程序也是相當便捷的。

          結束語 

                 國際上SFC語言的使用已經比較普遍。已經在工業自動化領域獲得成功的PackML(Packing Machine Language),不僅在包裝行業獲得廣泛的認可和應用,而且還被作為集成架構的典型策略解決方案,為機械裝備的集成系統提供了建模的參照標準。PackML為包裝機械和生產線開發的編程語言,主要依據IEC 61131-3的順序功能圖語言SFC,并定義了許多適合包裝工藝應用的功能塊,可用于SFC編程中的動作塊。2019年PLCopen國際組織和美國的automation.com網站聯合進行了了PLC用戶編程語言偏好的調查。用得最多的是結構化文本語言(40%),其次是梯形圖(38%),再次是功能塊圖(35%),第四是順序功能圖(28%)。各種編程語言運用的差距并不大,沒有特別多的,即使居第一的結構化文本也不過比居于第五的其它語言多的有限。

                 國內至今還沒有正式進行過這方面的調查,但從平時的了解來看,截至目前為止在編制PLC程序時,國內的編程人員如果用到SFC,也只不過把它僅僅作為一種編制順控程序的工具,只有極少數的先知先覺者才認識到并在實踐中把SFC當作系統設計的工具。正是考慮到這一現實,我們有必要對SFC的結構化功能、它在描述控制系統的行為特性的作用,以及在系統設計中作為初步設計的整體結構化的工具等重新認識,把它的潛力充分發揮出來。

          国产精品高清国产三级国产AV|中文字幕无码久久人妻|欧美va手机在线免费观看成人|亚洲一本大道中文在线
        2. <bdo id="06t49"><optgroup id="06t49"><dd id="06t49"></dd></optgroup></bdo>
          1. <bdo id="06t49"><optgroup id="06t49"><thead id="06t49"></thead></optgroup></bdo>
            1. <track id="06t49"></track>
              <tbody id="06t49"></tbody>

              1. <bdo id="06t49"><optgroup id="06t49"></optgroup></bdo>
                <tbody id="06t49"><div id="06t49"></div></tbody>