公司新聞當前位置:首頁 > 新聞資訊 > 公司新聞

西門子plc復雜數據類型有哪些?看過之后一目了然

來源:西門子PLC 發布于:2018-12-11 11:51:01

西門子plc復雜數據類型有哪些?看過之后一目了然,西門子plc復雜數據類型包括日期和實踐(DATE_AND_TIME)、字符串(String)、數組(Array)、結構(Struct)和用戶定義的數據類型(UDT)。
1、日期和時間
日期和時間(DATE_AND_TIME)占8個字節的BCD碼,第1~6個字節分別存儲年、月、日、時、分和秒,毫秒存儲在整個第7個字節和第8個字節的高4位,星期存放在第8個字節的低4位,星期日代碼為1,星期一 ~ 星期六的代碼為2~7.例如2010年7月27日12點30分25.123秒可以表示為DT#10-07-27-12:30:25.123。
通過調用程序編輯器文件夾“LibrariesStandard LibrariesIEC Function Block”中的IEC功能(參見下圖)

調用SFC0”SET_CLK”可以設置和啟動CPU時鐘的時間和日期。調用SFC1”READ_CLK“可以讀取CPU系統時鐘當前的日期和時間。
2、字符串
字符串(String)是字符(Char)組成的一堆數組,每個字節存放一個字符。第1字節是字符串的最大字符長度,第2個字節是字符串當前有效字符的個數,字符從第3個字節開始存放,一個字符串最多有254字符。字符串的默認長度為254B,如下圖所示,在DB3中定義字符串Fault的長度為20個字符,它只占用從DB3.DBB20開始的22B,其初始值只有4個字符“over”。String變量中未使用的字節地址被初始化為B#16#00.
可以使用標準庫的IEC苦衷的21個功能來處理字符串變量,見下表,包括字符串與其他數據類型的轉換、字符串比較和字符串編輯,具體方法參見在線幫助。

3、數組
數組(ARRAY)是同一類型的數據組合而成的一個單元,數組的維數最多為6維。下圖給出一個二維數組ARRAY [1..2,1..3]的內部結構,它共有6個字節的元素,圖中每一個小格為二進制的1位,每個元素占一行(一個字節)。ARRAY后面的方括號的數字用來定義每一維的起始元素和結束元素在該維中的編號,可以取-32768~32767之間的整數。每維之間的數字用逗號隔開,每一堆開始和結束的編號用兩個小數點隔開。如果有一維有N個元素,該維的起始元素和結束元素的編號可以采用1和N,例如ARRAY [1..100]

4、結構
結構(STRUCT)可以是不同類型的數據組合,可以用基本數據類型、負載數據類型(包括數組和結構),和用戶定義數據類型(UDT)做為結構的元素,例如一個結構可以由數組和結構組成,結構可以潛逃8層。用戶可以把過程控制中有關數據統一組織在一個結構中,作為一個數據單元來使用,而不是使用大量單個的元素,為統一處理不同類型的數據和參數提供了方便。
5、用戶定義數據類型
用戶定義數據類型(User-Defined Data Types)簡稱UDT,是一種特殊的數據結構,用戶只需要對它定義一次,定義好了可以在用戶程序中作為數據類型使用,可以用它來產生大量的具有相同數據結構的數據塊,用這些數據來輸入用于不同目的的實際數據。例如生成用于顏料混合配方的UDT后,可以用它來生成用于不同顏色配方的數據組合。用戶定義數據類型有基本數據類型和復雜數據類型組成。定義好以后可以在符號表中為它指定一個符號名,使用UDT可以節約錄入數據的時間。
舉例說明:
1、數組的生成和使用
(1)生成數組
可以在數據塊中定義數組,也可以在邏輯塊的變量聲明表中定義它。下面介紹在數據塊中定義的方法,在SIMATIC管理器中用菜單命令:【插入】-【S7塊】-【數據塊】生成數據塊DB3,雙擊打開DB3,默認顯示方式為聲明視圖方式如下圖所示:聲明視圖用于定義、刪除和修改共享數據塊中的變量,指定它們的名稱、數據類型和初始值。第一行和最后一行標有STRUCT和EDN_STRUCT,這兩行中間有一個自動生成的臨時占位符變量。
按如下圖輸入

在類型INT所在行的地址列自動生成*2.0,表示一個數組占用2B,地址列+12表示該數組的6個元素一共占用12B,地址列的內容自動生成,可以給每個變量加上注釋,數組第一個元素維press[1,1],第6個元素為press[2,3],
(2)給數組元素賦初始值
Step7根據變量的數據類型給出默認的初始值,用戶可以修改初始值,定義數組時可以在ARRAY所在的行的初始值中給元素賦初始值,如上圖所示。執行菜單命令【視圖】-【數據視圖】,切換到數據視圖方式,將顯示數組和結構中個元素的初始值和實際值如下圖所示

