NFC主板modbus协议
<p><strong>基础信息:</strong>
波特率:115200
节点号:1</p>
<p>CRC16计算工具:(选择CRC-16/MODBUS模式,注意计算值是高位在后,需要改为高位在前)
<a href="http://www.ip33.com/crc.html">http://www.ip33.com/crc.html</a></p>
<p><strong>注意:</strong>
1、写sn会初始化钱包;
2、读取时,如果出现错误会立即结束,读到多少个块返回多少块;
3、写时,返回数据代表设备接受指令,是否执行成功需要读寄存器确认;
4、执行初始化卡指令时,需要卡片是空白卡,即所有扇区密码(FFFFFFFFFFFF)、权限(FF 07 80 69)都是默认 ;
5、扇区0为保留扇区,不可写sn,默认【扇区3】为业务扇区;
6、推荐卡片权限设置为【08778F69】,即密码A可读、可扣款,密码B可写、可充值;</p>
<p><strong>发卡主机配置流程:</strong>
1、设备配置:设置业务扇区地址--设置密码A--设置密码B
2、初始化卡片:初始化指令(修改所有扇区权限)--写入sn
3、日常使用:查询序列号/查询卡号/扣款/充值/查询金额/修改自动扣款金额</p>
<p><strong>日常使用流程:</strong>
1、设备配置:设置业务扇区地址--设置密码A--设置自动扣款金额
2、日常使用:刷卡自动扣款(返回卡号、sn、扣款后金额)/ 指令读取钱包、sn、卡号</p>
<p><strong>查询指令:</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">功能</th>
<th style="text-align: left;">指令</th>
<th style="text-align: left;">返回</th>
<th style="text-align: left;">鉴权密码</th>
<th style="text-align: left;">寄存器地址</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">读读卡器默认读写块地址</td>
<td style="text-align: left;">01 03 0FA0 0001 873C</td>
<td style="text-align: left;">01 03 02 00 03 F8 45</td>
<td style="text-align: left;">|4000</td>
</tr>
<tr>
<td style="text-align: left;">读读卡器设置的密码A</td>
<td style="text-align: left;">01 03 0FA1 0003 573D</td>
<td style="text-align: left;">01 03 06 01 02 03 04 05 06 9B B3</td>
<td style="text-align: left;">|4001</td>
</tr>
<tr>
<td style="text-align: left;">读M1卡权限</td>
<td style="text-align: left;">01 03 0FA4 0002 86FC</td>
<td style="text-align: left;">01 03 04 FF 07 80 69 DA 08</td>
<td style="text-align: left;">密码B</td>
<td style="text-align: left;">4004</td>
</tr>
<tr>
<td style="text-align: left;">读读卡器设置的密码B</td>
<td style="text-align: left;">01 03 0FA6 0003 E6FC</td>
<td style="text-align: left;">01 03 06 FF FF FF FF FF FF 20 FA</td>
<td style="text-align: left;">|4006</td>
</tr>
<tr>
<td style="text-align: left;">读M1卡钱包</td>
<td style="text-align: left;">01 03 0FA9 0002 173F</td>
<td style="text-align: left;">01 03 04 06 22 CD 1B 4E 2A</td>
<td style="text-align: left;">密码A</td>
<td style="text-align: left;">4009</td>
</tr>
<tr>
<td style="text-align: left;">读M1卡内写入的序列号</td>
<td style="text-align: left;">01 03 0FAB 0008 36F8</td>
<td style="text-align: left;">01 03 10 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 40 EF</td>
<td style="text-align: left;">密码A</td>
<td style="text-align: left;">4011</td>
</tr>
<tr>
<td style="text-align: left;">读M1卡号</td>
<td style="text-align: left;">01 03 0FB3 0002 36F8</td>
<td style="text-align: left;">01 03 04 06 22 CD 1B 4E 2A</td>
<td style="text-align: left;">|4019</td>
</tr>
<tr>
<td style="text-align: left;">读NTAG卡号</td>
<td style="text-align: left;">01 03 0F B3 00 04 B6FA</td>
<td style="text-align: left;">01 03 08 88 04 E3 D3 01 67 04 03 B8 B2</td>
<td style="text-align: left;">|4019</td>
</tr>
</tbody>
</table>
<p>如果485电路仅有一个节点,可以使用FE通配地址与设备通信:
读本机块地址:FE 03 0F A0 00 01 9333
读本机密码A :FE 03 0F A1 00 03 4332
读M1卡权限 :FE 03 0F A4 00 02 92F3
读本机密码B :FE 03 0F A6 00 03 F2F3
读钱包 :FE 03 0F A9 00 02 0330
读序列号 :FE 03 0F AB 00 08 22F7
读卡号 :FE 03 0F B3 00 02 22F7</p>
<p><strong>修改指令:</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">功能</th>
<th style="text-align: left;">指令</th>
<th style="text-align: left;">返回</th>
<th style="text-align: left;">鉴权密码</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">改为操作3扇区</td>
<td style="text-align: left;">01060FA00003CAFD</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">\</td>
</tr>
<tr>
<td style="text-align: left;">设置A密码为默认密码</td>
<td style="text-align: left;">01100FA1000306FFFFFFFFFFFF805C</td>
<td style="text-align: left;">01 10 0F A1 00 03 D2 FE</td>
<td style="text-align: left;">\</td>
</tr>
<tr>
<td style="text-align: left;">使用默认密码B写入卡片权限</td>
<td style="text-align: left;">01100FA400050AFF078069FFFFFFFFFFFF08B2</td>
<td style="text-align: left;">01 10 0F A4 00 05 42 FD</td>
<td style="text-align: left;">密码B</td>
</tr>
<tr>
<td style="text-align: left;">设置密码B为默认密码</td>
<td style="text-align: left;">01100FA6000306FFFFFFFFFFFF3186</td>
<td style="text-align: left;">01 10 0F A6 00 03 63 3F</td>
<td style="text-align: left;">\</td>
</tr>
<tr>
<td style="text-align: left;">扣款2</td>
<td style="text-align: left;">01100FA900020400000002F98C</td>
<td style="text-align: left;">01 10 0F A9 00 02 92 FC</td>
<td style="text-align: left;">密码A</td>
</tr>
<tr>
<td style="text-align: left;">写序列号[序列号必须是16位】</td>
<td style="text-align: left;">01100FAB000810303132333435363738393031323334357F47</td>
<td style="text-align: left;">01 10 0F AB 00 08 B3 3B</td>
<td style="text-align: left;">密码B</td>
</tr>
<tr>
<td style="text-align: left;">初始化权限</td>
<td style="text-align: left;">01100FB700050AFF078069FFFFFFFFFFFF1A61</td>
<td style="text-align: left;">01 10 0F B7 00 05 B3 38</td>
<td style="text-align: left;">密码B</td>
</tr>
<tr>
<td style="text-align: left;">充值2</td>
<td style="text-align: left;">01100FBC0002040000000238BF</td>
<td style="text-align: left;">01 10 0F BC 00 02 83 38</td>
<td style="text-align: left;">密码B</td>
</tr>
</tbody>
</table>
<pre><code>改扇区到02 01060FA000020B3D
设置A密码为【010203040506】 01100FA10003060102030405063B15
使用0102030405密码B,写入默认权限 01100FA400050AFF078069010203040506B3FB
设置密码B为【010203040506】 01100FA60003060102030405068ACF
使用默认密码设置扇区权限为【08778F69】 01100FA400050A08778F69FFFFFFFFFFFF9929
读钱包+sn : 01030FA9000A16F9 01 03 14 00 00 00 34 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 51 1F
读钱包+sn+id : 01030FA9000C96FB 01 03 18 00 00 00 34 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 06 22 CD 1B 6A 4C
</code></pre>
<p><strong>系统级指令:</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">功能</th>
<th style="text-align: left;">指令</th>
<th style="text-align: left;">返回</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">01节点2S后重启</td>
<td style="text-align: left;">010603E800FF49FA</td>
<td style="text-align: left;">01 06 03 E8 00 FF 49 FA</td>
</tr>
<tr>
<td style="text-align: left;">改485节点号为15</td>
<td style="text-align: left;">010603E9000F187E</td>
<td style="text-align: left;">0F 06 03 E9 00 0F 19 50</td>
</tr>
<tr>
<td style="text-align: left;">改485波特率为9600</td>
<td style="text-align: left;">010603EA0003E87B</td>
</tr>
<tr>
<td style="text-align: left;">改为操作3扇区地址</td>
<td style="text-align: left;">01060FA00003CAFD</td>
</tr>
</tbody>
</table>
<p>注意:修改波特率后需重启生效,修改节点地址立即生效;</p>
<pre><code>15节点2S后重启 0F0603E800FF48D4
改485节点号为1 0F0603E900019894
改485波特率为115200 010603EA0008A9BC</code></pre>
<h2>童车扩展数据</h2>
<p>--读电池电量
01 03 1389 0001 5164</p>
<p>--写锁状态
01 06 138A 0000 ACa4 --关锁状态
01 06 138A 0001 6D64 --开锁状态</p>
<h2>童车NFC模块使用流程</h2>
<p>1、NFC模块设置读写密码,如果不需要发卡,仅设置密码A即可
①设置A密码为【313233343536】 01 10 0FA1 0003 06 313233343536 65fa
②设置密码B为【313233343536】 01 10 0FA6 0003 06 313233343536 D420
2、发卡
①使用默认密码设置扇区权限为【08778F69】 01 10 0FA4 0005 0A 08778F69 FFFFFFFFFFFF 9929 //修改整个认证块数据,包含密码A、密码B、权限
②写入序列号 01 10 0FAB 0008 10 31353130313030313130313334353536 EA08
3、日常使用
③读序列号 01 03 0FAB 0008 36F8</p>
<hr />
<h2>通用节点ID常用操作</h2>
<pre><code class="language-c">修改节点号:
FE 06 03E9 0001 8DB5 【改成1】
FE 06 03E9 0002 CDB4 【改成2】
FE 06 03E9 0003 0C74 【改成3】
FE 06 03E9 0004 4DB6 【改成4】
FE 06 03E9 0005 8C76 【改成5】
FE 06 03E9 0006 CC77 【改成6】
FE 06 03E9 0007 0DB7 【改成7】
FE 06 03E9 0008 4DB3 【改成8】
重启:
FE 06 03E8 00FF 5DF5
1、NFC模块设置读写密码,如果不需要发卡,仅设置密码A即可
①设置A密码为【313233343536】 FE 10 0FA1 0003 06 313233343536 3104
②设置密码B为【313233343536】 FE 10 0FA6 0003 06 313233343536 80DE
2、发卡
①使用默认密码设置扇区权限为【08778F69】 FE 10 0FA4 0005 0A 08778F69 FFFFFFFFFFFF E8e9 //修改整个认证块数据,包含密码A、密码B、权限
②写入序列号 FE 10 0FAB 0008 10 31353130313030313130313334353536 E0F8
3、日常使用
③读序列号 FE 03 0FAB 0008 22F7</code></pre>