Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

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

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


Автор темы
leon78
завсегдатай
завсегдатай
Сообщения: 565
Зарегистрирован: 25 июл 2008, 09:06
Ф.И.О.: U.L.A.
Благодарил (а): 1 раз
Поблагодарили: 4 раза
Контактная информация:

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

Сообщение leon78 » 13 апр 2010, 07:47

Механизм выдачи команд верхим уровнем контроллеру можно сделать многими способами. Предлагаю следующий вариант (упрощенно):
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»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей