搜索
bottom↓
回复: 79

需要做一个定时器,0-700天

  [复制链接]

出0入0汤圆

发表于 2015-1-10 20:52:57 | 显示全部楼层 |阅读模式

项目中需要实现长定时,定时范围在0-750天,以天为单位,实现的功能是针对故意拖欠质保金的客户自动关闭设备的某些功能而不能正常使用,

如果将设定的天数换算成年、月、日三个量,然后用这三个量去和时钟芯片的时间对比,对应的值变化就将对应的年月日值减1,减到0为止。但

这个方法在修改了系统时钟的情况下显得毫无用处,而且当设备停电了,这个算法也不准确了,所以想请教大家有没有做过这样的:设定的倒计时

时间不受修改了系统时间的影响,并且不受设备停电的影响(就是讲即使你今天停机没用也算你用了一天了)

出0入0汤圆

发表于 2015-1-10 21:02:06 | 显示全部楼层
GPS GPS GPS

出0入17汤圆

发表于 2015-1-10 21:05:43 | 显示全部楼层
省事的话,时钟上加电池。

出0入0汤圆

 楼主| 发表于 2015-1-10 21:06:22 | 显示全部楼层

谢谢回复,有人就用单片机实现了,没有网络,没有通讯,我不知道是怎么做的

出130入129汤圆

发表于 2015-1-10 21:06:48 来自手机 | 显示全部楼层
不可以专门搞一个时钟芯片来干这个事吗?看你这设备肯定比较贵,不在乎多这点成本。

出0入0汤圆

 楼主| 发表于 2015-1-10 21:10:01 | 显示全部楼层
wicy001 发表于 2015-1-10 21:05
省事的话,时钟上加电池。

时钟是有电池的,问题是修改了时间呢,而且时间必须要允许用户自行修改的

出0入0汤圆

发表于 2015-1-10 21:13:18 | 显示全部楼层
用带后备电池的时钟芯片独立计时。

出0入0汤圆

发表于 2015-1-10 21:21:06 | 显示全部楼层
不改时钟计数器即可,定义一个 偏移量,系统时钟 = 时钟计数值 + 偏移量,用户能改偏移量

出0入0汤圆

发表于 2015-1-10 21:21:34 | 显示全部楼层
多一套时钟系统只控制不显示,不可调整时间,问题是要准

出0入17汤圆

发表于 2015-1-10 21:22:56 | 显示全部楼层
fangjikun 发表于 2015-1-10 21:10
时钟是有电池的,问题是修改了时间呢,而且时间必须要允许用户自行修改的 ...


用户修改时间,可以记录在非易失性存储器里(mcu内部或外部flash,有的时钟芯片内部也有),单独统计就可以了。

出0入0汤圆

发表于 2015-1-10 21:30:34 | 显示全部楼层
可以再添加一个时钟,只做超期检测用,不允许用户修改,也不显示

出0入0汤圆

发表于 2015-1-10 21:30:51 | 显示全部楼层
GPRS,可以远程控制

出0入0汤圆

 楼主| 发表于 2015-1-10 21:35:12 | 显示全部楼层
谢谢大家的回复,我在仔细考虑

出0入70汤圆

发表于 2015-1-10 21:37:22 | 显示全部楼层
淘宝找  定时损坏模块 .

出0入0汤圆

发表于 2015-1-10 21:45:05 | 显示全部楼层
楼主这个就不要纠结了,只要有时钟电池,直接另外整个定时器就可以了嘛

出0入46汤圆

发表于 2015-1-10 21:51:09 来自手机 | 显示全部楼层
读取时钟的日期嘛,有变化就在总天数里加一,再存Flash

出0入8汤圆

发表于 2015-1-10 21:51:57 | 显示全部楼层
flash记录每次使用的时间,如果当前时间和上次时间

出10入113汤圆

发表于 2015-1-10 22:10:50 | 显示全部楼层
如果时钟非常准,就不需用户修改了。

出0入0汤圆

发表于 2015-1-10 22:16:29 | 显示全部楼层
每小时,计数器加1,并存储起来,每次上电都读取这个计数器。

出0入0汤圆

发表于 2015-1-10 22:16:31 | 显示全部楼层
考虑电源的问题吗?

出0入0汤圆

发表于 2015-1-10 22:27:58 | 显示全部楼层
我是写一张卡,给客户,到时没有交完费用,设备就停,
卡有时间,年月日,简单这个

出0入0汤圆

 楼主| 发表于 2015-1-10 22:36:10 | 显示全部楼层
可能是我考虑的太复杂了,
1、设备停电(不受设备停电的影响 - 就是讲即使你今天停机没用也算你用了一天了)
2、不受修改了系统时间的影响

出0入0汤圆

发表于 2015-1-10 23:17:33 | 显示全部楼层
饭桶 发表于 2015-1-10 22:10
如果时钟非常准,就不需用户修改了。

如果用户故意修改到以前的日期,就是为了使用这个设备呢?

出0入0汤圆

发表于 2015-1-11 08:03:01 | 显示全部楼层
中波信号授时   由电台进行对时   不受开关机限制

出0入0汤圆

发表于 2015-1-11 08:15:01 | 显示全部楼层
zhikunWang 发表于 2015-1-10 23:17
如果用户故意修改到以前的日期,就是为了使用这个设备呢?

程序上日期 小时不能动,只能动分钟 秒,最多矫正59分钟59秒,范围够了,到时间客户每一小时改一次肯定吃不消

出0入0汤圆

发表于 2015-1-11 08:35:22 | 显示全部楼层
后备时钟加电源应该可以吧

出0入0汤圆

发表于 2015-1-11 08:49:38 | 显示全部楼层
还是要慎重考虑的,我是这样做的,使用STM32+EEPROM做的,计时存储,EEPROM存储分钟的信息,每到30分钟,更新STM32内部的FLASH,因为STM32内部的FLASH是没法被客户破解的,但是任何外部的都可能被破解,而STM32的FLASH有擦写寿命,因此必须减少STM32的FLASH的擦写次数,所以外面加了个EEPROM,铁电的,擦写次数是一千万次,然后时间到了,程序失效,就这样

出0入42汤圆

发表于 2015-1-11 09:18:07 来自手机 | 显示全部楼层
他要按绝对的日历,只能使用时钟芯片,或者stm32自带时钟或者授时系统,别的好像不太好弄了。

出0入0汤圆

发表于 2015-1-11 10:09:37 | 显示全部楼层
RTC计时,带备用电池,开机和关机时间保存一份在单片机里,RTC时钟被复位的话,直接自宫

出0入0汤圆

发表于 2015-1-11 10:32:30 | 显示全部楼层
以前在做Led全彩屏的时候我们经理让我做过这个东西,DS1302加单片机控制继电器,屁用没有!同行多的要命!人家看见你多一块电路就明白什么意思了!尽量还是很跟客户沟通好!

出0入4汤圆

发表于 2015-1-11 10:40:16 | 显示全部楼层
整2个RTC不就好了,一个给用户另一个防破解

出0入0汤圆

发表于 2015-1-11 10:41:24 | 显示全部楼层
guanglv2008 发表于 2015-1-11 08:03
中波信号授时   由电台进行对时   不受开关机限制

蛋疼,楼上的很多人说了方法,rom flash 存一下会死啊,超级简单

出0入0汤圆

发表于 2015-1-11 10:47:40 | 显示全部楼层
Fanuc很多设备都带电池的,重要参数都存放在RAM中,断电没有关系,但是要把电池拔了,这设备就坏了(电路板上还有一个超级电容,可能维持半小时,更换电池也不会丢数据)。

所以可以把时钟和RAM后备电池用同一个电池供电,还不怕客户去把电池拔掉。

出0入0汤圆

发表于 2015-1-11 11:10:50 来自手机 | 显示全部楼层
看你的设备使用环境,如果在室外,在设备内写上一个时间,然后和GPS时间作对比,GPS用内置天线,如果设备在一天中没有得到GPS信号,第二天睡大觉,提示用户设备损坏。这样防止被拆除。但遇到我这样的高手除外,挖机上的GPS我破解过。

