在 MagicWorkPLC 中,可以使用 I_BCD 和 BCD_I 指令将16位整数 (INTEGER) 转换为 BCD 码或者相反(BCD->INT)。使用下面提供的库,可以将32位整数 (DOUBLE INTEGER) 转换为 BCD 码或者相反 (BCD->DOUBLE INTEGER)。 “BCD” 库的描述
“BCD” 库包含了功能块 DI_BCD ( 双整数到 BCD 码的转换) 和 BCD_DI ( BCD 码到双整数的转换) 。
图.1
双整数转换为 BCD 码 (DI_BCD)
DI_BCD 功能将32 位正整数,0到99,999,999之间的数转换为二进制编码的十进制数(BCD)。

图.2
如果输入负数或大于99,999,999的数,ENO 使能输出位被复位并且转换结果无效。
参数 | 数据类型 | 操作数 | 描述 | EN | [BOOL] | E, A, M, L, V | 输入使能 | ENO | [BOOL] | E, A, M, L, V | 输出使能 | IN | [DWORD] | VD, ED, AD, MD, SD, SMD, LD, T, Z, AED, AC, HC, Constant, *VD, *AC, *LD | 要转为 BCD 码的32 位整数值 | OUT | [DWORD] | VD, ED, AD, MD, SD, SMD, LD, T, Z, AC, *VD, *LD, *AC | BCD 码 | Table 01BCD 码转换为双整数 (BCD_DI)
BCD_DI 功能将正的32 位 BCD 码,从 0 到 16#99999999之间的数转换为 32 位双整数。

图.3
16进制字母 (A-F) 不会被转换。这时 ENO 使能输出位被复位并且转换结果无效。
Parameter | Data type | Operands | Description | EN | [BOOL] | E, A, M, L, V | Enable input | ENO | [BOOL] | E, A, M, L, V | Enable output | IN | [DWORD] | VD, ED, AD, MD, SD, SMD, LD, T, Z, AED, AC, HC, Constant, *VD, *AC, *LD | BCD number | OUT | [DWORD] | VD, ED, AD, MD, SD, SMD, LD, T, Z, AC, *VD, *LD, *AC | Integer value (32-bit) of the BCD number | Table 02
|