Modbus讀寫器YW-630是以RS485總線,基于標準Modbus-rtu通信協議而研發的一款全新的
IC卡讀卡器,具有可讀和寫非接觸IC的所有功能。非常方便將IC卡嵌入到各個PLC為核心的工程中。
要輕松順利的開發帶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字節。
在讀寫某個數據塊之前,必須首先進行密鑰認證,如果密鑰認證失敗,則不能讀寫,只有認證成功,方可進行讀寫等操作。每個扇區共用一組密鑰,所以一個扇區只要認證成功一次,就可以讀寫此扇區中的四個數據塊。
寄存器地址
寄存器名稱
寄存器默認值
寄存器值說明
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寄存器進行加減運算后,再執行寫操作就可以了。