「原創經驗」西門子S7-1200、S7-1500的字符串變量中的小祕密

「原創經驗」西門子S7-1200、S7-1500的字符串變量中的小秘密

隨著信息化要求的不斷提升,各種PLC都要應對字符信息的需求。在新型PLC裡,都有字符串這種數據類型。對於西門子的S7-1200、S7-1500,有string和wstring兩種字符串數據類型。

以下部分信息來自於西門子的手冊(加粗的是我的註釋):

  1. CPU 支持使用 String 數據類型存儲一串單字節字符。String數據類型包含總字符數(字符串中的字符數)和當前字符數。String 類型提供了多達 256個字節,用於在字符串中存儲最大總字符數(1 個字節)、當前字符數(1個字節)以及最多 254 個字節。String 數據類型中的每個字節都可以是從 16#00 到16#FF 的任意值。
  2. WString數據類型支持單字(雙字節)值的較長字符串。第一個字包含最大總字符數;下一個字包含總字符數,接下來的字符串可包含多達 65534 個字。WString數據類型中的每個字可以是 16#0000 - 16#FFFF 之間的任意值。即使是ASCII字符,也要佔用1個字
  3. 可從數據類型下拉列表中選擇一種數據類型,輸入關鍵字“String”或“WString”,然後在方括號中以字節 (String) 或字 (WString)為單位指定最大字符串大小。例如,“MyString String[10]”指定 MyString 的最大長度為 10個字節。如果不包含帶有最大長度的方括號,則假定字符串的最大長度為 254 並假定WString 的最大長度為 65534。“MyWString WString[1000]”可指定一個 1000 字的WString。

一些經驗:

  1. string裡也可以輸入中文,並正確統計字數。其中的中文用國標編碼:用連續兩個128~255的編碼表示1個漢字。ASCII碼為標準符號、數字、英文等進行了保留,取值範圍是0~127。比如:“我們的A”,佔的字符串長度為7個字節(每個中文兩個字節,最後一個A佔1個字節),但是,總數為4。
  2. 如果上位機讀取了這個字符序列,需要自己轉換成字符串時,就要考慮到中文字符的因素。在處理字符串時,如果是有符號字符串,遇到小於0的字符,會結合後面緊跟的字符來組成一個漢字,大於0的為標準西文字符;如果是無符號的,則可以判斷是否大於127。
  3. wstring採用了Unicode編碼:用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只需要把高字節全部填為0就可以(PLC裡的小地址)。

2019年1月16日


說明:

1、本文是實踐經驗,非嚴格論文,與相關產品和理論可能不完全相符。

2、如需控制、三電相關幫助,交流,請關注本人,並加入技術討論QQ群:877456127,那裡有很多熱心同行。


分享到:


相關文章: