搜索
bottom↓
回复: 78

关于门禁主板的数据存储

[复制链接]
(292465088)

出0入0汤圆

发表于 2011-7-26 14:57:55 | 显示全部楼层 |阅读模式
门禁系统每天有N多人用,进进出出,刷卡开锁等等,还有用户权限等等等...
要是用户是一个万人小区或公司,那么,每天产生的门禁事件(刷卡、开锁、门磁...)是何其之多,存储方法见过的有几种:
1、用静态Ram,加块电池可保证掉电不丢数据,优点是不受读写次数限制,缺点是要是掉电时电池没电就死跷跷了;
2、用FRam,铁电存储器:我不怕掉电我可以写好多次。我说你太贵了!
3、Flash,优:便宜量大,缺:有读写次数限制。

本人倾心于第三种,量大便宜!至于怎么控制读写次数,高级点可以上个文件系统来管理实现写均衡,如果不能上文件系统那就麻烦了,想跟大家探讨一下。
(292461204)

出0入0汤圆

发表于 2011-7-26 16:02:39 | 显示全部楼层
NOR FLASH,SPI接口,并口均可,比如:AT45DB162
FLASH读写次数限制可以通过软件解决,缺点就是多耗点时间,不要几个地址下一起改写.10W次就算一天擦一次的话....
最新的技术不一定是最适合的技术,不是非常必要,为什么一定要上文件系统呢?
(292459001)

出0入0汤圆

发表于 2011-7-26 16:39:22 | 显示全部楼层
另一个思路是把数据 发到专门放数据的地方  比如数据库
(292457872)

出0入0汤圆

 楼主| 发表于 2011-7-26 16:58:11 | 显示全部楼层
要是每天有10W条事件,每条事件10byte左右,那么每天就有100W byte数据产生,977k数据.... 差不多1M,再加上不知道用什么算法,估计会超出1M数据,还用用户资料那些,估计数据很多...
由此看来,数据存储算法得花上大精力啊....
(292457765)

出0入0汤圆

 楼主| 发表于 2011-7-26 16:59:58 | 显示全部楼层
回复【2楼】xivisi  LiYong
另一个思路是把数据 发到专门放数据的地方  比如数据库
-----------------------------------------------------------------------

要是裸奔,没有文件系统,这种数据库...怎么设计...难度挺大
(292457269)

出0入0汤圆

发表于 2011-7-26 17:08:14 | 显示全部楼层
这类产品最复杂的就是存储.
门禁只是存储进出数据很简单,难做的是用单片机实现防"返潜"功能.
存储数据有一个简单的方法,就是存储分块,当然这有技巧,块大了或者小了都影响查找速度. 二分一法一般来说在这里不实用,除非你存储的数据有排序功能.
还有一种办法,我以前用过,就是顺序存储跟随机存储结合起来,顺序存储部分做好标记,用二分一法查找,随机存储部分就用分块处理.


二楼的方法在小型门禁上不实用.如果通讯线路出问题,会堵车的.
(292457121)

出0入0汤圆

发表于 2011-7-26 17:10:42 | 显示全部楼层
再盖一楼

如果楼主这东东不考虑成本,并且熟悉LINUX或者WINCE的话,甚至可以用PC+TPC/IP的话,根本不用这么复杂....
(292456637)

出0入0汤圆

发表于 2011-7-26 17:18:46 | 显示全部楼层
回复【4楼】simon_leung  
回复【2楼】xivisi  liyong
另一个思路是把数据 发到专门放数据的地方  比如数据库
-----------------------------------------------------------------------
要是裸奔,没有文件系统,这种数据库...怎么设计...难度挺大
-----------------------------------------------------------------------
.....电脑数据库啊  难道门禁数据不取到电脑 直接装个LCD 按按钮查吗?
(292456511)

出0入0汤圆

 楼主| 发表于 2011-7-26 17:20:52 | 显示全部楼层
所以我说上文件系统会简单多了,有写均衡的功能,要怎么写就怎么写。不一定要LINUX啊,好像ecos也可以的。

容易的就不用讨论了,所以现在假设没有文件系统,纯粹裸写Flash,利用算法实现写均衡。
(292456451)

出0入0汤圆

 楼主| 发表于 2011-7-26 17:21:52 | 显示全部楼层
回复【7楼】xivisi  LiYong
回复【4楼】simon_leung  
回复【2楼】xivisi  liyong
另一个思路是把数据 发到专门放数据的地方  比如数据库
-----------------------------------------------------------------------
要是裸奔,没有文件系统,这种数据库...怎么设计...难度挺大
-----------------------------------------------------------------------
.....电脑数据库啊  难道门禁数据不取到电脑 直接装个lcd 按按钮查吗?

-----------------------------------------------------------------------
要是脱机运行个几天一周什么的呢?
(292456077)

出0入0汤圆

