通信電纜 網絡設備 無線通信 云計算|大數據 顯示設備 存儲設備 網絡輔助設備 信號傳輸處理 多媒體設備 廣播系統 智慧城市管理系統 其它智慧基建產品
廣州榮士電子有限公司電子渠道
閱讀:3381發布時間:2016-11-9
溫馨提示:如果大家是初次接觸IC卡讀寫操作的,建議先了解IC卡的結構,然后了解IC卡是怎么應用于MODBUS讀寫器,zui后再根據MODBUS讀寫器寄存器說明進行對IC卡的相讀、寫操作(如果已經比較熟悉IC卡的使用,直接看寄存器的說明即可 ).此文檔對這些都有比較詳細的描述,使用過程中遇到任何問題,互相討論學習。
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塊的存儲結構:
說明:
IC卡存儲塊與MODBUS讀寫器寄存器的對應關系
寄存器與IC卡某扇區0、1、2塊字節的對應關系
寄存器 | 00010 | 00011 | 00012 | 00013 | 00014 | 00015 | 00016 | 00017 | ||||||||
塊0字節 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
寄存器 | 00018 | 00019 | 00020 | 00021 | 00022 | 00023 | 00024 | 00025 | ||||||||
塊1字節 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
寄存器 | 00026 | 00027 | 00028 | 00029 | 00030 | 00031 | 00032 | 00033 | ||||||||
塊2字節 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
IC卡應用于MODBUS讀寫器
(附四:PC端軟件讀寫卡測試流程)
操作步驟:
在PC端運行IC卡發卡軟件;
其他IC卡必須要初始化(密碼卡除外),方法如下:
Modbus讀寫器操作初始化成功的IC卡
*步,用06或10(十六進制)指令更新00010至00033寄存器內容(順序對應卡內48字節內容),如果只用到00010到00033中的幾個寄存器,其他寄存器可以不理會(不需要更新)。
第二步,用功能碼06(不能用10)
寫值00004到00007寄存器,作用是將00010至00033寄存器的數據寫到卡中。
寫值00020(十六進制為00014)到00007寄存器,作用是將00010至00033寄存器的數據寫到的卡中,卡號用00008,00009寄存器。
第三步,讀00007寄存器看是否第0位為1表示寫卡成功。讀00007寄存器盡量在寫00007寄存器后馬上操作。
*步:用功能碼06(不能用10)
寫值00008到00007寄存器,作用是將卡上的內容更新到00010至00033寄存器中。
寫值00024(十六進制為00018)到00007寄存器,是將卡上的內容更新到00010至00033寄存器中。卡號放到00008,00009寄存器。
第二步,讀00007寄存器看是否第1位為1表示讀卡成功,此時00008、00009、00010至00033中的數據才有效。讀00007寄存器盡量在寫00007寄存器后馬上操作。
第三步,用03指令讀00010至00033寄存器中的內容。
IC-10MRT型MODBUS讀寫器功能及寄存器說明
注:西門子PLC 中的40001寄存器對應于本讀寫器的00000寄存器,以此類推(下面有關于寄存器的說明都是以本讀寫器的說明為準)。
00000:存放讀卡器的站號(機號),可讀可寫,寫可以更改站號,只能用06功能碼,可用03寄存器來讀或連讀。
00001:在讀寫型的MODBUS讀寫器中為無效寄存器。
00002:驅動讀卡器響聲,只能用06功能碼,可用03寄存器來讀或連讀。 如寫為0表示短滴一聲,如下表
表1
1 | 短滴一聲 |
2 | 短滴兩聲 |
3 | 短滴三聲 |
4 | 長鳴一聲 |
5 | 長鳴兩聲 |
6 | 長鳴三聲 |
7 | 一長一短 |
8 | 一長兩短 |
9 | 一長三短 |
10 | 兩長一短 |
11 | 兩長兩短 |
12 | 兩長三短 |
其他 | 短滴一聲 |
00003至00006寄存器保留,暫不使用
00007寄存器為讀寫卡控制寄存器:只能用06功能碼寫,可用03寄存器來讀或連讀。
表2
15~8位 | 7~6位 | 5位 | 4位 | 3位 | 2位 | 1位 | 0位 |
自定義 | 自定義 | 為1表示IC卡密碼錯,對應IC卡的密碼要通過密碼管理卡在MODUBS讀卡器上設定 | 為1表示卡在感應區且返回卡號在00008、00009寄存器,且讀或寫僅對卡號的卡有效 | 寫1驅動讀卡操作,讀寄存器這個位只能讀出0 | 寫1驅動寫卡操作,讀寄存器這個位只能讀出0
| 讀卡成功 | 寫卡成功 |
00008至00009共2個寄存器存放IC卡卡號(4個字節)。
00010至00033共24個寄存器對應于IC卡的扇區內48字節內容。
波特率出廠時默認為19200,波特率有4800,9600,19200,38400四檔可設,在00060寄存器中寫入波特率值,再在00061寄存器中寫入21930(十六進制為0)。如需將波特率改為9600,在00060寄存器寫入9600,接著在一秒中內在00061寄存器中寫入21930。
校驗位出廠是為N(None),也就是無校驗,共有None無、Odd奇、Even偶、Mask常1、Space常0五種方式可設,在00062寄存器中寫入0~4中的一個值(分別對應None、Odd、Even、Mask、Space),再在00063寄存器中寫入21930(十六進制為0)。也可以采用連寫00062、00063兩個寄存器,也就是用功能碼10(十六進制)。如需將校驗為改為為None,在00062寄存器寫入0,接著在一秒中內在00062寄存器中寫入21930。
在數據報文層面,寄存器起始地址都是從0開始。數據報文格式:設備地址+功能碼+起始地址+寄存器個數+校驗碼。其中起始地址是從0開始的。
如:從站號2讀卡器讀取00008開始的兩個寄存器數據的報文
發送:
設備地址 功能碼 起始地址 寄存器個數 校驗碼(CRC16)
02 03 00 08 00 02 45 FA
成功返回:
設備地址 功能碼 數據長度 數據信息 校驗碼(CRC16)
02 03 04 28 5B 90 BB 9D 33
其中:285B 90BB 為卡的內碼數據(每張卡的卡號是*的),寄存器內高字節在前。
所以卡號為:
正碼為:5B28BB90,轉換成十進制為:1529396112;
反碼為:90BB285B, 轉換成十進制為:2428184667;
USB發卡器讀寫IC卡的DEMO
因為大家很多都是初次接觸IC卡方面的操作,不熟悉IC卡信息的讀寫,所以提供我們usb讀寫器PC端DEMO(如需要對發卡器進行二次開發,可以廠商提供發卡器的SDK),方便大家在調試時進行IC卡數據信息的對比。比如設定制作密碼卡時選取的扇區區號是1,A、B密碼都是111111111111。進行MODBUS讀寫器IC卡讀寫操作后,可以使用該demo讀取或者寫IC卡數據進行對比調試。
附一:MODBUS讀卡器與不同廠家PLC的連接
西門子S7-200
信捷的PLC(一體機),型號XP3-18R
歐姆龍CP1E N60
關鍵的數據格式書寫
附二:MODBUS讀卡器尺寸與接線示意圖
(外殼尺寸 ,(長×寬×高)11.6cm×7.5cm× 1.5cm)
接線網絡拓補圖
接線示意圖
附四:PC端軟件測試流程
制作密碼卡(只需制作一張)保存好填寫的區號、A密碼、B密碼;拿密碼卡到modbus讀寫器刷卡,“滴滴”兩聲表示設定成功:
初始化IC卡,密碼卡不要用來初始化,此處填寫區號、A密碼、B密碼要跟制作密碼卡時的一致。
MODBUS讀寫器讀卡測試:
寫卡操作,流程基本等同于讀卡,這里就不做截圖了,操作流程如下:
智慧城市網 設計制作,未經允許翻錄必究 .? ? ?
請輸入賬號
請輸入密碼
請輸驗證碼
請輸入你感興趣的產品
請簡單描述您的需求
請選擇省份