PLC面向對象編程和梯形圖邏輯,到底誰更實用一些?

2021-01-06 騰訊網

在工業自動化領域,梯形圖邏輯仍然是最常用的程式語言之一,但對於更加複雜的控制對象,面向對象編程不失為一種高效率的方式。下面先來談談面向對象編程:

面向對象編程是計算機高級語言的一種先進的編程模式,在工業控制系統的PLC程序中也可以採用這種設計思想,雖然我們無法實現面向對象的很多優秀特點如「繼承」,甚至於它根本就不具備面向對象程式語言的特點,但面向對象編程的基本概念就是類和類的實例(即對象),我們只需要使用這種概念就可以了。在計算機編程中我們需要把一些事物抽象和歸納,才能編寫類,而在工業控制系統中,控制對象如:電機,閥等等是很明顯的控制類別,不需要抽象就可以很明顯的針對它們編寫類,以下將會用到西門子的Step7程式語言和施奈德的Unity 程式語言來講解PLC的面向對象編程。

一、實現方式

面向對象編程在Step7中使用功能塊(即FB)編程,一談到此大家就會想到西門子提出的模塊化編程,不錯,就是這個模塊化編程,但西門子提出的模塊化、背景數據塊、多重背景等名詞並不能讓大家很明白的理解和使用這種優秀的設計理念。

如果大家從面向對象編程的角度去理解,則可以很好的理解這種設計模式。「FB塊」被看 成「類」,它可以被看成是對相似的控制對象的代碼歸納,如對MM440的變頻器可以編寫FB塊:MtrMM440,這在面向對象編程中稱為「類」,當需要 編程控制具體的電機時,可以給它分配一個背景DB塊,在面向對象編程中稱為類的實現(即創建類的實例:對象),當需要控制多個電機時,可以分配不同的背景 DB到這個FB塊,即創建類的多個實例。Step7中有另外一種程序塊,即FC塊,以FC塊為主的編程在西門子中稱為結構化編程,這也可以類比於計算機編程中的面向過程編程,即純粹以函數為主體的編程。

施奈德的Unity軟體編程可以更好的理解面向對象編程。它的DFB定義中包含輸入/輸出參數,私有/共有變量,以及代碼實現,而這正是計算機的面向對象 編程中「類」的基本元素,而創建類的實例(對象)就像創建普通的「布爾」變量一樣,只需在「Function Blocks」中定義這種「類」的變量即可。

Step7和Unity都可以採用面向過程和面向對象編程方式,這兩種編程方式的區別類似於計算機高級語言中的C語言和C++語言編程的區別。

以下的講解將會把Step7中的FB和Unity中的DFB稱為「類」,Step7中的FB+背景DB以及Unity中DFB的實例稱為「對象」。

二、面對對象編程架構

以上講解的是實現細節,而編程思想是建立在程序架構上的,不是某個局部使用了面向對象方式,則可以稱之為這種編程就是面向對象編程。這種編程需要從以下方面著手:

1、 電路設計的結構化。

這裡主要以自動線為主介紹,對於單機工具機可以是它的簡化結構:

、自動線層:這是最高層次,它擁有一個主PLC,對屬於它下面的各區域控制、工程層:擁有獨立的配送電系統,但沒有PLC,只有分布式模塊,由自動線控制。顧名思義,它有著較大的獨立性,可以作為一個單獨的工程項目設計和製造,當自動線比較小時,可以省略該層次。

、功能組層:根據工藝劃分,將實現某一個工藝功能的區段設備劃分為一個功能組,它隸屬於工程層,當工程層被省略時,隸屬於自動線層。面向對象編程並不一定要求使用以上的結構,但好的電氣結構更利於面向對象編程。

2、 任何控制對象邏輯都在「類」中實現。

為了做到這點,必須分析與控制對象相關的信息,譬如,對於一個電機,有以下相關的信息需要考慮:

輸入信息:

、電路保護信息,如電機的空氣開關,熱繼電器等。

、功能保護信息,如運動電機的限位開關,風機的風壓開關,油泵的油位開關等。

、啟動和終止條件,以上的電路保護和功能保護都可能導致電機運轉終止,復位也可能導致重啟動,但這裡的條件指的是正常運行的啟動和終止條件,譬如順序控制的流程步。

、控制模式:如手動和自動等。

、故障復位:通過復位信息,重新啟動。

輸出信息:

、控制輸出,如控制電機的主接觸器。

、狀態信息輸出

、故障輸出

狀態儲存信息:

