Просмотр полной версии : Экспресс вопрос (ответ)
Так вопрос в другом же у меня)
kondor3000
15.10.2025, 12:54
Здравствуйте! ПР200 управляет отоплением в частном доме. Всё хорошо работает, но есть нюанс. Собственно сюда и обращаюсь за идеей или может кто реализовывал такую функцию. Уличную температуру измеряет ntc резистор, все корректно, вопросов нет. В зависимости от уличной температуры, температуры в помещениях - управляются насосы, клапаны и термоголовки. В период весна/осень, когда ночью +4, а днем может быть +20 возникает перегрев в доме. Как можно отслеживать быстрый набор уличной температуры?
То есть 16 градусов за 10 часов или 1,6 градуса в час. Запомните температуру, через час ещё раз, разница не должна превышать 1,6 градуса.
Можно взять поменьше 1,5 градуса в час. Если больше меняйте скорость.
А вообще, правильней надо было сделать, уставка температуры отопления зависит от Т улицы (или Т помещения).
Так вопрос в другом же у меня)
И в чем же ?
Так вопрос в другом же у меня)
Скорость изменения измеряется в "град / сек" - замеряете изменение температуры и делите на период времени, за который оно произошло.
Ну определите, что температура растёт - а как и когда вы будете выходить из этого "режима потепления"?
Лучше мерить температуру не на улице, а в самом теплом помещении дома и сделать термостатирование.
Оно так и есть. Только тёплый пол, штука инерционная. Поэтому и хочу принимать меры на опережение, а не тогда, когда это поздно уже и остаётся только открывать окна. Вопрос и был, как средствами ПР детектировать этот момент.
Сергей0308
15.10.2025, 20:05
Оно так и есть. Только тёплый пол, штука инерционная. Поэтому и хочу принимать меры на опережение, а не тогда, когда это поздно уже и остаётся только открывать окна. Вопрос и был, как средствами ПР детектировать этот момент.
Так вроде 100 раз подобное обсуждалось, в смысле, вот повторяю специально для Вас:
86203
Если вместо секунд поставить минуты, получится в градусах Цельсия в час.
Если поставить ПИД-регулятор в нем за эту функцию отвечает дифференциальная составляющая, в смысле, ничего больше добавлять не надо!
И, так как параметр достаточно инерционный лучше хорошенько его сгладить, как вариант искать среднее арифметическое скользящим окном!
Ширину окна можно менять(изменять степень сглаживания, быстродействия), в смысле, сделать зависимой от скорости изменения параметра, это обеспечит хорошее сглаживание, когда параметр медленно меняется и достаточное быстродействие при резком изменении значения контролируемого параметра, например Вы форточку открыли!
wxxxw12, как понимаю, температура тёплого пола регулируется скоростью насоса подачи.
Тогда сделайте погодозависимое регулирование по температурному графику. Пусть будет 2 температуры - между ними линейная зависимость от 0% до 100% скорости вращения насоса, выше верхней - 0%, ниже нижней - 100%.
График найдёте экспериментом.
Может быть 0% нельзя установить - тогда сделайте минимальное значение, ниже которого насос выключается.
Пид тут не подходит, если человек хочет экономить топливо.
Сергей0308
15.10.2025, 20:27
Пид тут не подходит, если человек хочет экономить топливо.
В смысле, не подходит, вот товарищ хочет его, точнее его дифференциальную составляющую, пропорциональную и интегральную нужно будет отключить, конечно это уже не ПИД-регулятор получится, а не понятно что, но товарищ этого хочет, может со временем передумает и чего то другого будет хотеть, всякое бывает в нашей галактике!
Большое спасибо за внимание и советы всем участникам! Есть над чем подумать теперь и простор для экспериментов. Появилась мысль поставить второй датчик на улице, но с солнечной стороны и по разнице и скорости нарастания фиксировать момент для снижения оборотов насоса. @Сергей0308, отдельное спасибо за макрос, возьму на вооружение.
Просто я вообще насосы отключаю, у меня обычные.
И просто жду, когда на подаче упадет на 5гр температура. В результате тепловой насос срабатывает каждые 2 часа примерно. И ещё висит термостат в комнате, если температура упала ниже заданной, тогда насосы не отключаются.
Так и играют пока, потихоньку увеличивая И подачи уже от улицы.
:) все ещё руками как сапожник без сапог..
доброго времени суток! пр205 и пр100(свежий выпуск не могу подключить к ПК (((в чем может быть проблема ,притом и на старом ноуте аналогично не определяется программой овен логик
kondor3000
15.10.2025, 21:55
доброго времени суток! пр205 и пр100(свежий выпуск не могу подключить к ПК (((в чем может быть проблема ,притом и на старом ноуте аналогично не определяется программой овен логик
В USB кабеле, драйвере и настройках соединения
на старых приборах все нормально работало (((пр200 пр102 без проблем ,а пр205 и пр100 (((не хотят соединяться
вообще хрень какая то ,все провода дома собрал ,у детей штук 10 наверное (((и всего один подключился(((пиии.....ц какой то
Никакого п..ца, просто китайщина
Приветствую.
Имеется ПР103 и подключенный к нему ПРМ-220.2.
В клауде вижу и реле и модуль. НО! Если на реле я вижу состояние дискретных выходов (вкл или выкл), то на ПРМ этих параметров просто нет к отображению. По ним видно только статус безопасного состояния и пункты "Изменить состояние".
Что-то не так с настройками? В лоджике криво настроено?
Ну не может же быть такое, что я не могу контролировать состояние выходов на модуле.
Здравствуйте.
Работаю с ПР103. Была программа, изменил добавив несколько функциональных блоков. Загружаю. На приборе моргают красные лампочки (нижняя моргает 6 раз).
Запускаю онлайн-отладку, появляется сообщение "Логика программы в приборе отключена. Продолжение онлайн отладки невозможно."
В чём может быть проблема?
При этом загружаю старую программу, всё работает.
Спасибо.
86495
Здравствуйте.
Работаю с ПР103. Была программа, изменил добавив несколько функциональных блоков. Загружаю. На приборе моргают красные лампочки (нижняя моргает 6 раз).
Запускаю онлайн-отладку, появляется сообщение "Логика программы в приборе отключена. Продолжение онлайн отладки невозможно."
В чём может быть проблема?
При этом загружаю старую программу, всё работает.
Спасибо.
86495
А инструкцию почитать?
86501
Здравствуйте.
В функциональном блоке есть проверка на положительное значение операндом IF.
Внутри него есть цикл WHILE.
Если цикл WHILE закомментировать, то ошибок нет. Если цикл оставить, то ошибка.
Почему ошибка возникает, если проверка на положительное значение не должна проходить и выполняться эта часть кода?
86502
Здравствуйте.
В функциональном блоке есть проверка на положительное значение операндом IF.
Внутри него есть цикл WHILE.
Если цикл WHILE закомментировать, то ошибок нет. Если цикл оставить, то ошибка.
Почему ошибка возникает, если проверка на положительное значение не должна проходить и выполняться эта часть кода?
А какой тип имеет переменная в условии?
Здравствуйте.
В функциональном блоке есть проверка на положительное значение операндом IF.
Внутри него есть цикл WHILE.
Если цикл WHILE закомментировать, то ошибок нет. Если цикл оставить, то ошибка.
Почему ошибка возникает, если проверка на положительное значение не должна проходить и выполняться эта часть кода?
86502
А какое значение имеет Corr_Total и содержимое массивов Number_Flowers_Gate и Gate_ON?
А какой тип имеет переменная в условии?
Переменные
Corr_Total : REAL;
Remaining : REAL;
А какое значение имеет Corr_Total и содержимое массивов Number_Flowers_Gate и Gate_ON?
При загрузке все значения нулевые.
Corr_Total (REAL)= 0
Number_Flowers_Gate (UDINT) = [0, 0, 0, 0, 0, 0]
Gate_ON (BOOL) = [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]
Приведите полный текст функционального блока. Иначе гадать будем бесконечно
Приведите полный текст функционального блока. Иначе гадать будем бесконечно
function_block Self_healing // Самовосстановление микса
var_input
Sens_Output_r6: BOOL; // Датчик на выход к роботу 6
Sens_Output_r7: BOOL; // Датчик на выход к роботу 7
Switch_Flowers_Set: BOOL; // Стрелка горшков выпуска на 6-й и 7-й роботы (0=выпуск на 6-й робот, 1=выпуск на 7-й робот)
//
Number_Flowers_Gate1: UDINT; // Задание количества цветков
Number_Flowers_Gate2: UDINT; // Задание количества цветков
Number_Flowers_Gate3: UDINT; // Задание количества цветков
Number_Flowers_Gate4: UDINT; // Задание количества цветков
Number_Flowers_Gate5: UDINT; // Задание количества цветков
//
Gate1_ON: BOOL; // Включение выхода в соответствии с включением робота
Gate2_ON: BOOL; // Включение выхода в соответствии с включением робота
Gate3_ON: BOOL; // Включение выхода в соответствии с включением робота
Gate4_ON: BOOL; // Включение выхода в соответствии с включением робота
Gate5_ON: BOOL; // Включение выхода в соответствии с включением робота
// Задержки на выключение подсчёта цветов на выход роботов
TOF_Time_Switch_To_r6: UDINT; // Время задержки выключения подсчёта цветов на робота 6
TOF_Time_Switch_To_r7: UDINT; // Время задержки выключения подсчёта цветов на робота 7
end_var
var_output
Corr_Flower_1 : REAL; // Корректировка, выход 1
Corr_Flower_2 : REAL; // Корректировка, выход 2
Corr_Flower_3 : REAL; // Корректировка, выход 3
Corr_Flower_4 : REAL; // Корректировка, выход 4
Corr_Flower_5 : REAL; // Корректировка, выход 5
end_var
var
Counter_Output_r6 : UDINT; // Количество уехавших цветов на робот 6
Counter_Output_r7 : UDINT; // Количество уехавших цветов на робот 7
Corr_To_r6_Total : REAL; // Корректировка на робот 6, общая
Corr_To_r7_Total : REAL; // Корректировка на робот 6, общая
Corr_Total : REAL; // Корректировка на робот, общая
//Corr_To_r6_Array : Array [1..5] OF REAL; // Массив корректировок по линиям, на робот 6
//Corr_To_r7_Array : Array [1..5] OF REAL; // Массив корректировок по линиям, на робот 7
Corr_Array : Array [1..5] OF REAL; // Массив корректировок по линиям, на робот 7
Remaining : REAL;
i : UDINT;
// Фронт цветков на выпуск
R_TRIG_Sensor_Flowers_r6: SYS.RTRIG; // Датчик на выход к роботу 6
R_TRIG_Sensor_Flowers_r7: SYS.RTRIG; // Датчик на выход к роботу 7
// Задержки на выключение подсчёта цветов на выход роботов
TOF_Switch_To_r6: SYS.TOF; // Время задержки выключения подсчёта цветов на робота 6
TOF_Switch_To_r7: SYS.TOF; // Время задержки выключения подсчёта цветов на робота 7
R_TRIG_Switch_To_r6: SYS.RTRIG; // Момент переключения стрелки на робот 6
R_TRIG_Switch_To_r7: SYS.RTRIG; // Момент переключения стрелки на робот 7
Number_Flowers_Gate: ARRAY [1..5] OF UDINT; // Задание количества цветков
Gate_ON: ARRAY [1..5] OF BOOL; // Включение выхода в соответствии с включением робота
end_var
// Работа в массив данных
Number_Flowers_Gate[1] := Number_Flowers_Gate1;
Number_Flowers_Gate[2] := Number_Flowers_Gate2;
Number_Flowers_Gate[3] := Number_Flowers_Gate3;
Number_Flowers_Gate[4] := Number_Flowers_Gate4;
Number_Flowers_Gate[5] := Number_Flowers_Gate5;
//
Gate_ON[1] := Gate1_ON;
Gate_ON[2] := Gate2_ON;
Gate_ON[3] := Gate3_ON;
Gate_ON[4] := Gate4_ON;
Gate_ON[5] := Gate5_ON;
// Задержки включения и выключения стрелки
TOF_Switch_To_r6 (I := Switch_Flowers_Set = FALSE, T := udint_to_time(TOF_Time_Switch_To_r6)); // Время задержки выключения подсчёта цветов на робота 6
TOF_Switch_To_r7 (I := Switch_Flowers_Set = TRUE, T := udint_to_time(TOF_Time_Switch_To_r7)); // Время задержки выключения подсчёта цветов на робота 7
// Момент переключения стрелки на роботах
R_TRIG_Switch_To_r6(I := Switch_Flowers_Set = FALSE); // Момент переключения стрелки на робот 6
R_TRIG_Switch_To_r7(I := Switch_Flowers_Set = TRUE); // Момент переключения стрелки на робот 7
// Датчик на выход к роботу 6
R_TRIG_Sensor_Flowers_r6(I := Sens_Output_r6);
// Датчик на выход к роботу 7
R_TRIG_Sensor_Flowers_r7(I := Sens_Output_r7);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Подсчёт прошедших цветков на робот 6
IF R_TRIG_Sensor_Flowers_r6.Q = TRUE AND TOF_Switch_To_r6.Q = TRUE
THEN
Counter_Output_r6 := Counter_Output_r6 + 1;
END_IF;
// В момент переключения стрелки на робот 6
IF R_TRIG_Switch_To_r6.Q = TRUE
THEN
// Подсчёт корретировки (общее количество)
Corr_To_r6_Total := udint_to_real(11) - udint_to_real(Counter_Output_r6);
// Сброс подсчитанных цветов
Counter_Output_r6 := 0;
END_IF;
// Подсчёт прошедших цветков на робот 7
IF R_TRIG_Sensor_Flowers_r7.Q = TRUE AND TOF_Switch_To_r7.Q = TRUE
THEN
Counter_Output_r7 := Counter_Output_r7 + 1;
END_IF;
// В момент переключения стрелки на робот 7
IF R_TRIG_Switch_To_r6.Q = TRUE
THEN
// Подсчёт корретировки (общее количество)
Corr_To_r7_Total := udint_to_real(11) - udint_to_real(Counter_Output_r7);
// Сброс подсчитанных цветов
Counter_Output_r7 := 0;
END_IF;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IF Switch_Flowers_Set = FALSE
THEN
Corr_Total := Corr_To_r6_Total;
ELSE
Corr_Total := Corr_To_r7_Total;
END_IF;
// // --- Положительная корректировка ---
IF Corr_Total > 0 THEN
// Обнуляем массив корректировок
FOR i := 1 TO 5 DO
Corr_Array[i] := 0;
END_FOR;
Remaining := Corr_Total;
WHILE Remaining > 0 DO
FOR i := 1 TO 5 DO
IF (Remaining > 0) AND (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE)
THEN
Corr_Array[i] := Corr_Array[i] + 1;
Remaining := Remaining - 1;
END_IF;
END_FOR;
END_WHILE;
END_IF;
// --- Отрицательная корректировка ---
IF Corr_Total < 0 THEN
// Обнуляем массив корректировок
FOR i := 1 TO 5 DO
Corr_Array[i] := 0;
END_FOR;
Remaining := ABS(Corr_Total);
i := 5; // начинаем с конца
WHILE Remaining > 0 DO
IF (i >= 1) THEN
IF (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE) THEN
Corr_Array[i] := Corr_Array[i] - 1;
Remaining := Remaining - 1;
ELSE
i := i - 1;
END_IF;
// Если текущая линия получила всё возможное убавление, идём дальше
IF (i >= 1) AND (ABS(Corr_Array[i]) >= udint_to_real(Number_Flowers_Gate[i])) THEN
i := i - 1;
END_IF;
ELSE
EXIT;
END_IF;
END_WHILE;
END_IF;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Corr_Flower_1 := Corr_Array[1]; // Корректировка, выход 1
Corr_Flower_2 := Corr_Array[2]; // Корректировка, выход 2
Corr_Flower_3 := Corr_Array[3]; // Корректировка, выход 3
Corr_Flower_4 := Corr_Array[4]; // Корректировка, выход 4
Corr_Flower_5 := Corr_Array[5]; // Корректировка, выход 5
end_function_block
Мне просто не понятно, почему выполняется та часть операнда IF, если условие не выполняется.
Разве ПР не должен пропускать те строки, которые идут после THEN если условие не выполнилось?
При загрузке все значения нулевые.
Corr_Total (REAL)= 0
Number_Flowers_Gate (UDINT) = [0, 0, 0, 0, 0, 0]
Gate_ON (BOOL) = [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]
C такими вводными получаете бесконечный цикл внутри while
Вот проблема
WHILE Remaining > 0 DO
FOR i := 1 TO 5 DO
IF (Remaining > 0) AND (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE)
THEN
Corr_Array[i] := Corr_Array[i] + 1;
Remaining := Remaining - 1;
END_IF;
END_FOR;
END_WHILE;
Если Number_Flowers_Gate[i] равен нулю (а он изначально равен нулю) или Gate_ON[i] выключен (а он выключен) у нас тупо не выполняется операция Remaining := Remaining - 1; и получаем бесконечный цикл.
Вот проблема
WHILE Remaining > 0 DO
FOR i := 1 TO 5 DO
IF (Remaining > 0) AND (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE)
THEN
Corr_Array[i] := Corr_Array[i] + 1;
Remaining := Remaining - 1;
END_IF;
END_FOR;
END_WHILE;
Если Number_Flowers_Gate[i] равен нулю (а он изначально равен нулю) или Gate_ON[i] выключен (а он выключен) у нас тупо не выполняется операция Remaining := Remaining - 1; и получаем бесконечный цикл.
При запуске ПР в первом цикле действительно всё нули.
Но он же не должен был смотреть всё что между THEN и END_IF (см. скрин)!? Этот бесконечный цикл вообще не должен был даже начать выполняться.
В общем, пока прикрутил костыль, попробую загрузить потестировать. Но ощущение неполноценности остаётся >_<
86526
Емельянов Кирилл
01.11.2025, 03:11
Бесконечный цикл будет только в одном случае: когда Remaining > 0 и ни в одной итерации не выполняется условие (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE). Намбе флаверсы ваши приходят извне, за сим наши полномочия всё, ищите дальше сами
При запуске ПР в первом цикле действительно всё нули.
Но он же не должен был смотреть всё что между THEN и END_IF (см. скрин)!? Этот бесконечный цикл вообще не должен был даже начать выполняться.
В общем, пока прикрутил костыль, попробую загрузить потестировать. Но ощущение неполноценности остаётся >_<
86526
У вас при запуске срабатывает триггер R_TRIG_Switch_To_r6(I := Switch_Flowers_Set = FALSE); // Момент переключения стрелки на робот 6
Соответственно, выполняется это
// В момент переключения стрелки на робот 6
IF R_TRIG_Switch_To_r6.Q = TRUE
THEN
// Подсчёт корретировки (общее количество)
Corr_To_r6_Total := udint_to_real(11) - udint_to_real(Counter_Output_r6);
// Сброс подсчитанных цветов
Counter_Output_r6 := 0;
END_IF;
и далее
IF Switch_Flowers_Set = FALSE
THEN
Corr_Total := Corr_To_r6_Total;
ELSE
Corr_Total := Corr_To_r7_Total;
END_IF;
Т.е., Corr_Total ваш равен не нулю, а 11
Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
kondor3000
01.11.2025, 15:51
Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
На скрине сброс 3 бита (можно любой из 16) в регистре по условию 86537 бит должен быть один в регистре.
Только ИП320 сама биты не может ставить, можно только руками.
Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
86538
Целочисленные логические в ST пока не завезли, но можно так (сброс бита номер 0):
function ResetBit: udint;
var_input
I : udint;
R : bool;
end_var
if R then I.0 := FALSE; end_if
ResetBit := I;
end_function
Сергей0308
02.11.2025, 00:48
Мне кажется, можно сделать более универсальное решение, в смысле, чтобы было возможно писать любое значения выбранного бита(не только сбрасывать в "0"), короче, я это вижу примерно как-то так:
86554
86555
86556
Т.к. одной командой, обычно, не ограничивается, то обрабатываю сразу всё слово управления от вышестоящей системы или панели.
Сразу принял, что от вышестоящей системы поступают только импульсные команды - действующие только один машинный цикл. Поэтому пришлось разработать макросы, обрабатывающие одиночные (записать моточасы) и парные переключающие (включить и выключить режим) команды.
На рисунке - выделение команд из принятого слова управления и фрагмент макроса (ФБ), выделяющего отдельные биты. Видно, что сразу после выделения бит всё принятое слово управления обнуляется целиком. Там ещё присутствует ограничение в получении команд на время инициализации при включении питания.
86558
86559
На рисунке обработка одиночной команды - записать значения моточасов - применение на холсте и содержимое макроса обработчика от двух источников (т.к. для ПР205 команда может быть получена и от панели и от встроенной панели)
это незаконченный проект и содержит небольшую недоработку - к выходу макроса Cmd_HMI_SCR_ нужно подключить переменную от встроенной панели для её автоматического сброса после обработки
86560
86561
...
На рисунке обработка одиночной команды - записать значения моточасов - применение на холсте и содержимое макроса обработчика от двух источников (т.к. для ПР205 команда может быть получена и от панели и от встроенной панели)
это незаконченный проект и содержит небольшую недоработку - к выходу макроса Cmd_HMI_SCR_ нужно подключить переменную от встроенной панели для её автоматического сброса после обработки
86560
86561
Если команды от вышестоящей системы сбрасываются каждой цикл - то R_TRIG на них можно и не ставить, не?
...
На рисунке - выделение команд из принятого слова управления и фрагмент макроса (ФБ), выделяющего отдельные биты. Видно, что сразу после выделения бит всё принятое слово управления обнуляется целиком. Там ещё присутствует ограничение в получении команд на время инициализации при включении питания.
86558
86559
Опечаточка, фрагмент макроса не выделяет биты, а собирает битовую маску
Всем человеческое спасибо за ответы! Задача решена, но возникла другая)
Необходимо откалибровать аналоговые входа ПР200 по сопротивлению. Мастер юстировки предлагает свои значения сопротивлений, я не имея таких диапазонов сопротивления задал те, которыми располагал. В итоге юстирования получил сообщение "коэффициенты не рассчитаны" (что то подобное), подскажите, что мог упустить/сделать не так?
kondor3000
02.11.2025, 13:18
Всем человеческое спасибо за ответы! Задача решена, но возникла другая)
Необходимо откалибровать аналоговые входа ПР200 по сопротивлению. Мастер юстировки предлагает свои значения сопротивлений, я не имея таких диапазонов сопротивления задал те, которыми располагал. В итоге юстирования получил сообщение "коэффициенты не рассчитаны" (что то подобное), подскажите, что мог упустить/сделать не так?
Вы сами ответили на свой вопрос.
Нужен источник эталонных сопротивлений, например магазин сопротивлений. https://docs.owen.ru/product/pr200/80/108311#topic-108313
Тоесть, нужны именно те номиналы что запрашивает мастер юстировки?
Сергей0308
02.11.2025, 13:31
Всем человеческое спасибо за ответы! Задача решена, но возникла другая)
Необходимо откалибровать аналоговые входа ПР200 по сопротивлению. Мастер юстировки предлагает свои значения сопротивлений, я не имея таких диапазонов сопротивления задал те, которыми располагал. В итоге юстирования получил сообщение "коэффициенты не рассчитаны" (что то подобное), подскажите, что мог упустить/сделать не так?
Проблема вероятно не сама возникла, а Вы её сами создали на ровном месте, мне так кажется, мне почему-то ни разу не приходилось калибровать ПР200, хотя их было не меньше десятка, короче, наверно гораздо дешевле купить новое ПР200 чем приборы для калибровки, мне так кажется и больше туда не лезьте, так поступают обычно новички когда у них что-то не получается, не знаю зачем, у меня даже не хватает фантазии, наверно чтобы найти приключений на свою задницу!
Vostok17
03.11.2025, 17:01
Здравствуйте
Попал в руки ПР114-220-8Д4А, на нем начал изучение ПР.
Вопрос: подключился к ОЛ, во вкладке Прибор > Настройки прибора > Входы > Дискретные (только). Аналоговых входов нет. Подскажите, пожалуйста, в чем причина, ведь согласно маркировке прибора, рассчитывал увидеть 4 аналоговых входа?
Спасибо
Здравствуйте
Попал в руки ПР114-220-8Д4А, на нем начал изучение ПР.
Вопрос: подключился к ОЛ, во вкладке Прибор > Настройки прибора > Входы > Дискретные (только). Аналоговых входов нет. Подскажите, пожалуйста, в чем причина, ведь согласно маркировке прибора, рассчитывал увидеть 4 аналоговых входа?
Спасибо
Ищите входы на холсте. Через настройки они не настраиваются
Vostok17
03.11.2025, 17:31
Ищите входы на холсте. Через настройки они не настраиваются
Хорошо, вижу на холсте, в свойствах входа указал 0-10, подаю на вход 0-10, со входа подаю значение на "сравнение", но не вижу значения входа. Где ошибаюсь?
86571
kondor3000
03.11.2025, 18:08
Хорошо, вижу на холсте, в свойствах входа указал 0-10, подаю на вход 0-10, со входа подаю значение на "сравнение", но не вижу значения входа. Где ошибаюсь?
86571
0-10 указали, а максимум по умолчанию 1, сделайте 10.
У вас эмуляция включена, то есть вам надо на входе задать вручную от 0 до 10. Эмуляция на скрине 86573
Для онлайн работы запишите проект в ПР, включите онлайн отладку, тогда можно будет подавать на вход 0-10
и видеть сколько пришло на вход.
Vostok17
03.11.2025, 18:41
Спасибо большое!
Vostok17
03.11.2025, 19:11
0-10 указали, а максимум по умолчанию 1, сделайте 10.
У вас эмуляция включена, то есть вам надо на входе задать вручную от 0 до 10. Эмуляция на скрине 86573
Для онлайн работы запишите проект в ПР, включите онлайн отладку, тогда можно будет подавать на вход 0-10
и видеть сколько пришло на вход.
Спасибо большое!
boris.bv@ bk.ru
16.11.2025, 01:53
Доброе время суток, подскажите как реализовать поочерёдное включение насоса т.е накачал давление первый насос, для следующей сработки надо чтоб второй качал и так по очереди, делаю на ПР205. Заранее спасибо..
Доброе время суток, подскажите как реализовать поочерёдное включение насоса т.е накачал давление первый насос, для следующей сработки надо чтоб второй качал и так по очереди, делаю на ПР205. Заранее спасибо..
Почитайте пока здесь https://owen.ru/forum/showthread.php?t=41447
Доброе время суток, подскажите как реализовать поочерёдное включение насоса т.е накачал давление первый насос, для следующей сработки надо чтоб второй качал и так по очереди, делаю на ПР205. Заранее спасибо..
В простейшем случае так
86751
boris.bv@ bk.ru
16.11.2025, 09:48
Спасибо большое, Респект за понятный ответ)
Когда-то я делал так
https://www.cyberforum.ru/blogs/534277/6108.html
Это всего лишь пример для статьи на основе реальной программы. Должен работать.
Сейчас в совершенно другом стиле оформляю, проверяю больше (для ПР205 нужно ещё проверять разряд батарейки - хранение часов реального времени и параметров настройки - при разряде формирую сигнализацию).
Ещё проверял бы на сверхдлительную работу - "утечку в трубопроводе".
Сейчас изменил подход к программированию, если сможете понять моё изложение, то попробуйте делать так
https://www.cyberforum.ru/blogs/534277/10475.html
Там смысл разделения системы из двух насосов на три подсистемы (общая часть, насос 1, насос 2) и раздельной обработки ошибок для каждой из подсистем.
Т.к. от меня требуют визуализации на панели оператора, то для каждой подсистемы поддерживаю регистр с флагами состояния.
А также, поддерживаю возможность получения команд для каждой подсистемы от панели оператора (вкл/откл насос, ручн/авт и прочие).
Сама программа в этом примере содержит ошибку - отсутствует ротация, но это несущественно для пояснения подхода.
Сергей0308
16.11.2025, 19:08
Доброе время суток, подскажите как реализовать поочерёдное включение насоса т.е накачал давление первый насос, для следующей сработки надо чтоб второй качал и так по очереди, делаю на ПР205. Заранее спасибо..
В случае аварии одного из насосов разве не разумно сделать чтобы на замену включался исправный насос, я так понимаю, Вы об этом не думали?!
Короче, здесь нечто подобное делали, вам подойдёт без какой либо доработки, в смысле, макрос переключения, правая часть на холсте:
https://owen.ru/forum/showthread.php?t=26216&p=424807&viewfull=1#post424807
86756
Для включения насосов по очереди можно использовать один из входов.
На второй, незадействованный вход можно подавать сигнал аварии насосов, тогда будет включаться исправный(резервный) насос, всё!
Примерно как то так:
86760
86759
А так, под ваше ТЗ, без включения резерва, этот проект подходит:
86757
86758
И, мне кажется, Вам ликбез какой-то нужно пройти, в смысле, это вроде простейшие элементы, проще некуда, как же Вы собираетесь что-то сделать не имея самых элементарных знаний в этой области, боюсь как бы Вы чего не натворили!
А что если нам написать универсальный ФБ на все случаи жизни (ротация насосов)?
С одновременным управлением с разных мест, с лёгким масштабированием (по числу насосов) и т.д.
Например для ПР200 и с ликбезом.
kondor3000
17.11.2025, 08:46
А что если нам написать универсальный ФБ на все случаи жизни (ротация насосов)?
С одновременным управлением с разных мест, с лёгким масштабированием (по числу насосов) и т.д.
Например для ПР200 и с ликбезом.
Уже давно этим занимаюсь, пока тут 10 версия последняя.
4-8 насосов___ https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
А тут 11 версия
5 насосов ___ https://owen.ru/forum/showthread.php?t=38920&p=471291&viewfull=1#post471291
А началось всё с каскадов
Каскад из 4 котлов__до 3 версии___ https://owen.ru/forum/showthread.php?t=38453&p=418393&viewfull=1#post418393
Каскадное управл. 8 котлами___ до 7 версии__ https://owen.ru/forum/showthread.php?t=38608#7
Для идеальной реализации не хватает возможностей ST в Лоджике.
Хотя при желании количество насосов и аварий можно менять вручную, хоть 32.
Для идеальной реализации не хватает возможностей ST в Лоджике.
Не понял. В смысле?
kondor3000
17.11.2025, 13:06
Не понял. В смысле?
Нельзя назначить переменную максимума в массиве. Поэтому количество насосов (наработки) и аварий только руками править.
Хотя входы и выходы, наработку всё равно только руками.
Люди добрые, подскажите.Пытаюсь поэксперементировать с ПИД регулятором в ПР 200. Аналоговый вход настроил 0-10В86762_ перемычку в ПР выставил в режим 0-10В_подключаю контрольное напряжение3 вольта а там 0 86763. Может ещё что то необходимо добавить в программу что бы ПРка увидила входной сигнал? До этого работал с 4-20ма и там все сразу можно было наблюдать изминения величины на входе:confused:
kondor3000
17.11.2025, 13:15
Люди добрые, подскажите.Пытаюсь поэксперементировать с ПИД регулятором в ПР 200. Аналоговый вход настроил 0-10В перемычку в ПР выставил в режим 0-10В_подключаю контрольное напряжение3 вольта а там 0 . Может ещё что то необходимо добавить в программу что бы ПРка увидила входной сигнал? До этого работал с 4-20ма и там все сразу можно было наблюдать изминения величины на входе:confused:
Где настройка входа, максимум по умолчанию 0, а надо 10 поставить.
МихаилГл
17.11.2025, 13:20
Вот86764 пожалуста
Ну и 0 максимум...
kondor3000
17.11.2025, 13:21
Вот86764 пожалуста
Вы измеряете от 0 до 0, сколько будет ??
Понял, уже исправил, зкаработало.Не додумал. Спасибо!
Колеги поправте меня, т.к. наерняка опять ошибаюсь. Это по прежнему эксперимент. Под руками частотный преобразователь (дальше для сокращения *ЧП*) который настроен на изминение частота посредством 4_20мА которое генерирует ПР200 - эта часть работает. У *ЧП* есть аналоговый выход 0-10В которые приавязаны к выходной частоте *ЧП* (0В = 0Гц 10В = 50Гц). По задумке *ЧП* будет вращать вентилячтор который будет вытягивать дымовые газы через фильтр. Величина загрязнения фильтра контролруеться датчиком перепада давления ( перепад =0 - частоту можно оставить на текущем уровне перепад >0 значит наращиваем частоту вращения вентилятора). Вместо датчика перепада давления я использую сейчас аналоговый ваход *ЧП* В менеджере компонентов нащел макрос Scale1 86769/ Вопрос - я правильно его использовал?
Забыл добавить, ПР 200 читает этот выходной сигнал 0 10 В
Колеги поправте меня, т.к. наерняка опять ошибаюсь. Это по прежнему эксперимент. Под руками частотный преобразователь (дальше для сокращения *ЧП*) который настроен на изминение частота посредством 4_20мА которое генерирует ПР200 - эта часть работает. У *ЧП* есть аналоговый выход 0-10В которые приавязаны к выходной частоте *ЧП* (0В = 0Гц 10В = 50Гц). По задумке *ЧП* будет вращать вентилячтор который будет вытягивать дымовые газы через фильтр. Величина загрязнения фильтра контролруеться датчиком перепада давления ( перепад =0 - частоту можно оставить на текущем уровне перепад >0 значит наращиваем частоту вращения вентилятора). Вместо датчика перепада давления я использую сейчас аналоговый ваход *ЧП* В менеджере компонентов нащел макрос Scale1 86769/ Вопрос - я правильно его использовал?
1. Перепад на фильтре не может быть равным нулю
2. Увеличивая производительность вентилятора, вы увеличиваете перепад давления
3. Постоянный расход регулируется либо по датчику расхода (скорости воздуха) или по перепаду давления на самом вентиляторе
Не , увеличивая вращения вентилятора я компенсирую загрязнения фильтра и перепад уменьшаетьсяя, у нас так работаюют 2 фильтра. Ну 0 конечно он не мможет быть равен ,это я для наглядности.
И по текущей частоте и перепаду давления мы определяем нужно останавливать фильтр для очистки или пускай ещё поработает. ЕЕЕсли частота под 50 Гц то все, гоставливаем фильтр и очищаем его рукава.
К описаному выше сценарию ещё дополню что в этом эксперименте моя задача проверить возможность ПИД регулятора ,,выраынить.. величину его уставки с реальной выходной частотой *ЧП*. А в реальности ПАид регулятор будет контролировать именно перепад давления.
kondor3000
17.11.2025, 16:07
Колеги поправте меня, т.к. наерняка опять ошибаюсь. Это по прежнему эксперимент. Под руками частотный преобразователь (дальше для сокращения *ЧП*) который настроен на изминение частота посредством 4_20мА которое генерирует ПР200 - эта часть работает. У *ЧП* есть аналоговый выход 0-10В которые приавязаны к выходной частоте *ЧП* (0В = 0Гц 10В = 50Гц). По задумке *ЧП* будет вращать вентилячтор который будет вытягивать дымовые газы через фильтр. Величина загрязнения фильтра контролруеться датчиком перепада давления ( перепад =0 - частоту можно оставить на текущем уровне перепад >0 значит наращиваем частоту вращения вентилятора). Вместо датчика перепада давления я использую сейчас аналоговый ваход *ЧП* В менеджере компонентов нащел макрос Scale1 86769/ Вопрос - я правильно его использовал?
У вас на макросе переставлены Мах и минимум на входе и выходе.
Вот же не внимательный, спасибо!
Newcomer
17.11.2025, 16:34
Добрый день
При подключении к ПР205 Pt1000 макрос не нужен ?
Добрый день
При подключении к ПР205 Pt1000 макрос не нужен ?
Да.
Сейчас уже не найду - как-то на форуме представитель Овен сказал, что внутренней настройкой входа ПР205 пользоваться предпочтительнее, т.к. на заводе диапазон входа Pt1000 дополнительно калибруют для коррекции ошибок нелинейности измерения, и результат измерения получается точнее, чем с применением макроса датчика.
Newcomer
17.11.2025, 20:19
Да.
Сейчас уже не найду - как-то на форуме представитель Овен сказал, что внутренней настройкой входа ПР205 пользоваться предпочтительнее, т.к. на заводе диапазон входа Pt1000 дополнительно калибруют для коррекции ошибок нелинейности измерения, и результат измерения получается точнее, чем с применением макроса датчика.
Это хорошо. Спасибо.
Добрый день! Вопрос для перестрахховки чтобы не ,,деформировать,, токовый выход 4-20мА ПР200. В качестве нагрузки ,для того чтобы узнать реальный ток , хочу посадить гасящее сопротивление. Расчетная величина 1200 Ом. В наличии 1280 Ом и прииспытании в цепи с U=24В реальный ток 18,73мА. Как считаете можно включить этот номинал резистора последовательно с милиамперметром в токовый выход ПР200?
kondor3000
20.11.2025, 14:42
Добрый день! Вопрос для перестрахховки чтобы не ,,деформировать,, токовый выход 4-20мА ПР200. В качестве нагрузки ,для того чтобы узнать реальный ток , хочу посадить гасящее сопротивление. Расчетная величина 1200 Ом. В наличии 1280 Ом и прииспытании в цепи с U=24В реальный ток 18,73мА. Как считаете можно включить этот номинал резистора последовательно с милиамперметром в токовый выход ПР200?
Вы как обычно полыхнули по полной, 1100 Ом это максимально допустимая нагрузка,
обычно 50-100 Ом R входа и 400-500 Ом R добавочное. В сумме около 500-600 Ом.
МихаилГл
20.11.2025, 16:07
Ч, когда прижало, просто мультиметр воткнул, без всяких сопротивлений. Там правда модули 110 были. Но главное, ток я увидел, ошибку потом в расключении в поле нашли.
Колеги, доброе утро! Простите , ни кто не поделиться примером или ссылкой как связать ПР 200 и ПЛК 110? Спасибо.
Колеги, доброе утро! Простите , ни кто не поделиться примером или ссылкой как связать ПР 200 и ПЛК 110? Спасибо.
Вам понадобится два провода и ПР200 должна иметь хотя бы один интерфейс RS485.
Раскройте мысль - "Я хочу, чтобы..."
kondor3000
21.11.2025, 08:36
Колеги, доброе утро! Простите , ни кто не поделиться примером или ссылкой как связать ПР 200 и ПЛК 110? Спасибо.
На сайте есть примеры для ПЛК110 и для ПР200, посмотрите обучающие видео.
Вы сами попробуйте и выложите проекты, с описанием что не работает.
Хорошо ,,пошерстю,, форум.
Ничего толком не нашел. Попробую с вашей пмощью. Начну с чтения из пр вешественной переменной:
Мастер ПЛК-ПР200 слейв.В настройках прибора выполнил так:86822
создал сетевае переменные:86823
Вытащил их на холст и в них записываю константы:86824
Тут вроде всё. Теперь ПЛК.
Создал модбас МАСТЕР:86825
Добавил 485 интерфей слот2 и выполнил его настройки:86826
Добавил униерсальный модбас и опять настройкиЖ86827
86828
Но не работает:86829
А теперь для чего мне это нужно. Есть ПЛК и Частотник которым надо регулировать посредством ПИД регулятора но нет модуля аналогового вывода, вот я и решил пускай частотником управляет ПИД регулятор в ПР 200 у которой есть аналоговый выход 4_20мА, а управление пид регулятором будет транслироваться в мастер ПЛК 110 а отттуда в панель оператора. Не закидывайте меня тряпками ибо я действительно не знаю как реализовать эту связь с ПР200
Изменил величину константв ПРке и о Она прочлась ПЛК86830
Записать в ПРку тоже флоут получилось:86831
Теперь вот уперся. Из ПРки передал 2 бита посредством битовой маски:86832
Принял их в ПЛК: 86833.
А как эту ворд0вскую переменну распаковать что бы увидить состояние этих 2 бит по отдельности, и следоющий вопрос как битовые переменные запаковать чтоббы передать в ПР200?
математикой, самый простой способ Word AND нужное число, числа и т.д.
Вроде и для ПЛК есть библиотеки работы с битами, все практически тоже самое.
математикой, самый простой способ Word AND нужное число, числа и т.д.
Вроде и для ПЛК есть библиотеки работы с битами, все практически тоже самое.
всегда считал что точка и разряд в КДС самый простой способ
kondor3000
21.11.2025, 15:34
А как эту ворд0вскую переменну распаковать что бы увидить состояние этих 2 бит по отдельности, и следоющий вопрос как битовые переменные запаковать чтоббы передать в ПР200?
Биты распаковываются из маски через точку b0:= Mask.0; b1:= Mask.1; b2:= Mask.2; b3:= Mask.3; и т. д.
Упаковываются в обратном порядке.
capzap :) все время забываю про нее, так как многие пишут на CFC из практики.
capzap :) все время забываю про нее, так как многие пишут на CFC из практики.
ну так и на CFC можно использовать, может практики у кого то нет
а как это выглядит в CFC?
А как это в CFC сделать b0:= Mask.0
b0 - это же битовая переменная?
а как это выглядит в CFC?
В квадратике входной переменной так и пишешь "Mask.0"
86834
Все на сегодня, потопал к детям_жене и 2 собакам инвалидам, завтра прдолжу:eek:
kondor3000
21.11.2025, 16:45
b0 - это же битовая переменная?
Битовая, на скрине маска бит чтения W, маска бит записи W1, на CFC вот так 86835
Колеги ,всем большое спасибо, у меня все получилось! Хороших Вам выходных!
Сергей0308
22.11.2025, 12:33
Колеги ,всем большое спасибо, у меня все получилось! Хороших Вам выходных!
Это радует, в смысле, более чем за одиннадцать с половиной лет, что Вы на форуме, было бы странно если не получилось!
grigoriyvip
22.11.2025, 13:21
Здравствуйте создал проект на одном компьютере, теперь запускаю его на другом,но почему-то вкладки как на первом не появляются как правильно запускать проект 86840 86841
kondor3000
22.11.2025, 13:36
Здравствуйте создал проект на одном компьютере, теперь запускаю его на другом,но почему-то вкладки как на первом не появляются как правильно запускать проект
Внизу слева переключение Ресурсов или POU (программы) 86843 а так же Типы данных (Структуры) и Визуализация
grigoriyvip
22.11.2025, 13:40
Спасибо, нашёл, а как скопировать конфигурация плк,у меня в папке еще несколько файлов файл с каким расширением за это отвечает
kondor3000
22.11.2025, 13:43
Спасибо, нашёл, а как скопировать конфигурация плк,у меня в папке еще несколько файлов файл с каким расширением за это отвечает
Лучший вариант сделать копию проекта и переименовать.
Другой вариант экспортировать что нужно (можно выбрать, например конфигурацию) и импортировать в новый проект.
grigoriyvip
22.11.2025, 15:12
Дело в том,что я открываю тот же проект но в нем не отображается ничего как в него импортировать данные
kondor3000
22.11.2025, 15:19
Дело в том,что я открываю тот же проект но в нем не отображается ничего как в него импортировать данные
Если ничего не отображается, значит у вас не установлены Таргеты или биб-ки. Лучше поставить всё сразу.
Биб-ки можно установщиком + нужные отдельно.
https://owen.ru/product/codesys_v2/service_po
grigoriyvip
22.11.2025, 15:24
Спасибо, у меня ПЛК 160, но старый не М02 где скачать библиотеки на него,или они одинаковые у обоих версий
grigoriyvip
22.11.2025, 15:27
И можно пожалуйста ссылку на таргеты
grigoriyvip
22.11.2025, 15:33
Как я понял мне нужно указать путь на файлы,какие из этих файлов отвечают за конфигурацию библиотеку и т86845д
grigoriyvip
22.11.2025, 15:34
86846 вот сами файлы
kondor3000
22.11.2025, 15:35
И можно пожалуйста ссылку на таргеты
Ссылка выше, таргеты скачайте и 2.12 и 3.3, ставьте все, на видео 2 вариант установки
там же биб-ки с установщиком. Ставьте всё по умолчанию ничего не меняя.
и видео по установке таргетов https://rutube.ru/video/e84618665bfe51e1778ea30db24f4fcf/
Добрый день
Необходимо считывать объем из расходомера Взлет ЭРСВ-541П АВ. На картинке приведен фрагмент карты регистров. Вопрос - что такое Логический MB адрес ?
3 в начале, InputRegister, функция 4. Далее адрес регистра, возможно надо будет прибавить 1 к нему. Опытным путем.
Signed Long тут 32-х битная (4 байта) переменная со знаком.
Есть логический адрес MB - это адрес от 40_001 (или 400_001 - бывают варианты) и выше, а есть простой - от 0 и выше, но с обязательным добавлением, что читать функцией 3, а записывать функцией 6.
Если запись 40_001, то набор функций сразу подразумевается и в отдельном уточнении не нуждается.
Физически это одни и те же адреса, но вот записи в таблице - разные.
В Вашем случае адреса 300_001 и выше - это означает, что им соответствуют адреса 0 и выше и функции чтения 4 и записи (не помню - посмотрите в справке).
Например, логическому 316388 соответствует адрес регистра 16387 и функция чтения 4, а записи - не помню.
kondor3000
23.11.2025, 14:10
3 в начале, InputRegister, функция 4. Далее адрес регистра, возможно надо будет прибавить 1 к нему.
Не прибавить 1, а отнять 1
В Вашем случае адреса 300_001 и выше - это означает, что им соответствуют адреса 0 и выше и функции чтения 4 и записи (не помню - посмотрите в справке).
Например, логическому 316388 соответствует адрес регистра 16387 и функция чтения 4, а записи - не помню.
Функция чтения 0х04 это Input регистры, у них нет записи, только чтение.
Есть логический адрес MB - это адрес от 40_001 (или 400_001 - бывают варианты) и выше, а есть простой - от 0 и выше, но с обязательным добавлением, что читать функцией 3, а записывать функцией 6.
Если запись 40_001, то набор функций сразу подразумевается и в отдельном уточнении не нуждается.
Физически это одни и те же адреса, но вот записи в таблице - разные.
В Вашем случае адреса 300_001 и выше - это означает, что им соответствуют адреса 0 и выше и функции чтения 4 и записи (не помню - посмотрите в справке).
Например, логическому 316388 соответствует адрес регистра 16387 и функция чтения 4, а записи - не помню.
А где почитать про все эти премудрости ?
Не прибавить 1, а отнять 1
Функция чтения 0х04 это Input регистры, у них нет записи, только чтение.
Правильно я понимаю, что Объем прямого направления потока в формате float надо читать по адресу (32733 - 1) = 32732 ?
kondor3000
23.11.2025, 14:24
Правильно я понимаю, что в формате float надо читать по адресу (32733 - 1) = 32732 ?
Адрес 32773-1= 32772 и это Float дробная часть Объема прямого направления потока,
есть ещё целая часть до запятой INT 32 c адресом 32771-1= 32770
Правильно я понимаю, что Объем прямого направления потока в формате float надо читать по адресу (32733 - 1) = 32732 ?
Возможно, я неправильно понял название параметра...
В таблице параметру "Объем прямого направления потока в формате float" соответствует логический адрес 332773 (для удобства чтения разделю разряды 332_773).
Этому адресу соответствует регистр 32772 (32_772) и функция чтения 4.
Не знаю, где об этом читать - мне встречалось только в обсуждениях на форуме и в популяризаторских статьях.
Пришлось просто запомнить.
Недавно настраивал прибор контроля вибрации Bently-Nevada 3500, адреса в документации задавались в формате 40_001+. Пришлось экспериментом уточнять, что это функция 3 и адреса нужно пересчитать от 0.
А ранее встречал и реальные адреса регистров 40_000+ без пересчёта - ведь в размер word они умещаются.
Нет 100% уверенности в каждом отдельном случае.
Но для адресов, которые явно не поместятся в word (превышают 65535) - как в Вашем случае - можно точно сказать и пересчёт и функцию.
Адрес 32773-1= 32772 и это Float дробная часть Объема прямого направления потока,
есть ещё целая часть до запятой INT 32 c адресом 32771-1= 32770
Скорее всего, так и есть, но я бы проверил чтением после протекания нескольких куб.м.
Невероятно, но вдруг - эти регистры показывают одно и то же, но в разных форматах - как аналоговые сигналы из модулей ввода - есть и целые, есть и float значения, но это одно и то же.
Скорее всего, так и есть, но я бы проверил чтением после протекания нескольких куб.м.
Невероятно, но вдруг - эти регистры показывают одно и то же, но в разных форматах - как аналоговые сигналы из модулей ввода - есть и целые, есть и float значения, но это одно и то же.
В таблице написано, что дробная и целая части читаются отдельно да еще в разных форматах.
Теперь вопрос - сможет ли ПР205 прочитать целое число в формате signed long ? Или придется читать 2 регистра целой части, 32770 и 32771, а потом их склеивать и преобразовывать в float. Может кто-то это уже делал ?
kondor3000
23.11.2025, 15:08
В таблице написано, что дробная и целая части читаются отдельно да еще в разных форматах.
Теперь вопрос - сможет ли ПР205 прочитать целое число в формате signed long ?
У ПР только целое беззнаковое 32 бит, надо его принять и прогнать через функцию доп кода DINT_TO_FLOAT
Функции FLOAT_TO_INT и INT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821
Выводить в ПР придётся по отдельности До запятой и после запятой
У ПР только целое беззнаковое 32 бит, надо его принять и прогнать черех функцию доп кода DINT_TO_FLOAT
Функции FLOAT_TO_INT и INT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821
Каким это образом ПР сможет прочитать 32-х битное целое ? ПР способно прочитать только 16-и битное целое.
kondor3000
23.11.2025, 15:16
Каким это образом ПР сможет прочитать 32-х битное целое ? ПР способно прочитать только 16-и битное целое.
Поставить целое 2 регистра, будет 32 бита. Это можно сделать в ПР мастере.
Поставить целое 2 регистра, будет 32 бита. Это можно сделать в ПР мастере.
Ваша правда.
У ПР только целое беззнаковое 32 бит, надо его принять и прогнать через функцию доп кода DINT_TO_FLOAT
Функции FLOAT_TO_INT и INT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821
Выводить в ПР придётся по отдельности До запятой и после запятой
В моем случае расход будет всегда положительный, т.к. поток воды будет односторонний.
ПР205 не сможет, если не умеет работать с double (8 байт). У float просто тямы не хватит сохранить целую часть через некоторое время, когда у счётчика будет в целой части значение больше, чем может переварить float.
Ну, можете извращаться и клеить или транслировать в том же виде дальше.
Целая часть int это 2 лярда с лишним, наверное раньше пр сдохнет или сам взлет :)
Целая часть int это 2 лярда с лишним, наверное раньше пр сдохнет или сам взлет :)
Так как правильно все сделать ?
kondor3000
23.11.2025, 16:42
Так как правильно все сделать ?
Дважды уже написал
Выводить в ПР придётся по отдельности До запятой и после запятой
10 знаков до и 6 -7 после запятой 86855
Если задача только выводить на дисплей ПР205, то можно вывести целое, затем ".", затем float умножить на 1_000_000, преобразовать в целое и вывести с лидирующими нолями.
kondor3000
23.11.2025, 17:20
Если задача только выводить на дисплей ПР205, то можно вывести целое, затем ".", затем float умножить на 1_000_000, преобразовать в целое и вывести с лидирующими нолями.
Достаточно наложить дисплеи, скрин выше.
Дважды уже написал
10 знаков до и 6 -7 после запятой 86855
А почему нельзя целое преобразовать во float и сложить с дробной частью ? Мне не только на экран выводить.
kondor3000
23.11.2025, 18:31
А почему нельзя целое преобразовать во float и сложить с дробной частью ? Мне не только на экран выводить.
Обычный флоат, максимум 7-8 знаков или до или после запятой, для большего кол-ва знаков нужен LFloat ( 4 регистра), чего в ПР и в ПЛК110 нет.
больше 8 знаков будут нулями (что в расходе не допустимо)
Поэтому и делают целым до запятой и Float после запятой, итого 17 знаков.
Здесь пытались вывести DOUBLE ( LFloat ) как REAL (Float ) , получилось всего 8 знаков.
https://owen.ru/forum/showthread.php?t=41933&p=472259&viewfull=1#post472259
Как понимаю, этот "объём прямого направления потока" - не текущее значение расхода, а накопленное с момента включения прибора в работу.
Для такого параметра, скорее всего, применение - или оплата израсходованного ресурса по тарифу, или какая-то статистика в конце смены. Т.е. реально используется разность с предыдущим зафиксированным значением. Тогда можно и после всех вычитаний и учёта заёма из "целых" при вычитании "дробных" - приводить результат к единому float, т.к. разность будет уже не столь значительна по числу точных знаков.
kondor3000
23.11.2025, 19:57
Как понимаю, этот "объём прямого направления потока" - не текущее значение расхода, а накопленное с момента включения прибора в работу.
Для такого параметра, скорее всего, применение - или оплата израсходованного ресурса по тарифу, или какая-то статистика в конце смены. Т.е. реально используется разность с предыдущим зафиксированным значением. Тогда можно и после всех вычитаний и учёта заёма из "целых" при вычитании "дробных" - приводить результат к единому float, т.к. разность будет уже не столь значительна по числу точных знаков.
Смотрите, что получается Расход в целых 123456789- 123456784= 5 кубов 86863
Расход с плав. точкой, ввожу 123456789 округляется до 123456790
ввожу 123456784 округляется до 123456780,
123456790-123456780= 10 кубов, а показывает 8.
Офигенно считает, 5 по факту, насчитал 8, а должно быть 10.
Это 9 знаков.
При 10 знаках, разницы уже нет совсем, расход 0 86866 в целых те же 5 кубов
И это всего 10 знаков, что будет если знаков 15, +/- 1000 кубов влёт
IVM куда вам дальше? Поступите так же, как во взлете, даже 1 регистр можете сэкономить, представив дробную часть целым числом.
Смотрите, что получается Расход в целых...
Мне показалось, что целая часть объёма меняется в полном 31-разрядном диапазоне 0...2*10^9.
А дробная - в диапазоне от 0.000000000 до 0.9999999999.
Поэтому пример будет несколько иным:
- предыдущее 999999123 и 0,123
- текущее 999999234 и 0,023
= разность 999999234-999999123=111 и 0,023-0,123=-0,100
выполняем заём из разряда целых 111-1=110 и прибавляем этот заём к дробным -0,100+1,000=+0,900
итого 110 и 0,900 т.е. 110,900 - такое число почти без погрешности поместится в float с его 24 битами мантиссы (2^24=16777215 - 7-8 точных цифр).
А какова цель представлять дробную часть в форме float ? Если расход считается с точностью до 1Л, то после запятой должно быть 3 десятичных знака. В РЭ на Взлет указано, что в дробной части всего 2 знака.
Цель простая, мозги взлета тоже не умеют работать с double.
Belletein
25.11.2025, 09:10
Подскажите, на ПР103 можно общие клеммы аналоговых входов объединять с защитной землёй?
grigoriyvip
25.11.2025, 10:05
Здравствуйте, под рукой нет кабеля usb и ethernet могу ли я залить программу в ПЛК через разъём USB B
kondor3000
25.11.2025, 10:10
Здравствуйте, под рукой нет кабеля usb и ethernet могу ли я залить программу в ПЛК через разъём USB B
Какой у вас ПЛК ?
Пишите вы в раздел Программируемых реле.
grigoriyvip
25.11.2025, 10:15
Плк 160 М.
Плк 160 М.
Здравствуйте, под рукой нет кабеля usb и ethernet могу ли я залить программу в ПЛК через разъём USB B
Этот разъём (квадратное гнездо) для этого и используется. Разъём USB A - под флешку
Newcomer
28.11.2025, 19:41
Могут ли у ПР205 оба порта RS-485 работать в режиме Master ?
kondor3000
28.11.2025, 19:46
Могут ли у ПР205 оба порта RS-485 работать в режиме Master ?
Могут, если их настроить. Переменные должны быть с разными именами.
Сергей0308
28.11.2025, 19:51
Могут ли у ПР205 оба порта RS-485 работать в режиме Master ?
Только смысл сего не очевиден, может поделитесь опытом.
kondor3000
28.11.2025, 19:56
Только смысл сего не очевиден, может поделитесь опытом.
Простейший вариант, развязать модули ввода-вывода с частотниками.
По ТСР пр205 будет слейвом для Скады или панели.
Newcomer
28.11.2025, 20:22
В ПР205 порт RS-485-1 настроен как Slave, а RS-485-2 как Master. Порты соединены между собой ЛС. Сетевая переменная на стороне Slave имеет значение 999. Как на холсте визуально показать что Master читает Slave, т.е. что сетевая переменная B на стороне Master имеет значение 999 ? Естественно, что проект будет запущен на ПР. А возможно ли сетевую переменную B вывести на экран ?
kondor3000
28.11.2025, 21:08
В ПР205 порт RS-485-1 настроен как Slave, а RS-485-2 как Master. Порты соединены между собой ЛС. Сетевая переменная на стороне Slave имеет значение 999. Как на холсте визуально показать что Master читает Slave, т.е. что сетевая переменная B на стороне Master имеет значение 999 ? Естественно, что проект будет запущен на ПР. А возможно ли сетевую переменную B вывести на экран ?
Вот так переменная мастера на поле, записывается в переменную, 86951 которая привязана на экране.
Переменную слейва можно вывести на экран, переменную мастера ПР205 только через промежуточную.
Newcomer
28.11.2025, 22:04
Вот так переменная мастера на поле, записывается в переменную, 86951 которая привязана на экране.
Переменную слейва можно вывести на экран, переменную мастера ПР205 только через промежуточную.
Почему значение Slave-переменной отображается в режиме симуляции, а значение Master-переменной не отображается ?
И что-то я у себя не вижу в свойствах переменной B_ расширенных настроек.
Newcomer
28.11.2025, 22:08
Вот так переменная мастера на поле, записывается в переменную, 86951 которая привязана на экране.
Переменную слейва можно вывести на экран, переменную мастера ПР205 только через промежуточную.
Почему в режиме симуляции значение A отображается, а значение B не отображается.
Что-то я у себя не вижу расширенного режима в свойствах переменной B_.
kondor3000
28.11.2025, 22:08
Почему значение Slave-переменной отображается в режиме симуляции, а значение Master-переменной не отображается ?
И что-то я у себя не вижу в свойствах переменной B_ расширенных настроек.
В симуляции обмен не работает, запустите на ПР205.
У переменной В нет настроек, они у пременной Чтение мастера и сначала её надо привязать к экрану.
Newcomer
28.11.2025, 22:21
Как почистить эту таблицу ?
Newcomer
28.11.2025, 22:31
В чем принципиальное отличие сетевая входной переменная от сетевой выходной переменной ?
kondor3000
28.11.2025, 22:31
Как почистить эту таблицу ?
Выбрать переменную на удаление и выше крестиком Х - удалить
Чем сетевая входная переменная отличается от сетевая выходной переменной ?
Вход для чтения, выход для записи, у мастера.
У слейва может быть переменная сама в себя, чтение и запись Мастером.
А может также, чтение и запись в другую переменную.
Newcomer
28.11.2025, 22:45
Вход для чтения, выход для записи, у мастера.
А в случае Slave что ? Master (панель) должна читать сетевую переменную из Slave (ПР). Что надо поставить на холст, сетевая входную переменную или сетевую выходную переменную ?
А в случае Slave что ? Master (панель) должна читать сетевую переменную из Slave (ПР). Что надо поставить на холст, сетевая входную переменную или сетевую выходную переменную ?
Странные вопросы.
А чем обычные, не сетевые, входная от выходной отличаются?
86959
А вот попробуй выходную(сетевую или обычную) прицепить на вход ф.блока. Слабо?
Потому и называются так
- ВХОДНАЯ для подключения на ВХОДЫ ф.блоков
- ВЫХОДНАЯ для подключения на ВЫХОДЫ ф.блоков.
86960
А в случае Slave что ? Master (панель) должна читать сетевую переменную из Slave (ПР). Что надо поставить на холст, сетевая входную переменную или сетевую выходную переменную ?
Если ты хочешь что-то сообщить мастеру(панели), то должен записать это в сетевую переменную, значит на холсте подключишь это в ВЫХОДНУЮ сетевую
86961
А если интересует, что мастер(панель) тебе прислал, то заберешь это из ВХОДНОЙ сетевой перемнной
86962
Newcomer
29.11.2025, 11:02
Странные вопросы.
А чем обычные, не сетевые, входная от выходной отличаются?
86959
А вот попробуй выходную(сетевую или обычную) прицепить на вход ф.блока. Слабо?
Потому и называются так
- ВХОДНАЯ для подключения на ВХОДЫ ф.блоков
- ВЫХОДНАЯ для подключения на ВЫХОДЫ ф.блоков.
86960
Если ты хочешь что-то сообщить мастеру(панели), то должен записать это в сетевую переменную, значит на холсте подключишь это в ВЫХОДНУЮ сетевую
86961
А если интересует, что мастер(панель) тебе прислал, то заберешь это из ВХОДНОЙ сетевой перемнной
86962
Большое спасибо.
Newcomer
29.11.2025, 11:08
Проблема с последней версией OL 2.11.370. Порт RS-485-1 ПР205 не работает в режиме Slave, а в режиме Master работает.
Откатили на OwenLogic_2.9.364 все заработало. Кто-то может подтвердить, что версия 2.11.370 косячная ?
kondor3000
29.11.2025, 11:19
Проблема с последней версией OL 2.11.370. Порт RS-485-1 ПР205 не работает в режиме Slave, а в режиме Master работает.
Откатили на OwenLogic_2.9.364 все заработало. Кто-то может подтвердить, что версия 2.11.370 косячная ?
На каком проекте проверяли? Какие типы переменных, только целочисленные? Как определили работоспособность?
В 2.9.364 помоему был обратный порядок байт, в 2.11.370 надо изменить порядок байт, галку в Мастере снять (поставить)
Newcomer
29.11.2025, 12:18
ПР205, RS-485-1 - Slave. Сенсорная панель ONI - Master. Простейшие проекты. В ПР создана одна целочисленная сетевая переменная. Панель читает эту переменную и выдает сообщение об отсутствии связи.
На OwenLogic_2.9.364 все работает.
kondor3000
29.11.2025, 12:30
ПР205, RS-485-1 - Slave. Сенсорная панель ONI - Master. Простейшие проекты. В ПР создана одна целочисленная сетевая переменная. Панель читает эту переменную и выдает сообщение об отсутствии связи.
На OwenLogic_2.9.364 все работает.
Панель Мастер может спокойно читать соседний регистр с адресом +1, то есть 16390, а его у вас нет в слейве. И выдавать сообщение об отсутствии связи. Если специально не поменять настройки в панели.
Но похоже это не ваш случай.
Newcomer
29.11.2025, 13:26
Панель Мастер может спокойно читать соседний регистр с адресом +1, то есть 16390, а его у вас нет в слейве. И выдавать сообщение об отсутствии связи. Если специально не поменять настройки в панели.
Но похоже это не ваш случай.
С адресацией все нормально. И на более ранней версии OL все работает.
Игорь Ку
29.11.2025, 18:32
пр103 нет передачи данных в облако, раннее были проблемы с мобильной связью, но когда с мобильным интернетом наладилось, начал тестить всю сборку в шкафу.В модеме есть инет, пингует все. С юсб шнурком подключюсь к пр103, обновил встроенную программу, программу диспетчеризации.ОК! А все попытки подключится по изернет к пр103 фиаско- не находит прибор и овен лоджик и овен конфигуратор. В порту диоды горят желтый постоянно зеленый при подключении шнура, но не моргает. Типа передачи данных нет. Реакция на подключение к изернету есть - загорается (зеленый). Как продиагностировать изернет порт?
как продиагностировать? - настроить мастером и опросить какого-нибудь слейва, например эмулятор на ПК.
настроить слейвом и опросить с ПК.
Newcomer
02.12.2025, 09:45
Добрый день
Как вывести значение Status на экран ПР205 ? Щелкаю по индикатору, выскакивает пустая таблица. Где в этой таблице объявленная битовая переменная Status ?
kondor3000
02.12.2025, 09:58
Добрый день
Как вывести значение Status на экран ПР205 ?
Присвоить Status в переменную Status_Out, которую вывести на экран (управление индикатором)
Newcomer
02.12.2025, 10:06
Присвоить Status в переменную Status_Out, которую вывести на экран (управление индикатором)
Спасибо. А почему саму переменную Status нельзя вывести на экран.
Королев Кирилл
02.12.2025, 10:34
Спасибо. А почему саму переменную Status нельзя вывести на экран.
К сожалению, такие ограничения платформы. Переменные, которые привязываются к настройкам приборам вывести на экран можно только через промежуточные переменные.
Сергей0308
02.12.2025, 15:29
К сожалению, такие ограничения платформы. Переменные, которые привязываются к настройкам приборам вывести на экран можно только через промежуточные переменные.
Хорошо, тогда возникает резонный вопрос, как это назвать, в смысле, ранее на ПР200 можно было любые переменные вывести на экран.
Если становится сложней и менее удобно делать что-то, это называется - деградация.
Короче, если не получается сделать лучше, обычно оставляют как было ранее, это так разумные существа поступают, здесь "разумом" и не пахнет, мне так кажется, в смысле, если делают хуже чем было раньше, мне даже непонятно зачем это делать!
boris.bv@ bk.ru
02.12.2025, 16:32
Добрый всем, вопрос может кто сталкивался подскажите, ПР205 подключен датчик давления 4-20мА, при запуске работает нормально то.есть соответствует манометру, через какое-то время зависает на отметке 4 Бар а на манометре меньше 1 Бар заменил датчик давления с исправной системы а проблема осталась. Заранее спасибо.
МихаилГл
02.12.2025, 16:56
Добрый всем, вопрос может кто сталкивался подскажите, ПР205 подключен датчик давления 4-20мА, при запуске работает нормально то.есть соответствует манометру, через какое-то время зависает на отметке 4 Бар а на манометре меньше 1 Бар заменил датчик давления с исправной системы а проблема осталась. Заранее спасибо.
А код ваш, или чей то? Может просто закладка от разработчика...
boris.bv@ bk.ru
02.12.2025, 17:18
А код ваш, или чей то? Может просто закладка от разработчика...
87027
Писал программу сам
МихаилГл
02.12.2025, 17:28
87027
Писал программу сам
В программе тоже не тот уровень сигнала? А мультиметром проверяли реальный ток какой идёт с датчика?
boris.bv@ bk.ru
02.12.2025, 19:35
При зависании не было возможности проверить , в рабочем состоянии проверял калибратором CL200, показания верны. Зависание происходит через какое-то время 3-6 часов, перезагружают все опять работает.
kondor3000
02.12.2025, 19:46
При зависании не было возможности проверить , в рабочем состоянии проверял калибратором CL200, показания верны. Зависание происходит через какое-то время 3-6 часов, перезагружают все опять работает.
Смотрите питание (проверка заменой БП, ставьте фильтры если надо) и помехи по сети RS485, сигнальных и измерительных линий от частотников, силовых кабелей (экранирование с заземлением, разнесение кабелей)
Откатитесь на Owen Logic версии 367 - и проверьте устойчивость работы.
Может быть прошивка "шалит"?
Просто именно зависание измерений в ПР - это за пределами добра и зла.
Ну и по хорошему, нужно отслеживать отказ датчика с блокировкой работы и фиксацией ошибки, а также заряд батарейки - с сигнализацией на дисплее, да и все остальные ошибки фиксировать.
Установите амперметр в разрыв цепи и держите его до самого зависания.
Просто разрыв цепи датчика давления без перезагрузки - восстанавливает работу? Доводилось работать с датчиками, которые при броске давления диагностировали гидроудар и их микроконтроллер останавливал измерения - после отказа покупать такие датчики производитель изменил прошивку, но с десяток таких датчиков мне пришлось выбросить и фирма купила у другого производителя.
Сергей0308
03.12.2025, 09:35
Откатитесь на Owen Logic версии 367 - и проверьте устойчивость работы.
Может быть прошивка "шалит"?
Просто именно зависание измерений в ПР - это за пределами добра и зла.
Ну и по хорошему, нужно отслеживать отказ датчика с блокировкой работы и фиксацией ошибки, а также заряд батарейки - с сигнализацией на дисплее, да и все остальные ошибки фиксировать.
Установите амперметр в разрыв цепи и держите его до самого зависания.
Просто разрыв цепи датчика давления без перезагрузки - восстанавливает работу? Доводилось работать с датчиками, которые при броске давления диагностировали гидроудар и их микроконтроллер останавливал измерения - после отказа покупать такие датчики производитель изменил прошивку, но с десяток таких датчиков мне пришлось выбросить и фирма купила у другого производителя.
Мне тоже такой дурацкий преобразователь(датчик) давления попадался, это же надо Овену до такого додуматься, в смысле, как что-то хорошее сделать, не дождётесь от них, как плохое, мигом сделают, даже без просьб трудящийся!
Короче, выкрутился из положения, УТ24 поставил, он раз в минуту или две минуты, уже точно не помню, разрывал цепь питания датчика на несколько секунд и датчик выходил из аварийного состояния(на выходе менее 4 мА), хорошо что процесс это позволял, был медленным, датчик уровень показывал в башне Рожновского, по нему осуществлялось управление глубинным насосом.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot