在 PLC(可编程逻辑控制器)控制系统中,BCD 指令和BEGD 指令(部分品牌 PLC 中称为 “二进制转 7 段数码管码指令”)是驱动 7 段数码管显示的核心指令,二者分工不同但协同工作,前者负责数据格式转换,后者负责直接生成显示驱动码。以下结合 7 段数码管的工作原理,详细讲解这两个指令的功能、使用场景及实操步骤:
一、基础认知:7 段数码管与显示原理
在理解指令前,需先明确 7 段数码管的显示逻辑:
7 段数码管由 7 个发光二极管(LED,通常标记为 a~g 段,部分含小数点 dp)组成,通过控制不同 LED 的 “亮 / 灭” 组合,显示 0~9、A~F 等字符。其驱动方式分为共阴极(低电平点亮 LED)和共阳极(高电平点亮 LED),指令输出的 “7 段码” 需与数码管类型匹配(如共阴极码和共阳极码相反)。
显示的核心需求:将 PLC 内部的二进制数据(如计数器值、传感器数值)转换为能驱动数码管的7 段码(通常为 8 位二进制,对应 a~g+dp),这一过程需通过 BCD 和 BEGD 指令实现。
二、BCD 指令:二进制转 BCD 码,解决 “数据格式适配”
1. 指令功能
BCD 指令的核心是将 PLC 内部的16 位 / 32 位二进制整数(如 D 寄存器中的数值)转换为BCD 码(Binary-Coded Decimal,二进制编码的十进制)。
2. 指令格式(以三菱 FX 系列 PLC 为例)
指令类型 | 指令符号 | 操作数说明 | 功能描述 |
---|---|---|---|
二进制转 BCD 码 | BCD K1X0 D0 | 源操作数(S):K1X0(16 位二进制数据,如输入端子状态) 目标操作数(D):D0(存储转换后的 16 位 BCD 码) | 将 S 中的 16 位二进制数转换为 4 位 BCD 码(对应 0000~9999),存入 D 中 |
32 位二进制转 BCD 码 | BCDP D10 D20 | 源操作数(S):D10(32 位二进制数据,D10 为低 16 位,D11 为高 16 位) 目标操作数(D):D20(存储转换后的 32 位 BCD 码,D20 低 16 位,D21 高 16 位) | 将 32 位二进制数转换为 8 位 BCD 码(对应 00000000~99999999),存入 D 中 |
3. 关键注意事项
三、BEGD 指令:BCD 码转 7 段数码管码,直接驱动显示
1. 指令功能
BEGD 指令(Binary Coded Decimal to 7-Segment Display,部分品牌如西门子称 “SEG” 指令)的核心是将BCD 码(通常是 16 位,对应 4 位十进制数)直接转换为7 段数码管驱动码(8 位 / 段,含小数点),输出到 PLC 的输出端子(如 Y0~Y7),直接控制数码管亮灭。
2. 指令格式(以三菱 FX 系列 PLC 为例)
指令符号 | 操作数说明 | 功能描述 |
---|---|---|
BEGD D0 K1Y0 M0 | 源操作数(S):D0(存储 16 位 BCD 码,对应 4 位十进制数:D0 的 bit15~bit12 = 第 4 位,bit11~bit8 = 第 3 位,bit7~bit4 = 第 2 位,bit3~bit0 = 第 1 位) 目标操作数(D):K1Y0(输出端子,K1Y0=Y0~Y7,对应第 1 位数码管的 a~g+dp;若为 4 位数码管,需 K4Y0=Y0~Y31,对应 4 位) 控制位(M):M0(控制小数点显示,M0=1 时显示第 1 位小数点,M1=1 显示第 2 位,以此类推) | 将 D0 中的 4 位 BCD 码(如 “0123”)转换为 4 组 7 段码,分别输出到 K4Y0(Y0~Y31),控制 4 位数码管显示 “0123”;M0~M3 控制对应位的小数点 |
3. 7 段码输出逻辑(以共阴极数码管为例)
BEGD 指令会根据 BCD 码的每 1 位十进制数,自动生成对应的 7 段码(8 位,bit0=a 段,bit1=b 段...bit6=g 段,bit7=dp 小数点),示例如下:
十进制数 | BCD 码(4 位) | 共阴极 7 段码(8 位,Y0~Y7) | 显示字符 |
---|---|---|---|
0 | 0000 | 00111111(Y0~Y5=1,Y6=0) | 0 |
1 | 0001 | 00000110(Y1~Y2=1) | 1 |
2 | 0010 | 01011011(Y0,Y2,Y3,Y5,Y6=1) | 2 |
... | ... | ... | ... |
9 | 1001 | 01101111(Y0,Y1,Y2,Y3,Y6=1) | 9 |
若为共阳极数码管,需在指令中设置 “反相输出”(部分 PLC 支持,如三菱 FX 的 BEGD 指令可通过 M8029 控制,或直接修改输出逻辑),将上述 7 段码取反(如 00111111→11000000)。
四、实操步骤:用 BCD+BEGD 指令驱动 4 位 7 段数码管
以 “显示 PLC 内部计数器 C0 的数值(0~9999)” 为例,步骤如下:
1. 硬件连接(共阴极 4 位数码管)
2. PLC 程序编写(三菱 GX Works2)
ladder
// 步骤1:将计数器C0的二进制数值(0~9999)转换为BCD码,存入D0 NETWORK 1: LD M8000 // PLC运行时始终为ON BCD C0 D0 // 二进制(C0)→ BCD码(D0),C0≤9999 // 步骤2:将D0的BCD码转换为7段码,输出到K4Y0(驱动4位数码管),M0~M3控制小数点 NETWORK 2: LD M8000 BEGD D0 K4Y0 M0 // BCD码(D0)→ 7段码(Y0~Y31),M0=1时第1位显小数点 // 步骤3:(可选)控制小数点显示(如第2位显小数点,表示“XX.XX”) NETWORK 3: LD M8000 SET M1 // M1=1,第2位数码管的小数点点亮
3. 调试与验证
五、常见问题与解决方案
问题现象 | 可能原因 | 解决方案 |
---|---|---|
数码管显示乱码 | 1. BCD 码转换错误(源数据超范围);2. 7 段码类型不匹配;3. 接线错误 | 1. 检查源数据(如 C0)是否≤9999;2. 确认共阴 / 共阳,修改指令反相;3. 核对 Y 端子与数码管 a~g 段的对应关系 |
某 1 位数码管不亮 | 1. 该位 BCD 码为无效值(如 16#A~F);2. 对应输出端子(如 Y8~Y15)故障 | 1. 确保源数据为 0~9 的十进制数;2. 用万用表测量 Y 端子输出是否正常 |
小数点不显示 | M0~M3 未置 ON;或小数点引脚(如 Y7)接线错误 | 1. 在程序中 SET 对应 M 位(如 M1);2. 检查小数点引脚(Y7/Y15/Y23/Y31)的接线 |
六、指令对比与适用场景
指令 | 核心作用 | 适用场景 | 注意事项 |
---|---|---|---|
BCD | 二进制→BCD 码 | 需将 “二进制数值” 转换为 “十进制编码”,为显示 / 打印做准备(不仅限于 7 段数码管) | 源数据需在 BCD 码范围内(16 位:0~9999,32 位:0~99999999) |
BEGD | BCD 码→7 段码 | 直接驱动 7 段数码管显示,无需手动编写 7 段码表 | 需匹配数码管类型(共阴 / 共阳),输出端子需覆盖所有段引脚 |
综上,BCD 指令是 “数据格式转换器”,BEGD 指令是 “显示驱动生成器”,二者结合是 7 段数码管精确显示的高效方案,广泛应用于设备参数显示(如转速、温度、计数)、人机交互界面等场景。