QQ登录

只需一步,快速开始

威纶通触摸屏宏指令如何编写时间限制?时间到停机要密码

[ 复制链接 ]
哪位帮我用宏指令编写时间到了停机 ,时间就用屏的时间。如:我要设备在2019年12月30日0时,时间到了置位PLC的M8034,然后在屏上输入 一个密码复位PLC的M8034。

回答:
在威纶通屏里写宏指令控制PLC的M8034,这种方法不是很好,现在三菱PLC的密码已经是非常容易解密的。
如果别人删除这一行怎么办。
如果用宏指令控制屏的一个画面,加上禁止上传、禁止反编译等,这样解密的可能性就小得多。

收款可以单片机做动态密码,自己也不知道他下一次会出现什么序号。
然后跟据序号,译出相应的密码输入,现在用的是32个字节的动态密码,密码 里面包含有时间,到期日期,一次最大充许三个月的密匙。
PLC里面一两个状态控制的,老一点的PLC很快就给破解了,真要用这些的,可以在人机方面增加一点值运算,至少保障性强一些。
但是人机也是可以破解的,价值不大的无所谓了,如价值大的,只能自己整了,我都是用ARM做的收费的,通讯是自动波特率的。

如果机器不是花大力气研发的,小动作加密下是可以的,破解你的设备也没那个必要。
这里我们编写一个宏代码来看看如何实现这个功能。
界面如下图:
2019-11-18_114703.jpg
界面上可以设置到期时间,实际使用时,可以不用精确到分秒。
这里仅是练手学习,可以参考,修改使用。
同时当前触摸屏的系统显示也在界面上显示出来。

后台有运行一宏指令,每隔200毫秒会检测设置时间与系统是否一至,相同则表示时间到。
执行置位相同寄存器来表示期限到。
宏内是直接将年,月,日,时,分,秒进行对比,也可以考虑使用时间戳来试试。
时间到后,会在界面点亮指示灯LB0。

具体使用如下:
第二行显示的是当前屏上的时间,如2020, 10, 25, 23, 15,00;(年,月,日,时,分,秒)
要测试的话,可设置第一行的程序到期时间,如2020, 10, 25, 23, 15,30.
这样30秒到点后,程序锁定。
在最后一行输入密码(预留有6组,分别对年月日时分秒延期,具体看宏1),
如111111,点击应用,程序会延长10秒,后到期再停止。


宏指令如下:
macro_command main()
bool bOn=false
GetData(bOn, "Local HMI", LB, 0, 1)
if bOn == true then
return
end if
//
short nY,nM,nD,nHour,nMinute,nSecond
GetData(nY, "Local HMI", RW, 0, 1)
GetData(nM, "Local HMI", RW, 1, 1)
GetData(nD, "Local HMI", RW, 2, 1)
GetData(nHour, "Local HMI", RW, 3, 1)
GetData(nMinute, "Local HMI", RW, 4, 1)
GetData(nSecond, "Local HMI", RW, 5, 1)
//本机时间获取
short nY1,nM1,nD1,nHour1,nMinute1,nSecond1
GetData(nY1, "Local HMI", LW, 9022, 1)
GetData(nM1, "Local HMI", LW, 9021, 1)
GetData(nD1, "Local HMI", LW, 9020, 1)
GetData(nHour1, "Local HMI", LW, 9019, 1)
GetData(nMinute1, "Local HMI", LW, 9018, 1)
GetData(nSecond1, "Local HMI", LW, 9017, 1)
//并显示(可删除不用)
SetData(nY1, "Local HMI", LW, 10, 1)
SetData(nM1, "Local HMI", LW, 11, 1)
SetData(nD1, "Local HMI", LW, 12, 1)
SetData(nHour1, "Local HMI", LW, 13, 1)
SetData(nMinute1, "Local HMI", LW, 14, 1)
SetData(nSecond1, "Local HMI", LW, 15, 1)
//如果时间到则置位相关寄存器
if nY1==nY then
if nM==nM1 then
if nD==nD1 then
if nHour==nHour1 then
if nMinute==nMinute1 then
if nSecond==nSecond1 then
bOn=true
SetData(bOn, "Local HMI", LB, 0, 1)
SetData(bOn, "FATEK FB/FBs/B1/B1z Series", M, 8034, 1)
return
end if
end if
end if
end if
end if
end if
end macro_command

宏设置了每200毫秒执行一次,代码使用时注意进行设置。

