一.数据转换指令
指令助记符
|
指令功能
|
WTD
|
单字整数转双字整数
|
FLT
|
16 位整数转浮点
|
DFLT
|
32 位整数转浮点
|
FLTD
|
64 位整数转浮点
|
INT
|
浮点转整数
|
BIN
|
BCD 转二进制
|
BCD
|
二进制转 BCD
|
ASCI
|
十六进制转 ASCII
|
HEX
|
ASCII 转十六进制
|
DECO
|
译码
|
ENCO
|
高位编码
|
ENCOL
|
低位编码
|
GRY
|
二进制数转格雷码
|
GBIN
|
格雷码转二进制
|
1.单字整数转双字整数[WTD]
1)指令概述
将指定软元件中的数据进行单字转双字操作的指令。
单字整数转双字整数[WTD]
|
16 位指令
|
WTD
|
32 位指令
|
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
16 位,BIN
|
D
|
指定目标软元件的首地址编号
|
32 位,BIN
|
3)功能和动作
(D0)→(D11,D10) 单字整数双字整数
l 当单字 D0 是正整数时,执行该指令后,双字 D10 的高 16 位补 0。
l 当单字 D0 是负整数时,执行该指令后,双字 D10 的高 16 位补 1。
l 值得注意的是,这里的高位补 0 或 1,均是指二进制数。
2.16 位整数转浮点数[FLT]
1)指令概述
将指定数据或软元件中的整数转换为浮点数的指令。
16 位整数转浮点数[FLT]
|
16 位指令
|
FLT
|
32 位指令
|
DFLT
|
64 位指令
|
FLTD
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件首地址编号
|
16 位/32 位/64 位,BIN
|
D
|
指定目标软元件的首地址编号
|
32 位/64 位,BIN
|
3)功能和动作
《16 位指令》
(D10)→ (D13,D12)
BIN 整数二进制浮点值
《32 位指令》
(D11,D10)→(D13,D12)
BIN 整数二进制浮点值
《64 位指令》
(D13,D12,D11,D10)→(D15,D14)
BIN 整数二进制浮点值
l 二进制整数值与二进制浮点值间的转换指令。常数 K、H 在各浮点运算指令中被自动转换,可以不用FLT 指令。
l 这个指令的逆变换指令是 INT。
l FLTD 指令是将 64 位整数转换为 32 位浮点数。
l FLTD 指令的 S 操作数不支持常数 K/H 类型。
注意:在使用 EADD、ESUB、EMUL、EDIV、EMOV 以及 ECMP 等浮点数运算指令前,请务必要保证运算参数全部为浮点数!
初始设 D0 的值为整数 20,执行指令后,D10 的值为浮点数 20。在自由监控中添加 D10,选择浮点类型,可以正确的监控到 D10 的值。自由监控数据如下:
上图所示,D0 为整数 20,D10 为浮点数 20,当 D10 选择双字类型监控时,数据显示不是 20。这是因为整数和浮点数在底层存放格式不一样,所以监控浮点数时应该用自由监控,选择浮点类型监控,才能查看到正确的数据。
3.浮点转整数[INT]
1)指令概述
将指定软元件中的浮点数转换为整数的指令。
浮点转整数[INT]
|
16 位指令
|
INT
|
32 位指令
|
DINT
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
16 位/32 位,BIN
|
D
|
指定目标软元件的首地址编号
|
16 位/32 位,BIN
|
3)功能和动作
《16 位指令》
(D11,D10)→ (D20)
二进制浮点 BIN 整数
小数部分进行四舍五入处理
《32 位指令》
(D11,D10)→ (D20,D21)
二进制浮点 BIN 整数
小数部分进行四舍五入处理
l 将源数据地址内的二进制浮点值转换为 BIN 整数,存入目标地址中。此时,对小数部分进行四舍五入后所得的值。
l 此指令为 FLT 指令的逆变换。
l 运算结果为 0 时,标志位为 ON。
l 运算结果超出过以下范围而发生溢出时,进位标志位 ON。
16 位运算时:-32,768~32,767
32 位运算时:-2,147,483,648~2,147,483,647
假设 D0 中的浮点数为 130.2,执行 INT 指令后,得到整数 130 存放于 D10 中,如下图所示:
4.BCD 转二进制[BIN]
1)指令概述
将指定软元件中的 BCD 码转换为二进制数的指令。
BCD 转二进制[BIN]
|
16 位指令
|
BIN
|
32 位指令
|
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
BCD 码
|
D
|
指定目标软元件的首地址编号
|
16 位,BIN
|
3)功能和动作
源(BCD)→目标(BIN)的转换传送。
l 可编程控制器获取 BCD 数字开关的设定值时使用。源数据不是 BCD 码时,会置位 SM409(运算错误)、SD409=4(错误发生)。
l 因为常数 K 自动地转换二进制,所以不成为这个指令适用软件元件。
l 例如,PLC 时钟信息寄存器 SD13~SD19 中存储的全部为 BCD 码信息,但是我们都习惯使用十进制数值,可以通过 BIN 指令将需要的时间信息由 BCD 码信息转化为二进制:
5.二进制转 BCD [BCD]
1)指令概述
将指定软元件中的二进制数转换为 BCD 码的指令。
二进制转 BCD [BCD]
|
16 位指令
|
BCD
|
32 位指令
|
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
16 位,BIN
|
D
|
指定目标软元件的首地址编号
|
BCD 码
|
3)功能和动作
源(BIN)→目标(BCD)的转换传送。
l 将可编程控制器内的二进制数据转变为 BCD 码格式的数据。
l BCD 是用 4 位二进制数来表示 1 位十进制数中的 0~9 这 10 个的方法。
l 例如,PLC 时钟信息寄存器 SD13~SD19 中存储的全部为 BCD 码信息,但是我们都习惯使用十进制数值,可以通过 BCD 指令将对寄存器 SD13~SD19 里面的时钟信息进行校正:
6.十六进制转 ASCII [ASCI]
1)指令概述
将指定软元件中的十六进制数转换为 ASCII 码的指令。
十六进制转 ASCII[ASCI]
|
16 位指令
|
ASCI
|
32 位指令
|
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
2 位,HEX
|
D
|
指定目标软元件的首地址编号
|
ASCII 码
|
n
|
指定转换的 ASCII 码字符个数
|
16 位,BIN
|
3)功能和动作
l HEX 数据的各位转换成 ASCII 码,向的高 8 位、低 8 位分别传送。转换的字符数用 n 指定。
l低 8 位、高 8 位,分别存储一个 ASCII 数据。
上例程序转换如下:
指定起始元件:
(D100)=0ABCH
(D101)=1234H
(D102)=5678H
[0]=30H [1]=31H
[5]=35H [A]=41H
[2]=32H [6]=36H
[B]=42H [3]=33H
[7]=37H [C]=43H
[4]=34H [8]=38H
7.ASCII 转十六进制[HEX]
1)指令概述
将指定软元件中的 ASCII 码转换为十六进制数的指令。
ASCII 转十六进制[HEX]
|
16 位指令
|
HEX
|
32 位指令
|
|
执行条件
|
常开/闭、边沿触发
|
适用机型
|
XD 全系列、XL 全系列
|
2)操作数
操作数
|
作用
|
类型
|
S
|
指定源数据的软元件地址编号
|
ASCII
|
D
|
指定目标软元件的首地址编号
|
2 位,HEX
|
n
|
指定转换的 ASCII 码字符个数
|
16 位,BIN
|
3)功能和动作
l 将中的高低位各 8 位的 ASCII 字符转换成 HEX 数据,每 4 位向
传送。
l 转换的字符数用 n 指定。
上例程序转换的情况如下所示:
|