
随着信息化要求的不断提升,各种PLC都要应对字符信息的需求。在新型PLC里,都有字符串这种数据类型。对于西门子的S7-1200、S7-1500,有string和wstring两种字符串数据类型。
以下部分信息来自于西门子的手册(加粗的是我的注释):
- CPU 支持使用 String 数据类型存储一串单字节字符。String数据类型包含总字符数(字符串中的字符数)和当前字符数。String 类型提供了多达 256个字节,用于在字符串中存储最大总字符数(1 个字节)、当前字符数(1个字节)以及最多 254 个字节。String 数据类型中的每个字节都可以是从 16#00 到16#FF 的任意值。
- WString数据类型支持单字(双字节)值的较长字符串。第一个字包含最大总字符数;下一个字包含总字符数,接下来的字符串可包含多达 65534 个字。WString数据类型中的每个字可以是 16#0000 - 16#FFFF 之间的任意值。即使是ASCII字符,也要占用1个字。
- 可从数据类型下拉列表中选择一种数据类型,输入关键字“String”或“WString”,然后在方括号中以字节 (String) 或字 (WString)为单位指定最大字符串大小。例如,“MyString String[10]”指定 MyString 的最大长度为 10个字节。如果不包含带有最大长度的方括号,则假定字符串的最大长度为 254 并假定WString 的最大长度为 65534。“MyWString WString[1000]”可指定一个 1000 字的WString。
一些经验:
- string里也可以输入中文,并正确统计字数。其中的中文用国标编码:用连续两个128~255的编码表示1个汉字。ASCII码为标准符号、数字、英文等进行了保留,取值范围是0~127。比如:“我们的A”,占的字符串长度为7个字节(每个中文两个字节,最后一个A占1个字节),但是,总数为4。
- 如果上位机读取了这个字符序列,需要自己转换成字符串时,就要考虑到中文字符的因素。在处理字符串时,如果是有符号字符串,遇到小于0的字符,会结合后面紧跟的字符来组成一个汉字,大于0的为标准西文字符;如果是无符号的,则可以判断是否大于127。
- wstring采用了Unicode编码:用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以(PLC里的小地址)。
2019年1月16日
说明:
1、本文是实践经验,非严格论文,与相关产品和理论可能不完全相符。
2、如需控制、三电相关帮助,交流,请关注本人,并加入技术讨论QQ群:877456127,那里有很多热心同行。
版权声明:本文为weixin_28725037原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。