字符串

字符串定义及格式

字符串转换

字符串比较

字符串功能

字符串定义及格式

字符串最大长度占用长度为256个字符长度,其中

第一个字符定义为字符串的最大长度数值

第二个字符定义为字符串的有效长度数值

从第三个字符开始为实际有效的字符,最大可设置254个字符长度,每个字符的数据类型是:Char。字符是以ASCII的方式存储。

ASCII码与16进制和10进制转换关系如下图所示:

表1 ASCII码表

字符串转换

1. STEP7库功能

STEP7库中提供了如下几个转换块:(库文件路径:库libraries---Standard Libray---IEC Function Blocks)

(FC94,95路径:库libraries---Standard Libray---TI-S7 Converting Blocks)

FC编号

功能名称

描述

FC5

DI_STRING

双整数转字符串

FC16

I_STRING

整数转字符串

FC30

R_STRING

实数转字符串

FC37

STRING_DI

字符串转双整数

FC38

STRING_I

字符串转整数

FC39

STRING_R

字符串转实数

FC94

ATH

ASCII转换为十六进制

FC95

HTA

十六进制转换为ASCII

表2. 字符串转换

2 .整数(双整数)转字符串

以FC5为例,双整数为有符号整数,因此如图第三个有效字符为符号位,显示“+”。

注意: 此处字符串定义最大长度为254个字符,图二中第一位最大长度为-2为有符号数值。


图1. FC5及数据块定义

图2. 变量表监看

3 .实数转字符串

实数转换为字符串,显示格式为科学计数法。如图3所示:

图3. 科学计数法显示

其有效数据最多显示7位。同时转换后的字符串固定占用14个有效字符长度。

注意,建立字符串最大长度时务必要大于14个字符长度,否则FC30不执行,无输出。

图4. FC30实例

4 .字符串转16进制

FC94功能实际为将连续的字符转换为连续的16进制。
因此,使用时注意:
1. 输入"IN"为有效字符的起始地址,即字符串的前两个固定占用字符需要跳过
2. 转换个数与字符串本身定义的有效字符长度数值无关,只与输入"N"有关
3. 字符占8位,16进制占16位;因此转换后占位方式如图6

图5. FC94

图6. FC94监看

如何将Date 或 Date_and_Time数据类型转换为字符串?

参看"来自西门子技术支持热线的故事"链接,此外,另有付费的功能块包: 数据类型转换的工具集

如何将字符串转换为实数(非科学计数法形式)?

请参考:哪些标准 STEP 7函数可用来对字符串变量和ASCII 字符进行转换和比较?

字符串比较

1. STEP7库功能

STEP7库中提供了如下几个比较块:(库功能路径:库libraries---Standard Libray---IEC Function Blocks)

FC编号

功能名称

描述

FC10

EQ_STRING

S1=S2

FC13

GE_STRING

S1≥S2

FC15

GT_STRING

S1>S2

FC19

LE_STRING

S1≤S2

FC24

LT_STRING

S1<S2

FC29

NE_STRING

S1≠S2

表3. 字符串比较

注意:

1. 比较功能,比较的是两个字符串的有效数据长度部分。即字符串定义的最大长度与比较结果无关。见图7

2. 比较大小时,字符从上至下依次比较。见图8

3. 比较大小时,字符转换为16或10进制比较。即非数字字符,是转换为16或10进制进行比较。见图9

图7. FC10比较大小

图8. FC13比较大小

图9. FC13比较大小

为何比较带"+-"的字符串,"-"的字符串反而大于"+"字符串?

如图9,由于"+"对应十进制43,"-"对应十进制45;因此对于+-号比较,"-"的字符串反而大于"+"的字符串。

字符串功能

1. STEP7库功能

STEP7库中提供了如下几个功能块:(库功能路径:库libraries---Standard Libray---IEC Function Blocks)

FC编号

功能名称

描述

FC2

CONCAT

合并字符串

FC4

DELETE

删除字符串内字符

FC11

FIND

字符串查找

FC17

INSERT

字符串插入

FC20

LEFT

读取左侧字符串

FC21

LEN

字符串内有效字符长度

FC31

REPLACE

字符串替换

FC32

RIGHT

读取右侧字符串

表4. 字符串功能

注意:以上功能块均以字符串的有效长度为基础。