自控工程師爲何要學習高級程序設計語言

  咱們一般把C++、C#和JAVA等程序設計語言歸類爲高級程序設計語言,這是相對於彙編語言這種第二代編程語言而言的。咱們自控行業經常使用的PLC編程語言LAD、FBD和SCL等其實也能夠看做爲高級編程語言(對比於STL這種相似彙編同樣的編程語言來看),只不過它們的語言特性遠沒有C++等這些現代編程語言豐富。本文所描述的高級程序設計語言指的是C++、C#這些現代編程語言。數據庫

一、爲何要學習高級程序設計語言編程

       PLC從最初發明開始就是面向電氣工人的,從如今各個廠家的編程手冊中就能夠看出來,什麼線圈、能流、觸點等等,所有是電氣概念。隨着工業製造水平的日益提升,隨之對自動控制的要求也愈來愈高,最初設計的PLC已經慢慢的知足不了工業生產需求,隨後中、大型PLC開始逐漸登場。在近幾年的中大型PLC中已經開始慢慢的淡化了這些電氣概念,在不少方面開始有向計算機概念靠近的趨勢,好比西門子提出的模塊化編程等等。小程序

    從我我的觀點來看,所謂的模塊化編程說法並不許確。模塊化編程是面向過程程序設計時代的概念。它是指在進行程序設計時將一個大程序按照功能劃分爲若干小程序模塊,每一個小程序模塊完成一個肯定的功能,並在這些模塊之間創建必要的聯繫,經過模塊的互相協做完成整個功能的程序設計方法。模塊化編程強調的是任務分割,而不是面向對象中的封裝、接口等。雖然咱們也知道西門子所說的模塊化編程指的就是相似於面向對象編程的概念,可是PLC編程也是軟件設計,這種混淆概念的叫法並不可取。微信

    在個人拙做《TIA Portal高級編程》中最開始將這種現代化的PLC編程方法稱之爲面向組件編程。爲何我沒有稱之爲面向對象編程?組件是採用面向對象編程思想開發的功能單元,它除了強調封裝、繼承、接口等以外更重要的是具備更好的分發性,能夠很方便的在不一樣項目之中重複使用。在西門子PLC中,咱們將工業生產中最經常使用的氣缸、馬達等設備封裝爲FB,而後藉助類型/全局庫技術進行分發的這樣一種方式就和麪向組件程序設計是一樣的思想。因此我認爲稱之爲面向組件設計更爲合理。網絡

 

圖1 PLC中的組件編程語言

  值得一提的是,咱們常說的背景DB英文全稱是Instance Data Block,翻譯爲「實例」其實更爲合理。不知道在國內爲何變成了背景DB。HwBasicLib就是使用面向組件設計思想開發的一套用於TIA Portal的基礎組件庫。模塊化

圖二 WinCC中的組件工具

  固然咱們今天的主題並非PLC編程,而是高級程序設計語言,也就是能夠開發應用程序的編程語言。做爲一名自控工程師,咱們學習高級程序設計語言的目的並不必定是爲了轉型或者去開發軟件。固然若是你對軟件開發頗有興趣也能夠考慮轉型。咱們學習高級程序設計語言的基本目的是能夠更好的理解現代軟件開發思想。這種軟件開發思想應用在自動化中將會極大的提高咱們的編程水平、開拓視野,對不少在編程中遇到的問題將會有全新的見解。學習

  其實我一直以來都認爲學計算機出身的人作自控會比學電氣出身的人作的更好,就是由於長期的思想薰陶,他們對問題的解決思路會徹底不一樣。簡單的來講,體如今PLC編程上,學電氣出身的人會使用面向過程技術來設計,而學計算機的人確定毋庸置疑的採用面向對象技術來設計。很是遺憾的是目前幾乎全部學校的自動化專業、培訓機構、市面上的自動化教材還停留在原始的程序設計階段。編寫《TIA Portal高級編程》的初衷就是爲了在自動化行業中普及這一編程技術。開發工具

  若是你還但願本身在高級程序設計方面能更進一步,那麼能夠繼續學習GUI、數據庫、網絡通訊、WEB等知識。前面也說過,現代工業生產對自動化工程師的要求愈來愈高,僅僅會玩PLC和組態軟件面對不少問題會有捉襟見肘的感受。舉個簡單的例子,咱們可能會遇到業主要求咱們的控制系統可以和MES交互、在WINCC上實現複雜的所見即所得的報表、PLC數據定時保存在指定的數據表中等等,這些需求都要求咱們具備或多或少的高級程序設計背景才能完成。

  綜合以上,我認爲做爲自控工程師來講,學習一門高級程序設計語言是很是有必要的。

