Вот отсюда плясать
Безымянный.png
Вот отсюда плясать
Безымянный.png
А как у Вас сразу опрос и чтение в одной переменной ?
Или это из мануала.
Я так понимаю делаем какую то дефлтную переменную с значением ноль.
На нее таймер с задержкой выключения и полуучаем допустим запись первую секундлу после старта.
Потом уже включаем чтение.
Я правильно понимаю, что при активации делается только одна попытка записи. А не циклично пока переменная true ?
На ПР200 есть запись и чтение одной переменной.
Вам лучше не читать однократно, а сделать инициализацию при включении из энергонезависимой переменной. А запись по изменению и так однократная при изменении.
В слейве вообще все сетевые сохраняются сами, если только мастер их не перезапишет при включении.
Последний раз редактировалось kondor3000; 01.04.2026 в 07:47.
У меня просто самописный слейв. Панелька для приточной вентиляции.
Меняет расписание внутри себя.
На старте мастер туда загоняет расписание из своей энергонезависимой.
Потом мастер просто читает от туда раз в хх времени.
Вариант:
- создаёте обычную булеву needWrite и ставите её в "Запуск записи"
далее добавляете:
Owen.jpg
первый цикл выставит команду на запись
после записи ПР сбросит needWrite до следующего запуска
Спасибо !!! Сделал похожим способом. Минус нельзя делать два слейва с одним адресом, чтобы разделить запись чтение.
Пришлось городить чтение и запись по команде.
Screenshot 2026-04-02 005354.png
Хм... идея рабочая но, запись не быстрая в 485. Мне кажется успеет часть данных похерить.
Тут пришлось еще собрать селектор. На старте переменная = переменной, а после вкл чтение уже равно данным из слейв.
Система конечно так себе, но работает.
Добрый день, возникла проблема с выбором таймера для установки выдержки в данную схему ПИД 3..bmp. Дело в том, что по условиям задачи таймер должен включится в тот момент когда ПИД достигнет уставки и более не реагировать на этот сигнал до конца процесса, уставка же выдержки должна задаваться с экрана. В примерах ОЛ есть подобный таймер (так во всяком случае выходит из его описания) написанный на ST, но при попытке создать fb при использовании данного примера ОЛ ругается на ошибки Таймер !..bmp.
Само же описание 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
Возможно кто-то может объяснить данный казус?!! Прошу учесть, что я абсолютный невежда в данном вопросе.
У вас два кода слились вместе. Верхний надо убрать
Таймер !..png
Последний раз редактировалось Dimensy; 01.04.2026 в 11:26.