用於代碼實現的中間變量以及可以被人機界面讀出的狀態變量等。把以上信息都整合到一個類中,並儘量使類的參數標準化。不過,同高級程式語言還是曾在一些差別,針對Step7,應該遵循的標準是:程序結構由FC實現,對象控制由FB實現,如下的一種結構體系(其電氣結構來自上面的介紹):這只不過是一個粗略的PLC程序架構體系,好的架構應該更完善和科學。

3、 規劃好數據結構

數據結構的定義相當重要,並儘量統一這些結構,不要顧慮存儲空間,當今的PLC內存足以容納大量的數據。說明一點的是在Step7中儘量不要在類的外部定義數據結構(UDT),而是在類裡面定義,雖然會造成不同類中同一結構的重複性定義,但卻提高了類的獨立性。

在接下來的篇幅中,我們來對比一下這兩種編程方式:

面向對象編程的優點

面向對象編程的優點與梯形圖邏輯相比,面向對象編程有以下優點 :

代碼可移植,易於重複使用 ;

易於使用數學函數、循環等 ;

幾乎在每一門計算機編程課程中,都會教授面向對象編程 ;

代碼可以在各種硬體平臺上運行。

要掌握面向對象編程,首先需要理解對象的概念及其使用。一旦對象或模塊類編寫完成, 就很容易通過多次調用來實現重複利用。例如,創建一個對象來控制電機,用來處理所有輸入、輸出和故障。當需要時,可以通過多次實例化 該單一控制對象,來控制多個電機。這就是所謂的按需實例化。當需要控制多個電動機時, 可以多次使用該單個物體。它在需要時調用,並在使用時創建實例。

每個電機的每個實例都有自己的特性,如電機停機、電機運行、電機轉速、電機過載 等。大多數編程工作都是在首次創建對象時完成的。這是一種與梯形邏輯不同的思維方式,而且更強大,因為一旦構建了一個對象,它就很容易使用和重用。面向對象編程更易於執行複雜的數學函數、循環計算、數組和嵌套子例程。幾乎每一門計算機編程——無論是高中、大學、還是網絡上的教程,都會教授這方面的知識。創建的代碼是可移植的,可以在各種硬體平臺上運行。

「梯形圖邏輯遵循繼電器控制 系統中使用的梯形電氣圖的格 式,大多數人都可以快速學習 並掌握它。」

面向對象編程的缺點

不過,與梯形圖邏輯相比,面向對象編程有以下缺點 :

費用更高 ;

更陡峭的學習曲線 ;

對於維護人員來說,故障排除不是特別 容易 ;

在將原始碼上傳到處理器之前,通常需要編譯。

與梯形圖邏輯相比,面向對象編程往往需要更多的內存和更強的處理能力,因此費用就更高。面向對象程式語言的學習時間可能更長。很可能需要課堂學習,需要大量的時間、實踐、測試和應用來掌握核心概念。編程人員必須經常研究面向對象編程,以便使用跟蹤器來追蹤代碼,或調試器來調試邏輯。使用這種類型的高級編程,可能很難實現實時在線監視功能。

在將原始碼下載到控制器之前,必須對其進行編譯。通常,原始碼並不保存在處理器內存中。這意味著必須小心備份原始碼,因為編譯過的代碼通常是不可編輯的。使用面向對象編程,庫文件必須與在編譯過程中使用的其它資源相連接。如果不了解連接和資源,將很難使程序運行。

梯形圖邏輯的優勢

梯形圖邏輯是一種簡單且自文檔化的編碼方法,甚至有人懷疑它是否是一種程式語言。它遵循繼電器控制系統中使用的梯形電氣圖的格式,大多數人都可以快速學習並掌握它。它是在過去的數十年來唯一在機器自動化領域中大規模應用的程式語言,並且在可預見的將來, 仍然是自動化行業中使用的主要程式語言之一。

隨著時間的推移,具有不同背景的人從不同領域進入該行業,各種程式語言被引入工業自動化工具箱中。其中包括功能塊編程、結構化文本、狀態編程和順序功能圖。這 4 種程式語言和梯形圖邏輯,構成了IEC61131-3 國際電工委員會 (IEC) 的標準程式語言。

IEC61131 背後的邏輯是 :如果每個供應商都遵循該標準,那麼至少在某種程度上,一個人只需學習這 5 種程式語言,就可以輕鬆地在來自不同供應商提供的平臺之間進行切換。然而,事實卻並非如此。

基本梯形圖邏輯(如使用繼電器觸點和線圈)也是一樣的 ;但是在編程時,必須學習每個供應商的語法和用戶體驗,以及如何使用編程平臺的詳細信息。儘管缺乏標準化,但與面向對象編程相比,梯形圖邏輯有以下優勢 :

非常適合機器和過程控制 ;

