В КДС2 в настройках шаблонов релейных модулей есть режим записи не циклический, а от изменения переменных привязанных к ним. Нельзя ли и тут что то такое сделать?
В КДС2 в настройках шаблонов релейных модулей есть режим записи не циклический, а от изменения переменных привязанных к ним. Нельзя ли и тут что то такое сделать?
Вы имеете ввиду "RISING_EDGE" ? Тогда возникает 1000 проблем. Предлагаю в шаблоны включить блок который будет управлять триггером "RISING_EDGE". Может даже так:
Последний раз редактировалось Эдуард_Н; 23.11.2014 в 16:08.
Какие проблемы у Вас возникают в связи с использованием Rising Edge'a?
Используя такую структуру (как в примере) Вы лишний раз грузите ПЛК (каждый триггер - ФБ, для каждого ФБ отдельный вызов да и хранить состояние нужно).
Гораздо проще хранить где-то предыдущее значение маски, сравнивать его с текущим, и, если они отличаются, выдавать сигнал на запись.
например:
PHP код:PROGRAM PLC_PRG
VAR
wTmpMask:WORD; //Здесь храним старое значение маски
wMask:WORD; //Маска для записи
xTrigger:BOOL:=FALSE; //Триггер для Rising Edge
END_VAR
IF xTrigger THEN //Если триггер установлен - сбросим его
xTrigger:=FALSE;
ELSIF wTmpMask<>wMask THEN //Если триггер не уставновлен - проверим изменилась ли маска, и если изменилась
wTmpMask:=wMask;
xTrigger:=TRUE; //подадим команду на запись
END_IF
Последний раз редактировалось Осинский Алексей; 24.11.2014 в 10:09.
Вопрос не в тему, извиняюсь, но как вам удаётся набирать программу сразу в нескольких строках?
можно конечно всяко разно, ни кто незапрещает. Вот тут: http://www.owen.ru/forum/showthread.php?t=19067, вообще такие споры кипят. У меня вход вордовский, и подаю туда теже сигналы которые в релейный модуль. Хотя про сравнение маски думал, но незнал как это сделать. Опядь же, уменя запись триггера происходит только присмене выхода, допустим переключение насосов, а тут надо постоянно сравнивать маску, что не есть удобно.
Последний раз редактировалось Эдуард_Н; 24.11.2014 в 11:24.
Ваш вопрос был: как сделать запись по изменению значения.
Моя программа - проверяет изменилась маска или нет. Если изменилась, то подается команда на запись (RISING EDGE в терминологии CDS 3.5). Ключевые строки комментированы, если какая-то непонятна - спрашивайте.
В моей программе слово "триггер" стоит понимать как "Команда на запись" т.е. это переменная типа BOOL (а не ФБ R_TRIG или F_TRIG), по которой будет происходить запись.
Использовать кучу триггеров для анализа одной переменной крайне затратное дело.
Последний раз редактировалось Осинский Алексей; 24.11.2014 в 17:48.