關注公眾號【自動化與工程技術】,獲取更多程式設計技巧!
【導讀】博途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所示。
圖1 新建UDT
(2)在彈出頁面可以新增需要的變數、型別、起始值、註釋等,如圖2所示。
圖2 定義UDT內的變數
(3)在圖2紅框處右鍵屬性常規,可以修改該資料型別的名稱,如圖3所示。
圖3 修改UDT名稱
(4)DB中使用,如圖4所示。
圖4 定義UDT型別的變數
(5)程式中使用,類似於Struct,如圖5所示。
圖5 UDT的使用
(6)根據UDT定義DB塊,如圖6所示。
圖6 建立UDT型別的DB
注意:此時開啟DB塊,可以發現和在DB中新建UDT變數差了層級,在使用內部變數沒有太多差別。並且這種方式下,除非修改UDT,否則無法更改DB塊中的內容,如圖7所示,變數均為灰色。如圖7所示。
圖7 UDT型別的DB展開
(7)從TIA 博途 V14SP1開始,相同結構,但不同名稱的UDT的變數,可以直接複製,如圖8-11所示。
圖8 定義不同名稱的UDT,但內部變數型別相同
圖9 使用UDT建立變數
圖10 UDT型別間的MOVE
圖11 SCL版本程式
(三)UDT在PLC變量表的應用
實現功能:將Profinet IO通訊中的I點送入DB,將DB送入Q點,如圖12-16所示。
(1)建立I點和Q點兩個UDT,元素變數型別及排佈設置參照通訊物件
圖12 I點定義的UDT
圖13 Q點定義的UDT
(2)PLC變量表和DB塊使用UDT
圖14 PLC變量表中使用圖12-13定義的UDT
圖15 DB塊中使用的UDT型別定義變數
(3)寫MOVE程式傳遞
圖16 程式詳情
圖17 SCL版本程式
關注公眾號【自動化與工程技術】,獲取更多程式設計技巧!