转换指令将累加器1中的数据进行类型转换,转换的结果仍在累加器l中。能够实现的转换操作有:BCD码和整数及长整数间的转换,实数和长整数间的转换,数的取反、取负,字节扩展等。
在STEP 7中,整数和长整数是以补码形式表示的。BCD码数值有两种:一种是字(16位)格式的BCD码数,其数值范围从-999到+999;另一种是双字(32位)格式的BCD码数,范围从-9999999到+9999999。
指令 | 说 明 |
BTI | 将累加器1低字中的3位BCD码数转换为16位整数 |
BTD | 将累加器1中的7位BCD码数转换为32位整数 |
ITB | 将累加器1低字中的16位整数转换为3位BCD码数 |
ITD | 将累加器l低字中的16位整数转换为32位整数 |
DTB | 将累加器1中的32位整数转换为7位BCD码数 |
DTR | 将累加器1中的32位整数转换为32位浮点数 |
l BTI指令
SLT格式: BTI
说明:将累加器1低字中的3位BCD码数转换为16位整数,装入累加器1的低字中(0~11位);低字的高位(15位)为符号位。
累加器1的高字及累加器2的内容不变。
例3.6.1 L MW 10
BTI
T MW20
l BTD指令
SLT格式: BTD
说明:将累加器1中的7位BCD码数转换为32位整数,装入累加器1中,(0~27位);高位(31位)为符号位。
l ITB指令
SLT格式: ITB
说明: 将累加器1低字中的16位整数转换为3位BCD码数,16位整数的范围是-999~+999。如果欲转换的数据超出范围,则有溢出发生,同时将OV和OS位置位。
累加器1的低字中(0~11位)存放三位BCD码。(12~15)位作为符号位,(0000)表示正数,(1111)表示负数。累加器1高字(16~31位)不变。
例3.6.2
L MW 10
ITB
l ITD指令
SLT格式: ITD
说明: 将累加器l低字中的16位整数转换为32位整数,16位整数的范围是-999~+999。如果欲转换的数据超出范围,则有溢出发生,同时将OV和OS位置位。
例3.6.3 L MW 10
ITB
T MW20
l DTB指令
SLT格式: DTB
说明: 将累加器1中的32位整数转换为7位BCD码数,32位整数的范围是-9999999~+9999999。如果欲转换的数据超出范围,则有溢出发生,同时将OV和OS位置位。
累加器1中(0~27位)存放7位BCD码。(28~31)位作为符号位,(0000)表示正数,(1111)表示负数。
例3.6.4
L MD 10
DTB
T MD20
l DTR指令
SLT格式: DTR
说明: 将累加器1中的32位整数转换为32位浮点数(IEEE-FP)
例3.6.5
DTR
RLO跳变沿检测可分别检测上升沿(正跳沿)和下降沿(负跳沿)。RLO下降沿检测指令和RLO上升沿检测指令分别对应语句表中的“FP”和“FN”指令。
RLO下降沿(负跳沿)是检测该指令所在点的逻辑状态是否有从“1”到“0”的变化,即是否有下降沿发生。位为边沿存储器,其作用是存储该点前一扫描周期的状态,以便进行比较。如果本周其期该点的状态为“0”,上个扫描周期的状态为“1”,则说明有下降沿(负跳沿)发生,逻辑输出结果为“1”,否则逻辑输出结果为“0”。
RLO上升沿(正跳沿)是检测该指令所在点的逻辑状态是否有从“0”到“1”的变化,即是否有上升沿发生。位为边沿存储器,其作用是存储该点前一扫描周期的状态,以便进行比较。如果本周期该点的状态为“1”,上个扫描周期的状态为“0”,则说明有下降沿(负跳沿)发生,逻辑输出结果为“1”,否则逻辑输出结果为“0”。
在每一个程序扫描周期过程中,RLO位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。前- RLO的信号状态必须保存在边沿标志地址()中,以进行比较。如果在当前和先前的RLO状态之间有变化(检测到下降沿或上升沿),则在操作之后,能流在该扫描周期内流过检测元件,即RLO位仅在该扫描周期内为“1”;如果在当前和先前的RLO状态之间没有变化(无脉冲边沿),则在操作之后,RLO边沿检测指令均把RLO复位为0。
RLO边沿检测指令均指定有一个“位存储器”,用来保存前一周期RLO的信号状态,以便进行比较,在0B1的每一个扫描周期,RLO位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。“位存储器”使用的操作数可以是I、Q、M、L、D。