Dokumentacja Techniczna MM-005. MM005-doc-00.07 odniesienie do MM005-c-00.05+



Podobne dokumenty
UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

RS-H0-06 BZ M12. Czytnik RFID MHz Mifare. Karta produktu

RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika

1W-H3-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID 125 khz Unique. Karta produktu

Dokumentacja Techniczna. Czytnik RFID UW-M4GM

1W-H0-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID MHz Mifare. Karta produktu

Kod produktu: MP01611

POWER LINE MODEM PMM-1 VER. 2.2

Dokumentacja Techniczna. Czytnik RFID. CTU-Pxx. CTU-Pxx-man-v1.pdf. Rys. 1 CTU-P2R

RFID. Czytniki RFID. Instrukcja rev. 1.01

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Kod produktu: MP01611-ZK

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Dokumentacja Techniczna. Czytnik RFID UW-U4A

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

Dokumentacja Techniczna. Czytnik RFID NANO-MS. Rys. NANO-MS

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

1W-H3U-05. Czytnik RFID 125 khz UNIQUE. Karta produktu

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

Kod produktu: MP01611-ZK

TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

Instrukcja integracji urządzenia na magistrali Modbus RTU. wersja 1.1

1W-H3-05(K)* Czytnik RFID 125 khz Unique. Instrukcja

Instrukcja obsługi czytnika MM-R32

Przemysłowy odtwarzacz plików MP3

Instrukcja integracji urządzenia na magistrali Modbus RTU

RFID. Czytniki RFID. Instrukcja rev. 1.02

Programator Kart Master - klient

Kod produktu: MP01105

Mini Modbus 1AI. Moduł rozszerzający 1 wejście analogowe, 1 wyjście cyfrowe. Wyprodukowano dla

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Dokumentacja Techniczna. Czytnik RFID UW-U4G UWAGA! DOKUMENTACJA MA CHARAKTER POUFNY I STANOWI WŁASNOŚĆ FIRMY NETRONIX SP. Z O.O.

Dokumentacja techniczna. Czytnik RFID PAC-MUG. obowiązuje od wersji firmware PAC_MU-v9

Dokumentacja techniczna

dokument DOK wersja 1.0

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

RS485 MODBUS Module 16RO

RS485 MODBUS Module 16O

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

RS485 MODBUS Module 16RO

Dokumentacja Techniczna dla instalatora. Czytnik RFID UW-U4GE

Instrukcja MM-717 Tarnów 2010

RS485 MODBUS Module 8AI

Przemysłowy odtwarzacz plików MP3 SD

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

Centrala alarmowa ALOCK-1

RS485 MODBUS Module 8I8O

Dokumentacja Techniczna. Czytnik RFID MM-U57D MM-D5 MM-Z5. MM-U57D-v6

RS485 MODBUS Module 16O

SDM-16RO. Moduł rozszerzający 16 wyjść przekaźnikowych. wyprodukowano dla

Mini Modbus 1AO. Moduł rozszerzający 1 wyjście analogowe, 2 wyjście cyfrowe. Wyprodukowano dla

INSTRUKCJA OBSŁUGI PRZYSTAWKI PEN-01 DO PENDRIVE A

SDM-8AO. Moduł rozszerzający 8 wyjść analogowych. wyprodukowano dla

DODATEK A OPIS INTERFEJSU SIECIOWEGO FMP300

RS485 MODBUS Module 6TE

2. Format danych i zaimplementowane funkcje MODBUS

CZYTNIK ZBLIŻENIOWY RFID-UR80D-12KL

MiniModbus 4DI. Moduł rozszerzający 4 wejścia cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 8AI

RS485 MODBUS Module 8AO

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

RS485 MODBUS Module 6TE

Kod produktu: MP01105T

RS485 MODBUS Module 6RO

TX-RFID1 Moduł elektroniczny RFID Instrukcja

SDM-8I8O. Moduł rozszerzający 8 wejść cyfrowych, 8 wyjść cyfrowych. wyprodukowano dla

RS485 MODBUS Module 6RO

Czytnik transponderów MIFARE i UNIQUE w obudowie naściennej

Mini Modbus 1TE. Moduł rozszerzający 1 wejście temperaturowe, 1 wyjście cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 6RO

MiniModbus 4DI-M. Moduł rozszerzający 4 wejścia cyfrowe z pamięcią liczników. Wyprodukowano dla

Opis systemu topto v 3.01 topto

TX-RFID1 Moduł elektroniczny RFID Instrukcja

Instrukcja obsługi Czytnika RFID MODBUS RFID-MB-10. INVEO s.c. ul. Rzemieślnicza Kozy tel:

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

SDM-8AI. Moduł rozszerzający 8 wejść analogowych. wyprodukowano dla

INSTRUKCJA UŻYTKOWNIKA MPCC

1. Warstwa fizyczna. 2. Organizacja transmisji.

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Instrukcja obsługi. Przetwornik pomiarowy dla czujników siły FlexiForce. Programowalny moduł z wyjściem 0..10V, OC i RS485 (MODBUS)

