MODBUS读写器功能及寄存器说明.docx
- 文档编号:24573127
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:13
- 大小:554.15KB
MODBUS读写器功能及寄存器说明.docx
《MODBUS读写器功能及寄存器说明.docx》由会员分享,可在线阅读,更多相关《MODBUS读写器功能及寄存器说明.docx(13页珍藏版)》请在冰豆网上搜索。
MODBUS读写器功能及寄存器说明
MODBUS读写器功能及寄存器说明
一、MODBUS读写器适用S50、S70射频卡。
二、MODBUS读写器能通过MODBUS-RTU方式与PLC通信,MODBUS读写器为从站、PLC为主站,波特率为19200,N,8,1。
需要实现即时刷卡功能,可用PLC设备每隔0.2秒读卡一次。
三、寄存器说明:
40001:
存放读卡器的站号(机号),可读可写,写可以更改站号,只能用06功能码,可用03寄存器来读或连读。
40002:
在读写型的MODBUS读写器为无效寄存器。
40003:
驱动读卡器响声,只能用06功能码,可用03寄存器来读或连读。
如写为0表示短滴一声,见下表
0
短滴一声
1
短滴两声
2
短滴三声
3
长鸣一声
4
长鸣两声
5
长鸣三声
6
一长一短
7
一长两短
8
一长三短
9
两长一短
10
两长两短
11
两长三短
其他
短滴一声
40004至40007寄存器保留,暂不使用
40008寄存器为读写卡控制寄存器:
只能用06功能码写,可用03寄存器来读或连读。
15~8位
7~6位
5位
4位
3位
2位
1位
0位
自定义
自定义
为1表示IC卡密码错,对应IC卡的密码要通过密码管理卡在MODUBS读卡器上设定
为1表示仅读或写指定卡号的卡,指定卡号放在寄存器,40009,
40010
写1驱动读卡操作,读寄存器这个位只能读出0
写1驱动写卡操作,读寄存器这个位只能读出0
读卡成功
写卡成功
40009至40010共2个寄存器存放IC卡卡号(4个字节)。
40011至40034共24个寄存器对应于IC卡的扇区内48字节内容。
四、数据报文格式
在数据报文层面,寄存器起始地址都是从0开始。
数据报文格式:
设备地址+功能码+起始地址+寄存器个数+校验码。
其中起始地址是从0开始的。
如:
从站号2读卡器读取40009开始的两个寄存器数据的报文
发送:
设备地址功能码起始地址寄存器个数校验码(CRC16)
02030008000245FA
成功返回:
设备地址功能码数据长度数据信息校验码(CRC16)
020304285B90BB9D33
其中:
285B90BB为卡的内码数据,寄存器内高字节在前。
所以:
正码为:
5B28BB90,转换成十进制为:
;
反码为:
90BB285B,转换成十进制为:
;
IC卡应用于MODBUS读写器
操作步骤:
五、使用密码卡更新MODBUS读写器的校验密码,密码卡制作方法如下:
在PC端运行IC卡发卡软件;
Ø选取1-14扇区的任意一个区号(MODBUS读写器只使用一个扇区),自己设定IC卡的A、B密码,将设定的扇区跟密码信息保存起来,方便调试;
Ø连接USB发卡器,发卡器需装驱动,用供应商提供的驱动完成安装;
Ø将IC卡放在USB发卡器感应区,点击制作密码卡按键,制作成功按照提示,将密码卡拿到MODBUS读写器感应区刷卡更新校验密码;
其他IC卡必须要初始化(密码卡除外),方法如下:
Ø选填好之前制作密码卡时设定的区号跟卡的A/B密码;
Ø连接USB发卡器,发卡器需装驱动,用供应商提供的驱动完成安装;
Ø将IC卡放在USB发卡器感应区,点击初始化IC卡按键,初始化成功的IC卡即可拿到刷过对应密码卡的MODBUS读写器上进行读写操作;
Modbus读写器操作初始化成功的IC卡
六、读、写卡说明
Ø写卡操作:
第一步,用06或10(十六进制)指令更新40011至40034寄存器内容(顺序对应卡内48字节内容),如果只用到40011到40034中的几个寄存器,其他寄存器可以不理会(不需要更新)。
第二步,用功能码06(不能用10)
写值00004到40008寄存器,作用是40011至40034寄存器的数据写到卡中。
写值00020(十六进制为00014)到40008寄存器,作用是40011至40034寄存器的数据写到指定的卡中。
卡号用40009,40010寄存器指定。
第三步,读40008寄存器看是否第0位为1表示写卡成功。
读40008寄存器尽量在写40008寄存器后马上操作。
Ø读卡操作:
第一步:
用功能码06(不能用10)
写值00008到40008寄存器,作用是将卡上的内容更新到40011至40034寄存器中。
写值00024(十六进制为00018)到40008寄存器,是将指定卡上的内容更新到40011至40034寄存器中。
卡号放到40009,40010寄存器。
第二步,读40008寄存器看是否第1位为1表示读卡成功,此时40009、40010、40011至40034中的数据才有效。
读40008寄存器尽量在写40008寄存器后马上操作。
第三步,用03指令读40011至40034寄存器中的内容。
IC卡结构
七、IC卡的技术特性
Ø分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
Ø每个扇区有独立的一组密码及访问控制
Ø每张卡有唯一序列号,为32位
Ø具有防冲突机制,支持多卡操作
Ø无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
Ø数据保存期为10年,可改写10万次,读无限次
Ø工作温度:
-20℃~50℃
Ø工作频率:
13.56MHZ
Ø通信速率:
106KBPS
八、IC卡的存储结构
M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:
区号
名称
绝对块号
绝对块号
绝对块号
绝对块号
(密码区)
0
基本信息区
0
1
2
3
1
4-63
4
5
6
7
2
8
9
10
11
3
12
13
14
15
4
16
17
18
19
5
20
21
22
23
6
24
25
26
27
7
28
29
30
31
8
32
33
34
35
9
36
37
38
39
A
40
41
42
43
B
44
45
46
47
C
48
49
50
51
D
52
53
54
55
E
56
57
58
59
F
60
61
62
63
比如定义IC卡第3扇区0、1、2块的存储结构:
说明:
1.BCC为所有字节累加和;
2.卡片余额为十六进制,字节倒叙,单位:
分钱比如100元钱表示为102700
3.认证KEY_B之后可以对卡片进行读写操作。
IC卡存储块与MODBUS读写器寄存器的对应关系
九、读写器寄存器与IC卡某扇区0、1、2块字节的对应关系
寄存器
40011
40012
40013
40014
40015
40016
40017
40018
块0字节
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
寄存器
40019
40020
40021
40022
40023
40024
40025
40026
块1字节
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
寄存器
40027
40028
40029
40030
40031
40032
40033
40034
块2字节
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
USB发卡器读写IC卡的DEMO
因为大家很多都是初次接触IC卡方面的操作,不熟悉IC卡信息的读写,所以提供我们usb读写器PC端的读写简单DEMO(如需要对发卡器进行二次开发,可以联系索取发卡器的SDK),方便大家在调试时进行IC卡数据信息的对比。
比如设定制作密码卡时选取的扇区区号是1,A、B密码都是。
进行MODBUS读写器IC卡读写操作后,可以使用该demo读取或者写IC卡数据进行调试。
PLC与读写器的连接
西门子S7-200
信捷的PLC(一体机),型号XP3-18R
欧姆龙CP1EN60
关键的数据格式书写
Modbus地址
通常Modbus地址由5位数字组成,包括起始的数据类型代号,以及后面的偏移地址。
ModbusMaster协议库把标准的Modbus地址映射为所谓Modbus功能号,读写从站的数据。
ModbusMaster协议库支持如下地址:
∙00001-09999:
数字量输出(线圈)
∙10001-19999:
数字量输入(触点)
∙30001-39999:
输入数据寄存器(通常为模拟量输入)
∙40001-49999:
数据保持寄存器
ModbusMaster协议库支持的功能
为了支持上述Modbus地址的读写,ModbusMaster协议库需要从站支持下列功能:
表1.需要从站支持的功能
Modbus地址
读/写
Modbus从站须支持的功能
00001-09999
数字量输出
读
功能1
写
功能5:
写单输出点
功能15:
写多输出点
10001-19999
数字量输入
读
功能2
写
-
30001-39999
输入寄存器
读
功能4
写
-
40001-49999
保持寄存器
读
功能3
写
功能6:
写单寄存器单元
功能16:
写多寄存器单元
如何理解Modbus地址与功能码的区别?
Modbus地址与Modbus的功能码是两个层次的概念。
根据Modbus通信协议,Modbus数据的地址使用0xxxx、1xxxx、3xxxx和4xxxx的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。
在使用S7-200的指令库时,Modbus数据地址与S7-200的I/O和数据存储区地址间有特定的对应关系。
有些设备表明它支持ModbusRTU通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定Modbus站的地址,需要读写数据类型、长度等等。
数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能1指定读取单个/多个数字量输出点的值。
支持Modbus协议的设备或软件,使用时用户直接设置或看到的应当是Modbus数据地址。
Modbus地址所访问的数据,是通过各种“功能”读写而来。
功能码是Modbus地址的底层。
如果Modbus通信的一方提供的所谓Modbus协议只有功能码,则需要注意了解此功能号与Modbus地址间的对应关系。
使用modbus地址时应注意下述问题:
1)40001~4xxxx是美国modicon公司和ge公司plc使用的modbus地址,它是基于1的地址,即同类元件的首地址为1。
西门子plc的modbus地址是基于0的地址。
2)美国的modbus地址左起第2位用来表示元件的类型,例如i0.0的modbus地址为010001。
因为数据类型已经包含在功能码中了,西门子的i0.0的modbus地址实际上为000000,i2.0的modbus地址为000016(或十六进制数16#0010),而不是010017。
其他问题:
1、modbus的保持和输入寄存器是以word(16bit)为单位的。
(Dataispackedastwobytesperregister.)
比如4****(保持寄存器/输出寄存器)和3****(输入寄存器)是以字为单位的。
所以,如果读40001寄存器开始的一个16位的无符号数,那么返回2个Byte,并可以从40002开始读下一个16位的无符号数。
但是,如果读40001寄存器开始的一个32位浮点数,那么,返回4个Byte,而且,下一个32位浮点数必须从40003开始。
客户问题:
1)、将40001定义为一个Byte的数据;
2)、将40001定义为32位浮点数,40002为下一个32位浮点数。
我们可以参考一下国标GBT_19582-12008(基于Modubs协议的工业自动化网络规范)的功能码表:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MODBUS 读写 功能 寄存器 说明