时间到后,灯点亮,程序进入锁定状态。
可以在界面上输入密码,点击应用,来解锁。
密码在解锁的宏里面使用了6组,可以分别对年,月,日,时,分,秒进行累加。
进行时间的延长处理。
宏代码如下:

macro_command main()
int nSecret=0
short nTemp=0
//不需要延期,则直执行。
bool bOn=true
GetData(bOn, "Local HMI", LB, 0, 1)
if bOn == false then
return
end if
//
GetData(nSecret, "Local HMI", LW, 0, 1)
//第一组密码对,秒数增加
if nSecret==111111 then
GetData(nTemp, "Local HMI", RW, 5, 1)
nTemp = nTemp+10
if nTemp>60 then
nTemp = nTemp-10
end if
SetData(nTemp, "Local HMI", RW, 5, 1)
bOn = false
end if
//第二组密码对,分数增加
if nSecret==222222 then
GetData(nTemp, "Local HMI", RW, 4, 1)
nTemp = nTemp+1
if nTemp>60 then
nTemp = nTemp-1
end if
SetData(nTemp, "Local HMI", RW, 4, 1)
bOn = false
end if
//第三组密码对,时数增加
if nSecret==333333 then
GetData(nTemp, "Local HMI", RW, 3, 1)
nTemp = nTemp+1
if nTemp>24 then
nTemp = nTemp-1
end if
SetData(nTemp, "Local HMI", RW, 3, 1)
bOn = false
end if
//第四组密码对,日数增加
if nSecret==444444 then
GetData(nTemp, "Local HMI", RW, 2, 1)
nTemp = nTemp+1
if nTemp>29 then
nTemp = nTemp-1
end if
SetData(nTemp, "Local HMI", RW, 2, 1)
bOn = false
end if
//第五组密码对,月数增加
if nSecret==555555 then
GetData(nTemp, "Local HMI", RW, 1, 1)
nTemp = nTemp+1
if nTemp>24 then
nTemp = nTemp-1
end if
SetData(nTemp, "Local HMI", RW, 1, 1)
bOn = false
end if
//第六组密码对,年数增加
if nSecret==666666 then
GetData(nTemp, "Local HMI", RW, 0, 1)
nTemp = nTemp+1
SetData(nTemp, "Local HMI", RW, 0, 1)
bOn = false
end if
//
SetData(bOn, "FATEK FB/FBs/B1/B1z Series", M, 8034, 1)
SetData(bOn, "Local HMI", LB, 0, 1)
end macro_command


代码功能,仅是根据问题来编写,仅供参考。
例程下载地址:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:威纶通触摸屏宏指令如何编写时间限制?时间到停机要密码.rar 
文件大小:336.09 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


如果对威纶通触摸屏不熟悉,或对宏的使用很陌生,
可以下载我录制的两套相关视频教程来学习。

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  



回复

使用道具 举报

大神点评(4)

海欣 2020-10-25 22:53:19 显示全部楼层
屏的时间设置功能要隐藏起来才行,
不然人家给屏设置下时间,你程序又是参考屏的时间。
这不很容易被搞?
回复

使用道具 举报

qq263946146 楼主 2020-10-25 22:57:41 显示全部楼层
海欣 发表于 2020-10-25 22:53
屏的时间设置功能要隐藏起来才行,
不然人家给屏设置下时间,你程序又是参考屏的时间。
这不很容易被搞? ...

对,屏设置下,把时间设置功能隐蔽掉,不让用户使用。
另外论坛搜索 下<尾款>,我又分享了一网友定制的尾款回收程序。
不是依靠屏时间来实现的。
找到贴纸看看,可以让用户任意次数的会尾款。
用户每付一次钱,你选择可以给用户延长多长时间使用设置。
也可以选择给用户一个超级密码,去除限制,这样如果用户全款付清了。也就两不相干了。
回复

使用道具 举报

ycxlzhb 2020-10-25 23:02:44 显示全部楼层
qq263946146 发表于 2020-10-25 22:57
对,屏设置下,把时间设置功能隐蔽掉,不让用户使用。
另外论坛搜索 下,我又分享了一网友定制的尾款回 ...

宏代码注释完整么?我参考看看。

回复

使用道具 举报

qq263946146 楼主 2020-10-25 23:06:11 显示全部楼层
ycxlzhb 发表于 2020-10-25 23:02
宏代码注释完整么?我参考看看。

帖子如下:https://www.gkbc8.com/forum.php?mod=viewthread&tid=15910

自个看看介绍吧,中文注释的,那是相当详细。
,专给新手看的。
定制的老板是搞机械的,他自己着手搞设备才找我定制这程序。
回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索