一、wchar 和 wstring 的定義:
1、數(shù)據(jù)類型為 wchar(寬字符)的變量長度為 16 位,占用2個 byte 的內(nèi)存。wchar數(shù)據(jù)類型將擴展字符集中的單個字符保存為 UFT-16 編碼形式。
2、數(shù)據(jù)類型為 wstring (寬字符串)的操作數(shù)用于在一個字符串中存儲多個數(shù)據(jù)類型為 wchar 的 Unicode 字符。如果未指定長度,則字符串的長度為預置的 254 個字。
Unicode 是國際標準字符集,可譯為萬國碼或統(tǒng)一碼等,包含中日韓越漢字和世界上絕大多數(shù)語言文字。
二、wchar 和 wstring 在西門子 PLC 中的格式
本節(jié)以漢字為例說明漢字在西門子 PLC 中的格式。
例如,在 PLC 中創(chuàng)建一個 DB 塊,并將屬性設置為標準 DB 塊,在 DB1 塊中創(chuàng)建如下的漢字字符串和漢字字符,并賦予起始值。如下圖所示:
圖.01
1、wstring 數(shù)據(jù)類型的格式
下載到 PLC 中,通過監(jiān)視表逐個查看每個字中的值。如下圖所示:
圖.02
可以看出:
a.數(shù)據(jù)類型為 wstring 的漢字字符串,通過查看 DB 塊偏移地址可見該字符串占用254字;查看字符串第一個字,其最多存儲漢字字符總數(shù)量為254個。
b.數(shù)據(jù)類型為 wstring[10] 的漢字字符串,通過查看 DB 塊偏移地址可見該字符串占用12字;查看字符串第一個字,其最多存儲漢字字符數(shù)量為10個。
c.漢字字符串的第一個字為該字符串總長度,第二個字為當前存儲的有效字符數(shù)量。
2、wchar 和16進制數(shù)的關(guān)系
在計算機領(lǐng)域,所有的數(shù)據(jù)都是以2進制數(shù)存儲的,那么 wchar,16進制數(shù)和2進制數(shù)又有什么關(guān)系?
如下圖所示:
圖.03
可以看出:
a.通過漢字字符 ‘好’ 的16進制數(shù)和2進制數(shù),可見字符(wchar)、16進制數(shù)只是在PLC中顯示的形式不同,實際存儲的是一個2進制值。
通過下面的網(wǎng)頁,可以查看漢字和16進制數(shù)的對應關(guān)系。
unicode 轉(zhuǎn)中文,中文轉(zhuǎn) unicode,鏈接:Unicode碼
b.通過漢字字符 ‘1’ 的16進制數(shù)和2進制數(shù),可見漢字字符(wchar)‘1’ 顯示的16進制數(shù)為16#0031,而字符(char)‘1’ 對應的16進制數(shù)為16#31。因此,如果使用 wchar 存儲僅占一個字節(jié)的 char 字符時,則高八位為16#00,低八位是相同的,都是2進制的2#0011_0001。
三、常問問題:
1、定義為 wstring 的字符串,是否能保存數(shù)字和英文字母的字符?
可以。
例如,wchar#‘A’,實際存儲時,對應的16進制數(shù)為16#0041,wchar#‘1’,實際存儲時,對應的16進制數(shù)為16#0031。
如下圖所示:
圖.04
也就是說,使用 wchar 存儲僅占一個字節(jié)的英文字母或數(shù)字時,對應 wchar 的字的高八位將為16#00。
2、如何輸入特殊字符(如:回車,換行,$ 等)?
例如,需要輸入的漢字字符串為 ‘$早上好$+回車+換行’,可以參考如下表格:
圖.05
根據(jù)表格說明,字符串在 PLC 中的書寫格式:‘$$早上好$$$R$L’或‘$$早上好$$$N’,如下圖所示:
圖.06
審核編輯:郭婷
-
plc
+關(guān)注
關(guān)注
5015文章
13355瀏覽量
464578 -
西門子
+關(guān)注
關(guān)注
94文章
3059瀏覽量
116187
原文標題:S7-1200 wchar 和 wstring
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論