由於本質上是自文檔,因此更易於理解;

易於對受控系統進行故障排除 ;

易於調試 ;

原始碼通常可以存儲在處理器中。

梯形圖邏輯非常適合於機器和過程控制, 特別是具有大量離散輸入、輸出(I/O)的自動化系統。多年來,梯形圖邏輯也在不斷改進,以處理模擬量I/O,使其更適合於眾多的過程控制應用。

與機器控制應用相比,過程應用中模擬量 I/O 的比例往往較高。

因為梯形圖邏輯比面向對象編程更易於使用,因此眾多熟練的技術人員和工程人員可以快速學習梯形圖邏輯。邏輯高度系統化、有序化,再加上其具有自文檔的性質,使其更易於理解和掌握。在啟動某個設備之前,每行代碼都必須為真。如果有 5 個電機需要控制,那麼至少需要 5行代碼,實現了高度簡化。

「梯形圖邏輯原始碼和描述符通常保存在控制器中,無需訪問原始碼,這可以消除程式設計師在試圖理解編譯程序所遭受的挫敗。」

更易於學習

對電氣工程師和維護人員來講,梯形圖邏輯非常直觀。雖然梯形圖邏輯需要有與面向對象編程不同的思維方式,但通過學習可以快速掌握,並且理解他人編寫的代碼所需的時間也較少。邏輯何時為真,何時為假,一清二楚。即使編程經驗有限的人,也很容易弄清楚開或關、線圈通電、比較變量和常見的數學函數。

它簡單易用,簡化了故障排除和調試工作。監視邏輯時,可以很容易明白目前正在發生的工況。無需軟體學位或高級編程技能。有了梯形圖邏輯,維護人員和工程人員就很容易跟蹤流程,了解正在發生的事情。可以將梯形圖邏輯看作真值表。如果左邊的邏輯為真,則右側的邏輯就會啟動。

梯形圖邏輯原始碼和描述符,通常被保存在控制器中。這可以消除程式設計師在試圖理解編譯程序而無法訪問原始碼時所遭受的挫敗,面向對象編程也是如此。

然而,與面向對象編程相比,梯形圖邏輯也有如下缺點 :

電腦程式員和 IT人員對梯形圖邏輯不熟悉 ;

難於進行數學函數、文本和數據處理 ;

依賴於掃描時間 ;

需要專門的硬體來執行, 如可編程邏輯控制器 (PLC) 。

梯形圖邏輯是電腦程式員和IT人員所不熟悉的一種符號語言,他們在學校裡並沒有學習這種語言。在梯形圖邏輯中處理數學函數、文本字符串和數據可能會很困難,這主要是因為梯形圖邏輯最初並不是為了處理這些函數而設計的。

依賴掃描時間

梯形圖邏輯也依賴於掃描時間。較大的程序,需要更長的時間來掃描和處理邏輯。執行梯形 圖邏輯時,讀取輸入、掃描邏輯、 更新數據表和輸出、執行通信, 然後循環重複。可以實現中斷和其它編程技術等功能,以確保更快地執行某些邏輯。

儘管配置了梯形圖邏輯的基於軟體的PLC可以在PC上運行, 但通常硬體 ( 如 PLC)要與編程軟體相匹配,兩者最好都是從同一個供應商處購買的。這樣就可以確保兼容性,但如果想要更換供應商,則不是特別方便。

除了比較梯形圖邏輯和面向對象編程的利弊外,用戶還應該評估這些程式語言在將要部署的環境中的使用情況。如果工廠或設施已實現了梯形圖邏輯的標準化,那麼即使面向對象編程更適合於該應用,也不鼓勵將梯形圖邏輯更換為 面向對象編程。隨著面向對象編程的使用日益增多,預計在未來幾十年內,它將與梯形圖邏輯共存。一個有遠見的自動化專業人士,最好要掌握這兩種語言。

文章來源:網絡

