Можно написать программу так, что в ПЛК будут загружаться все разрешенные 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, просить ничего не надо. Читать\писать в\из порта функциями, которые подключаются с помощью бибки.
г) зависит от протокола и интерфейса, никто не скажет так на бум
д) да
е) да
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);