发表于 2011-7-26 17:28:06 | 显示全部楼层
回复【9楼】simon_leung  
回复【7楼】xivisi  liyong
回复【4楼】simon_leung  
回复【2楼】xivisi  liyong
另一个思路是把数据 发到专门放数据的地方  比如数据库
-----------------------------------------------------------------------
要是裸奔,没有文件系统,这种数据库...怎么设计...难度挺大
-----------------------------------------------------------------------
.....电脑数据库啊  难道门禁数据不取到电脑 直接装个lcd 按按钮查吗?
-----------------------------------------------------------------------
要是脱机运行个几天一周什么的呢?

-----------------------------------------------------------------------
脱机运行没办法了

但是门禁历史数据 基本上不会修改  所以 我觉得直接 写FLASH好了(当然满一个区) 难点在裸机 按条件查询
(292454973)

出0入0汤圆

 楼主| 发表于 2011-7-26 17:46:30 | 显示全部楼层
回复【10楼】xivisi  LiYong
-----------------------------------------------------------------------

要是兼具脱机运行的情况,加上联机时上位机会取走事件数据(取走后门禁主板被取走的事件数据不再存在),这就更复杂了...
(292454729)

出0入0汤圆

发表于 2011-7-26 17:50:34 | 显示全部楼层
回复【11楼】simon_leung  
-----------------------------------------------------------------------
flash写满了从头开始写
要求数据快满的时候取走数据
要求取走数据的时候 按块取走
要求取走数据的时候 按时间先后取走


这样的话可以满足 flash每个块基本平均写


嗯,就是一个循环队列
(292454095)

出0入0汤圆

 楼主| 发表于 2011-7-26 18:01:08 | 显示全部楼层
回复【12楼】xivisi  LiYong
-----------------------------------------------------------------------

那上位機要實時查看相關事件呢?
(292449315)

出0入0汤圆

发表于 2011-7-26 19:20:48 | 显示全部楼层
回复【13楼】simon_leung  
-----------------------------------------------------------------------
这个看应用啊   可以把之前的数据全读出来 然后变成 单向队列 也可以继续保持循环队列 上位机查看内存拷贝
(292448204)

出0入0汤圆

发表于 2011-7-26 19:39:19 | 显示全部楼层
回复【13楼】simon_leung
回复【12楼】xivisi  liyong
-----------------------------------------------------------------------
那上位機要實時查看相關事件呢?
-----------------------------------------------------------------------

要按条件查询的话我认为 以【12楼】xivisi  liyong 的队列的方法最为简单高效, 不过你得好好构思每条数据的格式,
比如事先得设计好需要查询的字段, 比如 时间,钥匙ID,事件(开门/锁门)等等, 然后数据格式比如:

01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 ....
|<- 日期/时间 ->| |<-  ID ->| |<- 事件->| ......

按日期查就挨个搜索 01-06 字节, 如此类推.. 类似数据库的一条一条记录, 只是这里的记录是固定长度
(292448108)

出0入0汤圆

发表于 2011-7-26 19:40:55 | 显示全部楼层
之所以把时间放前面是因为这种情况 日期时间 应该是类似数据库中的主Key, 并且应该是唯一的,

按时间日期排序就是队列方式.
(292447554)

出0入0汤圆

发表于 2011-7-26 19:50:09 | 显示全部楼层
可不可以用SD卡?
(292447008)

出0入0汤圆

发表于 2011-7-26 19:59:15 | 显示全部楼层
谁有门禁和可视对讲的现成方案?联系下
(292446909)

出0入0汤圆

发表于 2011-7-26 20:00:54 | 显示全部楼层
QQ290261247
(292445614)

出0入0汤圆

发表于 2011-7-26 20:22:29 | 显示全部楼层
以存储器扇区为单位,开辟一片队列空间,先进先出循环写,被提取扇区直接数据清零,下次开机时二分法检索一下有效数据,连独立指针都免了,完全看不出难度在哪里……

其它诸如卡号、权限等信息,保存在队列有效空间以外的位置就可以了

另外,不要总是排斥文件系统,那东西很多时候很有用——比如说卡号权限信息保存在机内Flash、而刷卡流水信息保存在SD卡的情况,如果不用文件系统,那上位机软件设计可就要活折腾人了……
(292445443)

出0入0汤圆

发表于 2011-7-26 20:25:20 | 显示全部楼层
如果上文件系统直接用SD卡了,数据管理很方便。
(292443884)

出0入0汤圆

 楼主| 发表于 2011-7-26 20:51:19 | 显示全部楼层
上文件系統根本就沒有寫均衡的難題了,關鍵是上文件系統的話,對中央芯片的要求會挺高的
(292443449)

出0入0汤圆

发表于 2011-7-26 20:58:34 | 显示全部楼层
回复【22楼】simon_leung  
上文件系統根本就沒有寫均衡的難題了,關鍵是上文件系統的話,對中央芯片的要求會挺高的
-----------------------------------------------------------------------

MTK 的手机芯片早期一直用 ARM7 的,速度也很慢,人家也没见不能用文件系统……
(292443102)

出0入0汤圆

发表于 2011-7-26 21:04:21 | 显示全部楼层
回复【23楼】waitingconfirm  
回复【22楼】simon_leung  
上文件系統根本就沒有寫均衡的難題了,關鍵是上文件系統的話,對中央芯片的要求會挺高的
-----------------------------------------------------------------------
mtk 的手机芯片早期一直用 arm7 的,速度也很慢,人家也没见不能用文件系统……
-----------------------------------------------------------------------

门禁系统 MCU 需要很高速度吗?
(292442549)

出0入0汤圆

 楼主| 发表于 2011-7-26 21:13:34 | 显示全部楼层
回复【23楼】waitingconfirm  
回复【22楼】simon_leung  
上文件系統根本就沒有寫均衡的難題了,關鍵是上文件系統的話,對中央芯片的要求會挺高的
-----------------------------------------------------------------------
mtk 的手机芯片早期一直用 arm7 的,速度也很慢,人家也没见不能用文件系统……
-----------------------------------------------------------------------

手機每天的讀寫次數哪有門禁主板多...手機一天也就最多寫flash幾十次,門禁的可能一天寫上萬次
(292442131)

出0入0汤圆

发表于 2011-7-26 21:20:32 | 显示全部楼层
回复【25楼】simon_leung  
-----------------------------------------------------------------------
你这样算吧 过一个人要0.5-2秒吧   你在算下写flash一个块(就是一个扇区,我觉得硬盘的叫扇区 呵呵) 需要多少时间 就知道了
(292442084)

出0入0汤圆

发表于 2011-7-26 21:21:19 | 显示全部楼层
弄个大一点的eeprom(如24c512)做暂时缓存,等写满了再移入flash
(292441985)

出0入0汤圆

发表于 2011-7-26 21:22:58 | 显示全部楼层
回复【17楼】dzmcs  
可不可以用sd卡?
-----------------------------------------------------------------------

不可以,SD卡不能-40~+70°C温度工作吧
(292441970)

出0入0汤圆

发表于 2011-7-26 21:23:13 | 显示全部楼层
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很好的解决。至于前面说的每天10W次的那种只是读、校验,根本不会改变FLASH寿命。
(292441766)

出0入0汤圆

发表于 2011-7-26 21:26:37 | 显示全部楼层
回复【29楼】517456  
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很好的解决。至于前面说的每天10w次的那种只是读、校验,根本不会改变flash寿命。
-----------------------------------------------------------------------

开门之类的事件是要存储的,怎么会不改变flsah寿命?
(292441197)

出0入0汤圆

发表于 2011-7-26 21:36:06 | 显示全部楼层
如果你都考虑用FLASH了,还不如直接用TF或者SD卡。

均衡你都不用考虑,卡控制器帮你解决了。

你要做的就是按照地址读写,或者做一个微型文件系统。

实在想偷懒,就直接上FAT,一大堆的例子可以直接用。
(292441103)

出0入0汤圆

发表于 2011-7-26 21:37:40 | 显示全部楼层
回复【31楼】gzxyt  
如果你都考虑用flash了,还不如直接用tf或者sd卡。
均衡你都不用考虑,卡控制器帮你解决了。
你要做的就是按照地址读写,或者做一个微型文件系统。
实在想偷懒,就直接上fat,一大堆的例子可以直接用。
-----------------------------------------------------------------------

温度范围不容许吧?
-40~+70°C
(292440962)

出0入0汤圆

 楼主| 发表于 2011-7-26 21:40:01 | 显示全部楼层
回复【26楼】xivisi  LiYong
回复【25楼】simon_leung  
-----------------------------------------------------------------------
你这样算吧 过一个人要0.5-2秒吧   你在算下写flash一个块(就是一个扇区,我觉得硬盘的叫扇区 呵呵) 需要多少时间 就知道了
-----------------------------------------------------------------------

關鍵一塊主控板一般不會只有一個門(當然,也會有一門的),除了進入還有出來的,除刷卡,還有門磁、按扭、開門信號等等事件
(292440464)

出0入0汤圆

发表于 2011-7-26 21:48:19 | 显示全部楼层
回复【33楼】simon_leung  
回复【26楼】xivisi  liyong
回复【25楼】simon_leung  
-----------------------------------------------------------------------
你这样算吧 过一个人要0.5-2秒吧   你在算下写flash一个块(就是一个扇区,我觉得硬盘的叫扇区 呵呵) 需要多少时间 就知道了
-----------------------------------------------------------------------
關鍵一塊主控板一般不會只有一個門(當然,也會有一門的),除了進入還有出來的,除刷卡,還有門磁、按扭、開門信號等等事件
-----------------------------------------------------------------------

问题就是,有任何人规定必须每次操作实施入卡么?凑几个扇区的数据一次写不是更好么?

如果你说你担心突然断电后丢失数据,那么,加一片容量等于几个扇区容量的F-RAM不就得了……这样小的容量下,价格不再有障碍了吧?

另外,话说回来,门控系统难道不需要独立后备电源设计么?那哪天贼想进来,只要剪次电线不就四门洞开了?
(292440398)

出0入0汤圆

发表于 2011-7-26 21:49:25 | 显示全部楼层
我以前是按类FAT表的块设备分配方案,比方说使用24/32位(需4字节)的维根卡,需要存1024个卡记录,每张卡记录数据是16个字节(一般取2的n次方,便于计算),1024*4=4K的总指针区+1024*16=16K的数据区,假设某张卡号为n开门,则从指针区查找这张卡,找到这张卡后得到对应的第x号记录,从x记录的数据区再取出数据进行开门检测。
例数据区为:
FF FF FF FF[1] 01 03 05 07[2] FF FF FF FF[3] 02 04 06 08[4] ..... 12 34 56 78 98 76 54 32 FF FF FF FF(FF FF FF FF代表此处为空,没有对应的卡)
有张02 04 06 08的卡开门,经查找此卡为第4指针区,则从第4数据区读数据。
如果觉得它查找的时间长了一点(以前我们1W张卡时间也不是很长),可以存成: 卡号 指针区的格式,然后每加一张卡则对卡号进行排序存储。
(292440313)

出0入0汤圆

发表于 2011-7-26 21:50:50 | 显示全部楼层
回复【36楼】ersha4877  
我们公司用的 是atmega128 +hm628128 sram 掉电用电池供电,根本没有flash
-----------------------------------------------------------------------

你们公司这产品成本一定很难控制……

话说,个门控终端用ATM128作甚?
(292440114)

出0入0汤圆

发表于 2011-7-26 21:54:09 | 显示全部楼层
用nand的吧,sram掉电丢失倒不是问题,就是sram容量太小,我以前就是做这个的。反复比较了,大容量只有nand比较合适,做好坏块管理就可以了,均衡几乎不需要考虑,一个门禁一天刷10w个人是什么概念。而且不是反复擦写一个区。要是对容量没有要求,sram容易处理些,速度也快,要是有要求同时不想速度还可以貌似就是nand flash了
(292440085)

出0入0汤圆

发表于 2011-7-26 21:54:38 | 显示全部楼层
回复【30楼】 Semiconductor 半导体
回复【29楼】517456  
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很好的解决。至于前面说的每天10w次的那种只是读、校验,根本不会改变flash寿命。
-----------------------------------------------------------------------

开门之类的事件是要存储的,怎么会不改变flsah寿命?

-----------------------------------------------------------------------

不知开门需要存储什么数据?
(292439619)

出0入0汤圆

发表于 2011-7-26 22:02:24 | 显示全部楼层
回复【39楼】517456  
回复【30楼】 semiconductor 半导体
回复【29楼】517456  
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很好的解决。至于前面说的每天10w次的那种只是读、校验,根本不会改变flash寿命。
-----------------------------------------------------------------------
开门之类的事件是要存储的,怎么会不改变flsah寿命?
-----------------------------------------------------------------------
不知开门需要存储什么数据?
-----------------------------------------------------------------------

比如什么时间,什么卡号在开门
(292439395)

出0入0汤圆

发表于 2011-7-26 22:06:08 | 显示全部楼层
回复【40楼】 Semiconductor 半导体
回复【39楼】517456  
回复【30楼】 semiconductor 半导体
回复【29楼】517456  
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很好的解决。至于前面说的每天10w次的那种只是读、校验,根本不会改变flash寿命。
-----------------------------------------------------------------------
开门之类的事件是要存储的,怎么会不改变flsah寿命?
-----------------------------------------------------------------------
不知开门需要存储什么数据?
-----------------------------------------------------------------------

比如什么时间,什么卡号在开门

---------------------------------------------------------------------------
这种数据一般只需要用单片机记录最后几次的开门就可以了。
(292438908)

出0入0汤圆

发表于 2011-7-26 22:14:15 | 显示全部楼层
那要看做到什么程度了
我所在公司的做法是,脱机或是联网出现故障后
要将每次开门事件记录下来
之后,一旦可以联网,便将数据上传
上万条记录都不止哦
有客户反映上传连续几个小时(2400波特率)
(292438406)

出0入0汤圆

发表于 2011-7-26 22:22:37 | 显示全部楼层
zlgmcu 也出门禁了,可以去看看
(292438030)

出0入0汤圆

 楼主| 发表于 2011-7-26 22:28:53 | 显示全部楼层
回复【42楼】Semiconductor  半导体
那要看做到什么程度了
我所在公司的做法是,脱机或是联网出现故障后
要将每次开门事件记录下来
之后,一旦可以联网,便将数据上传
上万条记录都不止哦
有客户反映上传连续几个小时(2400波特率)
-----------------------------------------------------------------------
是的,門禁要求的是穩定性,所以很多參數都比較苛刻,只需要記錄幾條開門事件這種程度顯然是不夠的
(292435743)

出0入0汤圆

发表于 2011-7-26 23:07:00 | 显示全部楼层
数传用 CAN 会快很多……还可以借助小区本身的电话接线箱甚至小区局域网,总之无论如何 2400bps 的速率都太不靠谱了……而且,大量数传都不带压缩的么?

稳定性什么的,还是那句话:

凑足几百上千条记录,一次性写到 Flash/SD 卡里不是更好?担心掉电失败的话,中间拿 F-RAM 做一级高速缓存……
(292432857)

出0入0汤圆

发表于 2011-7-26 23:55:06 | 显示全部楼层
用以太网实时发到服务器,如果服务器中断才存起来。这个是最好的办法
(292432669)

出0入0汤圆

发表于 2011-7-26 23:58:14 | 显示全部楼层
我做存储就是分块来的,按三级块来分,总够了吧最后一级做顺序查找,呵呵
(292401042)

出0入0汤圆

发表于 2011-7-27 08:45:21 | 显示全部楼层
只做记录存储使用FIFO方式就可以了吧,需要支持“防反潜”,就需要考虑Flash的读写寿命吧,这个不知用单片机什么好方式不
(292399879)

出0入0汤圆

发表于 2011-7-27 09:04:44 | 显示全部楼层
有一点要注意:时间不能做为唯一ID,理由是:时间也会做调整,除非你的时钟不做调整并且永远不会掉电.

人员名单处理:每个人固定长度,再拿一个字节做为该人员名单的状态,比如:挂失,消卡等.
             这样做的好处在于,你不用因为修改一个人的名单而擦除大片的FLASH,节省与上位机的通讯时间.

刷卡记录处理:数据分块堆放,以AT45DB162为例,你可以一个字一个字的写,但擦除必须是256或者264的整数倍.
             比如,把存储器的高8Mbit(1Mbyte)做为数据存储,可以把存储器分成1024个块,每块1024byte(当
             然,也可以按自己喜好或者实际情况来定义),如果存储过程中一切正常,就在同一个块里堆放,
             如果发生异常,就重启一个块,上一块后面部分放弃.

最好,在存储器某个角落放一个状态指示区,将存储块的状态存储起来.

偶纯业余人仕,不会用专业用语,呵呵,但是几年前开发产品就用这个方法.

回复【48楼】xtss1230
只做记录存储使用fifo方式就可以了吧,需要支持“防反潜”,就需要考虑flash的读写寿命吧,这个不知用单片机什么好方式不
-----------------------------------------------------------------------
"防反潜"用普通单片机很难搞.很多厂家都是玩虚的.


回复【38楼】258963519 吾人
用nand的吧,sram掉电丢失倒不是问题,就是sram容量太小,我以前就是做这个的。反复比较了,大容量只有nand比较合适,做好坏块管理就可以了,均衡几乎不需要考虑,一个门禁一天刷10w个人是什么概念。而且不是反复擦写一个区。要是对容量没有要求,sram容易处理些,速度也快,要是有要求同时不想速度还可以貌似就是nand flash了
-----------------------------------------------------------------------
要存储开门时间,卡片状态,开门门号(不记录,但有分别)或者其它用户定义的数据.
(292391538)

出0入12汤圆

发表于 2011-7-27 11:23:45 | 显示全部楼层
哈哈,1贴引出很多高人啊
(292391443)

出0入12汤圆

发表于 2011-7-27 11:25:20 | 显示全部楼层
滚动存储,就是41楼同学说的那种,在很多公司的产品上都有看到实例.用的最多的就是AT45DBXXX,现在这玩意贵了,大家都用WX那种了
(292353632)

出0入0汤圆

发表于 2011-7-27 21:55:31 | 显示全部楼层
回复【49楼】landway001  
-----------------------------------------------------------------------
知道的,以前供职的公司门禁数据存储很多的,不仅仅是卡号和记录。还是用nand 存储吧,处理下,使用很方便的。
(292314450)

出0入0汤圆

发表于 2011-7-28 08:48:33 | 显示全部楼层
建议用SD卡或TF卡
(281850079)

出0入0汤圆

发表于 2011-11-26 11:34:44 | 显示全部楼层
回复【41楼】517456
-----------------------------------------------------------------------

高手可以找我,我有个这方面的项目要做,QQ:365790490。
(281849570)

出0入0汤圆

发表于 2011-11-26 11:43:13 | 显示全部楼层
ram掉电前或定期转存flash
(281849039)

出0入0汤圆

发表于 2011-11-26 11:52:04 | 显示全部楼层
MK
(281659204)

出0入0汤圆

发表于 2011-11-28 16:35:59 | 显示全部楼层
是否大家提供其相应数据存取思路,小弟想学习一下,谢谢!
(265395068)

出0入0汤圆

发表于 2012-6-3 22:24:55 | 显示全部楼层
最简单的办法是记录数据在存储芯片里按地址递增的顺序改写,写到芯片结尾了再从头开始写。每一条记录占用固定的存储空间,用一个不会在记录数据里出现的数据标记当前存储位置。这样可以最大限度的保存最近的事件数据,并且可以解决芯片的擦写寿命的问题。
(252291558)

出0入0汤圆

 楼主| 发表于 2012-11-2 14:16:45 | 显示全部楼层
electron_love 发表于 2011-7-26 21:21
弄个大一点的eeprom(如24c512)做暂时缓存,等写满了再移入flash

最近又想了一下这个问题,存储实时事件用FRAM做缓存,写满了再移入flash,这种方案好像不错
(245570808)

出0入0汤圆

发表于 2013-1-19 09:09:15 | 显示全部楼层
哈哈   说到门禁   你们就没我有经验了    我已经独立开发门禁系统3年了    产品已经大量生产出货
在这里说一下   耍个酷!
其实门禁分IC卡方式   和ID卡方式
如果客户使用IC卡方式,那就简单多了   基本上只要做一个读头,带上大容量FLASH存储片,就可以了。 IC卡上就可以存储用户信息,读头或控制板上只需要存储,用户黑名单和事件记录就可以了。
如果客户使用ID卡方式,那就麻烦多了,我们的读头要带更大容量的FLASH存储片,或扩展SRAM,或两者配合使用。存储片中不光要存储事件记录,还要存储庞大的用户资料。其实门禁最复杂的就是数据的存储。
而ID的方式就很难实现卡片的防“返潜”功能。因为对于有多个出入口的房间,就麻烦了。

其实门禁麻烦的还有这些设置参数:
1,开门方式:单卡开门,双卡开门,双门互锁,卡加密码开门,用户密码开门,胁迫密码开门,按钮开门,火警联动开门
2,权限设置:在所有门上对于任何一个卡片,都有权限控制
3,时间控制:对于任何一个卡片,都要有起止有效期控制,在起止有效期内可以使用,过期则失效
4,时区时段:对于任何一个门,都要有很多种时区时段方案,每种方案都对应有该门那一时段可以开门,比如:1#仓库门,早8:00到12:00可单卡开门,12:00到14:00
   双卡开门,14:00到18:00可单卡开门,18:00到第二天早8:00禁止开门。
5,应用群组:这个功能可以将所有卡片分为359等,这些等级,对应上各个时区时段方案
6,周计划:启用周计划后每周7天,每天都可以设置不同的时段开门方案,比如上班时开门,周末不开门
7,节假日:在一年的365天中,有很多节假日,启用该功能后就可以设置每个节假日的开门方式。
8,要求不连电脑也可以运行,不连电脑也可以存储事件记录。但是连上电脑后,也可以运行,并且可以提取事件记录,并出去各种各样的报表

在这3年多的工作里总结了很多经验教训,其实我一直都使用STC的51单片机做门禁,之前一直使用单片机+大容量并口SRAM的方案。但是我劝大家,不是高手千万不要使用这种方案,只要在门禁的行业老手,都知道,如果仅仅靠SRAM这种方式,很难保证不丢数据。很多问题,发现以后都很难查原因。特别是现场发行卡片后,用户用几天就不能开门了,甚至进了门却出不了门,你想死的心都有。

后来,我就换了FLASH芯片的方案,虽然FLASH芯片天生就难操作,有寿命限制,擦除数据慢,访问函数复杂。但也有好处,他天生就不丢数据的。这也是我最喜欢的一点。

其实,在后期,我已经找到了更折中的方案,就是单片机+SRAM+FLASH的方案,上电后数据从FLASH取到SRAM中,断电后数据被重新写到FLASH中。
这样,好处多多,但是成本就上来了,现在的简易型门禁已经卖到100多元了。简单又方便,抢占了大量低端市场,

说到门禁,不得不说台湾PORIS的门禁板,曾经风靡一时,现在也很吃香。

另外有楼友说FRAM的方案,这个基本上就是在扯淡,一片大容量FRAM芯片会超过100元,这样价格的门禁板谁来买?


心情复杂:说了很多。。。。。   愿所有做门禁的同仁多多指教
(241591989)

出0入0汤圆

发表于 2013-3-6 10:22:54 | 显示全部楼层
xxxelder 发表于 2013-1-19 09:09
哈哈   说到门禁   你们就没我有经验了    我已经独立开发门禁系统3年了    产品已经大量生产出货
在这里说 ...

说的太好了!
(241464293)

出0入0汤圆

发表于 2013-3-7 21:51:10 | 显示全部楼层
这两天我也在做简单的门禁,我用了一个32K的EEPROM存储,一张卡号4个字节,可以存7000张卡这样子,我用的是历遍查找,找一张卡要好长时间,有什么查找算法或方案吗?
(241424406)

出0入0汤圆

发表于 2013-3-8 08:55:57 | 显示全部楼层
517456 发表于 2011-7-26 21:23
这种东西根本用不着上文件系统,数据长度固定,数据短,用文件系统简直就是浪费资源。合理的指针方案即可很 ...

说到点上了!
(241333719)

出0入0汤圆

发表于 2013-3-9 10:07:24 | 显示全部楼层
baynkrnr 发表于 2013-3-7 21:51
这两天我也在做简单的门禁,我用了一个32K的EEPROM存储,一张卡号4个字节,可以存7000张卡这样子,我用的是 ...

其实遍历查找也有小窍门的,可以大幅提高查找速度,   

1,选用SPI接口的EEPROM,和自带SPI接口的单片机,   因为这种接口的传输速度快

2,采用特殊的算法,比如,一张卡号需要4个字节的存储地址,但是初次比较时,我只读取第一个字节,进行比较。
如果相同,则再进一步读取剩余字节,否则跳过。这样你就少读取很多数据了。也会快很多

3,我用的是512K字节的SPI接口的Flash芯片,设定10000多用户资料时,遍历查找也用不到1秒。

4,充分利用单片机的内部扩展RAM,STC单片机有的有1K字节的内部扩展RAM,
这样你可以开辟一个缓冲区,可以存储250张卡的卡号,你可以将EEPROM中的一部分数据事先备份在这个RAM中
比如你的EEPROM中的前250张卡备份在RAM中
查找时可以先找RAM区,而RAM区访问速度就更快了


祝你成功!
(241313199)

出0入0汤圆

发表于 2013-3-9 15:49:24 | 显示全部楼层
xxxelder 发表于 2013-3-9 10:07
其实遍历查找也有小窍门的,可以大幅提高查找速度,   

1,选用SPI接口的EEPROM,和自带SPI接口的单片 ...

我晕死了,我现在就是用这个方法,但是速度还是好慢呀
(241231293)

出0入0汤圆

发表于 2013-3-10 14:34:30 | 显示全部楼层
baynkrnr 发表于 2013-3-9 15:49
我晕死了,我现在就是用这个方法,但是速度还是好慢呀

慢的原因有很多,一般如下判断

1,是读卡后数据上传到控制板慢    还是    控制板接收到数据后查找慢

2,如果是数据查找慢,可以做一个程序测试一下,测试程序大致如下,将你的EEPROM中,写入并且写满,00,11,22,33,44,55,66,77,88,99,aa,bb,cc,dd,ee,ff,
然后你就查找整个EEPROM中FF的个数,并使用定时器计时,得出数据后就好分析了

3,基本上上面两点,你可以做到的话   相信你会找出慢的原因
(241225072)

出0入0汤圆

发表于 2013-3-10 16:18:11 | 显示全部楼层
xxxelder  经验很丰富。

我也曾经搞门禁一卡通研发有近8年了。

早期EEPROM,NORFLASH,FRAM,SRAM+电池  等等方案全部用过。

最后回归的方案就是

微型的门禁系统,适合个人学习的 51+EEPROM(1千人卡和事件的门禁)

小型的门禁系统,可靠的方案 ARM7+512K FRAM(2千人卡和事件的门禁)

市场通用型门禁系统,51(AVR)+NORFLASH (5千人卡和事件的门禁)

中型的门禁系统采用ARM7 +SRAM+NANDFLASH+OS  (1-5万人和事件的门禁)

大型的门禁系统ARM9+SDRAM+NANDFLASH+LINUX+Sqlite (10万以上人和事件的门禁)

市面上有些号称10万人的门禁(51+FLASH),其实是瞎扯的,利用IC发卡写特殊字的方案,这样其实做1亿人的都没问题。


(241224314)

出0入0汤圆

发表于 2013-3-10 16:30:49 | 显示全部楼层
另外:门禁一卡通市场规律是:并不是技术越先进的 越迎市场。

而是那些7,8年前的 老方案,比如微耕、披克、SYRIS、西握、HID等 他们的产品随着市场的不断应用,解决软硬BUG、丰富报表的功能、

集成界面的统一,稳定设备的性能,第三方接口的完整。这些都是靠时间来完成的。

正是客户和实际使用中最需要的。
(241221947)

出0入0汤圆