Programowanie Mikrokontrolerów

LSPY-21 LISTWOWY MODUŁ WYJŚĆ ANALOGOWYCH DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, październik 2003 r.

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Spis treści. 1 Moduł RFID (APA) 3

Przemysłowy odtwarzacz plików MP3 SD ze wzmacniaczem 2x10 Watt

SDM-6TE. Moduł rozszerzający 6 wejść temperaturowych. wyprodukowano dla

Opis czytnika TRD-FLAT 2LN ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Instrukcja Obsługi. Modułu wyjścia analogowego 4-20mA PRODUCENT WAG ELEKTRONICZNYCH

SDM-6RO. Moduł rozszerzający 6 wyjść przekaźnikowych. wyprodukowano dla

Przetwornik pomiarowy dla czujników siły FlexiForce

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

MODBUS 40. Instrukcja instalatora modułu komunikacyjnego IHB

SDM-16I. Moduł rozszerzający 16 wejść cyfrowych. wyprodukowano dla

HP-1 parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

CM Konwerter ModBus RTU slave ModBus RTU slave

RS485 MODBUS Module 8I8RO

Transkrypt:

Dokumentacja Techniczna MM-005 MM005-doc-00.07 odniesienie do MM005-c-00.05+

Spis Treści Spis Treści.. 2 Wprowadzenie... 3 Dane techniczne. 3 Opis wyprowadzeń... 4 Schemat połączeń... 5 Wymiary 5 Ogólny format rozkazu dla czytnika 6 Ogólny format odpowiedzi z czytnika... 6 Opis rozkazów... 7 Rozkazy wysokiego poziomu... 7 Zapis 16 bajtów do bloku... 7 Odczyt 16 bajtów z bloku... 7 Inkrementowanie wartości zapisanej w bloku... 8 Dekrementowanie wartości zapisanej w bloku... 8 Rozkazy niskiego poziomu 9 Załączenie pola elektromagnetycznego anteny... 9 Wyłączenie pola elektromagnetycznego anteny... 9 Wywołanie ogólne dla kart... 9 Załadowanie klucza do podręcznego bufora klucza... 10 Załadowanie klucza do nie ulotnej pamięci kluczy... 10 Logowanie do sektora przy użyciu podręcznego bufora klucza.. 10 Logowanie do sektora przy użyciu nie ulotnej pamięci kluczy... 11 Zapis 16 bajtów do bloku... 11 Odczyt 16 bajtów z bloku... 11 Kopiowanie 16 bajtów z bloku do bloku... 11 Zapisanie wartości do bloku. 12 Odczytanie wartości z bloku 12 Inkrementowanie wartości zapisanej w bloku... 12 Dekrementowanie wartości zapisanej w bloku... 13 Transfer danych z rejestru transpondera do wybranego bloku... 13 Wprowadzenie transpondera w stan uśpienia... 13 Rozkazy zarządzające portami I/O użytkownika... 14 Ustawienie portu jako wyjście z jednoczesnym ustawieniem stanu... 14 Ustawienie portu jako wejście z jednoczesnym odczytem stanu. 14 Rozkazy dodatkowye... 14 Ustawienie wzmocnienia układu odbierającego dane z transpondera. 14 Ustawienie prędkości UART a... 14 Nadanie modułowi u na magistrali RS... 15 Odczyt numeru wersji oprogramowania. 15 Obliczanie CRC 15 Przykłady obsługi transpondera Mifare przy pomocy MM-005. 16 Praca z funkcjami wysokiego poziomu... 17 Przykład 1 Zapis 16 bajtów do bloku.. 17 Przykład 2 Dekrementowanie wartości zapisanej w bloku. 18 Praca z funkcjami niskiego poziomu... 20 Przykład 3 Dekrementowanie wartości zapisanej w bloku. 20 2

Wprowadzenie MM-005 jest modułem działającym na zasadzie bezstykowego odczytywania i zapisywania danych z/do transpondera Mifare (RFID). Obsługiwany jest za pomocą łącza RS-232 z poziomami napięć zgodnymi z TTL. Urządzenie działa na zasadzie: pytanie (z urządzenia nadrzędnego - hosta) - akcja () - odpowiedź (). Do MM-005 wysyłamy pytanie-rozkaz: rozkaz dane CRCH, xx xx xx xx xx xx xx xx moduł MM-005 Energia RF zapis sektor 0 block bloki transpondera z zapisanymi danymi 0 B1....................... B16 1 B1....................... B16 2 B1....................... B16 3 B1....................... B16 odczyt...... 15 lub 39 odpowiedź dane kod operacji CRCH, xx xx xx xx xx xx xx xx Moduł posiada 2 porty użytkownika (1-no bitowe) które mogą być odczytywane lub zapisywane. Do MM-005 należy podłączyć antenę w postaci cewki powietrznej która emitowała będzie pole elektromagnetyczne a tym samym zasilała będzie transponder znajdujący się w tym polu. Dane techniczne Napięcie zasilające Uz:........................... 4,5...5,5V Prąd zasilający:................................. 1...55 ma Znamionowa częstotliwość RF pracy......... 13,56 MHz Prędkość danych odbieranych z transpondera......... 106 kb/s (10us/bit) Czas zapisu bloku danych........................ 6ms + transmisja RS Czas odczytu bloku danych....................... 2,5ms + transmisja RS Czas typowej tranzakcji biletowej *................. 70ms + transmisja RS Wydolność prądowa wyjść: port1...4 i RS-TX..... 10mA Max. odległość odczytu/zapisu transponderów w zależności od zastosowanej anteny:............... 5...10 cm Antena........................................ Zewnętrzna wraz z kondensatorami ustalającymi rezonans dla 13,56MHz Transmisja..................................... 1200...115200 b/s, 8 bitów danych, 1 bit stopu, bez bitu parzystości, na poziomach napięciowych zgodnych z TTL (fabrycznie: 9600 b/s) *odświeżenie 2 wartości i odczytanie 2 bloków 3

