您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400的BCD码数据格式与整数的相互转换

来源:艾特贸易2017-09-19

简介16 位格式的 BCD 码的第 0N11 位二进制数用来表示 3 位 BCD 码(见图 3-19 ),每位的数值范围为 2#0000~2#1001 ,对应于十进制数 0~9 。第 15 位二进制数用来表示 BCD 码的符号,正数为 0 ,负数

    16位格式的BCD码的第0N11位二进制数用来表示3BCD码(见图3-19),每位的数值范围为2#0000~2#1001,对应于十进制数0~9。第15位二进制数用来表示BCD码的符号,正数为0,负数为1,第1214位二进制数未用,一般取与符号位相同的数。

    3-94给出了BCD码与整数相互转换的例子。用变量表给MW2输入16 #8123(最高位二进制数为1)或16#f123(最高4位二进制数均为1),转换的结果均为十进制数-123

BCD码与整数的转换

    3-94    BCD码与整数的转换

    如果输入的BCD码的某位为无效数据(2#1010~2#1111,对应的十进制数为10~15),将得不到正确的转换结果,会出现“BCDF”错误。如果没有下载编程错误组织块OB121CPU将进入STOP状态,“BCD转换错误”信息被写入诊断缓冲区。

   32位格式的BCD码的第0~27位二进制数用来表示7BCD码。第31位二进制数是BCD码的符号位,正数为0、负数为1。第28~30位二进制数未用,一般取与符号位相同的数。

   ITB指令将累加器1低字的16位整数转换为3BCD码,结果仍在累加器1的低字,累加器1的高字不变。DTB指令将累加器132位双整数转换为7BCD码,结果仍在累加器1。图3-94中的I_BCD指令将- 456转换为BCDW#16#f456,二进制数的最高4位均为1,表示该数是负数。图的右边是对应的语句表程序。

   16位整数的表示范围为-32 768~+32 767,而3BCD码的表示范围为- 999~+999。如果被转换的整数超出BCD码的允许范围,得不到有效的转换结果,同时状态字的溢出位OV和溢出保持位OS将被置1。在程序中,可以根据OV位判断转换结果是否有效,以免造成进一步的运算错误。