PLC程式設計高手,UDT資料都玩得很好

關注公眾號【自動化與工程技術】,獲取更多程式設計技巧!

【導讀】博途V11開始,S7-1200支援PLC資料型別UDT。理論上說UDT是Struct型別的升級替代,功能基本完全相容Struct型別。相對於其它資料型別來說,UDT不太容易理解,下面就透過例項來闡述UDT資料的用法。

(一)UDT資料型別概述

從TIA 博途 V11 開始,S7-1200 支援PLC資料型別(UDT)。理論上來說,UDT是Struct型別的升級替代,功能基本完全相容Struct型別。

(1)UDT型別是一種由多個不同資料型別元素組成的資料結構,元素可以是基本資料型別,也可以是STRUCT、陣列等複雜資料型別以及其它UDT等。

(2)UDT型別巢狀UDT型別的深度限制為 8 級。UDT型別可以在DB、OB/FC/FB介面區處使用。從TIA 博途 V13SP1 開始,S7-1200 V4。0開始,PLC變量表中的I和Q也可以使用UDT型別。

(3)UDT型別可在程式中統一更改和重複使用,一旦某UDT型別發生修改,執行軟體全部編譯可以自動更新所有使用該資料型別的變數。

(4)定義為UDT型別的變數在程式中可作為一個變數整體使用,也可單獨使用組成該變數的元素。此外還可以在新建DB塊時,直接建立UDT型別的DB,該DB只包含一個UDT型別的變數。

(5)UDT型別作為整體使用時,可以與Variant、DB_ANY型別及相關指令默契配合。

(二)UDT建立及應用案例

(1)新建UDT:點選CPU選單下,PLC資料型別中的“新增新資料型別”按鈕,如圖1所示。

PLC程式設計高手,UDT資料都玩得很好

圖1 新建UDT

(2)在彈出頁面可以新增需要的變數、型別、起始值、註釋等,如圖2所示。

PLC程式設計高手,UDT資料都玩得很好

圖2 定義UDT內的變數

(3)在圖2紅框處右鍵屬性常規,可以修改該資料型別的名稱,如圖3所示。

PLC程式設計高手,UDT資料都玩得很好

圖3 修改UDT名稱

(4)DB中使用,如圖4所示。

PLC程式設計高手,UDT資料都玩得很好

圖4 定義UDT型別的變數

(5)程式中使用,類似於Struct,如圖5所示。

PLC程式設計高手,UDT資料都玩得很好

圖5 UDT的使用

(6)根據UDT定義DB塊,如圖6所示。

PLC程式設計高手,UDT資料都玩得很好

圖6 建立UDT型別的DB

注意:此時開啟DB塊,可以發現和在DB中新建UDT變數差了層級,在使用內部變數沒有太多差別。並且這種方式下,除非修改UDT,否則無法更改DB塊中的內容,如圖7所示,變數均為灰色。如圖7所示。

PLC程式設計高手,UDT資料都玩得很好

圖7 UDT型別的DB展開

(7)從TIA 博途 V14SP1開始,相同結構,但不同名稱的UDT的變數,可以直接複製,如圖8-11所示。

PLC程式設計高手,UDT資料都玩得很好

圖8 定義不同名稱的UDT,但內部變數型別相同

PLC程式設計高手,UDT資料都玩得很好

圖9 使用UDT建立變數

PLC程式設計高手,UDT資料都玩得很好

圖10 UDT型別間的MOVE

PLC程式設計高手,UDT資料都玩得很好

圖11 SCL版本程式

(三)UDT在PLC變量表的應用

實現功能:將Profinet IO通訊中的I點送入DB,將DB送入Q點,如圖12-16所示。

(1)建立I點和Q點兩個UDT,元素變數型別及排佈設置參照通訊物件

PLC程式設計高手,UDT資料都玩得很好

圖12 I點定義的UDT

PLC程式設計高手,UDT資料都玩得很好

圖13 Q點定義的UDT

(2)PLC變量表和DB塊使用UDT

PLC程式設計高手,UDT資料都玩得很好

圖14 PLC變量表中使用圖12-13定義的UDT

PLC程式設計高手,UDT資料都玩得很好

圖15 DB塊中使用的UDT型別定義變數

(3)寫MOVE程式傳遞

PLC程式設計高手,UDT資料都玩得很好

圖16 程式詳情

PLC程式設計高手,UDT資料都玩得很好

圖17 SCL版本程式

關注公眾號【自動化與工程技術】,獲取更多程式設計技巧!