• 沒有找到結果。

转换指令是指对操作数的类型进行转换,包括数据的类型转换、码的类型转换以及数据 和码之间的类型转换。

4.5.1 数据类型转换

数据类型主要包括字节、整数、双整数、实数,现在的可编程序控制器对 BCD 码十进 制数据和ASCII 字符型数据的处理能力也大大增强。不同性质的指令对操作数的类型要求不 同,类型转换指令可将固定的一个数值用到不同类型要求的指令,而不必对数据进行针对类 型的重新装载。

1.字节与整数

(1)字节到整数。

BTI,字节转换为整数指令。使能输入有效时,将字节输入数 据IN 转换成整数类型,并将结果送到 OUT 输出。字节型是无符号 的,所以没有符号扩展。

使能流输出 ENO 断开的出错条件:SM4.3(运行时间)、0006

(间接寻址)。

指令格式: BTI IN, OUT

例: BTI VB0, AC0

(2)整数到字节。

ITB,整数转换为字节指令。使能输入有效时,将整数输入数 据IN 转换成字节类型,并将结果送到 OUT 输出。输入数据超出字 节范围(0~255)则产生溢出。

转换指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出 ENO 断开的出错条件:SM1.1(溢出)、SM4.3(运行时间)、0006(间接寻 址)。

指令格式: ITB IN, OUT

例: ITB AC0, VB10 2.整数与双整数

(1)双整数到整数。

DTI,双整数转换为整数指令。使能输入有效时,将双整数输 入数据 IN 转换成整数类型,并将结果送到 OUT 输出。输入数据超 出整数范围则产生溢出。

转换指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出 ENO 断开的出错条件:SM1.1(溢出)、SM4.3(运行时间)、0006(间接寻 址)。

指令格式: DTI IN, OUT

例: DTI AC0, VW20

124 可编程序控制器应用教程(第二版)

(2)整数到双整数。

ITD,整数转换为双整数指令。使能输入有效时,将整数输入 数据 IN 转换成双整数类型(符号进行扩展),并将结果送到 OUT 输出。

使能流输出 ENO 断开的出错条件:SM4.3(运行时间)、0006

(间接寻址)。

指令格式: ITD IN, OUT

例: ITD VW0, AC0 3.双整数与实数

(1)实数到双整数。

ROUND 和 TRUNC,实数转换为双整数指令。使能输入有效时,将实型输入数据 IN 转 换成双整数类型,并将结果送到OUT 输出。两条指令的区别是:前者小数部分 4 舍 5 入,

而后者小数部分直接舍去。

转换指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出 ENO 断开的出错条件:SM1.1(溢出)、SM4.3(运行时间)、0006(间接寻 址)。

指令格式: ROUND IN, OUT TRUNC IN, OUT

例: ROUND VD0, AC0

(2)双整数到实数。

DTR,双整数转换为实数指令。使能输入有效时,将双整数输入数据 IN 转换成实型,

并将结果送到OUT 输出。

使能流输出 ENO 断开的出错条件:SM4.3(运行时间)、0006

(间接寻址)。

指令格式: DTR IN, OUT

例: DTR AC0, VD100 4.整数与 BCD 码

(1)BCD 码到整数。

BCDI,BCD 码转换为整数指令。使能输入有效时,将 BCD 码 输入数据 IN 转换成整数类型,并将结果送到 OUT 输出。输入数据 IN 的范围为 0~9999。

指令格式: BCDI OUT 例: BCDI AC0

(2)整数到 BCD 码

IBCD,整数转换为 BCD 码指令。使能输入有效时,将整数输入数据 IN 转换成 BCD 码

类型,并将结果送到OUT 输出。输入数据 IN 的范围为 0~9999。

指令格式: IBCD OUT 例: IBCD AC0 5.程序实例

功能:模拟量控制程序中的数据类型转换。将模拟量输入端采样值由整数转换为双整 数,然后由双整数转换为实数,再除以一个比例因子得到PLC 可以处理范围内的值。

本程序如图4.27 所示。

4.5.2 编码和译码 1.编码

ENCO,编码指令。使能输入有效时,将字型输入数据 IN 的最低有效位(值为 1 的 位)的位号输出到OUT 所指定的字节单元的低 4 位。即用半个字节来对一个字型数据 16 位 中的1 位有效位进行编码。

使能流输出ENO 断开的出错条件:SM4.3(运行时间)、0006(间接寻址)。

指令格式: ENCO IN, OUT

例: ENCO AC0, VB0

LD SM0.0 //使能输入 ITD AIW2, AC0 //

//整数转换为双整数 //

DTR AC0, AC0 //

//双整数转换为实数 //

/R 32768.0, AC0 //

//实数除法指令 // AC0/32768=VD100

MOVR AC0, VD200 //

//实数传送指令

4.27 数据类型转换程序例 以本指令为例,指令执行情况如表4.26 所示。

126 可编程序控制器应用教程(第二版)

表 4.26 编码指令执行结果

时间 单元地址 单元内容 说明

AC0 00000000 01000000 要编码的为AC0 中的第 6 位(始于 0 位)

执行前

VB0 xxxxxxxx 任意值 AC0 00000000 01000000 数据未变 执行后

VB0 00000110 将位号6 写入 VB0 的低 4 位 2.译码

DECO,译码指令。使能输入有效时,将字节型输入数据 IN 的低 4 位所表示的位号对 OUT 所指定的字单元的对应位置 1,其他位置 0。即对半个字节的编码进行译码来选择一个 字型数据16 位中的 1 位。

使能流输出ENO 断开的出错条件:SM4.3(运行时间)、0006(间接寻址)。

指令格式: DECO IN, OUT

例: DECO VB0, AC0 本指令执行情况如表4.27 所示。

表 4.27 译码指令执行结果

执行情况 单元地址 单元内容 说明

VB0 00001000 要编码的位的位号为8,存于 VB0 的低 4 位 执行前 AC0 xxxxxxxxxxxxxxxx 任意值

VB0 00001000 数据未变

执行后 AC0 00000001 00000000 将位号8 对应的第 8 位置 1,其他位为 0

4.5.3 七段码

SEG,七段码指令。使能输入有效时,将字节型输入数据 IN 的低 4 位有效数字产生相 应的七段码,并将其输出到OUT 所指定的字节单元。

该指令在数码显示时直接应用,非常方便。

使能流输出ENO 断开的出错条件:SM4.3(运行时间)、0006(间接寻址)

指令格式: SEG IN, OUT

例: SEG VB10, AC0 4.5.4 字符串转换

字符串转换是将标准字符编码 ASCII 码字符串与 16 进制值、整数、双整数及实数之间 进行的转换。

可进行转换的ASCII 码为 0~9 及 A~F 的编码。

1.指令种类

(1)ASCII 码转换为十六进制指令。

(2)十六进制转换为 ASCII 码指令。

(3)整数转换为 ASCII 码指令。

(4)双整数转换为 ASCII 码指令。

使能流输出 ENO 断开的出错条件:SM4.3(运行时间)、0006

(间接寻址)、0091(操作数超界)。

相關文件