2、如何選擇高級程序設計語言

        軟件工程發展了這麼多年,目前可供選擇的開發語言和工具不少,那麼咱們到底該選擇哪種呢?這種困惑相信每個想學高級程序設計的人都會有的。我我的最開始是學習VB6的,後來微軟的戰略轉移到DotNet平臺上後VB6也就再也不更新了。在尋找替代語言和工具期間比較了Delphi、Java、C#等多種語言和工具,最終才肯定的C#。下表是我對這些語言和工具的比較結果。沒有最好的,只有最合適的,每種語言都有本身的長處,適合本身的就是最好的。須要說明的是下表中的優點和劣勢是針對自控行業的。

  對於自控行業來講,一門編程語言及開發工具是否具備豐富的GUI庫很是重要,由於不少時候咱們須要實現人機交互的功能。僅憑這一點,上表中的不少編程語言就無需考慮,好比JAVA、Python、C等等。其次自控工程師通常時間精力有限,不少時候須要現場調試,不可能有太多的時間精力放到學習程序開發上面,那麼C++建議不要考慮,由於沒有大量的時間付出連入門都困難。

  VB6是二十年前的產品了,雖然它簡單易用,也有豐富的GUI控件,可是大多很是醜陋,將來的操做系統可否支持能很差說,因此也不建議學習。另外學習資料少、使用人數少的程序設計語言也不建議選擇,由於一旦遇到問題經常須要耗費大量精力,甚至不少時候無解。

  這樣一來只剩下C#可供選擇了,C#是微軟將來的主打開發語言,語言特性豐富、語法簡潔優美。豐富的文檔支持和DotNet Framework足以使咱們能夠解決在學習過程當中遇到的絕大部分問題。雖然在互聯網行業C#並非很受歡迎,可是在工業生產中,大部分MES是使用C#開發的。大名鼎鼎的博途軟件就是基於DotNet Framework開發的。基於以上,若是您對程序設計有興趣的話,咱們建議選擇C#。

三、C#與工業自動化

    《C#與工業自動化》是HwLib(慧蘭博)技術團隊出品的一部專門針對自控工程師的C#教材。它和市面上的其它C#教材的不一樣點在於下面幾個方面。

  • 減小不經常使用的語法特性介紹,利於入門;
  • 針對自控行業的案例,好比專門的通訊章節包含了S7通訊、Socket通訊、OPC UA;
  • 針對組態軟件的插件開發(好比WinCC),拓展其功能;
  • 針對工業4.0的工廠數據中心;
  • 機器視覺(將來);

  除了上述的幾個特色外,經常使用的案例也不缺乏,好比數據庫、數據報表等。《C#與工業自動化》的目標是學以至用,避免出現那種看書時好像啥都理解,可是針對實際問題殊不知從何下手的尷尬場景。

-- END --

 

 

若是您對咱們的高端教程有興趣的話能夠x寶上搜索「hwlib」或者「慧蘭博」,或者點擊這裏:HwLib(慧蘭博)

關於HwLib(慧蘭博)技術團隊的更多信息:www.hwlib.cn

HwLib(慧蘭博)技術團隊技術資料:https://pan.baidu.com/s/1dF3gpt3

 

HwLib(慧蘭博)公衆號

專一於工業自動化高端編程應用

HwLib(慧蘭博)微信號

相關文章
相關標籤/搜索