Просмотр полной версии : регулятор напряжения
Здравствуйте. Имеется модуль ввода параметров электрической сети МЭ110-220.3М, который подключен к контроллеру ОВЕН ПЛК100. Модуль измеряет напряжение каждую секунду, и если напряжение выше 230 В, то контроллер подает сигнал на включение контактора, если в течении 10 секунд напряжение ниже 230 В, контроллер подает сигнал на отключение этого контактора. Подскажите каким образом реализовать этот алгоритм?
Навскидку, может быть, так:
VAR
out: BOOL; (*Выход управления контактором*)
in: REAL; (*Вход измерения напряжения*)
tp1: TP; (*Таймер*)
END_VAR
TP1(IN:=(in<230) , PT:=t#10s);
out:= (in>230) OR (in<230) AND tp1.Q;
Ну, а там можно и усложнять (гистерезис и.т.д.).
Или, если ещё проще:
__________________________________________________ ____________________
VAR
TON1: TON;
in: REAL;
out1: BOOL;
END_VAR
__________________________________________________ ____________________
TON1(IN:=(in<230), PT:=t#10s );
out1:=NOT ton1.Q;
__________________________________________________ ____________________
tof1(IN := in >= 230, PT := T#10s, Q => out1);
+1000!
Вот самый оптимальный код!!!
На языке CFC собрал вот такую цепь21724
Если u1>u то через 10 секунд на out будет подан сигнал true. Если после этого u1<u, то запустится таймер TOF и на out будет сигнал true еще 10 секунд, после чего out изменится на false. Но если значение u1 становится больше u (u1>u) когда уже запущен таймер TOF, то сигнал на out пропадет на некоторое время (разница между t2 и t3) и затем снова появится. Как избежать такой ситуации, когда пропадает сигнал с out?
Я честно пытался понять, что вам требуется, но вынужден сдаться.
Модуль измеряет напряжение каждую секундуЧто делать с этой информацией? Это часть алгоритма?
и если напряжение выше 230 В, то контроллер подает сигнал на включение контактораНо во втором сообщении вы почему-то включаете его только через 10 секунд после возникновения такой ситуации.
если в течении 10 секунд напряжение ниже 230 В, контроллер подает сигнал на отключение этого контактораВ течение этих 10 секунд подаёт сигнал? Или через 10 секунд его подаёт? Русский мой родной язык, и я не могу разобрать это полу-предложение.
разница между t2 и t3Это тоже частью алгоритма должно быть или вы просто наблюдаете по этим переменным?
Циклограммы в студию, кароч. Иначе фиг поймёшь.
На языке CFC собрал вот такую цепь21724
Если u1>u то через 10 секунд на out будет подан сигнал true. Если после этого u1<u, то запустится таймер TOF и на out будет сигнал true еще 10 секунд, после чего out изменится на false. Но если значение u1 становится больше u (u1>u) когда уже запущен таймер TOF, то сигнал на out пропадет на некоторое время (разница между t2 и t3) и затем снова появится. Как избежать такой ситуации, когда пропадает сигнал с out?
Вам же Yegor самый простой пример привел:
VAR
tof1: TOF;
out: BOOL;
u1: REAL:=235;
tim: TIME:=t#10s;
END_VAR
Все верно, пример, который предложил Yegor действительно работает. Теперь же условие усложнилось и нужно сделать следующее:
Циклограммы в студию, кароч. Иначе фиг поймёшь.
u1 изменяется каждую секунду и сравнивается со значением 230, значение out:=true. Если u1<230 в течении 10 секунд (допустим 225,226,225,222,...,226), то на выходе таймера out:=false, иначе счетчик обнуляется и значение out остается прежним out:=true. Если u1>=230 в течении 10 секунд (допустим 235,236,235,232,...,236), то на выходе таймера out:=true, иначе счетчик обнуляется и на выходе таймера значение out:=false.
Прошу прощения за мое корявое описание алгоритма, я только начинаю знакомиться с программированием.
Владимир Ситников
13.01.2016, 14:30
График напряжения от времени нарисуйте.
И график желаемого значения на выходе.
И не просто какой-то, а чтобы там были случаи скачков напряжения туда-сюда и т.п.
Прогаммировать нужно после того, как стало понятно как должна вести себя система.
Диаграмма напряжения u от времени и значения на выходе out21734
В 1 варианте c 8 по 18 секунды напряжение больше 230 в течение 10 секунд - значение на выходе становится true;
Во 2 варианте с 25 по 35 секунды напряжение ниже 230 в течение 10 секунд - значение на выходе становится false;
В 3 варианте с 36 по 40 секунды напряжение выше 230 в течение 4 секунд - значение на выходе остается false;
в 4 варианте с 41 по 51 секунды напряжение выше 230 в течение 10 секунд - значение на выходе становится true;
в 5 варианте с 55 по 60 секунды напряжение выше 230 в течение 5 секунд - значение на выходе остается true.
Диаграмма напряжения u от времени и значения на выходе out21734
В 1 варианте c 8 по 18 секунды напряжение больше 230 в течение 10 секунд - значение на выходе становится true;
Во 2 варианте с 25 по 35 секунды напряжение ниже 230 в течение 10 секунд - значение на выходе становится false;
В 3 варианте с 36 по 40 секунды напряжение выше 230 в течение 4 секунд - значение на выходе остается false;
в 4 варианте с 41 по 51 секунды напряжение выше 230 в течение 10 секунд - значение на выходе становится true;
в 5 варианте с 55 по 60 секунды напряжение выше 230 в течение 5 секунд - значение на выходе остается true.
Например так
21737
Владимир Ситников
13.01.2016, 20:41
картинка
О, совсем другой разговор.
Теперь вопрос: почему кратковременное падения напряжения после 3 го фрагмента не срабатывает сигнал?
По-вашему как должно быть, если 9 секунд напряжение 240, потом 1 секунду 220, и так в цикле?
О, совсем другой разговор.
Теперь вопрос: почему кратковременное падения напряжения после 3 го фрагмента не срабатывает сигнал?
По-вашему как должно быть, если 9 секунд напряжение 240, потом 1 секунду 220, и так в цикле?
Откуда я знаю, как должно быть.
Сделал как просили если напряжение больше 230 в течение 10с и более, то Out:=TRUE. 9 секунд меньше 10, по этому Out:=FALSE.
Владимир Ситников
13.01.2016, 23:25
Откуда я знаю, как должно быть
Этот вопрос у меня к ohwow был.
Теперь вопрос: почему кратковременное падения напряжения после 3 го фрагмента не срабатывает сигнал?
По-вашему как должно быть, если 9 секунд напряжение 240, потом 1 секунду 220, и так в цикле?
Отвечаю:
1. После 3 фрагмента значение u меняет знак (его стоило бы тоже выделить). Этот фрагмент схож с фрагментом 5 — там также в момент, когда u становится меньше 230, запускается таймер. Так как u меньше 230 всего 2 секунды, таймер сбрасывается и сигнал остается прежним.
2. Если установлен out:=false, 9 секунд напряжение 240, а потом 1 секунду 220, то счетчик сбрасывается и остается прежним out:=false.
Например так
21737
petera, спасибо, пример работает как надо.
Всем спасибо за помощь.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot