- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
一、char和string的定义:
1、数据类型为char(Character)的变量长度为8bit位,占用1个byte的内存。char数据类型将单个字符存储为ASCII编码形式。
通常是指计算机中使用的字母、数字和符号,包括:1、2、3、A、B、C、常见符号等。每个字符占用空间为1字节。
2、数据类型为string的操作数可存储多个字符,最多可包括254个字符。字符串中的第一个字节为总长度,第二个字节为有效字符数量。
字符串(string)在存储上类似字符的数组,所以它每一个元素都是可以提取的字符,如:abcdefg叫字符串,而其中的每个元素叫字符。
二、char和string在西门子PLC中的格式
例如,在PLC中创建一个DB块,并将属性设置为标准DB块,在DB1块中创建如下的字符串和字符,并赋予起始值。如下图所示:
图.01
1、string数据类型的格式
下载到PLC中,通过监视表逐个查看每个字节中的值。如下图所示:
图.02
可以看出:
a.数据类型为string的字符串,通过查看DB块偏移地址可见该字符串占用256字节;查看字符串第一个字节,其最多存储字符总数量为254个。
b.数据类型为string[10]的字符串,通过查看DB块偏移地址可见该字符串占用12字节;查看字符串第一个字节,其最多存储字符数量为10个。
c.字符串的第一个字节为该字符串总长度,第二个字节为当前存储的有效字符数量。
2、char和16进制数的关系
在计算机领域,所有的数据都是以2进制数存储的,那么char,16进制数和2进制数又有什么关系?
如下图所示:
图.03
可以看出:
a.通过字符A的16进制数和2进制数,可见字符(char)、16进制数只是在PLC中显示的形式不同,实际存储的是一个2进制值。
b.通过字符1和数值1(MB0的值)的16进制数和2进制数,可见字符1和数值1是两种不同数据。因此,实际使用是必须注意区别。
c.下图是ASCII字符(char):0,1,……E,F对应的2进制,10进制,16进制对应关系的截图。
图.04
更多的ASCII字符对应关系,请查看下面的链接。
ASCII码表链接:ASCII
三、使用string数据类型在HMI上显示汉字
例如,在某些不支持WString数据类型(关于WString参见:跳转链接)的HMI设备上显示汉字,也是可以使用string数据类型显示的。
但由于string数据类型中存储的汉字编码标准为GBK编码;因此,需要在HMI设备上选择相应的编码标准。
如下图所示,在string数据类型的起始值中定义汉字你好,且字符背景底色为浅黄色(编译时会有警告信息,这是TIA软件建议string数据类型中不使用汉字的友情提示),但不影响使用。
图.05
在线监控时发现汉字无法按Unicode编码方式正确显示,设置显示格式为16进制数,通过下图所示的字符编码对应关系,发现其对应的是GBK编码。如下图所示:
图.06
所以,在HMI设备上显示string数据类型中存储的汉字时,需要在HMI上设置对应的GBK编码方式,是可以显示汉字的。
关于16进制数和GBK编码对应关系,可以通过如下网址查询:GBK
四、常问问题:
1、HTA和ATH指令的输入和输出使用限制?
通过TIA软件的在线帮助,查看指令功能说明:
指令HTA功能——输入范围为16进制数:16#0,1,……E,F,输出范围为由ASCII字符(char):0,1,……E,F组成的数组或字符串。
指令ATH功能——输入范围为由ASCII字符(char):0,1,……E,F组成的数组或字符串,输出范围为16进制数:16#0,1,……E,F。
注意:指令ATH和指令HTA的输入和输出都是受到限制的。
2、HTA和ATH指令的作用?
在具体的应用中需要互相转换字符(0,1,……E,F)和16进制数值(16#0,1,……E,F),那么HTA和ATH就为转换这两种类型的数据提供了方便。
以HTA指令为例,在OB1中调用HTA指令,实现如下要求的转换:
a.W#16#12AB需要转换为ASCII字符数组,使用HTA指令转换结果为CHAR#[1,2,A,B]。
b.W#16#12AB需要转换为ASCII字符串,使用HTA指令转换结果为12AB。
如下图所示:
图.07
结果:使用HTA指令转换后,数据类型及占用字节空间发生了变化;同样的,使用ATH指令可
您可能关注的文档
最近下载
- 新概念1 Lesson 135 课件完整版.ppt
- 老年人胃食管反流中国专家共识(2023版)解读 PPT课件.pptx VIP
- 扬州大学大学物理期末考试试卷(含答案) .pdf VIP
- 形象设计师(高级)理论考试题库资料(浓缩500题).pdf
- 公共营养师培训教程配套辅导练习.doc
- 运动安全与健康智慧树知到期末考试答案章节答案2024年浙江大学.docx
- 黄色简约风日本人文艺术欣赏介绍日式常规PPT模板.pptx
- 2024年全国各地中考语文作文真题汇编(六十题有解析有范文).doc
- 生涯人物访谈报告教师 .pdf
- Samsung三星27英寸全高清曲面液晶显示器C27F591FDC中文说明书.pdf VIP
文档评论(0)