相關焦點

  • PLC梯形圖基本編程規則和編程方法,值得收藏!
    在日常的工作中,大家掌握了plc的基本編程指令之後,就可以根據控制要求編寫簡單的應用程式了。但是想要提高編程質量和編程效率,還必須了解編寫梯形圖程序的基本規則和基本編程方法。
  • PLC入門基礎:梯形圖編程的基本概念
    PLC是專為工業控制而開發的裝置,其主要使用者是工廠廣大電氣技術人員,為了適應他們的傳統習慣和掌握能力,通常PLC不採用微機的程式語言,而常常採用面向控制過程、面向問題的「自然語言」編程。梯形圖和功能塊圖為圖形語言,指令表和結構文本為文字語言,功能表圖是一種結構塊控制流程圖。梯形圖是使用得最多的圖形程式語言,被稱為PLC的第一程式語言。梯形圖與電氣控制系統的電路圖很相似,具有直觀易懂的優點,很容易被工廠電氣人員掌握,特別適用於開關量邏輯控制。梯形圖常被稱為電路或程序,梯形圖的設計稱為編程。
  • PLC程式語言有哪些?梯形圖的畫法
    上一篇文章我們簡單學習了PLC的一些基本知識。這篇重點介紹一下PLC的程式語言。IEC(國際電工委員會)於1994年5月公布了PLC標準(IEC1131)。它有五個部分組成:通用信息,設備與測試要求,程式語言,用戶指南和通信。其中第三部分(IEC1131-3)是PLC的程式語言標準.IEC1131-3詳細說明了句法、語法和PLC的五種程式語言的表達式。
  • PLC的程式語言的基本指令系統與編程方法
    5、強化調試手段:無論是彙編程序,還是高級語言程序調試,都是令編輯人員頭疼的事,而PLC的程序調試提供了完備的條件,使用編程器,利用PLC和編程器上的按鍵、顯示和內部編輯、調試、監控等,並在軟體支持下,診斷和調試操作都很簡單。  總之,PLC的程式語言是面向用戶的,對使用者不要求具備高深的知識、不需要長時間的專門訓練。
  • 西門子S7-300系列PLC的指令系統和編程規則
    STEP7是與西門子公司SIMATIC S7系列plc相配套的支持用戶開發應用程式的軟體包,在STEP7中,S7系列PLC的程式語言非常豐富,有LAD(梯形圖),STL(語句表),SCL(標準控制語言
  • PLC一鍵啟停編程梯形圖實例
    打開APP PLC一鍵啟停編程梯形圖實例 發表於 2020-03-18 09:15:07 一直以來都是作為新手在學習PLC,對於PLC編程,每個人都應該覺得自己是新手,只有心態放低,才能把事情看得更清楚,才能將編程的原理了解深透。
  • Python面向對象編程的一些見解
    學習是需要興趣和熱情的,不然我們的學習效果就會大打折扣。在學習之前問問自己,我們為什麼要學習Python,我們想要達到一個什麼樣的程度。正文:閒話說完,進入正題,Python語言是一門面向對象的語言,今天我們就講一下什麼是面向對象。面向對象編程已經成為一種現代程式設計師不可或缺的技能。那到底什麼是面向對象編程呢?這讓很多初學者不是很理解,進而導致他們放棄深入學習編程。
  • PLC要想快速入門,基本指令和具體應用少不了,附帶原理圖
    大家好我是小豆,有不少網友留言讓介紹一下PLC工作原理,使用方法,那麼今天我們就從認識PLC開始介紹,首先PLC可編程邏輯控制器,它採用一類可編程的存儲器,用於其內部存儲程序,執行邏輯運算、順序控制、定時、計數與算術操作等面向用戶的指令,並通過數字或模擬式輸入/輸出控制各種類型的機械或生產過程
  • 趣味解讀Python面向對象編程 (類和對象)
    一、面向對象簡介考慮現實生活中,我們的思維方式是放在學生這個個人上,是學生做了自我介紹。而不是像我們剛剛寫出的代碼,先有了介紹的行為,再去看介紹了誰。用我們的現實思維方式該怎麼用程序表達呢?面向過程:根據業務邏輯從上到下寫代碼。面向對象:將數據與函數綁定到一起,進行封裝,這樣能夠更快速的開發程序,減少了重複代碼的重寫過程。面向過程編程最易被初學者接受,其往往用一長段代碼來實現指定功能,開發過程的思路是將數據與函數按照執行的邏輯順序組織在一起,數據與函數分開考慮。
  • PLC梯形圖編程八個必須步驟
    (二)對輸入及輸出器件編號  每一輸入和輸出,包括定時器、計數器、內置寄存器等都有一個唯一的對應編號,不能混用。  (三)畫出梯形圖。  根據控制系統的動作要求,畫出梯形圖。  梯形圖設計規則  (1)觸點應畫在水平線上,並且根據自左至右、自上而下的原則和對輸出線圈的控制路徑來畫。  (2)不包含觸點的分支應放在垂直方向,以便於識別觸點的組合和對輸出線圈的控制路徑。  (3)在有幾個串聯迴路相併聯時,應將觸頭多的那個串聯迴路放在梯形圖的最上面。
  • 學習PLC編程要不要去PLC培訓班?
    當今社會學習一門技術,是為了提成自己的技能,有了一技之長,才會有更好的平臺去發展自己,更多的選擇空間,學習plc編程也是一樣的,PLC編程到底自學還是去plc培訓班學呢?你只需要考慮清楚這幾個問題。學技術你能依靠誰?
  • 面向過程和面向對象程式語言有何不同
    首先,面向對象程式語言和面向過程程式語言都是操作計算機的方式,從本質上來說也都是操作計算機執行任務的工具,只是方式上的不同而已。面向過程程式語言故名思議,以業務流程為考慮問題的出發點,從上到下按照解決問題的流程來組織代碼結構,把功能封裝成函數,然後依次調用就可以了。
  • 電氣圖轉換為PLC梯形圖實用方法,你都掌握了嗎?
    因為plc階梯圖中規定,接點在前,輸出線圈則必須位於迴路的最後。故首先須重新繪製電工圖,將圖中接點與輸出線圈位置適度變更,以符合plc階梯圖的要求,重新繪製後的電工圖,如圖3所示。、x0接點,        (2)輸出線圈y1和y2,不符合一般編程軟體格式,故須適度更正,如圖5右方所示。
  • 基本常用電路的編程和梯形圖規則,幫你搞定PLC入門編程控制
    梯形圖是PLC程序設計中最常用的程式語言,與繼電器線路類似。一般從事電氣的人員對繼電器控制都比較熟悉,所以梯形圖程式語言相較來說應用較廣泛且易於掌握。對於擁有電工基礎並且想入門PLC編程的人來說是很好的選擇!今天就給大家分享梯形圖的規則及一些基本常用電路的編程!
  • 三菱PLC編程軟體梯形圖輸入的幾種方法
    今天小編給大家講解一下三菱PLC(以FX5U及GX Works3為例)梯形圖輸入的幾種方法,包括如何快捷輸入梯形圖,能夠熟練快速的輸入梯形圖可以大大提高自己的編程效率哦。通過梯形圖輸入對話框輸入:在雙擊滑鼠或按下ENTER後顯示的梯形圖輸入對話框中輸入指令和參數。b. 通過快捷圖標輸入:在單擊快捷圖標後顯示的梯形圖輸入畫面中輸入指令和參數。c. 通過部件選擇窗口插入:將部件選擇窗口中的指令拖放到梯形圖編輯器上,插入後編輯參數。d.
  • 怎麼把電氣圖轉換為PLC梯形圖?
    因為plc階梯圖中規定,接點在前,輸出線圈則必須位於迴路的最後。故首先須重新繪製電工圖,將圖中接點與輸出線圈位置適度變更,以符合plc階梯圖的要求,重新繪製後的電工圖,如圖3所示。90°,之後再垂直翻轉(upsidedown),即可成為plc階梯圖,但因: ■ y1、x0接點 ■ 輸出線圈y1和y2 不符合一般編程軟體格式,故須適度更正,如圖5右方所示。
  • 當談論面向對象的時候,要搞清編程和語言的關係
    什麼是面向對象編程和面向對象程式語言?那是因為,如果按照剛剛我們給出的嚴格的面向對象程式語言的定義,前面提到的有些程式語言,並不是嚴格意義上的面向對象程式語言,比如 JavaScript,它不支持封裝和繼承特性,按照嚴格的定義,它不算是面向對象程式語言,但在某種意義上,它又可以算得上是一種面向對象程式語言。我為什麼這麼說呢?到底該如何判斷一個程式語言是否是面向對象程式語言呢?
  • 順序功能圖編制梯形圖程序的主要方法「步進指令編程」
    打開APP 順序功能圖編制梯形圖程序的主要方法「步進指令編程」 發表於 2017-12-20 15:17:05
  • PLC控制快速入門,西門子PLC編程接線圖詳解及梯形圖程序實例
    此次為大家帶來的是關於一些PLC編程控制入門常用到的實例,以此為借鑑,讓學PLC的進度條縮短,加大掌握程度。裡面包含的知識點是較為齊全的,如:I/O分配表、PLC接線圖、梯形圖程序等。一、電動機順序啟動、順序停止控制(I/O分配表、PLC接線圖、梯形圖程序)二、電動機的順序啟動、同時停止(I/O分配表、PLC接線圖、梯形圖程序)三、電動機的順序啟動、逆序停止(I/O分配表、PLC接線圖、梯形圖程序)四、電動機延時啟動、停止控制(
  • 如何模擬三菱PLC編程軟體
    今天這篇文章主要的講的是如何模擬三菱PLC編程軟體。關於現在三菱PLC的編程軟體(GX Developer,GX Works)基本自帶模擬功能,而且操作簡單,可以實現與PLC同等功能,包括軟元件和緩衝儲存器。