PLC-HMI基于框架的編程(1)

解決科技看今朝 2024-04-26 03:22:41
什麽是框架

框架在IT行業中使用非常廣泛。框架的英文是Framework,意思是框架、機制、准則。框架的說法最早源于建築行業。指的是一個框子-指其約束性,同時也是一個架子-指其支撐性。框架在基本概念上是一個結構,用于去解決或者處理複雜的問題。後面在其它行業中也有框架這個廣泛定義,尤其在軟件行業。在軟件工程中,框架被定義爲整個或部分系統的可重用設計,表現爲一組抽象構件及構件實例間交互的方法。或者框架是可被應用開發者定制的應用骨架。通俗地說,框架是實現某種功能的半成品,提供了一些常用的通用工具和一些基礎通用化的組件,可以供開發人員在此基礎上,更高效地滿足各自的業務需求。在IT行業中,絕大部分的編程活動都是基于現成的框架,比如Web應用有Vue、React等框架。桌面應用有VCL、WinForm等框架。目前的大部分行業的業務需求的複雜程度,已經不允許程序員從頭開始編程了。基于框架的編程可以大幅提高項目的交付速度和質量。

在自動化行業,框架也是由來已久,不少大廠也都有自己的框架。由于自動化行業絕大部分控制系統的可編程部件是PLC和HMI,所以我們稱之爲PLC-HMI編程框架。在自動化行業,PLC-HMI基于框架的編程同樣可以大幅提高項目的交付速度和質量。一方面目前生産制造對自動化的要求越來越高。另一方面,國內自動化目前是個高度內卷的行業,快速的高質量交付項目是保證企業利潤的基本條件。綜合來看,現在的自動化行業同樣不允許我們從頭開始編寫一個項目程序。無論是個人或者是公司,只有基于框架的編程才能使我們保持競爭力。

PLC-HMI編程框架組成

通常一個PLC-HMI框架會包含一套組件庫。組件庫裏面有常用的設備控制功能塊、畫面操作面板等。除此之外,框架還會提供一個項目模板。在這個模板裏面提供一個搭建好的程序結構,我們只需要根據生産工藝添加設備、單元及相關邏輯即可。對于HMI,模板裏面會有一些常用畫面,比如支持篩選的趨勢曲線、報警視圖等等。一套穩定的、開箱即用的模板可以快速提高項目交付速度,同時也能保證項目質量。

除此之外,框架還會對編程進行約束,比如命名和接口的規範,還有組件的二次開發等。這些約束的目的是爲了防止團隊人員對框架代碼造成汙染,以至于程序難以理解,或者影響複用。

面向對象及其設計原則

組件庫是一個框架的核心。沒有組件庫的框架沒有任何應用價值。因爲組件庫會提供大量的可複用的控制組件和視圖組件。我們只需要基于組件庫根據框架約束及工藝要求完成控制邏輯即可。如果沒有組件庫的話,大量的底層工作需要我們自己去開發完成,框架幫不上什麽忙。

面向對象理念是開發組件庫的核心理念。雖然目前很多PLC尚不支持完整的面向對象特性,比如不支持繼承(也有少部分支持)和多態等。但是這些並不影響我們使用面向對象理念來開發編寫組件。

各行各業都會有自動化需求,但是很多設備是通用的,而工藝卻又不同。所以我們的組件又會分爲通用的與專用的。爲了避免重複造輪子,通常專用組件會繼承自通用組件。這些又會涉及到面向對象的設計原則。所以如果要打造一款優秀的框架,還是需要花費很多心思的。

面向對象就是FB?

FB/FC的封裝是在PLC中實現面向對象編程的手段。但是面向對象絕不僅僅只是一個FB/FC那麽簡單。它涉及的知識點非常多。當然並不是說FB/FC有多高的技術含量,但是合理地使用它們,可以編寫出高可用的PLC框架,它們能爲你帶來巨大的收益。

AdvAutoFramework及其命名規範

說了這麽多概念性的東西,來點實際的。命名規範是一個框架最基本的規則。AdvAutoFramework框架是我們的一款基于面向對象與整潔架構的PLC-HMI框架。下面介紹一下它的組件成員命名規範。

AdvAutoFramework框架推薦使用帕斯卡命名法,也就是大駝峰命名法。大駝峰命名法就是當方法或者變量名是由一個或者多個單詞連接在一起時,每個單詞(可以用英文或者拼音)的首字母大寫,其它字母小寫。盡量用完整單詞,太長的話也可以使用縮寫。比如啓動命令可以寫成“StartCommand”,停止命令可以寫成“StopCommand”。因爲PLC中功能組件的特殊性,我們最好還要區分下輸入和輸出。在我們的AdvLibSuite中,所有的輸出都會加上前綴字符”Q”。參見下圖所示。比如”QRunning”表示正在運行。這個正在運行的標記位可以作爲其他設備的動作聯鎖,或者作爲順序控制的步序轉移條件。加上前綴字符以區分輸入/輸出的好處是可以在我們編寫程序時避免錯誤地引用組件成員。

同樣道理,因爲SCL不區分大小寫,所以我們對于組件內部的臨時及靜態變量也要使用前綴進行區分。在我們的AdvLibSuite框架中,靜態變量使用下劃線”_”作爲前綴,使用字符“t“作爲臨時變量的前綴。這樣在我們的程序中,通過前綴即可看出該變量是臨時變量還是靜態變量。

除了組件成員的命名規範外,還有組件名稱的命名規範,比如會根據其功能加上前綴DCM或者ECM等。

關于小駝峰命名法

在上位機開發中,小駝峰命名法通常用于內部成員。但是因爲SCL不區分大小寫,所以在同一個組件中,無法同時大駝峰和小駝峰命名法。這也是我們不推薦小駝峰法命名的原因。

關于匈牙利命名法

匈牙利命名法要求變量以一個或者多個小寫字母開始,這些字母表示變量的數據類型。因爲早期的代碼編輯器功能比較弱,使用匈牙利命名法可以防止我們在編程中錯誤的對不同數據類型的變量進行互操作。但是目前PLC的程序編輯器(比如TIA Portal)語法檢查功能比較強,這些和數據類型相關的錯誤它可以自己檢測出來,所以匈牙利命名法已無必要,所以也不推薦。

1 阅读:70

解決科技看今朝

簡介:感謝大家的關注