PLC編程標準IEC61131-3教程系列(2)-軟件模型

IEC61131-3為PLC編程開發定義了一個軟件模型,該模型描述瞭如何採用分層/分級的方法將一個複雜的項目分解成若干小的組成部分,並定義了各部分之間的接口規範。今天這篇文章,我們來介紹下這個軟件模型,並結合西門子PLC、Codesys軟PLC分析下該模型。

PLC編程標準IEC61131-3教程系列(2)-軟件模型

封面

下面這張圖就是IEC61131-3定義的軟件模型:

PLC編程標準IEC61131-3教程系列(2)-軟件模型

軟件模型

從圖片中可以看出,該軟件模型定義了配置、資源、任務、程序組織單元(功能、功能塊、程序)、全局變量、訪問路徑等等。我們來詳細介紹下:

1、配置(Configuration)

配置位於軟件模型的最上層,可以理解成一整套控制系統。對於小型控制系統而言,比如一個由CPU ST20組成的簡單控制系統,屬於一個配置;而對於複雜控制系統,比如一個由多個CPU組成的、具有分佈式模塊的控制系統,也屬於一個配置。配置就是一套控制系統,或者是一套設備,在Codesys V3版本之後直接將其稱為“設備”;一個配置由一個或幾個資源組成。

2、資源(Resource)

資源位於軟件模型的第二層,用於支持任務的運行。對於一個小型控制系統,比如上面說的CPU ST20系統,資源可以理解為CPU本身。對於具有多個CPU的大型系統,每一個CPU都是一個資源。資源可以包含多個任務、程序組織單元等。在Codesys V3版本之後,資源被稱為“應用”。

3、任務(Task)

任務是程序的調度者,用來執行一個或多個程序(Program)。任務分為很多類型,比如:主任務、週期性執行的任務、由中斷觸發的任務等等。西門子PLC中的組織塊就屬於任務的角色,OB1相當於主任務、OB30~OB38屬於週期性執行的任務、OB82屬於診斷中斷的任務等等;在Codesys中,任務分為週期型(Cyclic)、事件型(Event)、自由運行型(Freewheeling)、狀態觸發型(Status)。週期型任務是以固定時間間隔來執行;事件觸發型任務在事件變量的上升沿開始執行;自由運行任務其內部程序在任務啟動時就開始執行,程序的執行不受掃描週期的影響;狀態觸發型任務當其狀態變量變為TRUE時開始執行;任務具有不同的優先級,優先級高的任務可以中斷優先級低的任務而搶先執行;

4、程序組織單元(Program Organization Unit,POU)

程序組織單元是用戶程序的基本單位,包括變量聲明區和代碼區兩部分。變量聲明區用來定義該POU中使用的變量的名稱、類型及初始值;代碼區是使用IEC61131-3推薦的五種編程語言寫的程序代碼。

IEC61131-3定義了三種程序組織單元:功能(Function)、功能塊(Function Block)和程序(Program)。

功能(Function)是包含局部變量和指令的代碼,可以設置輸入/輸出參數。功能沒有靜態變量,因此每次調用都會產生同一個結果;

功能塊(Function Block)與功能的區別在於它有屬於自己的存儲區,可以存放靜態變量。功能塊也可以設置輸入/輸出參數,但由於程序代碼中靜態變量可能發生變化,因此對於功能塊的調用並不一定產生同樣的結果;

可以將程序中經常使用的代碼(比如電機運行控制)寫成功能或者功能塊,這樣就可以反覆調用。既能節省項目編程的時間,又提高了程序的可讀性,體現了該軟件模型將複雜任務分解成小的簡單模塊的思想。

程序(Program)可以分為主程序與子程序,可以被任務啟動,並調用功能或者功能塊。程序中可以定義全局變量、地址映射、局部變量等等;

5、全局變量、訪問路徑

全局變量用於程序組織單元之間交互數據,訪問路徑提供了當前配置對外通信的接口。

好了,關於IEC61131-3的軟件模型就先介紹到這裡。後續文章我們會繼續該標準的介紹。


分享到:


相關文章: