1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Команды с верхнего уровня

Модератор: специалисты по PLC

Ответить

Автор темы
leon78
эксперт
эксперт
Сообщения: 1022
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 103 раза

Команды с верхнего уровня

Сообщение leon78 »

Механизм выдачи команд верхим уровнем контроллеру можно сделать многими способами. Предлагаю следующий вариант (упрощенно):
1. Договариваемся, что команда - эта 16-ти битный регистр.
2. Договариваемся о кодировке, например:
биты 15-8 - число 16#00 - 16#FF - код технологического объекта (задвижка №10.5.4, насос №18, ...)
биты 7-4 - число 16#0 - 16#F - код команды (открыть, закрыть, пустить, ...)
биты 0-3 - число 16#0 - 16#F - код "источника команды", т.е. номер АРМа или панели, откуда выдана команда
3. Заводим в контроллере 16 регистров, в которые "источники команд" 16#0 - 16#F могут писать команды.
4. Заводим кольцевой буфер размером например 16 регистров.
5. Заводим переменную типа WORD, в которой храниться код команды, исполняемой программой на данном скане контроллера. Эта переменная подается на все DFB-блоки или куски программы, где должна выполняться какая-то команда. Они по битам 15-8 должны определять, их эта команда, и выполнять ее.
6. Пишем в ПЛК обработчик команд:
При появлении новой команды она переписывается в кольцевой буфер, значение в регистре команды обнуляется;
При появлении в кольцевом буфере команд самая первая пришедшая забирается из буфера и записывается в переменную из п.5.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Ответить

Вернуться в «F.A.Q. по взаимодействию PLC с HMI»