首页 百科知识 数据类型的转换

数据类型的转换

时间:2022-10-16 百科知识 版权反馈
【摘要】:数据类型转换指令的功能是将一个固定的数值,根据操作指令对数据类型的需要进行相应类型的转换。INDX数值通常设为1,从字符串的第一个字符开始转换。整数、双整数转ASCII时,nnnn=0000。将小数点右面的位数指定为0会使数值显示为不带小数点。当nnn数值大于5时或当指定的输出字符串长度太小无法存储转换的数值时,输出缓冲器用ASCII空格字符填充。尝试显示7个以上有效数字会产生进位错误。将位于VD2位置的实数值转换为10个ASCII字符,如图5-18所示。

5.4.1 数据类型的转换

在进行数据处理时,不同性质的操作指令需要不同数据类型的操作数。数据类型转换指令的功能是将一个固定的数值,根据操作指令对数据类型的需要进行相应类型的转换。

1.数据的转换,如表5-22所示。

表5-22 数据的转换

img197

(续表)

img198

注:表中指令标注“????”为操作数。

【例5-9】(1)将英寸转化为厘米,如图5-15所示。

img199

图5-15 例5-9

img200

执行后的结果:

img201

(2)将BCD码1234转换为整数,如图5-16所示。

img202

图5-16 将BCD码1234转换为整数

2.字符串的转换

(1)字符串一般格式:

字符串是一系列字符,每个字符作为一个字节存储。字符串的第一个字节定义字符串的长度,即字符数。

下面列举字符串格式。字符串的长度可为0~254个字符。字符串的最大长度是255个字节(254个字符加上长度字节)。

img203

STI指令用以下形式转换字符串:

[spaces] [+ or -] [digits 0-9]

INDX数值通常设为1,从字符串的第一个字符开始转换。可将该数值设为其他数值,在字符串中的不同点开始转换。当输入字符串包含不属于需要转换数字部分的文本时,可采用此种方法。例如,如果输入字符串是“Temperature: 77.8”,可以将INDX设为数值13,跳过字符串开始的字“Temperature:”。

当达到字符串结束时或当发现第一个无效字符时,转换终止。无效字符是数字(0-9)以外的任何字符。

每当转换产生一个对于输出数值过大的整数值时,则设置溢出错误(SM1.1)。例如,如果输入字符串产生一个大于32767或小于−32768的数值时,STI指令设置溢出错误。

如果当输入字符串未包含有效数值而无法执行转换时,也会设置溢出错误(SM1.1)。例如,如果输入字符串包含“A123”,转换指令会设置SM1.1(溢出),输出数值保持不变。

(2)指令格式及作用,如表5-23所示。

表5-23 指令格式及作用

img204

注:表中指令标注“????”为操作数。

上述指令中,操作数FMT的设定:

img205

img206

ssss = 输出字符串长度(整数、双整数转换为字符串时为0000,实数转换为字符串时为设定输出字符串的长度)

c = 逗号(1)或小数点(0)

nnn = 小数点右面的位数

【例5-10】将字符串进行转换,如图5-17所示。

img207

图5-17 例5-10

img208

输入字符举例:

img209

执行网络之后:

VW100(整数)= 98

VD200(双整数)= 98

VD300(实数)= 98.6

3.ASCII码转换,如表5-24所示。

表5-24 ASCII码转换

img210

(续表)

img211

注:表中指令标注“????”为操作数。

上述指令中,操作数FMT的设定:

img212

输出缓冲器的大小由ssss域指定。0、1或2个字节无效。整数、双整数转ASCII时,nnnn=0000。输出缓冲器中小数点右边的位数由nnn域指定。nnn域的有效范围是0~5。将小数点右面的位数指定为0会使数值显示为不带小数点。当nnn数值大于5时或当指定的输出字符串长度太小无法存储转换的数值时,输出缓冲器用ASCII空格字符填充。c位指定是使用逗号(c = 1)还是使用小数点(c = 0)作为整数和小数之间的分隔符。

根据下列规则对输出缓冲器进行格式化:

1.正值写入输出缓冲器,不带符号。

2.负值写入输出缓冲器,带起始负号(−)。

3.小数点左侧的起首零(与小数点相邻的数字除外)被压缩。

4.小数点右侧的数值进位,使之符合小数点右侧指定的位数。

5.输出缓冲器的尺寸必须最小比小数点右侧数位多3个字节。

6.输出缓冲器中的数值右对齐。

下表显示几个小数点右面有一位数(nnn = 001)和六个字节缓冲器大小(ssss = 0110)格式的数值范例。

img213

注释:S7-200 PLC使用的浮点数格式最多支持7个有效数字。尝试显示7个以上有效数字会产生进位错误。

【例5-11】将位于VD2位置的实数值转换为10个ASCII字符,如图5-18所示。//将位于VD2位置的实数值转换为10个ASCII字符,//从VB10开始,使用16#A3格式,用句号代表小数点,

//小数点后有3位数。

img214

图5-18 例5-11

img215

转换结果如下:

img216

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