广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
西门子 S7-1200 系列七:S7-1200(1500适用)控制系统程序中数据类型详解(下)
发布时间:2024-11-30

String类型(重点关注)
char 定义

数据类型为 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 的定义:

数据类型为 wchar(宽字符)的变量长度为 16 位,占用2个 byte 的内存。 wchar 数据类型将扩展字符集中的单个字符保存为 UFT-16  编码形式。wstring即可以存储字符,又可以存储中文文本;

wstring 的定义:

数据类型为 wstring (宽字符串)的操作数用于在一个字符串中存储多个数据类型为 wchar 的 Unicode  字符。如果未指定长度,则字符串的长度为预置的 254 个字

wchar 和 wstring 在西门子 PLC 中的格式

同string一样,wstring也是有不指定长度和指定长度两种,如下图所示:

图片image-20240515151917687

注:第一个字为总字长度;第二个字为有效字长度;

数据类型 DTL 介绍、使用
DTL 时间数据类型

日期和时间的数据类型 DTL 的操作数长度为 12 个字节,用于存储日期和时间信息。下表列出了数据类型 DTL 的属性:

字节长度格式值范围输入值示例
12DTL#年-月-日-小时:分:秒:纳秒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
1USInt
2USInt1 - 12
3USInt1 - 31
4星期USInt1(星期日) - 7(星期六),作为输入时无需考虑
5小时USInt0 - 23
6分钟USInt0 - 59
7USInt0 - 59
8纳秒UDInt0 - 999999999
9
10
11
系统/本地时间区别(额外插播)

s7-1200提供了系统时间读取的库

系统时间(System Time):UTC 时间,即以前的格林威治标准时间。

本地时间(Local Time):根据 S7-1200 CPU 所处时区设置的本地标准时间。

图片image-20240515155727142


展开全文
拨打电话 微信咨询 发送询价