Modbus读写器YW-630开发指南 点击:376 | 回复:0



18910685939

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 0回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2016年3月09日
发表于:2016-03-18 15:59:41
楼主

Modbus读写器YW-630是以RS485总线,基于标准Modbus-rtu通信协议而研发的一款全新的IC卡读卡器,具有可读和写非接触IC的所有功能。非常方便将IC卡嵌入到各个PLC为核心的工程中。

Modbus读写器YW-630采用Vcc,GND,485+,485- 共四根线,连接简单可靠,供电电压从9VDC到24VDC都可以正常工作。

要轻松顺利的开发带IC卡的PLC项目,先必须了解非接触IC卡的内存结构。

1         非接触IC卡介绍

非接触IC卡是IC卡中的一种,由于非接触IC卡没有物理磨损,寿命更长,价格更便宜,使得非接触IC卡的使用越来越多,最具有代表性的非接触IC卡就是M1卡及其兼容卡。下面将以M1卡为例,来介绍M1的内部结构。

M1卡有1k和4k之分,内部结构基本差不多,以M1卡1K为例:

该IC卡共有16个扇区,每个扇区4个块,每块16字节,所以总共有字节数16*4*16=1024个字节。

 

第15扇区

   

第63块

   

密钥块

   

第62块

   

数据块

   

第61块

   

数据块

   

第60块

   

数据块

   

.

.

.

   

第1扇区

   

第7块

   

密钥块

   

第6块

   

数据块

   

第5块

   

数据块

   

第4块

   

数据块

   

第0扇区

   

第3块

   

密钥块

   

第2块

   

数据块

   

第1块

   

数据块

   

第0块

   

存卡号,只读

   

 

每个扇区最后一块用来保存密钥,故不能当作数据来使用。第0块由于是只读的,也不能用来存取数据,所以此卡实际可用的内存为(16*3-1)*16= 752字节。

在读写某个数据块之前,必须首先进行密钥认证,如果密钥认证失败,则不能读写,只有认证成功,方可进行读写等操作。每个扇区共用一组密钥,所以一个扇区只要认证成功一次,就可以读写此扇区中的四个数据块。

2         Modbus读写器YW-630的寄存器结构

寄存器地址

   

寄存器名称

   

寄存器默认值

   

寄存器值说明

   

0x0001

   

波特率和ID

   

0x0301

   

波特率03代表19200,ID为01

   

0x0002

   

读卡参数

   

0x0030

   

卡类型:S50/S70和其兼容卡。

读到卡后蜂鸣器响一声,LED闪一下。

使用密钥寄存器密钥进行认证,即0x000B到0x000D。

认证模式:A密钥

   

0x0003

   

LED灯和蜂鸣器控制

   

0x0000

   

可以单独控制蜂鸣器

   

0x0004到0x0007

   

卡片序列号

   

0x00000000000000

   

卡片的序列号共7个字节,部分卡号为4个字节,则后面的字节以0填充。

   

0x0008

   

卡片操作

   

0x0000

   

可以执行读块或者写块操作

   

0x0009

   

卡片操作执行状态

   

0x0000

   

读块和写块的执行结果

0x00为成功

其他为失败

   

0x000A

   

要读写的块号设置

   

0x0000

   

要读写的块号和块数量设置,禁止跨扇区读写。

   

0x000B到0x000D

   

密钥寄存器

   

0xFFFFFFFFFFFF

   

存储用于认证的密钥

   

0x0010到0x002F

   

块数据寄存器

   

0x00000000000000000000000000000000

0x00000000000000000000000000000000

0x00000000000000000000000000000000

0x00000000000000000000000000000000

   

块数据,共64字节,即可以读写最多4个块,每个块的数据按顺序排列。

   

 

3         如何在PLC上通过IC卡读卡器操作IC卡

在PLC的开发中,使用IC卡一般由以下3种情况,我们逐一说明这3种情况下如果配置Modbus读写器YW-630,以下都认为modbus读写器的站地址为已经设置为1,波特率已经配置好

 

1.只需要读取卡号

读卡号是最简单的事,只需要不断查看寄存器0004到0007内容是否为0, 如果为0就说明没有读到卡,只要不为0,就说明读到卡了,很简单。读到卡并将卡号处理完毕后,即可将0004到0007寄存器全部清零,读卡器则自动启动新的读卡。

 

2.需要读取IC卡某块的内容

如果读取某个固定的块,则可以先设置块号和相应的密钥,例如我们要读第5块,先设置0x000A寄存器为0x0105,意义为读取第5块,块数量为1。然后设置密钥寄存器0x000B到0x000D,此3个寄存器默认值为0xFFFF, 0xFFFF, 0xFFFF.如果是一张新卡,则可以不用设置,如果是有别的密钥,就设置新的密钥。设置完成后就可以准备读卡了。

a)   将卡号寄存器0004到0007全部清零,即启动读卡。

b)   一旦读到卡后,将0x0008寄存器设置为0x0001, 即启动读块操作。

c)   查看0x0009寄存器,如果是非零,则表明读块失败,如果是0,则表明读块成功。

d)   一旦检测到读块成功,则可以读取0x0010到0x0017寄存器共8个寄存器,16个字节为块号为5的内存内容

 

3.需要写IC卡某块的内容

如果写某个固定的块,则可以先设置块号和相应的密钥,例如我们要写第5块,先设置0x000A寄存器为0x0105,意义为读取第5块,块数量为1。然后设置密钥寄存器0x000B到0x000D,此3个寄存器默认值为0xFFFF, 0xFFFF, 0xFFFF.如果是一张新卡,则可以不用设置,如果是有别的密钥,就设置新的密钥。然后将需要写入的内容写到寄存器0x0010到0x0007中,共8个寄存器,16个字节。设置完成后就可以准备写卡了。

a)   将卡号寄存器0004到0007全部清零,即启动读卡。

b)   一旦读到卡后,将0x0008寄存器设置为0x0002, 即启动写块操作。

c)   查看0x0009寄存器,如果是非零,则表明读块失败,如果是0,则表明写块成功。

4.如何在IC中做加值和减值运算

如果要在IC卡中做加值和减值,对于Modbus读写器YW-630将是非常简单的事。IC卡的一个块16字节将分布在8个寄存器中,只要对其中某一个寄存器进行加减然后再执行写操作即可完成。例如我们将数值存在第5块的前2个字节。 这时读第5块,先设置0x000A寄存器为0x0105,意义为读取第5块,块数量为1。然后设置密钥寄存器0x000B到0x000D,此3个寄存器默认值为0xFFFF, 0xFFFF, 0xFFFF.如果是一张新卡,则可以不用设置,如果是有别的密钥,就设置新的密钥。设置完成后就可以准备读卡了,读到的内容将存在寄存器0x0010到0x0007中,共8个寄存器,16个字节。然后将0x0010寄存器进行加减运算后,再执行写操作就可以了。

注:Modbus读写器YW-630是北京友我科技有限公司的一款IC卡读卡器


正在下载,请等待……
下载附件需0积分!



相关主题

官方公众号

智造工程师