前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >客户不付设备款咋整?三菱PLC多期动态密码锁机方法分享

客户不付设备款咋整?三菱PLC多期动态密码锁机方法分享

作者头像
自动化大师
发布2025-03-28 12:57:58
发布2025-03-28 12:57:58
6500
代码可运行
举报
文章被收录于专栏:自动化大师自动化大师
运行总次数:0
代码可运行

「三菱 FX5U 系列 PLC 多期动态密码锁机方法详解」

上文我们介绍了以西门子 1200/1500 系列 PLC 为例的 5 种锁机方法,不少朋友反馈这些内容非常实用。今天,我们将聚焦于三菱系列 PLC 的锁机方法。

实际上,各类 PLC 锁机程序的逻辑框架大体相似,主要差异在于文本语言的编写方式以及所使用的指令有所不同。而本次,我们将以三菱 FX5U 系列 PLC 为例,详细介绍多期动态密码锁机的实现方法。

「一、锁机程序逻辑」

此次编写的锁机程序采用 ST 语言,借助 TRD 指令来获取本机时间。程序中的功能块会对预设期限和当前期限进行逐一比对。若发现存在超过当前期限且期限设置不为零的情况,便会触发输出锁动作。

「二、解锁方式」

在解锁方式上,本程序提供了两种途径:

  • 「超级密码解锁」:超级密码可在功能块(FB)内进行设置。当输入超级密码并置位解锁时,程序会将所有设置期限全部清零,同时复位输出锁。
  • 「动态码解锁」:输入动态码对应的解锁密码并置位解锁,此时,程序会将当前日期及之前所有设置期限进行清零,并复位输出锁。
「三、处理逻辑功能块」

以下是功能块局部标签地址的表格:

标签名称

数据类型

属性

描述

VAR1

字有符号

VAR

SPow

双字[有符号]

VAR

超级密码

CurrDate

双字[有符号]

VAR_OUTPUT

当前时间

Year

字[有符号]

VAR_INPUT

当前年

TellClock

字[有符号]

VAR

计时

Mon

字[有符号]

VAR_INPUT

当前月

Day

字[有符号]

VAR_INPUT

当前日

VarRand

字[有符号]

VAR

RandCode

字[有符号]

VAR_OUTPUT_RETAIN

随机码

UnLock

VAR_INPUT

锁定码

InCode

双字[有符号]

VAR_INPUT

解锁码

SetDate

双字有符号

VAR_IN_OUT

设定时间

PowErr

VAR_OUTPUT

密码错误

OutLock

VAR_OUTPUT_RETAIN

输出锁

「功能块源码」
代码语言:javascript
代码运行次数:0
运行
复制
// 解锁方式:输入码 = 随机码 * 5 + 1,期限日期保存区占用20个字
// 超级密码
SPow := 887899;

// 动态码更新时间单位秒
Var1[0] := 600;

CurrDate := INT_TO_DINT(Year) * 10000 + INT_TO_DINT(Mon) * 100 + INT_TO_DINT(Day);
INCP(SM412, TellClock);
RND(TellClock >= Var1[0] OR SM402, VarRand);
MOV(TellClock >= Var1[0] OR SM402, ABS(VarRand + RandCode), RandCode);
MOV(TellClock >= Var1[0], 0, TellClock);

// 解锁
DMOV(UnLock AND InCode = INT_TO_DINT(RandCode) * 5 + 1 AND CurrDate >= SetDate[VAR1[1]], 0, SetDate[VAR1[1]]);
RST(UnLock AND InCode = INT_TO_DINT(RandCode) * 5 + 1 AND CurrDate >= SetDate[VAR1[1]], OutLock);
OUT(UnLock AND InCode <> INT_TO_DINT(RandCode) * 5 + 1, PowErr);

// 超级解锁
DFMOV(UnLock AND InCode = SPow, 0, 10, SetDate[0]);
RST(UnLock AND InCode = SPow, OutLock);

// 对比当前日期
SET(CurrDate >= SetDate[VAR1[1]] AND SetDate[VAR1[1]] <> 0, OutLock);
INC(SM400, VAR1[1]);
MOV(VAR1[1] >= 10, 0, VAR1[1]);

「五、主程序」

主程序使用TRD指令获取系统时间,并设定期限日期,和设定密码

「注」以上代码仅为示例,实际使用时请根据具体情况进行调整。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化大师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 「三、处理逻辑功能块」
  • 「功能块源码」
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档