Opis wyprowadzeń RX TX PORT2 PORT1 /RESET /ENABLE LEDK LEDA GND VDD 11 12 13 14 15 16 17 18 19 20 30.6 x 25.4 mm 10 9 8 7 6 5 4 3 2 1 PORT4 PORT3 RFU RFU ANTENNA_GND ANTENNA_TX2 GND VDD ANTENNA_TX1 ANTENNA_RX Wyprowadzenia widziane od strony elementów 1. ANTENNA_RX wejście odbierające dane z transpondera, podłącza się do anteny 2. ANTENNA_TX1 jedno z wyjść dostarczających energię do anteny 3. VDD zasilanie + 4. GND masa układu (zasilanie -) 5. ANTENNA_TX2 jedno z wyjść dostarczających energię do anteny 6. ANTENNA_GND masa anteny, podłącza się odczep anteny 7. NC (not connected)?? 8. NC (not connected)?? 9. PORT3 - wyjście/wejście użytkownika * 10. PORT4 - wyjście/wejście użytkownika * 11. RS232-RX wejście łacza RS-232 na poziomach napięciowych zgodnych z TTL * 12. RS232-TX wyjście łacza RS-232 na poziomach napięciowych zgodnych z TTL * 13. PORT2 - wyjście/wejście użytkownika * 14. PORT1 - wyjście/wejście użytkownika * 15. /RESET wejście zewnętrznego resetu, aktywny stan L * 16. /ENABLE wejście aktywujące moduł, aktywny stan L * 17,18. LEDA, LEDK wyjścia do podłączenia zewnętrznego LED, odpowiednio anoda i katoda 19. GND masa układu (zasilanie -) 20. VDD zasilanie + * Posiada rezystor zabezpieczający 100 Ohm ów 4

Schemat połączeń HOST I/O I/O +5V 11 12 13 14 15 16 17 18 19 20 RX TX PORT2 PORT1 /RESET /ENABLE LEDK LEDA GND VDD PORT4 10 PORT3 9 RFU 8 RFU 7 ANTENNA_GND 6 ANTENNA_TX2 5 GND 4 VDD 3 ANTENNA_TX1 2 ANTENNA_RX 1 I/O I/O +5V L Schemat połączeń z elementami zewnętrznymi Wymiary 1200 mils. 11 10 900 mils. top view Integrated circuit 1000 mils. 20 20 holes with diameter 39 mils. 1 1100 mils. 5

Ogólny format rozkazu dla czytnika Adres Długość Rozkaz Parametry 1..n CRCH 1 bajt 1 bajt 1 bajt n * bajtów 1 bajt 1 bajt Gdzie: AdresModułu - unikalny w systemie Jeżeli: AdresModułu = 0 to nie odpowie żaden moduł AdresModułu = 0xFF to odpowiedzą wszystkie moduły w sieci DługośćRamki - całkowita ilość bajtów Rozkaz - wartość parzysta Parametry1...n - występują opcjonalnie i uzależnione są od rozkazu CRCH, - odpowiednio starszy i młodszy bajt CRC16 Ogólny format odpowiedzi z czytnika Adres Długość Odpowiedź Parametry 1..n Kod operacji CRCH 1 bajt 1 bajt 1 bajt n * bajtów 1 bajt 1 bajt 1 bajt Gdzie: AdresModułu - rzeczywisty nadany odpowiadającego DługośćRamki - całkowita ilość bajtów odpowiedzi Odpowiedź = Rozkaz + 1 (wartość nieparzysta) Parametry1...n - występują opcjonalnie i zależą od rozkazu KodOperacji - informacja o poprawności wykonanego rozkazu CRCH, - odpowiednio starszy i młodszy bajt CRC16 Moduł można przetestować za pomocą narzędziowego, bezpłatnego programu FRAMER ułatwiającego pracę z ramkami. 6

Opis rozkazów Oznaczenia: BlockNo wartość=(0 3) dla MF1ICS50 SectorNo wartość=(0 0x0F) czyli 16 sektorów dla MF1ICS50 Key1...6 klucz za pomocą którego chcemy logować się do sektora KeyType typ klucza za pomocą którego chcemy się logować do sektora. 0xAA dla klucza typu A 0xBB dla klucza typu B. Rozkazy wysokiego poziomu Rozkazy wysokiego poziomu charakteryzują się tym, że mogą one przeprowadzić pełny proces komunikacji z kartą MIFARE. Oznacza to, że załączenie pola, selekcja karty, autoryzacja, proces właściwy, i wyłączenie pola zostaną przeprowadzone automatycznie. Zapis 16 bajtów do bloku C_HLWriteBlock 0x00 Data1...16, SectorNo, BlockNo, Key1...6, KeyType Data1 16 dane do zapisu SectorNo docelowy sektor BlockNo docelowy blok w ramach sektora. A_HLWriteBlock 0x01 OperationKod OperationKod - 0xff-zapis poprawny Odczyt 16 bajtów z bloku C_HLReadBlock 0x02 SectorNo, BlockNo, Key1...6, KeyType SectorNo źródłowy sektor BlockNo źródłowy blok w ramach sektora. A_HLReadBlock 0x03 Data1...16, OperationKod Data1...16 odczytane dane z bloku OperationKod - 0xff-odczyt poprawny 7

Inkrementowanie wartości zapisanej w bloku Rozkaz ten generuje sekwencję odczytu wartości z bloku do wewnętrznego rejestru operacyjnego transpondera data register, inkrementuje tą wartość i wynik zapisuje ponownie do bloku źródłowego. C_HLIncrement 0x04 SectorNo, BlockNo, Value1...4, Key1...6, KeyType SectorNo sektor na którym będzie wykonana operacja BlockNo blok inkrementowany Value1...4 wartość którą chcemy dodać do wartości w bloku BlockNo A_HLIncrement 0x05 OperationKod OperationKod - 0xff-inkrementacja poprawna Aby ta operacja była przeprowadzona pomyślnie, blok BlockNo powinien być sformatowany jako Value. Dekrementowanie wartości zapisanej w bloku Rozkaz ten generuje sekwencję odczytu wartości z bloku do wewnętrznego rejestru operacyjnego transpondera data register, dekrementuje tą wartość i wynik zapisuje ponownie do bloku źródłowego. C_HLDecrement 0x06 SectorNo, BlockNo, Value1...4, Key1...6, KeyType SectorNo sektor na którym będzie wykonana operacja BlockNo blok dekrementowany Value1...4 wartość którą chcemy odjąć od wartości w bloku BlockNo A_HLDecrement 0x07 OperationKod - 0xff-dekrementowanie poprawne Aby ta operacja była przeprowadzona pomyślnie, blok BlockNo powinien być sformatowany jako Value. 8

Rozkazy niskiego poziomu Rozkazy niskiego poziomu charakteryzują się tym że można ich używać w dowolnych sekwencjach bez wielokrotnego załączania/wyłączania pola, wielokrotnej selekcji transpondera i wielokrotnego logowania się do jego sektora. Aplikacja używająca tych rozkazów jest w stanie mieć pełną kontrolę nad wieloma transponderami znajdującymi się w polu Załączenie pola elektromagnetycznego anteny C_TurnOnAntennaPower 0x10 - A_TurnOnAntennaPower 0x11 OperationKod OperationKod zawsze 0xff Wyłączenie pola elektromagnetycznego anteny C_TurnOffAntennaPower 0x44 - A_TurnOffAntennaPower 0x45 OperationKod OperationKod zawsze 0xff Wywołanie ogólne dla kart Rozkaz ten uruchamia pętlę antykolizyjną dla transponderów znajdujących się w polu anteny, wybiera jeden z nich i zwraca jego numer ID. C_Select 0x12 TypeOfRequest TypeOfRequest decydyje o rodzaju wywołania transponderów Gdy: TypeOfRequest=0xff to wywoływane są transpondery znajdujące się w stanie Idle oraz znajdujące się w stanie Halt. Takie wywołanie określane jest jako Request All TypeOfRequest=0x01 to wywoływane są tylko transpondery znajdujące się w stanie Idle. Takie wywołanie określane jest jako Request Standard A_Select 0x13 ID1 4, OperationKod ID1 4 Numer karty, która została wyselekcjonowana OperationKod - 0xff-selekcja poprawna 9

Załadowanie klucza do podręcznego bufora klucza Bufor ten jest zawarty w MM-005 i jest w postaci pamięci RAM. W buforze tym można zapamiętać 1 klucz. Niemożliwe jest odczytanie tego klucza a jedynie logowanie się do sektorów przy jego użyciu. C_LoadKeyBuffer 0x14 Key1 6 Key1 6 klucz, który ma zostać załadowany do bufora klucza A_LoadKeyBuffer 0x15 OperationKod OperationKod - 0xff-operacja poprawna Załadowanie klucza do nie ulotnej pamięci kluczy Bufor ten jest zawarty w MM-005 i jest w postaci pamięci EEPROM. W buforze tym, pod kolejnymi pozycjami, można zapamiętać do 32 kluczy. Niemożliwe jest odczytanie tych kluczy a jedynie logowanie się do sektorów przy ich użyciu. C_LoadEEKeyBuffer 0x16 Key1 6, EEKeyNo Key1 6 klucz, który ma zostać załadowany do nie ulotnej pamięci kluczy EEKeyNo numer pozycji w pamięci =(0...0x1F) A_LoadEEKeyBuffer 0x17 OperationKod OperationKod - 0xff-operacja poprawna Logowanie do sektora przy użyciu podręcznego bufora klucza C_LoginWithKB 0x18 SectorNo, KeyType SectorNo numer sektora do którego chcemy się zalogować KeyType decyduje o tym jak klucz znajdujący się w buforze klucza będzie traktowany podczas logowania. Gdy KeyType =0xAA to klucz traktowany będzie jak typu A, jeżeli KeyType =0xBB to klucz traktowany będzie jak typu B A_LoginWithKB 0x19 OperationKod OperationKod - 0xff-logowanie poprawne 10

Logowanie do sektora przy użyciu nie ulotnej pamięci kluczy C_LoginWithEE 0x1a SectorNo, KeyType, EEKeyNo SectorNo numer sektora do którego chcemy się zalogować KeyType decyduje o tym jak klucz z pozycji EEKeyNo będzie traktowany podczas logowania. Gdy KeyType =0xAA to klucz traktowany będzie jak typu A, jeżeli KeyType =0xBB to klucz traktowany będzie jak typu B EEKeyNo numer pozycji w nie ulotnej pamięci kluczy (0...1F) A_LoginWithEE 0x1b OperationKod OperationKod - 0xff-logowanie poprawne Zapis 16 bajtów do bloku C_WriteBlock 0x1c Data1...16, Blok nr Data1...16 dane do zapisu Blok nr numer bloku do którego będą zapisane dane A_WriteBlock 0x1d OperationKod OperationKod - 0xff-zapis poprawny Odczyt 16 bajtów z bloku C_ReadBlock 0x1e Blok nr Blok nr numer bloku z którego będą odczytane dane A_ReadBlock 0x1f OperationKod OperationKod - 0xff-odczyt poprawny Kopiowanie 16 bajtów z bloku do bloku C_CopyBlock 0x20 SourceBlockNo, TargetBlockNo SourceBlockNo Numer bloku źródłowego TargetBlockNo - Numer bloku docelowego A_CopyBlock 0x21 OperationKod OperationKod - 0xff-odczyt poprawny Kopiowanie można przeprowadzić w ramach tego samego sektora do którego jesteśmy zalogowani. 11

Zapisanie wartości do bloku Rozkaz ten zamienia wartość 4-bajtową na zapis zgodny z formatem Value i zapisuje w postaci 16-u bajtów do bloku podanego jako BlockNo. C_WriteValue 0x34 Value1...4, BackupBlockNo, BlockNo Value1...4 wartość zapisywana do bloku BlockNo BackupBlockNo bloku backup u BlockNo numer docelowego bloku A_WriteValue 0x35 OperationKod OperationKod - 0xff-odczyt poprawny Odczytanie wartości z bloku C_ReadValue 0x36 BlockNo BlockNr numer źródłowego bloku A_ReadValue 0x37 Value1...4, BackupBlockNo, OperationKod Value1...4 odczytana wartość BackupBlockNo odczytany bloku backup u OperationKod - 0xff-operacja poprawna Aby OperationKod=0xff w bloku źródłowym musi znajdować się zapis zgodny z formatem Value. Inkrementowanie wartości zapisanej w bloku Rozkaz ten dodaje argument Value1...4 do wartości zapisanej w bloku BlockNr. Rezultat działania pozostaje w wewnętrznym buforze danych data register w transponderze. Aby wynik został zapisany do sektora należy użyć rozkazu C_TransferValue. W ten sposób argument działania może być pobrany z pewnego bloku a wynik zapisany do innego co zwiększa bezpieczeństwo danych. C_IncrementValue 0x30 BlockNo, Value1...4 BlockNo numer bloku inkrementowanego Value1...4 wartość dodawana do bloku BlockNo A_IncrementValue 0x31 OperationKod OperationKod - 0xff-operacja poprawna Operacje można przeprowadzić w ramach tego samego sektora do którego jesteśmy zalogowani. 12

Dekrementowanie wartości zapisanej w bloku Rozkaz ten odejmuje argument Value1...4 od wartości zapisanej w bloku BlockNr. Rezultat działania pozostaje w wewnętrznym buforze danych data register w transponderze. Aby wynik został zapisany do sektora należy użyć rozkazu C_TransferValue. W ten sposób argument działania może być pobrany z pewnego bloku a zapisany do innego co zwiększa bezpieczeństwo danych. C_DecrementValue 0x32 BlockNo, Value1...4 BlockNo numer bloku dekrementowanego Value1...4 wartość odejmowana od bloku BlockNo A_DecrementValue 0x33 OperationKod OperationKod - 0xff-operacja poprawna Operacje można przeprowadzić w ramach tego samego sektora do którego jesteśmy zalogowani. Transfer danych z rejestru transpondera do wybranego bloku C_TransferValue 0x38 BlockNo BlockNo numer docelowego bloku A_TransferValue 0x39 OperationKod OperationKod - 0xff-operacja poprawna Rozkaz ten jest wykorzystywany do przesłania wyniku obliczeń z wewnętrznego rejestru danych data register do wybranego bloku pamięci. Operację taką wykonuje się po wcześniejszym użyciu rozkazów C_IncrementValue lub C_DecrementValue. Wprowadzenie transpondera w stan uśpienia Rozkaz ten stosuje się gdy chcemy uśpić aktywny transponder (po poprawnym C_Select i/lub C_LoginWithEE i/lub C_LoginWithKB). Po takiej operacji możemy ponownie wyselekcjonować jeden z pozostałych transponderów w polu i przeprowadzać na nim żądane operacje. Aby wyselekcjonować jeden z pozostałych transponderów należy użyć rozkazu C_Select z parametrem 0x01. W taki sposób, w przypadku wielu transponderów znajdujących się w polu anteny, możemy obsłużyć wszystkie transpondery po kolei. C_Halt 0x40 - A_Halt 0x41 OperationKod OperationKod - 0xff-operacja poprawna Aby ponownie przeprowadzić komunikację z transponderem znajdującym się w stanie Halt należy użyć rozkazu C_Select z parametrem 0xff. 13

Rozkazy zarządzające portami I/O użytkownika Po wystąpieniu stanu reset wszystkie porty I/O są zdefiniowane jako wejście czyli widziane z zewnątrz jako wysoka impedancja. Ustawienie portu jako wyjście z jednoczesnym ustawieniem stanu C_WriteUserPort 0x50 PortNo, Value PortNo numer portu (1...4) Value bit do zapisu A_WriteUserPort 0x51 OperationKod OperationKod zawsze 0xff Ustawienie portu jako wejście z jednoczesnym odczytem stanu C_ReadUserPort 0x52 PortNo PortNo numer portu (1...4) A_ReadUserPort 0x53 Value, OperationKod Value odczytana wartość portu OperationKod zawsze 0xff Rozkazy dodatkowye Ustawienie wzmocnienia układu odbierającego dane z transpondera C_SetGain 0x60 NewGain NewGain nowa wartość wzmocnienia układu odbierającego dane z transpondera (0 3) A_SetGain 0x61 OperationKod OperationKod - 0xff-operacja poprawna Ustawienie prędkości UART a C_SetUartSpeed 0x62 UartSpeed UartSpeed prędkość portu UART =(1 8) gdzie 1=1200b/s 8=115200b/s A_SetUartSpeed 0x63 OperationKod OperationKod zawsze 0xff MM-005 odpowiada na prędkości dotychczasowej po czym zmienia prędkość na nową i oczekuje przez czas 10 sekund. W tym czasie MM-005 powinien odebrać jakąkolwiek ramkę z poprawnym CRC aby pozostać na nowej prędkości. W przypadku przeciwnym urządzenie ponownie powróci do prędkości poprzedniej. 14

Nadanie modułowi u na magistrali RS C_SetSlaveAdres 0x64 NewSlaveAdr NewSlaveAdr nowy jaki nadajemy urządzeniu A_SetSlaveAdres 0x65 OperationKod OperationKod zawsze 0xff Odczyt numeru wersji oprogramowania C_SoftVersion 0xfe - A_SoftVersion 0xff Data1...n, OperationKod Data1...n zapisana w kodach ascii wersja oprogramowania OperationKod - zawsze 0xff Obliczanie CRC CRC obliczane jest jako x^16+x^12+x^5+1 z wartością początkową 0x0000. CRC obliczane jest na podstawie wszystkich bajtów z wyjątkiem CRCH i Przykładowa procedura obliczania CRC napisana w języku C: void LiczCRC2(unsigned char *ZAdr, unsigned short *DoAdr, unsigned char Ile) { int i,nrbajtu; unsigned short C; *DoAdr=0; for (NrBajtu=1;NrBajtu<=Ile;NrBajtu++,ZAdr++) { C=((*DoAdr>>8)^*ZAdr)<<8; for (i=0;i<8;i++) if (C&0x8000) C=(C<<1)^0x1021; else C=C<<1; *DoAdr=C^(*DoAdr<<8); } } gdzie: *Zadr Ile *DoAdr -jest wskaźnikiem do pierwszego bajtu danych -mówi ile jest bajtów danych z których liczone będzie CRC -jest wskaźnikiem do obliczonego CRC 15

Przykłady obsługi transpondera Mifare przy pomocy MM-005 Założenia: Komunikaty wysyłane są jako rozgłoszeniowe (do wszystkich modułów w sieci, AdresModułu=ff) Typowa ramka rozkazu: rozkaz dane CRCH, ff XX XX XX XX XX XX XX XX Zakładamy, że czytnikowi wcześniej został nadany 01 poprzez funkcję C_SlaveAddressSet. Oznacza to że odpowiadał będzie czytnik o ie 01. Typowa ramka odpowiedzi: odpowiedź dane kod operacji CRCH, 01 XX XX XX XX XX XX XX XX XX Transponder używany do testów ma ustawione bloki konfiguracyjne (sector trailer) tak jak nowy transponder produkcji Philips a czyli ff ff ff ff ff ff ff 07 80 69 ff ff ff ff ff ff Oznacza to że transponder zezwoli na zapisywanie i odczytywanie bloków danych oraz inkrementowanie, dekrementowanie i przeprowadzanie operacji transfer na wartościach. Przy takiej konfiguracji wszystkie te operacje można przeprowadzać przy użyciu haseł typu A lub B. (Jeżeli posiadamy transponder innego producenta to klucze typu A oraz B mogą wyglądać następująco: a0 a1 a2 a3 a4 a5 oraz b0 b1 b2 b3 b4 b5 ) 16

Praca z funkcjami wysokiego poziomu Przykład 1 Zapis 16 bajtów do bloku Chcemy zapisać 16 bajtów do wybranego bloku i sprawdzić poprawność tego zapisu. Do tego celu można użyć 2 funkcji wysokiego poziomu C_HLWriteBlock i C_HLReadBlock Dla nowej kary Philips a hasła transportowe mają postać ff ff ff ff ff ff. Zapiszmy sekwencję 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f do sektora 4 do bloku 2. Do MM-005 wysyłamy sekwencję: rozkaz parametry CRCH, ff 1e 00 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 04 02 ff ff ff ff ff ff bb 1b a0 moduł MM-005 energia zapis sektor blok 4 0 4 1 bloki transpondera z zapisanymi danymi 4 2 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 06 01 - ff e9 d5 17

Aby zweryfikować poprawność zapisu należy wysłać sekwencję: rozkaz parametry CRCH, ff 0e 02 04 02 ff ff ff ff ff ff bb 99 a5 moduł MM-005 energia odczyt sektor blok 4 0 4 1 bloki transpondera z zapisanymi danymi 4 2 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod CRCH, operacji 01 16 03 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f ff 2f df Czyli odczytaliśmy to co poprzednio było zapisane. Przykład 2 Dekrementowanie wartości zapisanej w bloku Aby dekrementować wartość zapisaną w bloku musimy najpierw zapisać ją w odpowiednim formacie akceptowanym przez transponder. Wartości jakie możemy przechowywać w blokach transpondera są 4-o bajtowe. Zapiszmy zatem wartość dziesiętną 41 394 czyli 00 00 a1 b2 w zapisie hexadecymalnym. Zgodnie z formatem wartości w bloku powinniśmy zapisać ciąg bajtów w postaci: 00 00 a1 b2 ff ff 5e 4d 00 00 a1 b2 00 ff 00 ff. Zapiszmy tą sekwencję do sektora 4 do bloku 2 korzystając ze znanego już rozkazu C_HL_WriteBlock. rozkaz parametry CRCH, ff 1e 00 00 00 a1 b2 ff ff 5e 4d 00 00 a1 b2 00 ff 00 ff 04 02 ff ff ff ff ff ff bb 52 2b odpowiedź parametry kod CRCH, operacji 01 06 01 ff e9 d5 Zweryfikujmy zapis za pomocą rozkazu C_HL_ReadBlock: rozkaz parametry CRCH, ff 0e 02 04 02 ff ff ff ff ff ff bb 99 a5 odpowiedź parametry kod CRCH, operacji 01 16 03 00 00 a1 b2 ff ff 5e 4d 00 00 a1 b2 00 ff 00 ff ff b7 73 Czyli w bloku 5 mamy zapisaną wartość 00 00 a1 b2. 18

Teraz możemy przystąpić do dekrementacji wartości 00 00 a1 b2. Od tej wartości odejmijmy 258 w zapisie dziesiętnym czyli 00 00 01 02 w zapisie hexadecymalnym. Do tego celu można użyć funkcji wysokiego poziomu C_HL_Decrement Do MM-005 wysyłamy sekwencję: rozkaz parametry CRCH, ff 11 06 04 02 00 00 01 02 ff ff ff ff ff ff bb cd 45 sektor blok bloki transpondera z zapisanymi danymi moduł MM-005 energia dekrementacja 4 0 4 1 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 06 07 - ff 43 73 Zweryfikujmy dekrementację za pomocą rozkazu C_HL_ReadBlock: rozkaz parametry CRCH, ff 0d 02 04 02 ff ff ff ff ff ff bb 99 a5 odpowiedź parametry kod CRCH, operacji 01 16 03 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff ff da af Widzimy, że w bloku 5 mamy zapisaną wartość 00 00 a0 b0 czyli dekrementacja zapisanej w bloku liczby odbyła się prawidłowo. Podobne działanie można przeprowadzić używając rozkazu C_HL_Increment inkrementującego wartość zapisaną w transponderze. 19