出0入0汤圆

发表于 2015-1-11 11:11:06 | 显示全部楼层
用户改时间,程序是知道的,可计算累计时间,保存到eeprom

出0入0汤圆

发表于 2015-1-11 11:22:46 来自手机 | 显示全部楼层
mcu内部定时器+eeprom。和你给用户的时间完全没有关系。

出0入0汤圆

发表于 2015-1-11 11:58:43 | 显示全部楼层
用户修改时间不影响你的累积结果的,只是又一个重新累加(相对新改时钟)起点而已。

出0入0汤圆

发表于 2015-1-11 11:59:54 | 显示全部楼层
gps,电波钟,rtc+电池

出0入0汤圆

发表于 2015-1-11 12:01:04 | 显示全部楼层
zt2012 发表于 2015-1-11 11:22
mcu内部定时器+eeprom。和你给用户的时间完全没有关系。

楼主要求的是断电情况下也要计算时间的

出0入0汤圆

发表于 2015-1-12 11:19:39 | 显示全部楼层
请问,客户把RTC的电源取出,该怎么办,还计时不?

出0入0汤圆

 楼主| 发表于 2015-1-12 11:46:28 | 显示全部楼层
楼主回复:
定义一个5字节数组并存在EEPROM里,格式是: 年、月、 日、 限制天数(非零为天数,0值代表关闭该功能)、递减量,
1、当前时间的“日”的变化则将的年月日替换数组里的年月日,同时"递减量"减一,减到零启动“限制”功能(此时不在判断
     日期的变化并保持“限制”状态,只有将“限制天数”修改为0(进入菜单修改此值有密码限制)才能退出“限制”功能。)
     修改日期时新的年月日值存到EEPROM里,相当于从新的起点计算日期变化来修改“递减量”。
    (实现:不受修改时间的影响)
2、开机即判断是否开了“限制”功能,如是则读当前日期并与EEPROM里的日期比较,计算两个日期间的天数,
    “递减量” 减这个天数,小于等于0即启动“限制”,否则“递减量”  -=  这个天数,(实现:停电情况下也计算使用天数)

当前在解决 “计算两个日期间的天数”
     

出0入0汤圆

发表于 2015-1-12 11:56:48 | 显示全部楼层
bccuje_love 发表于 2015-1-12 11:19
请问,客户把RTC的电源取出,该怎么办,还计时不?

系统里面设计了RTC计时,那就必须保证RTC能持续正常工作。

把RTC电源取出? 抱歉,系统时间错误,立即锁机!

出0入0汤圆

发表于 2015-1-12 12:52:31 | 显示全部楼层
来学习学习.松翰单片机,小家电控制器,移动电源,免费开发.

出20入186汤圆

发表于 2015-1-12 13:07:29 | 显示全部楼层
按次数算吧,

出0入0汤圆

发表于 2015-1-12 15:55:38 | 显示全部楼层
mcu内部定时器+eeprom,经常保存一下到eeprom中

出0入0汤圆

发表于 2015-1-12 16:05:40 | 显示全部楼层
fangjikun 发表于 2015-1-10 21:06
谢谢回复,有人就用单片机实现了,没有网络,没有通讯,我不知道是怎么做的 ...

GPS是可以破解的,用另一个串口设备模拟UTC报文。
个人感觉是,GPS的时间获取要再加上其它校验方式。
单纯使用RTC也很容易破解的,这事情我在大学就干过。直接外扩IIC设备修改RTC时间的。

出0入0汤圆

发表于 2015-1-12 16:51:39 | 显示全部楼层
修改时间的时候同步修改

出0入0汤圆

发表于 2015-1-12 17:01:57 | 显示全部楼层
你就加一个时间芯片,断电就默认死机

出0入0汤圆

发表于 2015-1-12 17:11:41 | 显示全部楼层
电池的方案不靠谱,拔掉电池就好了。直接在Flash里存储使用的天数比较靠谱,这样可以避免任何掉电的行为

出0入0汤圆

发表于 2015-1-12 17:55:15 来自手机 | 显示全部楼层
哈哈,学到很多知识,帮顶~ ^_^

出0入0汤圆

发表于 2015-1-12 20:46:06 | 显示全部楼层
你这个时间误差要求不高,可以在系统时间片里做时间累加,下电前保存,统计运行时间,不需要时钟芯片。

出0入0汤圆

发表于 2015-1-12 22:02:21 | 显示全部楼层
Hasp时钟锁

出0入0汤圆

发表于 2015-1-12 22:07:17 | 显示全部楼层
选带内部eeprom的单片机,用内部定时器每一分钟中断计算累计值并存于eeprom中,当达到预定值时就罢工!

出0入0汤圆

发表于 2015-1-12 22:18:00 | 显示全部楼层
1.每次上下电对比前后时间计算,这样不怕修改时间,机器总要运行吧。
2.上电后仅计算累计时间
3.系统运行需要到时间,时间不走或者有倒走或读取不到就不能运行

出0入4汤圆

发表于 2015-1-12 22:23:25 | 显示全部楼层
本帖最后由 ilan2003 于 2015-1-12 22:24 编辑

那必须是电池+ RTC  用户修改时间,到期的时间相应的修改


比如今天1号,  到期5号,,用户把时间改为2好,你就把到期的时间改为6号,总之改过日期后,到期时间-当前时间的差保持不变

出0入0汤圆

发表于 2015-1-13 09:28:50 | 显示全部楼层
guanglv2008 发表于 2015-1-11 08:03
中波信号授时   由电台进行对时   不受开关机限制

是的,我看到楼主的主题时, 想到的就是这个,长波授时。。
不考虑GPS, 因为室内没有信号。

因为时间是准确并且自动校准的, 也就没有更改的必要。


还有另一个方法, 就是使用传呼机做遥控关机, 锁死系统。。

出0入0汤圆

发表于 2015-1-13 09:43:08 | 显示全部楼层
正版软件30天试用期是怎么做的?改了电脑时间也不行。

出0入0汤圆

发表于 2015-1-13 13:42:21 | 显示全部楼层
楼主用的单片机应该是自带RTC的吧。
由年份算出是否润年,从而可得每个月的天数,应该很好计算两个日期间的天数呀。

出0入0汤圆

发表于 2015-1-13 13:45:25 | 显示全部楼层
内部flash或者EEPROM存储工作时间

出0入0汤圆

发表于 2015-1-13 22:45:30 | 显示全部楼层
那必须是电池+ RTC  用户修改时间,到期的时间相应的修改


比如今天1号,  到期5号,,用户把时间改为2好,你就把到期的时间改为6号,总之改过日期后,到期时间-当前时间的差保持不变
这个方法不错,如果用户拔电池就直接罢工,显示厂家维修电话。

出0入0汤圆

发表于 2015-1-14 08:28:23 | 显示全部楼层
学到很多知识,帮顶~ ^_^

出0入0汤圆

发表于 2015-1-14 09:13:59 | 显示全部楼层
以stm32为例吧,设置时间戳和TAG标记,全部放在BKP寄存器中。
定时器中断,每小时读取一次时间,这时的要求是:
1.检查TAG标记完好(比如等于0x1234ABCD)。
2.读取的时间大于保存的时间戳的时间(保证时间是向前变化的),并且小于使用期限的时间。
那么将读取的时间作为时间戳覆盖原来的内容。
如果妄图修改时间来达到延长使用时间的目的,那就只有把时间该到以前,但程序读取的结果和时间戳一比较就知道你作弊,立即锁死。
如果想扣电池,那么TAG标记丢失,表示你试图crack,立即锁死。

出0入0汤圆