发表于 2013-3-10 17:10:16 | 显示全部楼层
jerkoh 发表于 2013-3-10 16:30
另外:门禁一卡通市场规律是:并不是技术越先进的 越迎市场。

而是那些7,8年前的 老方案,比如微耕、披克 ...

楼上jerkoh   是高手!!!

实践出真知啊!!!

哈哈哈哈!!!
(241202212)

出0入0汤圆

发表于 2013-3-10 22:39:11 | 显示全部楼层
xxxelder 发表于 2013-3-10 14:34
慢的原因有很多,一般如下判断

1,是读卡后数据上传到控制板慢    还是    控制板接收到数据后查找慢

今天改了一下查找的代码。我原来是用卡号的第一个字节开始对比,现在改为卡号的第四个字节向前一个字节对比,速度快了好多。
(236129806)

出0入0汤圆

发表于 2013-5-8 15:39:17 | 显示全部楼层
我也有一个这样的项目在做,有经验的人可以加我,有赏。365790490
(234549080)

出0入0汤圆

发表于 2013-5-26 22:44:43 | 显示全部楼层
517456 发表于 2011-7-26 21:54
回复【30楼】 Semiconductor 半导体
回复【29楼】517456  
这种东西根本用不着上文件系统,数据长度固定, ...

开门方式、开门卡号、时间等
(231738550)

出0入0汤圆

发表于 2013-6-28 11:26:53 | 显示全部楼层
顶一下,谢谢楼主了
(136945324)

出0入0汤圆

发表于 2016-6-29 14:53:59 | 显示全部楼层
专用挖贴

为何不考虑用哈希表方法?
(136934674)

出0入0汤圆

发表于 2016-6-29 17:51:29 | 显示全部楼层
本帖最后由 kelian 于 2016-6-29 18:37 编辑



[q

uote]LearningASM 发表于 2016-6-29 14:53
专用挖贴

为何不考虑用哈希表方法?[/quote]

看来都是门禁高手,,
我们做过的处理方式是如下,大家交流,不好请吐槽;
你们的门禁方式,有几问题:1存储量要求大2卡存压力大3通信压力大或依赖通信故障上升都会多.
要是门禁做一个系统方式,都不是什么问题了,别说是几1000人,几W人了,
1\选用数据卡,就是市场上说的IC卡,卡密码加密,数据加密,防复制防密码.如我们选取用过用4305-4469低频的,高频的MIFS50,成本多高点,
2\一个小区,一个厂,你将它做成一个系统,一个用户标识密码,只要你认为是本小区或本厂,验证密码和系统数据,就可以进出,这个小区占很小数据和RAM
3\如果你应用开门次数,或电梯上下次数的,直接在卡里加减,也不占多少,也不用通信,当,有联网通信更好,清除和挂失直去写卡去挂失或通信联机直接清除
4\成本低的脱机远行也简单,成本高点的,,你用个通信或无线通信,直接PC上传或下载清除数据,也不是麻烦,几个口,用个无线串口都简单
5\拓展应用,充电桩,都可以在里面完成计次数,如果计充电时间和记录,这个就多麻烦点,
开发定位很重要,平时我们都是用低成本几毛钱的卡,做一个产品,那开发工作量大,实现智能难度也加大,也不见得卖给业主的卡收人家几毛或一两块钱过.一般都是收15-30元左右
6\如果我们选用这种方式,硬件和卡完成,分担工作量实现起不是不是简单?卡成本2块-3块,量大还可以少,最终卖给客户也不是15-30块吗,只是成本加一两块
547886832QQ大家交流,,做这个好多年,市场并不是很乐观利润,做的人太多了,
7\那位还有空时间多,我原意分享协议重做一些读卡器的以前实习生做过的8958A,后面基本没用,那位有空用AVR或STC来做个,,Q我

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(136933387)

出0入0汤圆

发表于 2016-6-29 18:12:56 | 显示全部楼层
kelian 发表于 2016-6-29 17:51
看来都是门禁高手,,
我们做过的处理方式是如下,大家交流,不好请吐槽;
你们的门禁方式,有几问题:1存储量要 ...

ISO14443A 的IC卡现在也便宜了,就1块多一点点,100k能压到0.7~0.8样子。
现在门禁活血注入的是因为手机开始流行NFC,用手机开门能省的带太多钥匙。
(133162680)

出0入0汤圆

发表于 2016-8-12 09:38:03 | 显示全部楼层
日志可以使用外存(比如tf卡)或者直接发送到网络去,其他数据可以本地使用eeprom就行了。
(130914684)

出0入0汤圆

发表于 2016-9-7 10:04:39 | 显示全部楼层
用大容量的flash存储id数据,把ID卡的卡号作为地址,只要读取到非零数据即为有效卡,这样应该可以省掉查表的时间。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-31 15:16

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

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