Интеграция RFID оборудования в IT инфраструктуру

Интеграция RFID оборудования в информационные системы предприятия

Методы интеграции RFID-оборудования FEIG Electronic в информационные системы предприятий: аппаратные возможности и программные средства


Интеграция с RFIDИнтеграция с RFIDИнтеграция с RFIDRFID интеграция 1С


Рассматриваемые в разделе вопросы:
    1. Общие вопросы интеграции
    2. Средства и методы интеграции в информационные системы
        2.1 Средство разработчика SDK: программные API-библиотеки, документация, примеры и исходные коды к ним
        2.2 Текстовый протокол обмена "HOST - Устройство RFID" для любого интерфейса связи
        2.3 Текстовый протокол обмена "HOST - Устройство RFID" при использовании интерфейса Ethernet
    3. Средства и методы интеграции в 1С
    4. Интеграция с различными системами без необходимости доработки ПО и модификации исходного кода системы
    5. Интеграция с системами СКУД по интерфейсу Data/Clock (Wiegand или эмуляция карты с магнитной полосой)
    6. Применение технологии LLRP

1. Общие вопросы интеграции

RFID-Оборудование FEIG Electronic имеет очень широкие возможности интеграции в информационные системы предприятия. Эти возможности обуславливаются тем, что продуктовая линейка FEIG Electronic достаточно широкая:

  • устройства работают в различных частотных диапазонах (LF 125 кГц, HF 13.56 МГц, UHF 860-960 МГц);
  • поддерживают различные стандарты, такие как ISO15693, ISO18000-3, ISO1800-6, EPC и другие стандарты, имеющие отношение к технологии радиочастотной идентификации;
  • имеют различный форм-фактор, различное климатическое исполнение - существуют варианты корпусировки с высоким уровнем пыле-влагозащиты и для лабораторного применения;
  • имеют различные сетевые коммуникационные интерфейсы - USB, Ethernet, RS232, RS485, DataClock (Wiegand, Magnec card emulation);
  • есть ряд устройств, способных работать полностью автономно, другие работают под управлением информационной системы (под управлением хоста), большая часть устройств может работать даже под управлением микроконтроллера или программируемого логического контроллера;
  • некоторые RFID-считыватели FEIG Electronic имеют реле и цифровые порты, с помощью которых можно управлять сторонним оборудованием. Также через цифровой порт, настроенный на вход, RFID-устройство может получать сигнал, например, активировать RF-поле на антенне, тем самым начать процесс инвентаризации по сигналу;
  • все приборы RFID от FEIG Electronic являются не только считывателями, но и кодировщиками/программаторами RFID-меток.
Устройства FEIG Electronic имеют несколько режимов работы, каждый из которых оптимален для применения в той или иной задаче. Перечислим эти режимы:
  • Режимы работы RFID-оборудования FEIG
    Host mode - устройство работает под управлением хоста. Например, ридер выполняет процедуру инвентаризации RFID-меток только по команде с хоста и возвращает перечень обнаруженных меток аналогично -  только по команде. Хостом может выступать как ПК, так и микроконтроллер или ПЛК.
  • Scan mode - это режим, аналогичный тому, что мы ежедневно наблюдаем при сканировании карточки Системы контроля доступа, приходя на работу или при сканировании карточки в метро - считыватель постоянно находится в режиме сканирования и как только наша RFID-карточка (или RFID-метка) оказывается в поле действия антенны, считыватель пересылает номер обнаруженной RFID-метки на контроллер или компьютер по интерфейсу USB, RS232, RS485 (в зависимости от наличия шины в устройстве). Этот режим часто применяется для подключения к СКУД, для интеграции применяется интерфейс Wiegand (если таковой предусмотрен в конкретной модели). RFID-Метка считывается автоматически, в зависимости от настроек прибора может считываться несколько раз с определенной периодичностью.
  • Если устройство работает в режиме Scan Mode, ПК может обнаружить его драйвер Human Interface Device (HID). В этом случае все необходимые данные с RFID-метки могут вставляться в то окно программы, которое находится в фокусе, и где мерцает каретка ввода данных, то есть устройство может работать в режиме эмуляции клавиатуры. Это позволяет выделить еще один режим - HID Mode. RFID-Метка считывается автоматически, в зависимости от настроек прибора может считываться несколько раз с определенной периодичностью.
  • Notification mode - устройство работает под управлением компьютера. Режим доступен только для приборов с интерфейсом Ethernet. При попадании новой RFID-метки в поле действия антенны считывателя на ПК поступает событие об обнаружении RFID-метки и данные из её памяти. RFID-Метка считывается автоматически, в зависимости от настроек прибора может считываться несколько раз с определенной периодичностью.
  • Buffered mode - устройство работает под управлением компьютера. Режим доступен при работе с любым интерфейсом: USB, RS232, RS485 или Ethernet. Отличается от Notification mode тем, что ПК периодически опрашивает буфер считывателя на наличие RFID-меток. RFID-Метка считывается автоматически, в зависимости от настроек прибора может считываться несколько раз с определенной периодичностью.
Все вышеперечисленное позволяет лаконично вписать RFID-оборудование FEIG Electronic в IT инфраструктуру.


2. Средства и методы интеграции RFID-оборудования в системы

Как мы описали выше, FEIG Electronic имеет достаточно большой ассортимент продукции RFID, каждое из устройств имеет свои особенности, поддерживаемые режимы работы и интерфейсы коммуникации. Какое бы устройство Вы не выбрали, возникает задача интеграции оборудования в IT инфраструктуру, нередка задача создания системы с нуля, в которой RFID-оборудование поддерживается по умолчанию. В данном разделе опишем основные средства интеграции RFID-оборудования в программное обеспечение (в системы).


2.1. Средство разработчика SDK: программные API-библиотеки, документация, примеры и исходные коды к ним

Разработку программного обеспечения или доработку модулей интеграции в уже существующее ПО удобно производить с применением SDK Feig Electronic. В комплектность SDK входит набор программных библиотек API, примеры с исходными кодами и исполняемыми файлами, документация.

Программное обеспечение может быть написано с "нуля" - для ускорения процесса разработки за основу можете взять исходные коды из примеров FEIG (то есть использовать их как шаблон), но, также, применяя API-библиотеки, можно добавить функциональность работы с RFID считывателем в уже существующее ПО.

Основной особенностью SDK является то, что, написав программное обеспечение под одно из устройств линейки, например, настольный считыватель/программатор MRU102-USB, ПО без модификаций может работать и с другим устройствами линейки, например, со стационарным считывателем LRU1002. Притом, интерфейс подключения LRU1002 может быть любой (и USB, и Ethernet, и даже RS232). Подход справедлив в рамках устройств, работающих с одинаковыми стандартами RFID-меток: ISO15693, ISO14443 или EPC.

SDK имеет несколько модификаций:
  • Под Windows, язык программирования С++ ID ISC.SDK.Win (DLLs, C++ Class Library, Samples)
  • Под Windows, язык программирования C# (Visual Basic .NET) ID ISC.SDK.NET (DLLs, .NET Class Library, Samples)
  • Под Linux, язык программирования С++ ID ISC.SDK.Linux (SOs, C++ Class Library, Samples)
  • Под Linux Embedded, язык программирования С++ ID ISC.SDK.Linux_Embedded (SOs, C++ Class Library)
  • Под Android, язык программирования С++ ID ISC.SDK.Android (SOs, C++ Class Library)
  • Под MacOS, язык программирования С++ ID ISC.SDK.MacOSX (DYLIBs, C++ Class Library)
  • Java -- ID ISC.SDK.Java (DLLs/SOs, Java Class Library, Samples)
  • Под Windows CE, язык программирования C++ и C# ID ISC.SDK.WinCE (DLLs , C++ and . NET Class Libraries)
  • Под Микролинукс, встроенный в контроллер FEIG в считывателях ID ISC.LR2500-A и LRU3x00 -- ID ISC.SDK.ACC-LR-FMB08 (SOs, C++ Class Library, Samples)
Пример исходного кода приложения для RFID оборудования
Пример экранной формы среды разработки Visual Studio 2013 и исходного кода приложения ISOHostSample, входящего в комплект SDK .NET.

Приведем часть исходного кода. В качестве примера рассмотрим код, реализующий подключение к считывателю FEIG, который подключен по шине USB. А также рассмотрим реализацию поиска устройств FEIG, если на одном ПК их подключено несколько.

RFID оборудование. Интеграция с .NET (C#)
C#

using OBID;

int back = 0;
long deviceID = 0;
String scanListPara;
FeUsb usbHelper = new FeUsb();
FeUsbScanSearch scanSearch = null;

try
{
     // подключаемся к первому попавшемуся RFID-считывателю
     // данное действие справедливо, если к ПК подключено только одно устройство
     // и мы знаем какое именно

     reader.ConnectUSB(0);
     ...

     //  после подключения проверяем его статус и далее производим последующие действия
}
catch (Exception ex)
{

}

// Если к ПК подключено сразу несколько USB устройств, применяем другой алгоритм
// сканирование шины и обход каждого устройства
// (идентификация конкретной модели и серийного номера)

try
{
     // Сканируем шину USB и подключаемся к второму по порядку устройству
     // В качестве примера выбираем второе, по факту нужно перебирать все найденные устройства

     back = usbHelper.Scan(FeUsbScanSearch.SCAN_ALL, scanSearch);
     if(back == 0)
     {
        
// вытаскиваем серийный номер устройства
         scanListPara = usbHelper.GetScanListPara(1, "Device-ID");
        
// для удобства серийный номер возвращается в 16-м представлении
         // для подключения требуется 10-е предст.,
         // конвертируем с помощью встроенной функции SDK

         deviceID = FeHexConvert.HexStringToLong(scanListPara);
        
// подключаемся к устройству
         reader.ConnectUSB(deviceID);
        
...
         // после подключения проверяем его статус и далее производим последующие действия

     }
}
catch (Exception ex)
{

}

RFID оборудование. Интеграция с ПО (C++)
C++
FEDM lib

int back = 0;
long dwDeviceID = 0;

// подключаемся к первому попавшемуся RFID-считывателю
// данное действие справедливо, если к ПК подключено только одно устройство
// и мы знаем какое именно

back = reader.ConnectUSB(0);
if(back == 0)
{
    // после подключения проверяем его статус и далее производим последующие действия
}

// также к RFID-считывателю можно подключиться по его Device-ID
back = reader.ConnectUSB(dwDeviceID);

******************************************************************
С++
FEUSB and FEISC libs

int back = 0;
int iPortHandle = 0;
int iReaderHandle = 0;
long dwDeviceID = 0;
char cDeviceID[16];

// C
iPortHandle = FEUSB_ScanAndOpen(FEUSB_SCAN_FIRST, NULL);
if(iPortHandle > 0)
{
    // create new Reader object and connect with USB device object in FEUSB
    iReaderHandle = FEISC_NewReader(iPortHandle);
    if(iReaderHandle > 0)
    {
        // for all OBID® USB-Reader recommended (except for CPR.04-U)
        FEISC_SetReaderPara(iReaderHandle, "FrameSupport", "Advanced");
    }
}

// Если к ПК подключено сразу несколько USB-устройств, применяем другой алгоритм
// сканирование шины и обход каждого устройства
// (идентификация конкретной модели и серийного номера)

// Сканируем шину USB и подключаемся к второму по порядку устройству.
// В качестве примера выбираем второе, по факту нужно перебирать все найденные устройства

back = FEUSB_Scan(FEUSB_SCAN_ALL, NULL);
if(back == 0)
{
    if( FEUSB_GetScanListPara(1, "Device-ID", cDeviceID) == 0 )
    {
        sscanf((const char*)cDeviceID, "%lx", &dwDeviceID);
       
// подключаемся к устройству
        iPortHandle = FEUSB_OpenDevice(dwDeviceID);
        if( iPortHandle < 0 )
        {
            // обработка ошибки и выдача всех соответствующих уведомлений
        }
        else
        {
            // после подключения проверяем его статус и далее производим последующие действия
        }
    }
}

RFID оборудование. Интеграция с ПО (Java)
Java

import de.feig.*;

int back = 0;
long deviceID = 0;
String scanListPara;
FeUsb usbHelper = new FeUsb();
FeUsbScanSearch scanSearch = null;

try
{
    // подключаемся к первому попавшемуся RFID-считывателю
    // данное действие справедливо, если к ПК подключено только одно устройство
    // и мы знаем какое именно
    reader.ConnectUSB(0);
    ...
    // после подключения проверяем его статус и далее производим последующие действия
}
catch (Exception ex)
{

}

// Если к ПК подключено сразу несколько USB-устройств, применяем другой алгоритм
// сканирование шины и обход каждого устройства
// (идентификация конкретной модели и серийного номера)

try
{
    // Сканируем шину USB и подключаемся к второму по порядку устройству
    // В качестве примера выбираем второе, по факту нужно перебирать все найденные устройства

    back = usbHelper.scan(FeUsbScanSearch.SCAN_ALL, scanSearch);
    if(back == 0)
    {
       
// вытаскиваем серийный номер устройства
        scanListPara = usbHelper.getScanListPara(1, "Device-ID");
        // для удобства серийный номер возвращается в 16-м представлении
        // для подключения требуется 10-е предст.,
        // конвертируем с помощью встроенной функции SDK

        deviceID = FeHexConvert.hexStringToLong(scanListPara);
       
// подключаемся к устройству
        reader.connectUSB(deviceID);
        ...
        // после подключения проверяем его статус и далее производим последующие действия

    }
}

catch (Exception ex)
{
     …
    // обработка ошибки и выдача всех соответствующих уведомлений
}

2.2. Текстовый протокол обмена "HOST - Устройство RFID"

Для интеграции RFID-оборудования не всегда возможно использовать компьютер (ПК, ноутбук или аналогичную машину), иногда возникают задачи подключения к программируемому логическому контроллеру, микропроцессору (микроконтроллеру) или другому оборудованию, на базе которого невозможно применить SDK.

Для решения вышеозвученной задачи можно применить так называемый "Текстовый/байтовый протокол обмена". В этом случае хост и RFID-считыватель будут обмениваться строками, а точнее байтовыми посылками, содержащими команды и данные из памяти RFID-метки. Также данный подход можно применить, если в качестве хоста выступает и обычный персональный компьютер.

К каждому устройству прилагается документ под названием "System manual" или просто "Manual". Этот документ содержит детально описание всех системных команд считывателя и описание протокола персылки информации. Ниже приводится изображение двух страниц руководства с описанием протокола процедуры "Инвентаризация".
Системное руководство по протоколу для RFID-считывателя LRU1002


Команда, которая посылается с хоста на RFID-считыватель "B0 01 00" означает, что мы хотим провести операцию "Инвентаризация" (то есть хотим опросить, какие метки находятся в зоне действия антенны), не указывая при этом дополнительные параметры. Для работы с протоколом не обязательно дословно изучать его содержимое, существует другой подход - взять за основу дамп (слепок) пересылки информации, зачитанный из программного обеспечения ISOStart (данное ПО предоставляется бесплатно и входит в комплект поставки). Более того, с применением ПО ISOStart можно моделировать все процессы, которые предполагается реализовать в алгоритмах создаваемого программного обеспечения: выполнять команды настройки ридера и функции работы с памятью RFID-метки!

Ниже приводится изображение экранной формы ISOStart при проведении операции "Инвентаризация". В параметрах посылки активируем встроенный в ридер мультиплекосор с коммутацией на антенны №1 и №2. В верхней половине формы указываются данные по проводимой операции, а в нижней (Protocol) дамп, в котором детально расписано содержимое пересылки данных, а именно, "Запрос" и "Ответ".

Пример экранной формы ISOStart (работа с RFID-считывателями, инвентаризация RFID-меток)

Опираясь на вышеописанное, рассмотрим дамп пересылки информации между хостом и RFID-считывателем MU02-UHF RS232. В примере рассматривается случай подключения MU02 к COM-порту обычного персонального компьютера по интерфейсу RS232. В отличии от предыдущей персылки, где указывалась информация об антеннах, оставим этот параметр нулевым.

Дамп пересылок между RFID-оборудованием

Как видно по данным экранной формы ISOStart и по дампу персылки информации, RFID-ридер ответил EPC-номером метки. Номер метки в данном случае E00401007B50793B. Также по данным ответа можно понять какая антенна обнаружила метку. Сверху - посылка от компьютера. Снизу - ответ ридера RFID.

2.3. Текстовый протокол обмена "HOST - Устройство RFID" при использовании интерфейса Ethernet

Текстовый протокол очень удобно применять при интеграции в системы, которые разработаны в тех средах (на тех языках программирования), которые не поддерживаются SDK, например, Delphi и другие. Также многие разработчики и поддерживаемых языков программирования часто предпочитают данный метод интеграции.

Общий подход таков, что считыватель переводится в один из предпочтительных режимов (кроме Scan-mode), и общение происходит через объект типа Socket.
Ниже приведем пример под C#, в котором демонстрируется процесс запроса времени считывателя по интерфейсу Ethernet (например, для проверки рассинхронизации времени с часами ПК).

RFID оборудование. Интеграция с .NET (C#)
C#

// Применение библиотек API FEIG не предусмотрено.
// Работа производится на основе текстового/байтового протокола


IPEndPoint ip = new IPEndPoint(IPAddress.Parse(readerip), readerport);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

try
{
     // пытаемся соединиться со считывателем
     server.Connect(ip);
}
catch (SocketException)
{
     // если мы не смогли соединиться, то выводим сообщение об ошибке
     return;
}

byte[] data = null;
data = new byte[7];
// общие данные для синхронизации времени с LRU1002
data[0] = 0x02;
data[1] = 0x00;
data[2] = 0x07;
data[3] = 0xFF;
data[4] = 0x86;    // команда запроса времени GetSystemTimer
data[5] = 0xFB;    // Контрольная сумма посылки
data[6] = 0xB4;    //

// пересылаем данные с компьютера на ридер

int res = server.Send(data);

// формируем буфер, в который будем принимать данные от ридера
byte[] dataGet = new byte[256];
server.ReceiveTimeout = 3000;

try
{
   
// смотрим, что получили по результатам пересылки данных
    int receivedDataLength = server.Receive(dataGet);

    // переносим данные из байтового массива в строку
    string strDataGet = BitConverter.ToString(dataGet, 0, receivedDataLength);
    strDataGet = strDataGet.Replace("-", " ");

    // Отработка дальнейшего алгоритма. В строке strDataGet содержится время, которое мы запрашивали у ридера.
    ...
}
catch (Exception)
{
    // при возникновении ошибки выводим сообщение
    ...

    return;
}


При работе считывателя в режиме Notification Mode удобно пользоваться объектами типа Listener. В этом случае программное обеспечение производит мониторинг указанного порта по своему IP-адресу. Предварительно в параметрах считывателя нужно указаывать номер порта и IP-адрес хоста, куда именно персылать данные.

RFID оборудование. Интеграция с .NET (C#)
C#

// Применение библиотек API FEIG не предусмотрено.
// Работа производится на основе текстового/байтового протокола


void startListener()
{
    // Указываем IP адрес ПК, с которого работаем
    IPAddress localIPs = IPAddress.Parse(hostip);

    // Указываем номер порта, который будем слушать
    Int32 port = hostport;

    // начинаем слушать порт
    tcpListener = new TcpListener(localIPs, port);

    bWaitForConnection = true;       // Устанавливаем флаг начала работы
    myThread = new Thread(func); // Создаем новый объект потока (Thread)
    myThread.Start();                         // Запускаем поток
}

// обработчик потока
void func()
{
   
// крутимся в бесконечном цикле до тех пор, пока работает ПО
    while (bWaitForEndProgramm)
     {

         try
         {
             // начинаем слушать порт с указанными параметрами
             tcpListener.Start();

             // выполняем блокирующую команду
             // также можно выполнить server.AcceptSocket().

             TcpClient client = tcpListener.AcceptTcpClient();

            // получаем поток для чтения и записи
            NetworkStream stream = client.GetStream();

            ...
           
            // циклически опрашиваем буфер сокета
           
try
            {
                 while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                 {
                         ...
                        
// далее полученные данные обрабатываем любыми алгоритмами
                 }
            }
            catch (Exception)
             {
                 ...
             }

        }
    }
   
catch (Exception)
    {
         // при возникновении ошибки выводим сообщение
         ...
         return;
    }
}


3. Средства и методы интеграции в 1С

Разработчики ISBC RFID подготовили расширение конфигурации для прикладных решений 1С Предприятие 8.3., которое принимает данные от программы GetTag.
О способах интеграции с 1С можно узнать в Руководстве по передаче данных из RFID-считывателей в 1С.



4. Интеграция с различными системами без необходимости доработки ПО и модификации исходного кода системы


Существует ряд задач, когда на предприятии необходимо внедрить систему идентификации на основе технологии RFID, однако, по какой-либо причине, нет возможности дорабатывать ПО или произвести интеграцию RFID всеми описанными выше способами. В этом случае компания ISBC предлагает воспользоваться RFID-считывателями, в которых поддерживается автоматический режим работы Scan-Mode и есть драйвер HID (Human Interface Device), то есть драйвер эмуляции клавиатуры. В этом случае считыватель опрашивает метки автоматически и при их обнаружении зачитывает все необходимые данные, которые будут "вставлены" в то окно программы, которое находится в фокусе и где мерцает каретка ввода данных.
Данный способ интеграции подходит практически для любой программы, где есть текстовое поле ввода данных, в том числе, способ работает даже с Excel.

Ниже представлена картинка с демонстрацией проведения сканирования меток ручным сканером FEIG PRHD-102-Bluetooth, данные с метки автоматически попадают в ПО, открытое на обычном коммуникаторе.

RFID работа в режиме эмуляции клавиатуры

При использовании данного подхода внедрение RFID происходит по принципу - «Без привлечения программиста / ни строчки кода». Именно по такому принципу достаточно часто интегрируются штрих-код сканеры.

5. Интеграция с системами СКУД по интерфейсу Data/Clock (Wiegand или эмуляция карты с магнитной полосой)


Некоторые модели считывателей FEIG Electronic имеют цифровой интерфейс Data/Clock, с помощью которого легко можно организовать пересылку данных о метке по протоколу Wiegand. Например, из UHF или HF метки можно зачитывать определенные сектора и формировать протокол Wiegand 26, который поддерживается практически всеми контроллерами СКУД, которые представлены на отечественном и зарубежных рынках.

В настоящее время наиболее востребованной задачей является "Идентификация транспорта". Применяя RFID-считыватель FEIG Electronic LRU1002-UHF можно легко привнести в обычную систему функциональность UHF, отличительной особенностью которой является исключительная дальность считывания меток - до 16 и более метров (дальность настраивается программно и аппаратно). Таким образом, для решения задачи открытия шлагбаума или ворот можно применить СКУД-контроллер практически любого производителя и считыватель FEIG, в последующем для настройки прав доступа, администрирования системы пользоваться программным обеспечением производителя СКУДа.

Схема работы RFID-считывателя и контроллера СКУД демонстрируется на рисунке ниже.
RFID и СКУД контроллеры


6. Применение технологии LLRP


Для работы некоторых считывателей FEIG Electronic в составе ИС предприятия можно пользоваться программной оболочкой с протоколом LLRP (Low level reader protocol). На текущий момент LLRP оболочка доступна для считывателей LRU3000/3500/1002, MRU102. LLRP - стандартный протокол обмена данными с ридером, утвержденный международной организацией EPCGlobal Inc.


При возникновении любых вопросов по работе RFID-оборудования и по вопросам, связанных с интеграцией оборудования в информационную систему, просьба обращаться в департамент Радиочастотной идентификации ISBC-RFID по e-mail: info@isbc-rfid.ru или телефону +7(495)133-00-01.

© 2024, ISBC Копирование любой информации с сайта допускается только с письменного разрешения Группы компаний ISBC

isbc.ru

Смарт-карты,
считыватели и
оборудование.
RFID и NFC
технологии.

isbc-print.ru

Умная NFC / RFID-продукция
и красочная полиграфия

nfc-cards.ru

Первый российский
производитель
NFC-визиток.

smart-card.ru

Бесконтактные
смарт карты,
программирование
смарт карт.
Устройства для
чтения смарт карт.

livestock-id.ru

Электронная система
идентификации животных
(чипирование).

lentochki.ru

Изготовление лент
с логотипом, печать
на лентах для
бейджей.

qtelecom.ru

Массовая рассылка
СМС рекламы через
интернет, СМС
и мобильный
маркетинг.