1.BCD码转换为整数指令BCD_I
BCD码转换为整数指令BCD_I用于将参数IN输入的三位BCD码(+/-999)数据转换成整数(16位),转换结果由参数OUT输出。ENO和EN总是具有相同的信号状态。指令格式与参数范围及状态字如表4-3所示。
表4-3 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入的BCD码,字型数据,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出的整型值,整型数据,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
表4-3中,如果输入I0.0为“1”,则读取MW10中的三位BCD代码(+/-999),并转换成一个整数。其结果保存在MW12中。如果不执行转换(ENO=EN=0),则输出Q4.0为“1”。
2.整型转换为BCD码指令I_BCD
整型转换为BCD码指令I_BCD用于读取输入参数IN的整型数据,并将其换成三位BCD码(+/-999)。BCD码结果由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-4所示。
表4-4 指令格式与参数范围及状态字
梯形图 |
||||||||||
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,整型数据,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,字型BCD码数据,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
表4-4中,如果I0.0的状态为“1”,则将MW10的内容以整型值读取,并将其转换为三位BCD码数字,转换结果存储在MW12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
3.整型转换为长整型指令I_DINT
整型转换为长整型指令I_DINT用于读取输入参数IN的16位整型数据,并将其转换为长整型(32位)。转换结果由参数OUT输出。ENO始终与EN的信号状态相同。指令格式与参数范围及状态字如表4-5所示。
表4-5 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
ENO |
输入参数,整型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输出参数,长整型转换结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
OUT |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
表4-5中,如果I0.0为“1”,则指令读取MW10中的16位整型数,并将其转换为32位长整型数。转换结果存储在MD12中。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
4.BCD码转换为长整型指令BCD_DI
BCD码转换为长整型指令BCD_DI用于读取输入参数IN的7位BCD码(+/-9999999)数据,并将其转换为32位长整型数。转换结果由参数OUT输出。ENO始终与EN的信号状态相同。指令格式与参数范围及状态字如表4-6所示。
表4-6中,如果I0.0为“1”,则指令读取MD8中的7位BCD码数,并将其转换为32位长整型数。转换结果存储在MD12中。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
表4-6 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,双字型BCD码数据,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,长整型转换结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
5.长整型转换为BCD码指令DI_BCD
长整型转换为BCD码指令DI_BCD用于读取输入参数IN的32位长整型数据,并将其转换为7位BCD码数(+/-9999999)。转换结果由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-7所示。
表4-7 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,双字型长整数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,长整数的BCD码转换结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
表4-7中,如果I0.0为“1”,则指令读取MD8中的长整型数,并将其转换为7位BCD码数。转换结果存储在MD12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
6.长整型转换为浮点型指令DI_REAL
长整型转换为浮点型指令DI_REAL用于读取输入参数IN的32位长整型数据,并将其转换为浮点数。转换结果由参数OUT输出。ENO始终与EN的信号状态相同。指令格式与参数范围及状态字如表4-8所示。
表4-8 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,双字型长整数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,浮点数转换结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
表4-8中,如果I0.0为“1”,则指令读取MD8中的长整型数,并将其转换为浮点数。转换结果存储在MD12中。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
7.整数求反指令INV_I
整数求反指令INV_I用于读取输入参数IN的数据,并使用十六进制掩码W#16#FFFF执行布尔“异或”运算,将每一位变成相反状态。求反结果由参数OUT输出。ENO始终与EN的信号状态相同。指令格式与参数范围及状态字如表4-9所示。
需要注意的是,这里的求反运算与常规的反码不同。
表4-9 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,整型数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入参数的二进制取反结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
表4-9中,如果I0.0为“1”,则指令读取MW8中的整型数,并将其每一位都取反。结果存于MW10中。如MW8=0100000110000001,则取反结果为MW10=1011111001111110。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
8.长整数求反指令INV_DI
长整数求反指令INV_I用于读取输入参数IN的32位长整型数,并使用十六进制掩码W#16#FFFFFFFF执行布尔“异或”运算,将每一位变成相反状态。求反结果由参数OUT输出。ENO始终与EN的信号状态相同。指令格式与参数范围及状态字如表4-10所示。
表4-10 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,32位长整型,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入参数的二进制取反结果,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
1 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
表4-10中,如果I0.0为“1”,则指令读取MD8中的整型数,并将其每一位都取反。结果存于MD12中。如MD8=F0FFFFF0,则取反结果为MD12=0F00000F。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
9.整数求补指令NEG_I
整数求补指令NEG_I用于读取输入参数IN的16位整型数,并求取对应的二进制补码。求补结果由参数OUT输出。ENO与EN的信号状态相同。如果EN的信号状态为“1”并产生溢出,则ENO的信号状态为“0”。指令格式与参数范围及状态字如表4-11所示。
这里的二进制补码指令仅仅是改变输入参数的符号(如从正值变为负值或相反),与计算机中的补码运算不一样。
表4-11 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,16位整数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入参数的二进制补码,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
× |
× |
× |
× |
0 |
× |
× |
1 |
表4-11中,如果I0.0为“1”,则指令读取MW8中的16位整型数并求补。求补结果存于MW10中。如MW8=+10,则结果为MW10=-10。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。如果EN的信号状态为“1”并产生溢出,则ENO的信号状态为“0”。
10.长整数求补指令NEG_DI
长整数求补指令NEG_DI用于读取输入参数IN的32位长整数,并求取对应的二进制补码。求补结果由参数OUT输出。ENO与EN的信号状态相同。如果EN的信号状态为“1”并产生溢出,则ENO的信号状态为“0”。指令格式与参数范围及状态字如表4-12所示。
表4-12 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,32位长整型数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入参数的二进制补码,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
× |
× |
× |
× |
0 |
× |
× |
1 |
表4-12中,如果I0.0为“1”,则指令读取MD8中的32位长整数并求补。求补结果存于MD12中。如MD8=+1234,则结果为MD12=-1234。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
11.浮点数取反指令NEG_R
浮点数取反指令NEG_R用于读取参数IN输入的浮点数并改变其符号。取反结果由参数OUT输出。ENO与EN的信号状态相同。指令格式与参数范围及状态字如表4-13所示。
表4-13中,如果I0.0为“1”,则指令读取MD8中的浮点数,并改变符号。取反结果存于MD12中。如MD8=+4.128,则结果为MD12=-4.128。如果未执行转换(ENO=EN=0),则输出Q4.0的状态为“1”。
表4-13 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,浮点数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入参数的浮点取反,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
- |
- |
0 |
× |
× |
1 |
12.浮点数取整为长整型指令ROUND
浮点数取整为长整型指令ROUND用于读取输入参数IN的浮点数,并将其取整为32位长整型数。结果为最接近的整数(“取整到最接近值”)。如果浮点数介于两个整数之间,则返回偶数。转换结果由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-14所示。
表4-14 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,浮点数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,双字的长整型数,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
表4-14中,如果I0.0为“1”,则指令读取MD8中的浮点数,并将其转换为最接近的长整数。转换结果存储在MD12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
13.浮点数截断为长整数指令TRUNC
浮点数截断为长整数指令TRUNC用于读取输入参数IN的实型数,并将其转换为32位长整型数(“向零取整模式”)。转换结果由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-15所示。
表4-15 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,浮点数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,输入浮点数截取的长整数,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
表4-15中,如果I0.0为“1”,则指令读取MD8中的实型数,并将其截取为长整数。转换结果为浮点数的整型部分,结果存储在MD12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
14.向上取整指令CEIL
向上取整指令CEIL用于读取参数IN输入的浮点数,并将其转换为32位长整型数。转换结果为大于该浮点数的最小整数(取整到+∞),由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-16所示。
表4-16中,如果I0.0为“1”,则CEIL指令读取MD8中的浮点数,并将其转换为长整数,转换结果存储在MD12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
表4-16 指令格式与参数范围及状态字
梯形图 |
|
||||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
||||||||||
IN |
输入参数,浮点数,存储区为I、Q、M、L、D |
||||||||||
OUT |
输出参数,转换得到的长整数,存储区为I、Q、M、L、D |
||||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
||
EN=1 |
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
||
EN=0 |
0 |
- |
- |
- |
- |
0 |
0 |
0 |
1 |
15.向下取整指令FLOOR
向下取整指令FLOOR用于读取输入参数IN的浮点数,并将其转换为32位长整型数。转换结果为小于该浮点数的最大整数部分(取整到-∞),由参数OUT输出。如果产生溢出,ENO的状态为“0”。指令格式与参数范围及状态字如表4-17所示。
表4-17 指令格式与参数范围及状态字
梯形图 |
|
|||||||||
参数格式 |
EN |
启用输入,布尔型数据,存储区为I、Q、M、L、D |
||||||||
ENO |
启用输出,布尔型数据,存储区为I、Q、M、L、D |
|||||||||
IN |
输入参数,浮点数,存储区为I、Q、M、L、D |
|||||||||
OUT |
输出参数,向下取整得到的长整数,存储区为I、Q、M、L、D |
|||||||||
状态字 |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
× |
- |
- |
× |
× |
0 |
× |
× |
1 |
表4-17中,如果I0.0为“1”,则FLOOR指令读取MD8中的浮点数,并将其转换为长整数,转换结果存储在MD12中。如果产生溢出或未执行指令(I0.0=0),则输出Q4.0的状态为“1”。
备注:文章摘取自《S7-300/400系列PLC应用设计指南》