发表于 2015-1-14 09:26:47 | 显示全部楼层
diegoo 发表于 2015-1-11 10:47
Fanuc很多设备都带电池的,重要参数都存放在RAM中,断电没有关系,但是要把电池拔了,这设备就坏了(电路板 ...

能详细介绍一下吗?

出0入0汤圆

发表于 2015-1-14 09:27:46 | 显示全部楼层
pic_flash 发表于 2015-1-13 09:28
是的,我看到楼主的主题时, 想到的就是这个,长波授时。。
不考虑GPS, 因为室内没有信号。

这种方式要看现场环境的

出0入0汤圆

发表于 2015-1-14 09:30:49 | 显示全部楼层
加EEPROM,这样就不用担心掉电了

出0入0汤圆

发表于 2015-1-14 09:47:05 | 显示全部楼层
加EEPROM应该可行

出0入0汤圆

发表于 2015-1-14 15:14:45 | 显示全部楼层
weichao4808335 发表于 2015-1-11 12:01
楼主要求的是断电情况下也要计算时间的

看楼主的目的,(怕人赖账,定个试用时间),简单的做法就是定工作时间,要是断电,自然就是不工作了,摆在那也没有意义,搞个几百几千个小时的试用时间即可。
要是楼主非要用时钟芯片的信息,是有点小麻烦,看看windows下的某些软件有时间限制的试用,就知道其蛋疼了,我们要是总是改系统时间也是可以总是试用的。我们单片机,方法也是有的,修改时间最后一定要确认吧,确认总有变量要变吧,这个接口一定可以做出来,然后就是策略了,应该不复杂了。

出0入0汤圆

发表于 2015-1-14 15:49:08 来自手机 | 显示全部楼层
52楼的思路可以考虑一下

出0入0汤圆

发表于 2015-1-14 22:12:36 | 显示全部楼层
1,用普通rtc(内置亦可)+电池;
2,工作时,内部跑一个软时钟,定时和RTC时间比对,时间超差过多的,时钟不走的,锁;
3,每次关电前,存储当前时间,下次上电,时间应大于当前时间,小于、等于的,锁;
4,开机时间错误的,锁;
5,最后在加个工作时间累计,比如你的设备一天工作几个小时,按这个时间在做一个保护。这个不用太准好了。反正你是750天,两年是730,考虑了20天的裕量了,再多个三二十天也没啥。

出0入0汤圆

发表于 2015-1-15 09:00:07 | 显示全部楼层
设定时间存flash,每次开机计算使用时间,隔段时间写进flash,每次开机之后计算一下,时间用完就自杀。

出0入4汤圆

发表于 2015-2-4 10:53:22 | 显示全部楼层
记天数就行了,每次关机保存住当前时间,开机与保存的时间做对比得出天数,如果检测到的时间比保存时间小就算一天,防止篡改时间,保存时钟时如果保存时间比开机时间小或相等也算一天,防止时钟停止不计数,每次修改时钟时可以先记住当前时钟与修改后的时钟做对比,如果大于多少小时算一天,以上措施可以很好的防时钟篡改,虽然不是很精确,但起码误差不会太大

出0入0汤圆

发表于 2015-2-4 11:05:41 | 显示全部楼层
授时型GPS 接收机

出0入0汤圆

发表于 2015-2-4 11:18:20 | 显示全部楼层
时间不能断电不能往后调

出0入17汤圆

发表于 2015-2-4 11:58:14 | 显示全部楼层
GPS校时!

出0入8汤圆

发表于 2015-2-4 12:28:10 来自手机 | 显示全部楼层
计开机时间就行了,运行时间也行,保存在eeprom中,不需要太精确!

出70入0汤圆

发表于 2015-2-4 21:32:32 | 显示全部楼层
一天保存一次倒计时数据到flash,每重启一次则减去n小时(根据系统在正常使用过程中重启的频率设定)使用时间,这样即使他们发现有这样的后门也无法通过重启来避开倒计时计算。

出70入0汤圆

发表于 2015-2-4 21:34:45 | 显示全部楼层
补充:计时最好用定时器,不要用时钟芯片。

出0入0汤圆

 楼主| 发表于 2015-2-14 14:04:57 | 显示全部楼层
现在已经弄好了,软硬件正在稳定性测试中

出0入0汤圆

发表于 2015-2-14 21:39:57 来自手机 | 显示全部楼层
客户如果故意认为电路板损坏你怎么办?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-1 06:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表