Вот отсюда плясать
Вложение 88669
Вид для печати
Вот отсюда плясать
Вложение 88669
А как у Вас сразу опрос и чтение в одной переменной ?
Или это из мануала.
Я так понимаю делаем какую то дефлтную переменную с значением ноль.
На нее таймер с задержкой выключения и полуучаем допустим запись первую секундлу после старта.
Потом уже включаем чтение.
Я правильно понимаю, что при активации делается только одна попытка записи. А не циклично пока переменная true ?
На ПР200 есть запись и чтение одной переменной.
Вам лучше не читать однократно, а сделать инициализацию при включении из энергонезависимой переменной. А запись по изменению и так однократная при изменении.
В слейве вообще все сетевые сохраняются сами, если только мастер их не перезапишет при включении.
Вариант:
- создаёте обычную булеву needWrite и ставите её в "Запуск записи"
далее добавляете:
Вложение 88672
первый цикл выставит команду на запись
после записи ПР сбросит needWrite до следующего запуска
Добрый день, возникла проблема с выбором таймера для установки выдержки в данную схему Вложение 88679. Дело в том, что по условиям задачи таймер должен включится в тот момент когда ПИД достигнет уставки и более не реагировать на этот сигнал до конца процесса, уставка же выдержки должна задаваться с экрана. В примерах ОЛ есть подобный таймер (так во всяком случае выходит из его описания) написанный на ST, но при попытке создать fb при использовании данного примера ОЛ ругается на ошибки Вложение 88680.
Само же описание fb вот:
FUNCTION_BLOCK TP_timer //имя функционального блока
VAR_INPUT //объявление входных переменных
I_in : BOOL := FALSE;
END_VAR
VAR_OUTPUT //объявление выходных переменных
Q_out : BOOL;
END_VAR
VAR
TP_1: SYS.TP;
END_VAR
//область кода
TP_1(I := I_in, T := T#1000ms);
//где ms - миллисекунды, s - секунды, m - минуты, h - часы, d - дни
Q_out := TP_1.Q;
END_FUNCTION_BLOCKFUNCTION_BLOCK TP_timer //имя функционального блока
VAR_INPUT //объявление входных переменных
I_in : BOOL := FALSE;
T_in : UDINT := 5000;//миллисекунд
END_VAR
VAR_OUTPUT //объявление выходных переменных
Q_out : BOOL;
END_VAR
VAR
TP_1: SYS.TP;
T_time: TIME;
END_VAR
//область кода
T_time := UDINT_TO_TIME(T_in);
TP_1(I := I_in, T := T_time, Q => Q_out);
END_FUNCTION_BLOCK
Возможно кто-то может объяснить данный казус?!! Прошу учесть, что я абсолютный невежда в данном вопросе.
У вас два кода слились вместе. Верхний надо убрать
Вложение 88682
Код 2 таймера должен быть таким, а у вас 2 блока вместе
Скрытый текст:
А ещё есть таймеры не только с задачей, но и выходом времени.
Новый таймер TON_P c ET и паузой, на ST, Версия 2.6.345.0____https://owen.ru/forum/showthread.php...39&page=42#420
Несколько вариантов таймера TP с паузой и без_________ https://owen.ru/forum/showthread.php...l=1#post470730
Новые таймеры TOF и TOF_P с выходом ET и паузой, BLINK со сбросом, Версия 2.6.345.0_____ https://owen.ru/forum/showthread.php...&page=358#3577
Таймер прямого и обратного отсчёта с задачей времени и памятью наработки____ https://owen.ru/forum/showthread.php...l=1#post461025
У меня просто самописный слейв. Панелька для приточной вентиляции.
Меняет расписание внутри себя.
На старте мастер туда загоняет расписание из своей энергонезависимой.
Потом мастер просто читает от туда раз в хх времени.
А не все ли равно?
из
видны 4 состояния:
1.процесса нет (вангую что приоритетный)
2.какой-то регулятор (пофиг какой) не вышел на уставку
3.что-то (пофиг что) активно заданное с экрана время
4.что-то из п.3 пошло лесом до конца света (нет)
Условия переходов достаточно очевидны.
Там любой таймер можно заюзать. Но нужны ли именно они (именно TP/TON/TOF) если ТС на ST колбасит и есть get_time?