一 | String类型(重点关注) |
数据类型为 char (字符) 的变量长度为 8 bit 位,占用1个 byte 的内存。char 数据类型将单个字符存储为 ASCII 编码形式。通常是指计算机中使用的字母、数字和符号,包括:1、2、3、A、B、C、常见符号等。每个字符占用空间为1字节。char为ASCII编码,对应的10进制,16进制,可查看ASCII码表获得,此处不再赘述;
string 定义数据类型为 string 的操作数可存储多个字符,最多可包括 254 个字符。字符串中的第一个字节为总长度,第二个字节为有效字符数量。(划重点,特别是与上位机通讯中特别重要)字符串(string)在存储上类似字符的数组,所以它每一个元素都是可以提取的字符,如:"abcdefg"叫字符串,而其中的每个元素叫字符。
string 在西门子 PLC 中的格式string字符串在DB中有两种定义方式:
不指定字符串长度(默认254最大字节);指定字符串长度,根据实际情况指定字符串长度,节省存储空间;下图展示以两种方式表示”相同“字符串'abcdef'方式,通过偏移量可以看出占用的字节长度:
image-20240515142255779
从上图可知,string1: 起始地址偏移量854,string2:起如地址偏移量1110,则可看出string1的字节总长度为1110-854=256(256=最大字节254+第一个字节总长度+第二个字节有效字符数量)
同理可知,string2的字节总长度为1122-1110=12**(12=10字节长度(指定)+第一个字节总长度+第二个字节有效字符数量)**,在监控表中分解如下:
image-20240515143511553
使用 string 数据类型在 HMI 上显示汉字在TIA Portal中建议汉字使用wstring数据类型,但是当需要在某些不支持wstring格式的HMI上面显示汉字,也是可以使用 string 数据类型显示的。但由于 string 数据类型中存储的汉字编码标准为 GBK 编码(编码不一致就会产生乱码);因此,需要在 HMI 设备上选择相应的编码标准。
image-20240515145335546
注:
在 string 数据类型的起始值中定义汉字 '工业系统baike',且字符背景底色为浅黄色(编译时会有警告信息,这是TIA软件建议 string 数据类型中不使用汉字的友情提示),但不影响使用。1个汉字占用2个字节长度;string中汉字编码是GBK,监控表中Unicode字符,编码格式不一致,导致乱码二 | wstring类型 |
数据类型为 wchar(宽字符)的变量长度为 16 位,占用2个 byte 的内存。 wchar 数据类型将扩展字符集中的单个字符保存为 UFT-16 编码形式。wstring即可以存储字符,又可以存储中文文本;
wstring 的定义:数据类型为 wstring (宽字符串)的操作数用于在一个字符串中存储多个数据类型为 wchar 的 Unicode 字符。如果未指定长度,则字符串的长度为预置的 254 个字。
wchar 和 wstring 在西门子 PLC 中的格式同string一样,wstring也是有不指定长度和指定长度两种,如下图所示:
image-20240515151917687
注:第一个字为总字长度;第二个字为有效字长度;
三 | 数据类型 DTL 介绍、使用 |
日期和时间的数据类型 DTL 的操作数长度为 12 个字节,用于存储日期和时间信息。下表列出了数据类型 DTL 的属性:
12 | DTL#年-月-日-小时:分:秒:纳秒 | DTL#1970-01-01-00:00:00.0 到 DTL#2262-04-11-23:47:16.854775807 | DTL#2008-12-16-20:30:20.250 |
数据类型 DTL 的结构由几个部分组成,每一部分都包含不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。下表给出了数据类型 DTL 的结构组成及其属性:
0 | 年 | UInt | 1970 - 2262 |
1 | USInt | ||
2 | 月 | USInt | 1 - 12 |
3 | 日 | USInt | 1 - 31 |
4 | 星期 | USInt | 1(星期日) - 7(星期六),作为输入时无需考虑 |
5 | 小时 | USInt | 0 - 23 |
6 | 分钟 | USInt | 0 - 59 |
7 | 秒 | USInt | 0 - 59 |
8 | 纳秒 | UDInt | 0 - 999999999 |
9 | |||
10 | |||
11 |
s7-1200提供了系统时间读取的库
系统时间(System Time):UTC 时间,即以前的格林威治标准时间。
本地时间(Local Time):根据 S7-1200 CPU 所处时区设置的本地标准时间。
image-20240515155727142