字符串定义及格式
字符串大长度占用长度为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 .字符串转16进制
fc94功能实际为将连续的字符转换为连续的16进制。
因此,使用时注意:
1. 输入in为有效字符的起始地址,即字符串的前两个固定占用字符需要跳过
2. 转换个数与字符串本身定义的有效字符长度数值无关,只与输入n有关
3. 字符占8位,16进制占16位;因此转换后占位方式如图6
图5. fc94
图6. fc94监看
字符串比较
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. 字符串功能
注意:以上功能块均以字符串的有效长度为基础。
