欢迎访问文稿网!

数据类型的转换

范文之家 分享 时间: 加入收藏 我要投稿 点赞

数据类型的转换

    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

221381
领取福利

微信扫码领取福利

微信扫码分享