一、定时锁机控制需求(功能定义)
1. 时间读取:PLC 自动获取本地实时时间,并拆分为年、月、日、时、分、秒等具体信息;
2. 定时锁机:预设锁机时间,实时时间超过该时间时,自动触发“程序锁机状态”,锁定设备核心功能;
3. 动态密码:锁机后,PLC根据当前分钟数生成动态密码(1分钟一变),只有输入正确密码才能解锁;
4. 状态自锁:锁机状态触发后保持自锁,直到输入正确密码才解除,避免断电重启后失效。
二、DB44点位表(硬件与数据对应)
三、4步编出定时锁机程序(逻辑拆解)
步骤1:读取PLC本地时间(程序段1)
核心逻辑:通过RD_LOC_T指令读取 PLC 实时时间,并将其存入数据块中备用。
操作步骤:
1. 调用 RD_LOC_T 指令(读取本地时间指令),将使能端(EN)置1,触发时间读取;
2. 指令的 OUT 端连接“时间读取.时间”(DBX0.0),把实时时间存入该DTL类型变量;
3. RET_VAL 端连接“时间状态位”(DBX12.0),0代表时间读取正常,非0代表读取异常。
步骤2:定时锁机触发逻辑(程序段2)
核心逻辑:对比实时时间和预设锁机时间,超过则触发锁机状态。
操作步骤:
1. 把 “密码输入正确”(DBX32.0)的常闭触点,与实时时间的年、月、日、时、分、秒分别和预设锁机时间做等于判断,串联成触发条件;
2. 当实时时间≥预设锁机时间,且密码未验证通过时,触发 STP 指令(置位锁机状态),将“程序锁机状态”(DBX26.0)置为TRUE,锁定设备功能;
3. “程序锁机状态”置为TRUE后保持自锁,直到密码验证通过才复位。
步骤3:生成动态解锁密码(程序段3)
核心逻辑:根据当前分钟数,用计算指令生成1分钟一变的动态密码。
操作步骤:
1. 调用 CALCULATE 计算指令,将“时间读取.MINUTE”(DBB6)接入 IN1 ,预设参数9接入 IN2 、5接入 IN3 、3接入 IN4 ;
2. 指令的计算公式设为 OUT = ((IN1+IN3)*(IN2 - IN4)) ,即 (分钟数+5)*(9-3) ,结果存入“生成密码”(DBW28);
3. 因为分钟数1分钟变化一次,所以密码会自动更新,避免固定密码被破解。
步骤4:密码验证解锁逻辑(程序段3续)
核心逻辑:对比输入密码和生成密码,一致则解除锁机状态。
操作步骤:
1. 把“生成密码”(DBW28)和“输入密码”(DBW30)做等于判断;
2. 当两者相等时,触发“密码输入正确”(DBX32.0)置为TRUE,同时复位“程序锁机状态”(DBX26.0),解除设备锁定;
四、定时锁机核心逻辑(新手记2点)
1. 时间判定是基础:用 RD_LOC_T 读取的时间要拆解成具体的年、月、日等变量,才能和预设时间做精准对比,这是所有定时类项目的通用逻辑;
2. 动态密码防破解:用分钟数生成1分钟一变的密码,比固定密码更安全,而且计算逻辑简单,新手也能快速修改参数适配不同设备。
扎扎实实学技术,每天进步一点点!尽最微薄之力帮助更多的人!