(3)訪問數組中的數據
例如:”TANK” .press[2,1]。其中TANK是數據塊DB3的符號名,press是數組名稱,它們用英語的句號分開。方括號中的是數組元素的下表,該元素是數組的第4個元素如下圖。

(4)用數組傳遞參數,如果在塊的變量聲明表中聲明形參的類型為ARRAY,可以將整個數組作為參數來傳遞,在調用塊時可以將每個數組元素賦值給統一數據類型的參數,如下圖。

(5)用數組定義數據塊的大小
數據塊的大小與數據塊中定義的變量的個數和數據類型有關,如果需要一個容量很大的數據塊,可以用數組來定義數據塊的大小,如果在數據塊中只定義一個數組ARRAR[1..500],數組元素的數據類型為字,則該數據塊的大小為100B。可以用絕對地址和任意的簡單數據了誒行來方位該數據塊中的存儲單元。若方位數據塊中未定義的地址,將會出現錯誤信息“讀取時發生區域長度錯誤”。
(6)設置數據塊參數:鼠標右鍵點擊數據塊,選擇對象屬性,出現如下圖所示,具體如何設置參見幫助。

(7)使用程序狀態功能監視數據塊
點擊數據塊工具欄上的監視按鈕,自動切換到“數據視圖”顯示方式,數據塊內的存儲單元在線的數值在實際值列中顯示,程序狀態被激活后,不能切換“聲明視圖”方式。
2、結構的生成和使用
(1)結構的生成
可以在數據塊中或邏輯塊的聲明表中定義結構,下面介紹在數據塊中定義的方法,在上面DB3數據塊中,再定義一個結構,名為stack的結構由3個不同數據類型的變量組成。如下圖所示:

在“ARRAY”下面的INT,按回車鍵,在該單元下面生成一個空白行,在名稱輸入stack,在類型列單元點右鍵選擇復雜數據類型,選擇STRUCT,(也可以直接輸入STRUCT),按回車后再改行下面出現新的行,按如圖輸入。在END_STRUCT點回車,在出現的新的行中定義一個名為fault的字符串,如上圖所示,字符串長度占20個字符
在上圖中stack所在行的地址列中的+12表示結構在數據塊中的起始地址為DBB12,結構中各元素的地址列中的+2.0等表示在結構中的相對起始地址,=8.0表示該結構一共占用8B,最后一行地址行的=42.0表示DB塊中的數組、結構和字符串一共占用42B,
(2)訪問結構中的元素
可以用結構中的元素的絕對地址或符號地址來訪問結構中的元素,訪問結構中的數據時,需要指出結構所在的數據塊的名稱、結構名稱,以及結構元素名稱,數據塊tank內結構stack的元素amount應表示為”tank”.stack.amount。因為amount從數據塊tank(DB3)的第12號字節開始存放,它的絕對地址為DB3.DBW12.
(3)用結構傳遞參數
如果在塊的變量聲明表中,聲明形參的類型為數組或結構,可以將整個數組或結構而不是它們的每個元素作為參數來傳遞,調用塊時也可以將某個數組或結構的元素賦值給同一類型的參數。
將復雜數據類型的變量作為參數傳遞時,作為形參和實參的兩個變量必須具有相同的數據結構,例如兩個結構應具有相同數據類型的結構元素和相同的排列順序。
3、用戶定義數據類型的生成和使用
在SIMATIC管理器的左面窗口”塊“,執行菜單命令【插入】-【S7塊】-【數據類型】,生成新的UDT,在生成UDT的元素時,可以設置它的初始值和加上注釋,如下圖
從表面上看UDT1與stack完全相同,但是它們有本質區別。
結構(STRUCT)是在數據塊聲明視圖方式或邏輯塊的變量聲明表中與別的變量一起定義的,但是UDT必須在特殊的數據塊內單獨定義,并單獨存放在一個數據塊中。生成UDT后,在定義變量時將它作為一個數據類型來多次使用,例如:在變量聲明表中定義一個變量,其數據類型為UDT1,名稱為ProData如下圖
上圖可以看出,UDT在數據塊中的使用方法與其他數據類型(如INT)是一樣的。
UDT可以在邏輯塊(FC、FB、OB)的變量生命表中作為基本數據類型或復雜數據類型來使用,或者在數據塊(DB)作為變量的數據類型來使用。


本文鏈接:http://www.ryaiddkj.cn/content/?662.html

上一篇:西門子PLC如何顯示參考數據

下一篇:西門子PLC 西門子核心代理 深圳市利飛珍科技有限公司

强力斯诺克视频