Praca z funkcjami niskiego poziomu Przykład 3 Dekrementowanie wartości zapisanej w bloku Ładujemy klucz do podręcznego bufora klucza przy użyciu C_LoadKeyBuffer. Do MM-005 wysyłamy sekwencję: rozkaz parametry CRCH, ff 0b 14 ff ff ff ff ff ff 3b f0 moduł MM-005 Od tego momentu w buforze klucza w module MM-005 mamy załadowany klucz, którym niejawnie będziemy się posługiwać przy logowaniu do sektora. odpowiedź parametry kod operacji CRCH, 01 06 15 - ff 26 62 Za pomocą rozkazu C_TurnOnAntennaPower załączamy pole elektromagnetyczne anteny. rozkaz parametry CRCH, ff 05 10-22 A7 sektor blok bloki transpondera z zapisanymi danymi moduł MM-005 energia 4 0 4 1 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 06 11 - ff ea a6 20

Przy użyciu rozkazu C_Select uruchamiamy pętlę antykolizyjną z wyborem jednego ze znajdujących się w polu transponderów. rozkaz parametry CRCH, ff 06 12 ff 82 e2 moduł MM-005 energia select sektor blok bloki transpondera z zapisanymi danymi 0 0 ID1 ID2 ID3 ID4 xx xx xx xx xx xx xx xx xx xx xx xx 0 1 0 2 0 3 odpowiedź parametry kod operacji CRCH, 01 0a 13 ID1 ID2 ID3 ID4 ff XX XX Gdzie ID1...ID4 to unikalny numer ID transpondera, który został wyselekcjonowany w polu anteny. Numer ten jest zapisany w sektorze 0 transpondera. Przy użyciu hasła zapamiętanego w podręcznym buforze klucza logujemy się do sektora 4. Transponder udostępni wtedy bloki od 0 do 3. Dzięki parametrowi bb, klucz znajdujący się w podręcznym buforze klucza traktowany jest jak typu B. Posłużmy się rozkazem LoginWithKB rozkaz parametry CRCH, ff 07 18 04 bb 3b 34 moduł MifMicro energia Zaszyfrowane hasło Zezwolenie sektor blok 4 0 4 1 bloki transpondera z zapisanymi danymi 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 06 19 - ff 63 0f Kod operacji ff oznacza poprawne zalogowanie do czwartego sektora. 21

W bloku 2 mamy zapisany ciąg wartości: 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff czyli wartość 00 00 a0 b0 od której odejmiemy 3. Przystąpmy więc do dekrementacji bloku 2 za pomocą C_DecrementValue. rozkaz parametry CRCH, ff 0a 32 02 00 00 00 03 b7 2d moduł MM-005 energia odejmowanie sektor blok 4 0 4 1 bloki transpondera z zapisanymi danymi 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff Wewnętrzny 1 3 xx rejestr xx xx operacyjny xx xx xx ff transpondera 07 80 69 ff ff ff ff ff ff 00 00 a0 ad ff ff 5f 52 00 00 a0 ad 00 ff 00 ff odpowiedź parametry kod operacji CRCH, 01 06 33 - ff 8a 22 Kod operacji ff oznacza poprawną dekrementację wartości. Jest ona jednak przechowywana w wewnętrznym rejestrze operacyjnym transpondera a nie w źródłowym bloku. W zależności od potrzeb, zgodnie z uprawnieniami, użytkownik może przesłać ją do wybranego bloku pamięci w ramach tego samego sektora. Przepiszmy rejestr operacyjny do bloku 1 za pomocą C_TransferValue rozkaz parametry CRCH, ff 0a 38 01 65 1e moduł MM-005 energia kopiowanie sektor blok 4 0 bloki transpondera z zapisanymi danymi 4 1 00 00 a0 ad ff ff 5f 52 00 00 a0 ad 00 ff 00 ff 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 06 39 - ff 65 e9 22

Odczytajmy wartość za pomocą C_ReadValue rozkaz parametry CRCH, ff 06 36 01 46 11 sektor blok bloki transpondera z zapisanymi danymi moduł MM-005 energia odczyt 4 0 4 1 00 00 a0 ad ff ff 5f 52 00 00 a0 ad 00 ff 00 ff 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 0b 37 00 00 a0 ad 00 ff 76 0e Odczytana wartość to 00 00 a0 ad czyli wszystkie operacje przebiegły pomyślnie. Wyłączamy pole anteny używając C_TurnOffAntennaPower rozkaz parametry CRCH, ff 05 44-38 d6 sektor blok bloki transpondera z zapisanymi danymi moduł MM-005 4 0 4 1 00 00 a0 ad ff ff 5f 52 00 00 a0 ad 00 ff 00 ff 4 2 00 00 a0 b0 ff ff 5f 4f 00 00 a0 b0 00 ff 00 ff 4 3 xx xx xx xx xx xx ff 07 80 69 ff ff ff ff ff ff odpowiedź parametry kod operacji CRCH, 01 0b 45 - ff 28 dd 23

Najnowsze wiadomości dotyczące produktów firmy NETRONIX http://www.netronix.pl/ 24