要实现三菱 PLC 每月初设备上电时清零上个月的计数器,核心思路是通过 “日期判断 + 上电触发 + 计数清零” 的逻辑组合,利用 PLC 的实时时钟(RTC)功能识别 “每月 1 日”,并在首次上电扫描时触发清零动作。以下是适配三菱 FX 系列(FX3U/FX5U/FX2N)的实操方案,分 “基础版(仅 1 日上电清零)” 和 “进阶版(补漏 1 日未上电的情况)”,覆盖工业场景核心需求:
前置准备:确认 PLC 实时时钟(RTC)功能
方案一:基础版(每月 1 日设备上电时清零)
核心逻辑
利用 PLC “首次扫描脉冲 M8002” 触发日期检测,若当前日期是 1 日,则清零上月计数器;非 1 日则保留计数。
梯形图程序(FX3U 为例)
ladder
// 步骤1:首次上电触发(M8002仅上电瞬间ON) LD M8002 MOV D8020, D100 // 将当前日期(日)存入D100 // 步骤2:判断是否为每月1日 LD M8002 CMP D100, K1, M0 // 比较D100(日)与1:M0=ON(等于)、M1=ON(大于)、M2=ON(小于) // 步骤3:1日则清零计数器(C0为上月计数,可替换为其他计数器/寄存器) LD M0 // 日期=1日 RST C0 // 清零计数器C0 RST D200 // 若用数据寄存器计数(如D200),同步清零 // 步骤4:非1日则保留计数(无需额外指令,仅注释说明) LD M1 // 日期>1日 OUT M100 // 标记:非月初,计数保留
关键说明
方案二:进阶版(补漏 “1 日未上电,后续上电仍清零”)
核心问题
基础版仅在 1 日上电时清零,若 1 日设备未开机(如节假日),2 日及以后上电则无法清零,进阶版通过 “月份判断” 解决:检测当前月份是否与 “上次上电月份” 不一致,若不一致(跨月),则清零上月计数。
梯形图程序
ladder
// 步骤1:定义寄存器 // D101:存储上次上电的月份(停电保持)、D8019:当前月份、C0:上月计数 // 步骤2:首次上电触发 LD M8002 // 步骤3:读取当前月份,对比上次上电月份 MOV D8019, D102 // 当前月份存入D102 CMP D102, D101, M10 // 对比当前月(D102)与上月(D101) // 步骤4:跨月则清零计数,并更新上月月份 LD M10 // M10=ON → 当前月≠上月(跨月) RST C0 // 清零上月计数器 RST D200 // 清零计数寄存器 MOV D102, D101 // 更新“上次上电月份”为当前月 // 步骤5:同月则保留计数,仅更新日期(可选) LD M11 // M11=ON → 当前月=上月 MOV D8020, D100 // 存入当前日期,无需清零 // 步骤6:初始化(首次使用时写入当前月份) LD M8002 ZRST D101, D101 // 若D101为空,先清零 MOV D8019, D101 // 首次上电写入当前月份
关键说明
补充:计数器类型适配
| 计数类型 | 清零指令 | 注意事项 |
|---|---|---|
| 硬件计数器(C235-C255) | RST CXXX | 需先断开计数脉冲输入,再清零 |
| 软件计数器(C0-C199) | RST CXXX | 停电保持型需在参数中启用,否则上电自动清零 |
| 数据寄存器计数(D) | RST DXXX 或 MOV K0 DXXX | 用 MOV K0 更稳定,避免 RST 指令失效 |


