
4.10 数据转换指令
4.10.1 数据类型转换指令
(1)数据类型转换指令格式和功能
数据类型转换指令格式和功能如表4-58所示。
表4-58 数据类型转换指令格式和功能

(2)例说字节和整数之间的转换指令

梯形图如图4-74(a)所示。由仿真结果图4-74(b)看出,当I0.0接通时:

图4-74 字节和整数之间的转换指令
① B_I指令将数据类型为字节的55转换为整数55,存入VW0中。
② I_B指令将整数155转换为数据类型为字节的155,存入VB2中。
③ 由于I_B指令IN的数据取值范围为0~255,当输入IN为300时,则无法转换,指令框显示红色。
(3)例说整数与双整数、双整数和实数之间的转换

梯形图如图4-75(a)所示。由仿真结果图4-75(b)看出,当I0.1接通时:


图4-75 整数与双整数、双整数和实数之间的转换指令
① I_DI指令将整数5678转换为双整数5678,存入VD0中。
② DI_I指令将双整数1234转换为整数1234,存入VW4中。
③ DI_R指令将双整数1234567890转换为实数1.2345678×109,存入VD6中。
(4)例说四舍五入指令和取整指令

梯形图如图4-76(a)所示。由仿真结果图4-76(b)看出,当I0.3接通时:

图4-76 四舍五入指令和取整指令
① ROUND指令将实数25.667的小数部分按照四舍五入的规则转换为双整数26,存入VD0中。
② TRUNC指令将实数25.667的小数部分按照舍去的规则转换为双整数25,存入VD4中。
4.10.2 BCD码与整数的转换指令
(1)BCD码与整数的转换指令格式和功能
BCD码与整数的转换指令格式和功能如表4-59所示。
表4-59 BCD码与整数的转换指令格式和功能

(2)例说BCD码与整数的转换指令

梯形图如图4-77(a)所示。由仿真结果图4-77(b)看出,当I0.2接通时:

图4-77 BCD码与整数的转换指令
①BCD_I指令将十六进制数16#45转换为十进制整数45,存入VW0中。
由于BCD码是一种用四位二进制数表示一位十进制数的代码,十六进制表示的BCD码16#45对应的二进制形式为2#0100 0101,将每四位化为十进制数则为十进制整数45。
②I_BCD指令将十进制整数3456转换为BCD码16#3456,存入VW2中。
对于十进制整数3456,将十进制的每一位数字换为对应的二进制数,则BCD码为2#0011 0100 0101 0110,化为十六进制便为16#3456。
4.10.3 译码与编码指令
(1)译码与编码指令格式和功能
译码与编码指令格式和功能如表4-60所示。
表4-60 译码与编码指令格式和功能

(2)知识延伸
① 编码 编码器的真值表如表4-61所示。表中,“×”表示取值可能为“1”,也可能为“0”。
表4-61 编码器的真值表

在16位输入中,从低位到高位找到第一个取值为“1”的单元,将其位号按照“8421”的权值,编制成二进制代码,从OUT的低4位输出。
② 译码 译码器的真值表如表4-62所示,将输入的低4位按照“8421”的权值,翻译成输出OUT的位号,并将此位的值置为“1”,其余的置为“0”。
表4-62 译码器的真值表

(3)例说编码和译码指令

梯形图如图4-78(a)所示。由仿真结果图4-78(b)看出:

图4-78 编码和译码指令
①ENCO指令中,输入16#FE80化为二进制数为2#1111 1110 1000 0000,在16位输入中,从低位到高位第一个取值为“1”的单元位号为7,故VB0的低4位V0.0~V0.3输出为0111,即为“7”。
②DECO指令中,输入的低4位为0101,即“5”,则将输出OUT的位号为5的单元V0.5置为“1”,其余的置为“0”。故输出为16#0020。
4.10.4 段码指令
(1)段码指令格式和功能
段码指令格式和功能如表4-63所示。
表4-63 段码指令格式和功能

(2)段码
① 数码管 图4-79(a)所示为一个数码管,是由8个发光二极管构成。其中,有1个作为小数点,7个(a、b、c、d、e、f、g)构成数码管的七段码,这8个发光二极管的阴极相连并接地,被称为共阴极接法,如图4-79(b)。当发光二极管的阳极接入1时,对应的发光二极管将会发光,因此,不同发光二极管发光,将使数码管显示不同的字形,这便是七段码编码。例如令a、b、c、d、e、f段阳极接1,g段阳极接0,则会显示“0”。

图4-79 数码管及其接法
② 七段码编码 段码指令是将输入字节低4位所表示的16进制字符转换为七段码编码。每个七段显示码占用一字节,用它显示一个字符。
(3)例说指令

梯形图如图4-80(a)所示。由仿真结果图4-80(b)看出,输出QB0的执行结果2#01001111便是数字“3”对应的段码。

图4-80 段码指令
4.10.5 综合实例
综合实例1——英寸转换为厘米

通过计算传送带移动的长度,可以估算传送货物的数量。传送带每移动1英寸,I0.0接通一次,将传送带移动的英寸转换为厘米,1英寸=2.54厘米。

元件说明见表4-64。
表4-64 元件说明


控制程序如图4-81所示。

图4-81 控制程序

对于某些单位之间的转换(如把英寸转换为厘米),由于不是整数的除法,就需要先对数据进行转换,然后才进行单位之间的换算。
① 首先将2.54存入VD4。
② 传送带每经过1英寸,I0.0闭合一次,计数器C10的当前值加1。
③ 按下换算按钮I0.1,则将计数器中要转换的数值(英寸)载入AC1,并将数值转换为实数存入VD0,VD0中的数值乘以VD4中的2.54后转换为厘米,并将结果存入VD8中,最后,利用四舍五入将结果取整,存入VD12,同时M0.0得电,将计数器清零。
④ 按下复位按钮I0.2,M0.0失电,当传送带运行时,计数器又可以重新计数。
综合实例2——权限相同普通三组带数码管显示的抢答器
范例示意如图4-82所示。

图4-82 范例示意

在主持人按下开始抢答按钮I0.4后,主持人台上的绿灯变亮。如果在10s内有人抢答,则数码管显示该组的组号;如果在10s内没有人抢答,则主持人台上的红灯亮起。只有主持人再次复位后才可以进行下一轮抢答。

元件说明见表4-65。
表4-65 元件说明


控制程序如图4-83所示。

图4-83 控制程序

① 当主持人按下开始抢答按钮I0.4时,I0.4=ON,定时器T37开始计时,Q1.1得电,并自锁,主持人台上的绿灯即开始抢答指示灯亮,若在10s内第一组按下抢答按钮,则I0.0=ON,M0.1得电并自锁,同时M0.1常闭触点断开,则二、三两组抢答器失效,数码管显示“1”(二组或三组抢答成功的两种情况数码管将分别显示“2”或“3”)。
② 若10s内三个组都没有抢答,则达到定时器T37的预设值,T37=ON,T37的常闭触点断开,Q1.0=ON,主持人台上的红灯即撤销抢答指示灯亮,则此时M0.1、M0.2、M0.3不再有机会得电,失去抢答机会。
③ 当主持人按下复位按钮I0.3时,I0.3=ON,所有的灯都熄灭,开始进行下一轮抢答。
④ 使用数码显示功能使得抢答组号更加直观地展现在观众眼前,将有利于公平比赛。