Можно написать программу так, что в ПЛК будут загружаться все разрешенные id карт, например в файл, а в Modbus отдавать только Разрешено/Запрещено.
Можно написать программу так, что в ПЛК будут загружаться все разрешенные id карт, например в файл, а в Modbus отдавать только Разрешено/Запрещено.
т.е логика такая правильно ли я понял: ?
а) в самом ПЛК выполняется в процессе работы контроллера микропрограмма в памяти контроллера и можно подключать к этой микропрограмме дополнительные библиотеки для расширения функционала(например SysLibCom позволяет работать с Com портом) ?
б) в конфигураторе подключаем библиотеку SysLibCom дающая функционал для работы с COM портом
в) на языке CFC пишу программу, которая опрашивает в постоянном режиме COM порт(232 или 485) или может опрос в автоматич режиме идет и только создается наподобие Слушателя интерфейса(Listener) ?
г) можно ли к одному порту rs-232 или rs-485 подключить несколько считывателей?
д) если получил какие то данные по COM порту - записываю из в регистр
е) а из регистра по modbusTcp забираю эти данные к себе в программу на комп
Примерно так, только про CFC придется чуток забыть наверное, задача больше для ST.
Не понятно, чем вас не устраивает вариант с готовыми контроллерами карт ? Вам же потом просто отдать команду в ПЛК, чтобы он открыл шлагбаум и все.
a) примерно так, всё работает в основной программе
б) не в конфигураторе, есть спец меню для биб-ок
в) лучше на ST, слушателей нет. У меня например чтобы прочитать id надо попросить считыватель (rs232), я ему "дай id", он мне присылает id, если не прислал в течении какого-то времени еще раз говорю "id дай", если отдал, жду 300мс и опять спрашиваю. Есть считыватели, которые сами как только видят карту присылают её id, просить ничего не надо. Читать\писать в\из порта функциями, которые подключаются с помощью бибки.
г) зависит от протокола и интерфейса, никто не скажет так на бум
д) да
е) да
Последний раз редактировалось Kish; 24.05.2019 в 14:31.
1)можешь скинуть как выглядит это скрипт опроса?
2)а если пока ты ожидаешь 300мс между запросами произойдет считывание карты, то код считанный придет или нет? считыватель хранит в какой-то внутренней памяти последний считанный код?
3)кроме как "дай id" можно ли получать некий индентификатор самого считывателя, чтобы в случае если подключены несколько считывателей к одному порту RS232 , чтобы можно было понять какой считыватель вернул какой код?
можно модели таких считывателей?
У Болид есть контроллеры доступа, к которым подключаются считыватели, если связь обрывается между системой то контроллер продолжает открывать закрывать исходя из данных внутренней памяти, какие карты в нем заведены. Поспрошайте спецов по Болиду и Ориону, вам объяснят механизм.
И у Болид есть С2000-ПП который может преобразовать их протокол в Modbus. А уж читать Modbus вы вроде умеет.
Опять же с контролера доступа кажется можно дискретные сигналы на ПЛК подать и открывать, закрывать шлагбаум вообще дискретными сигналами
Последний раз редактировалось melky; 02.05.2017 в 20:29.
Вот поиск карты
Код: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);
Последний раз редактировалось Kish; 24.05.2019 в 14:32.