1. 哪里用到PLC?
· 大家逛商場、坐地鐵經常會乘坐自動扶梯。通常情況下,沒人乘梯的時候,扶梯會以一個低速節能方式運行。有人乘梯時,會自動平穩過渡到正常速度運行。我有個同學在世界第一大自動扶梯生產商迅達,聽他說里面用的控制器就是PLC。
PLC廣泛應用于鋼鐵、石油、化工、電力等工控領域,主要有以下原因:
· 高可靠性。工控領域環境相對較惡劣,同時還需要穩定可靠的長時間運行,不能出錯,畢竟很多時候一旦出錯,那可是會造成重大損失的,不像消費電子領域,出了問題大不了重啟一下。
· 容易編程。對工程師的編程水平不需要那么高的要求,工程師可以專注在應用領域,節約開發周期。
· 易于維護。模塊化的設計,出了問題相對容易維護。
2. PLC和單片機關系
· PLC其實是電氣工程師手中的MCU,當然大部分的中小型的PLC本身就是由MCU來實現的。講到這里,會有很多小伙伴問,這倆家伙到底有什么區別?從研發的角度看,PLC是把MCU有限的資源根據一定的規范設計出來的,具體的講,MCU的IO資源對應了PLC的輸入輸出,Core對應了計算能力,RAM對應了數據空間,FLASH對應了程序空間。從用戶角度看,由于不同的PLC廠商都遵循了相同的規范,同時它的功能往往是其實現MCU的子集,所以學習起來比MCU更加容易。下圖中間黃色部分就是MCU,PLC是在其基礎上增加了輸入模塊、輸出模塊、電源模塊、編程器。
3. PLC的軟件實現
· 下面更多的會從軟件方案角度出發來探究PLC,主要還是針對嵌入式工程師,大家感興趣也可以自己上手去實現一個簡單的PLC。
3.1 IEC61131-3
講到PLC的軟件實現,那就不得不提IEC61131-3,它是IEEE制定的用于PLC的編程系統標準,定義了以下五種編程語言:
指令表(ILD)
梯形圖(LD)
image-20210115222504169
功能塊(FBD)
結構化文字(STL)
順序功能流程圖(SFC)
小型PLC由于功能簡單,而且步長受限,往往最常用的是指令表和梯形圖。STL類似C語言,經常用于編寫功能塊,FBD/SFC更加直觀,經常用于復雜邏輯的頂層設計。
3.2 PLC的軟件構成
用過PLC的朋友都知道,通用的PLC都會提供一個PC端的軟件用來編輯用戶邏輯,比較常見的有西門子的STEP7,3S的Codesys,KW的MULTIPROG,rockwell的ISaGRAF。所以,一般情況下,PLC的軟件由兩部分組成:
(1) PC端的編程軟件,給用戶提供編程調試環境
(截圖代碼源于和利時G3小型PLC)
(2) 設備端的軟件,而設備端的軟件又分為runtime system(后稱RTS)和用戶程序(后稱POU)兩部分內容。RTS是PLC設備端的核心,主要有以下幾個作用:
· 實現通訊接口:包括與PC端軟件通訊,與IO擴展模塊的通訊
· 存儲并執行PC端生成的POU
· 執行IO的輸入輸出
當然,也有一些微型PLC自帶屏幕,無需PC軟件,可以直接在屏幕上編程,比如西門子的Logo系列。
圖片源自西門子官網
3.3 POU的分類
PLC的RTS從實現角度講,分為兩類:解釋型和編譯型,有點像學校里學習VB和VC的區別。編譯型PLC生成的POU是可以執行的二進制代碼,解釋型PLC生成的POU是一個中間文件。
編譯型PLC
編譯型PLC支持的IEC61131-3編程軟件會根據用戶的編程語言生成PLC可以執行的二進制機器代碼,其有以下幾個特點:
· 執行效率高, 平均有效指令僅是解釋型PLC的1 /10
· 開發難度大,PC端開發環境除了需要解析IEC61131-3相關語法,還需要涉及編譯器、鏈接器、反編譯、Mempry地址分配等內容
· 基于MCU開發PLC跨平臺難度大,受限于CPU指令集影響,不同廠商CPU Memory地址分配不同,開發環境很難做到適配所有不同CPU的編譯器
· 反編譯難度大
解釋型PLC
解釋型PLC支持的IEC61131-3編程軟件會根據用戶的編程語言生成中間文件,CPU會作為解析器來解析該中間文件,其有以下幾個特點:
· 開發容易, PC端開發環境僅需要解析IEC61131-3相關語法并生成中間文件即可
· 產品容易跨平臺,由于開發環境生成的中間文件并不直接在CPU上運行,也很容易做到地址無關,所以很容易在不同內核的CPU上運行
· 由于容易做到地址無關,更容易做到無擾下裝
· 容易實現反編譯功能
如果覺得文章不錯,點個贊或者在看支持一下吧。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。