Просмотр полной версии : связать плк110 и считыватель проксимити карт (hid, e-marine, mifare)
может кто знает как связать плк110 и считыватель проксимити карт(hid, e-marine) для получения в программе на C# считанного кода?
Имеется C# программа которая общается с контроллером ПЛК110 посредством библиотеки NMODBUS4.
Подключаем например 2 считывателя проксими карт по интерфейсу 485.
как в программе на С# получить считанный код проксими карты?
Подключаем например 2 считывателя проксими карт по интерфейсу 485.
Тип считывателей?
HID или e-marine-не суть важно, главное понять технологию
Сомневаюсь, что ПЛК110 в состоянии успеть считать код карты.
Есть считыватели с выходом на RS-232 или 485. Но не МОДБАС.
допустим считыватель можно подключить по интерфейсу rs-232 или 485 к ПЛК110, как тогда в программе на С# получить считанный код проксими карты?
Читаете протокол считывателя и реализуете опрос в проге контроллера.
приборист
29.04.2017, 18:11
может кто знает как связать плк110 и считыватель проксимити карт(hid, e-marine) для получения в программе на C# считанного кода?
Имеется C# программа которая общается с контроллером ПЛК110 посредством библиотеки NMODBUS4.
Подключаем например 2 считывателя проксими карт по интерфейсу 485.
как в программе на С# получить считанный код проксими карты?
А для чего ПЛК?
Через преобразователь (USB-RS232\RS485) а далее работа с портом.
Если через ПЛК - открывайте порт, ждите данных и разбирайте их.
(Смотрите в сторону UNM \ SysLibCom)
Сомневаюсь, что ПЛК110 в состоянии успеть считать код карты.
Чего там успевать?
Считыватель читает карту и в порт (RS232\485) отправляет ее номер.
Все отлично работает.
Wiegand - да, не осилит.
Но речь то про 485.
А для чего ПЛК?
потому что с ПЛК можно устанавливать связь по modbus TCP
может есть считыватели карт которые работают по modbusTCP?
Маловероятно, ибо никому не нужно.
может есть считыватели карт которые работают по modbusTCP?
Таких не нашел, реализовывал протокол со считывателем по rs232, но готового решения не дам, реализация плотно сидит в проекте.
Писал на SysLibCom, протокол был такой
Считыватель умеет видеть 2 карты и поочередно на запрос "дай id" отвечал id\нет_карты для первого\второго слота.
Я немного кстати пошел дальше, у меня было 3 группы пользователей в MySql и БД со всеми данными, при подносе карты ПЛК считывал, передавал данные на сервер, там всё обрабатывалось и возвращался уровень доступа в ПЛК по modbus TCP, отработало полтора года нормально.
Считыватель такой http://prox.ru/index-prox.php?item=mf-rw-232
Он на 13,56 МГц, но потребовалось сделать на 125кГц, нормальных решений найдено не было за адекватную цену, поэтому заказал в Китае очень дешевые считыватели для ардуинки, соберу с modbus RTU и Rs485 модули за пару дней, большие надежды на них :)
Объясню иначе, читать должен ПЛК и только считыватели и складывать в буфер. Потому что если ПЛК будет опрашиваться при помощи ПК по 485-му и тут же на линии будут висеть считыватели, то получится следующая ситуация. В момент опроса ПЛК кто-то подносит карту, а ПК порт то не прослушивает, он занят опросом ПЛК.
Поэтому линия считывателей должна висеть на ПЛК, опрос их производить он (если успевает прекрасно), и потом уже данные забирает ПК.
опрос их производить он (если успевает прекрасно), и потом уже данные забирает ПК.
и складывать в буфер
как это реализовать можно поподробнее
Вы исходную задачу поставьте. Вым нужно удаленно, по сети считать карты? Или что? Потому как зачем огород городить с контроллером?
NMODBUS4 работает только по Serial порту ?
30892 прикрепил схему как я вижу взаимодействие, для меня понятно, что серверное приложение может общаться с ПЛК по протоколу ModbusTCP(библиотека Nmodbus4 например)- считывать входы и записывать выходные сигналы-обращаясь по ip адресу который задан в ПЛК.
но мне не понятно как работать из серверного приложения , со считывателями, подключенными либо к RS232 или RS485 интерфейсам контроллера ПЛК...
Вы исходную задачу поставьте. Вым нужно удаленно, по сети считать карты? Или что? Потому как зачем огород городить с контроллером?
правильно : мне нужно удаленно, между сервером и ПЛК оптическая линия на обоих концах ethernet(), поэтому связь между сервером и ПЛК только через ModbusTCP.
Напрямую никак, только через переменные ПЛК. Хотя кто-тот из Овен тут рассказывал, что делать ретрансляцию порта на обычном ПЛК как 2 пальца, но примера я так и не увидел.
Повторяю вопрос - зачем вам контроллер? Если только для преобразования протоколов - выкиньте. Купите конвертор Ethernet-RS-485. подключите к нему считыватели, поднимите на компе виртуальный СОМ-порт и работайте на протоколе считывателя.
Повторяю вопрос - зачем вам контроллер? Если только для преобразования протоколов - выкиньте. Купите конвертор Ethernet-RS-485. подключите к нему считыватели, поднимите на компе виртуальный СОМ-порт и работайте на протоколе считывателя.
к входам-выходам контроллера будут подключены шлагбаумы светофоры маг петли фотоэлементы
Мне тоже непонятно зачем все это? Возьмите тот же Болид и пользуйтесь
Не увидел тип считывателя. Какая марка? Да и задачу надо было более подробнее описать, так то про Болид согласен, для удаленного считывания как раз, а по modbus уже можно в ПЛК говорить о доступе.
Не увидел тип считывателя. Какая марка? Да и задачу надо было более подробнее описать, так то про Болид согласен, для удаленного считывания как раз, а по modbus уже можно в ПЛК говорить о доступе.
нет пока марки считывателя-потому что хочу понять как работать.
задача такая: есть серверное приложение на C#, которое распознает номера авто и есть база данных где прописаны права доступа, и я могу с помощью библиотеки Nmodbus4 открыть шлагбаум если авто проезд разрешен или не открывать если проезд запрещен.
дополнительно мне нужно реализовать проезд через шлагбаумы по бесконтактным картам.
А для этого нужно понять как считыватель связать с контроллером и принимать в серверную мою программу код со считывателя, может есть ли какие-то библиотеки готовые(чтобы не писать свой какой-то протокол)
Сервер и контроллер соединены по оптике на концах витая пара и ethernet обычный
нет пока марки считывателя-потому что хочу понять как работать.
задача такая: есть серверное приложение на C#, которое распознает номера авто и есть база данных где прописаны права доступа, и я могу с помощью библиотеки Nmodbus4 открыть шлагбаум если авто проезд разрешен или не открывать если проезд запрещен.
дополнительно мне нужно реализовать проезд через шлагбаумы по бесконтактным картам.
А для этого нужно понять как считыватель связать с контроллером и принимать в серверную мою программу код со считывателя, может есть ли какие-то библиотеки готовые(чтобы не писать свой какой-то протокол)
Сервер и контроллер соединены по оптике на концах витая пара и ethernet обычный
Я думаю протокол писать придётся для считывателя, тот что у меня не сложный, есть нюансы, но если не надо писать на карту данные, а только считывать id, то совсем не сложно.
Надо определиться куда подключать считыватель, тут 2 варианта
1) к ПЛК, в ПЛК реализуете протокол и как Вы сказали работаете через Nmodbus4.
2) как сказали Aso и melky - поставить преобразователь и работать со считывателем с ПК напрямую.
Я бы сделал по первому варианту.
Я бы поставил стандартную систему доступа по картам и госномеру авто - их много.
Я бы поставил стандартную систему доступа по картам и госномеру авто - их много.
Может система для авто уже стоит и надо доработать её, не покупать же всё новое.
Я бы поставил стандартную систему доступа по картам и госномеру авто - их много.
все эти системы не подходят по функционалу, не гибкая система списков доступа или какого-то функционала вовсе нет
1) к ПЛК, в ПЛК реализуете протокол и как Вы сказали работаете через Nmodbus4.
Я бы сделал по первому варианту.
мне этот вариант -то что надо-то что я и хотел.
получать по сути нужно только ID карты
подскажите где можно прочитать про то как реализовать этот протокол в самом ПЛК?
и как работать через Nmodbus4 в этом случае-в Nmodbus4 функции только для работы с входами и выходами,
а тут бы будем соединять по rs232 или 485
мне этот вариант -то что надо-то что я и хотел.
получать по сути нужно только ID карты
подскажите где можно прочитать про то как реализовать этот протокол в самом ПЛК?
и как работать через Nmodbus4 в этом случае-в Nmodbus4 функции только для работы с входами и выходами,
а тут бы будем соединять по rs232 или 485
по Nmodbus4 не подскажу, я на java работаю.
Просто надо считать несколько регистров из плк с помощью функции 3, описаний modbus tcp в интернете есть.
Я кстати не передавал весь id карты, а последние 4 байта (2 регистра), мне хватило, на 30 моих карт совпадений не было.
Разбейте задачу на подзадачи.
1)Сначало создайте в ПЛК пару регистров и научите вашу программу читать эти регистры одним запросом, ну и писать можно.
2)Затем работайте с SysLibCom и пробуйте вытаскивать id карты, тут никаких modbus.
3)Байты который получили на шаге 2 пишите в регистры шага 1 и готово. Тоесть modbus плк и работа со считывателем это разные задачи не относящиеся друг к другу для ПЛК.
Для работы с портом ПЛК надо использовать SysLibCom библиотеку, например.
Примеры есть тут (http://www.owen.ru/catalog/codesys_v2/13257808)
Можно написать программу так, что в ПЛК будут загружаться все разрешенные id карт, например в файл, а в Modbus отдавать только Разрешено/Запрещено.
по Nmodbus4 не подскажу, я на java работаю.
Просто надо считать несколько регистров из плк с помощью функции 3, описаний modbus tcp в интернете есть.
Я кстати не передавал весь id карты, а последние 4 байта (2 регистра), мне хватило, на 30 моих карт совпадений не было.
Разбейте задачу на подзадачи.
1)Сначало создайте в ПЛК пару регистров и научите вашу программу читать эти регистры одним запросом, ну и писать можно.
2)Затем работайте с SysLibCom и пробуйте вытаскивать id карты, тут никаких modbus.
3)Байты который получили на шаге 2 пишите в регистры шага 1 и готово. Тоесть modbus плк и работа со считывателем это разные задачи не относящиеся друг к другу для ПЛК.
Для работы с портом ПЛК надо использовать SysLibCom библиотеку, например.
Примеры есть тут (http://www.owen.ru/catalog/codesys_v2/13257808)
т.е логика такая правильно ли я понял: ?
а) в самом ПЛК выполняется в процессе работы контроллера микропрограмма в памяти контроллера и можно подключать к этой микропрограмме дополнительные библиотеки для расширения функционала(например SysLibCom позволяет работать с Com портом) ?
б) в конфигураторе подключаем библиотеку SysLibCom дающая функционал для работы с COM портом
в) на языке CFC пишу программу, которая опрашивает в постоянном режиме COM порт(232 или 485) или может опрос в автоматич режиме идет и только создается наподобие Слушателя интерфейса(Listener) ?
г) можно ли к одному порту rs-232 или rs-485 подключить несколько считывателей?
д) если получил какие то данные по COM порту - записываю из в регистр
е) а из регистра по modbusTcp забираю эти данные к себе в программу на комп
Примерно так, только про CFC придется чуток забыть наверное, задача больше для ST.
Не понятно, чем вас не устраивает вариант с готовыми контроллерами карт ? Вам же потом просто отдать команду в ПЛК, чтобы он открыл шлагбаум и все.
Примерно так, только про CFC придется чуток забыть наверное, задача больше для ST.
Не понятно, чем вас не устраивает вариант с готовыми контроллерами карт ? Вам же потом просто отдать команду в ПЛК, чтобы он открыл шлагбаум и все.
готовые контроллеры это какие например и как с ними работать из программы на C# ?
т.е логика такая правильно ли я понял: ?
а) в самом ПЛК выполняется в процессе работы контроллера микропрограмма в памяти контроллера и можно подключать к этой микропрограмме дополнительные библиотеки для расширения функционала(например SysLibCom позволяет работать с Com портом) ?
б) в конфигураторе подключаем библиотеку SysLibCom дающая функционал для работы с COM портом
в) на языке CFC пишу программу, которая опрашивает в постоянном режиме COM порт(232 или 485) или может опрос в автоматич режиме идет и только создается наподобие Слушателя интерфейса(Listener) ?
г) можно ли к одному порту rs-232 или rs-485 подключить несколько считывателей?
д) если получил какие то данные по COM порту - записываю из в регистр
е) а из регистра по modbusTcp забираю эти данные к себе в программу на комп
a) примерно так, всё работает в основной программе
б) не в конфигураторе, есть спец меню для биб-ок
в) лучше на ST, слушателей нет. У меня например чтобы прочитать id надо попросить считыватель (rs232), я ему "дай id", он мне присылает id, если не прислал в течении какого-то времени еще раз говорю "id дай", если отдал, жду 300мс и опять спрашиваю. Есть считыватели, которые сами как только видят карту присылают её id, просить ничего не надо. Читать\писать в\из порта функциями, которые подключаются с помощью бибки.
г) зависит от протокола и интерфейса, никто не скажет так на бум
д) да
е) да
в) лучше на ST, слушателей нет. У меня например чтобы прочитать id надо попросить считыватель (rs232), я ему "дай id", он мне присылает id, если не прислал в течении какого-то времени еще раз говорю "id дай", если отдал, жду 300мс и опять спрашиваю.
1)можешь скинуть как выглядит это скрипт опроса?
2)а если пока ты ожидаешь 300мс между запросами произойдет считывание карты, то код считанный придет или нет? считыватель хранит в какой-то внутренней памяти последний считанный код?
3)кроме как "дай id" можно ли получать некий индентификатор самого считывателя, чтобы в случае если подключены несколько считывателей к одному порту RS232 , чтобы можно было понять какой считыватель вернул какой код?
Есть считыватели, которые сами как только видят карту присылают её id, просить ничего не надо.
можно модели таких считывателей?
1)можешь скинуть как выглядит это скрипт опроса?
2)а если пока ты ожидаешь 300мс между запросами произойдет считывание карты, то код считанный придет или нет? считыватель хранит в какой-то внутренней памяти последний считанный код?
3)кроме как "дай id" можно ли получать некий индентификатор самого считывателя, чтобы в случае если подключены несколько считывателей к одному порту RS232 , чтобы можно было понять какой считыватель вернул какой код?
можно модели таких считывателей?
я скидывал в этой теме модель считывателя чуть ранее.
Всё это зависит от считывателя и протокола к нему, всё разное.
У Болид есть контроллеры доступа, к которым подключаются считыватели, если связь обрывается между системой то контроллер продолжает открывать закрывать исходя из данных внутренней памяти, какие карты в нем заведены. Поспрошайте спецов по Болиду и Ориону, вам объяснят механизм.
И у Болид есть С2000-ПП который может преобразовать их протокол в Modbus. А уж читать Modbus вы вроде умеет.
Опять же с контролера доступа кажется можно дискретные сигналы на ПЛК подать и открывать, закрывать шлагбаум вообще дискретными сигналами
я скидывал в этой теме модель считывателя чуть ранее.
Всё это зависит от считывателя и протокола к нему, всё разное.
на примере считывателя с которым ты работал
на примере считывателя с которым ты работал
Вот поиск карты
buf[1]:=253;
buf[2]:=id;
buf[3]:=69;
buf[4]:=dataCommand;
buf[5]:=0;
buf[6]:=0;
buf[7]:=254;
len_command:=7;(*Обязательно указываем ВСЮ(со стартовым и стоповым битом) длину команды*)
fcs:=16#FFFF;
FOR i:=2 TO len_command-3 DO (*FCS Рассчитывается без стартового бита и без последних 3х (внимательно с массивом нач с 0)*)
Calc_FCS(buf[i]);
END_FOR
fcs:=NOT fcs;
buf[5]:=WORD_TO_BYTE(fcs);
buf[6]:=WORD_TO_BYTE(fcs/256);
count_W:=SysComWrite(com_num,ADR(Buf),len_command, 0);
Подниму тему. Есть задача включения/выключения света в тоннеле. Заказчик предлагает следующую логику: на входе и выходе в тоннель установлены по два считывателя - ВКЛ и ВЫКЛ.
При входе человек прикладывает брелок или карту к считывателю ВКЛ - свет включается. Выйти он может через любой из входов и на выходе прикладывает метку к считывателю ВЫКЛ, чтобы выключить свет. Проблема заключается в том, что в тоннель мог зайти еще один или несколько человек, о которых первый не знает и он может выключить свет всем остальным.
Необходимо чтобы система "видела", что в тоннеле ещё кто-то есть и не позволяла выключить свет.
Я предполагал, что эту логику можно заложить в контроллер управляющий освещением. Например: для каждой метки выделить регистр в памяти контроллера и отслеживать его состояние. Каждый кто входит, меняет состояние регистра связанного только с кодом той метки, которая была приложена к считывателю. Зашло в тоннель три человека - три регистра поменяли свое состояние на ВКЛ.
На выходе каждый прикладывает свою метку к считывателю ВЫКЛ - регистры переходят в состояние ВЫКЛ. Контроллер следит за состоянием всех регистров и пока хотя бы один находится в состоянии ВКЛ, он не должен посылать сигнал на отключение света.
Возможно ли реализовать подобную логику на контроллере ПЛК110-30-ТЛ?
Как проще передать код с метки в контроллер? Есть считыватели с интерфейсами RS-232 или RS-485. Их можно связать с контроллером?
Например: для каждой метки выделить регистр в памяти контроллера и отслеживать его состояние.
возможно лучше подойдет стек, пока он не пуст свет горит
В самом простом случае подойдет просто переменная подходящей размерности, которая при входе человека будет увеличиваться, а при выходе уменьшаться. Стек пригодится, если нужно не просто знать, сколько человек в тоннеле, а еще и знать, кто именно там находится. Тогда действительно нужны карты, а в самом простом случае будет достаточно кнопок. Тут набегает сразу куча дополнительных условий, о которых нужно подумать, чтобы система работала корректно. Человек при входе и при выходе должен обязательно приложить карту к считывателю, а приложив карту, должен обязательно войти (выйти). И это нужно обеспечивать техническими средствами
возможно лучше подойдет стек, пока он не пуст свет горит
Возможно, вы правы. Но я не программист, я продавец ). На текущий момент мне нужно понять состав необходимого оборудования, на котором в принципе возможно реализовать описанную логику, чтобы посчитать примерный бюджет проекта. Контроллер ПЛК110 для этого подойдёт? Возможно ли на него передать информацию о метках? Сможет он затем передать по Ethernet управляющий сигнал на светильники?
приборист
15.08.2019, 15:57
Возможно, вы правы. Но я не программист, я продавец ). На текущий момент мне нужно понять состав необходимого оборудования, на котором в принципе возможно реализовать описанную логику, чтобы посчитать примерный бюджет проекта. Контроллер ПЛК110 для этого подойдёт? Возможно ли на него передать информацию о метках? Сможет он затем передать по Ethernet управляющий сигнал на светильники?
Вариантов просто масса.
ПК, ПЛК, Raspberry, Arduino - на всем можно реализовать. И будет работать)
ПЛК110 - подойдет, подключить считыватель по RS232-RS485 - можно.
Включить светильники - можно.
Не будет ли это дорого? Тут вопрос :)
Юрий Горелый2
27.07.2021, 14:54
вообще не вижу сложности считать коды карточек считывателем
До 6 см (Mifare)
До 12 см (Em-Marin, HID)
ну в том смысле что я проверил с помощью готовых приборов (известно какой другой компании) - нормально можно считывать. в ттл, преобразователь от нас же ттл в 232 штатный ну а дальше всё просто, считать из порта пять байт и crc.
ну на всякий случай https://www.youtube.com/watch?v=wOfqezwR_8s
но с любым плк который может по человечески с com- портом работать по-моему нет проблем получать номера карточек.
Другое дело что реализовывать контроллер доступа на ПЛК это достаточно смешно, но всё таки да.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot