Variant 類型是一種參數數據類型,通常只出現在 OB/FC/FB 接口區,除了 FB 的靜態變量之外。Variant 類型的實參可以是一個可以指向不同數據類型變量的指針,包括基本數據類型和復雜數據類型、UDT 等。
Variant 數據類型提供了一種多功能的數據選項,它不會在背景數據塊或工作存儲器中占用空間,但會在 CPU 的裝載存儲器中占用存儲空間。當調用一個塊時,可以使用 Variant 參數與任何數據類型的變量相連接。這不僅傳遞了變量的指針,還傳遞了變量的類型信息,使得塊識別并相應地處理這些數據。程序塊可以使用 Variant 的相關指令來識別并處理這些參數。
需要注意的是,Variant 類型的數據在處理過程中可能會出現數據類型轉換的問題,因此在使用時需要謹慎。
總的來說,Variant 類型是一種靈活的數據類型,可以在不同的數據類型之間進行轉換,但在使用時需要考慮到數據類型的兼容性和轉換可能帶來的問題。
Variant指向的實參,可以是符號尋址,也可以是juedui地址尋址,還可以是形如P#DB1.DBX0.0 BYTE 10這種指針形式的尋址。
在早期版本的 TIA Portal 軟件中,只有一些通訊指令使用 Variant 變量。然而,從 TIA V13SP1 和 S7-1200 V4.0 開始,可以在程序塊的實參中定義 Variant 類型變量,并且可以通過以下指令處理 Variant 類型的變量:
1. 判斷類指令
這類指令主要用于檢查 Variant 類型實參的實際類型,但并不直接處理變量。這種指令非常有用,因為它可以幫助程序塊識別 Variant 參數的實際數據類型,以便進行相應的處理。Variant 類型的變量可以根據其實際的數據類型進行不同的處理操作。具體可以參考相關文檔或用戶手冊中關于判斷類指令的內容。參見表1。
表1 判斷類指令
2. 處理類指令
該類指令可以對Variant類型的實參進行轉化,參見表2。
表2 處理類指令
3. 其他指令
DB_ANY_TO_VARIANT與VARIANT_TO_DB_ANY,參見DB_ANY數據類型。
P#指針說明
當Variant類型的實參指向形如P#DB1.DBX0.0 BYTE 10,指令內部將判斷該形參為一個10字節的數組。
指針結構
S7-300/S7-400中的 Any 指針結構指的是 P#DB1.DBX0.0 BYTE 10 這種形式的指針。與 S7-300/S7-400 不同,S7-1200無法像前者那樣定義和拆解 Any 指針。然而,在參數類型為 Variant 時,可以輸入這種指針形式,并且 S7-1200 將其識別為數組。
P#DB1.DBX0.0 BYTE 10的解釋:P#DB1.DBX0.0 BYTE 10 是一種指針表達式,用于指定從 DB1 數據塊的 DBX0 開始的 10 個字節的數據。在使用這種指針時,DB1 必須是未經優化的 DB 塊,并且該塊中必須包含長度為 10 字節的變量。
這種指針結構可以修改為指向其他 DB 塊,例如 P#DB10.DBX,或者指向 I 區、Q 區、M 區的指針,分別是 P#I、P#Q、P#M。
在指針表達式中,0.0 表示起始地址,例如 1.0、100.0 等,且小數點后必須是 0。
BYTE 后面跟隨的數據類型可以是 Bool、Byte、Word、DWord、Int、DInt、Real、Char、Date、TOD 或 Time。
Zui后的數字 10 表示指針指向的數據類型實例的數量。對于 Bool 類型,數量必須是 1 或 8 的倍數。
P#指針舉例,P#I0.0 Bool 8,P#Q0.0 Word 20,P#M100.0 Int 50。
- PLC中的BCD碼是什么? 2024-12-27
- 為什么需要上位機?上位機能替代PLC實現控制嗎? 2024-12-27
- 觸摸屏不通過PLC,直接控制變頻器!老司機手把手教你如何實現! 2024-12-27
- 控制繼電器與PLC有什么不同?這6個點搞自動化的都懂! 2024-12-27
- 急停是停所有的輸出電源,還是停整個設備的電源?這個原則起碼90%電工都不知道 2024-12-27
- 一文搞懂西門子博途中的單個實例、多重實例和參數實例的區別! 2024-12-27
- 有源和無源信號到底有什么區別? 2024-12-27
- 西門子PLC與NPN、PNP傳感器接線方式,PLC入門必看 ! 2024-12-27
- 西門子將于今年發布Simatic S7-1200 G2控制器 ! 2024-12-27
- 簡單的改動,實現一個變頻器分別獨立拖動兩個電機,老板高興壞了! 2024-12-27
- 觸摸屏與PLC通訊不上?老師傅告訴你怎么解決! 2024-12-27
- S7-1200CPU與S7-200SMART s7通信(S7-1200為客戶端) 2024-12-27
- 電機運行時間排序案例分享,趕緊收藏學習! 2024-12-27
- 到底是先有電壓還是先有電流? 2024-12-27
- PLC中模擬量信號的轉換公式 2024-12-27
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595