Можно поподробнее про формулу?
Вид для печати
Можно поподробнее про формулу?
каждый цикл снимаете показания с датчика давления. Далее текущее значение записываете в промежуточную переменную, а значение промежуточной переменной перед этим во вторую промежуточную переменную, таким образом будет три значения текущей итерации и двух предыдущих, вернувшись к формуле получается что если сумма значений текущего и две итерации назад больше чем предыдущая итерация умноженная на два, то показания растут, если меньше то падают, если равно нулю значит это линейный график, что в реальности невозможно
через конфигурацию вряд ли, а через библиотечные функции можно в среднем посылать запросы с периодом 20мс
Смысл в этих 20мс???
Какая скорость опроса у аналогового входа , к которому подключен датчик????
Блин , опрос весовых дозаторов (3...5) с реально быстрым опросом (50гц) через конфигурацию с периодом 50мс успеваем проводить.
Сколько можно парить юные(и не очень) головы своими библиотеками опроса??????:mad:
Ну нет у библиотеки такого уж сильного преимущества.(чес слово вообще по модбасу преимуществ НЕТУ).
А есть ли весоаые дозаторы,работающие по модбас,вроде бы у них свой протокол,аскишный,что помедленее рту будет.
По поводу преимуществ библиотечного способа, при отключении питания весь модбас в клнфигурации пишется на флеш, скорее всего в ущерб ретайнам проекта,поэтому и быват проблемы с ними. Сам опрос, как нибудь при свободном времени, выложу видео с логом, какие запросы приходят от мастера модбас через коныигуратор и через бибку
Предложите свое решение, раз в моем глазу соринка не нравиться
VAR
delta: TIME;
prevScanTime: TIME;
END_VAR
(*Время цикла*)
delta := TIME() - prevScanTime;
prevScanTime := TIME();
Вот видел такую манипуляцию. Поможет она? Куда поставить в конец или начало программы?
Запрсы по последовательным портам длятся больше одного цикла плк, так что в таком виде не поможет
Из 1го поста(стартового).
Вам надо обработку сделать (типа дискреты) с целью фиксации факта приращения .(допустим 1 десятая-приращение , 1 сотка - игнор).
Далее конструевина (по таймеру (типа время скана)).
Pressure_Up:=false;
Pressure_Dn:=False;
Tmr_scan(In:=not Tmr_scan.Q, Pt:=word_to_time(Time_scan*10)(*Тады 1==10мс*));
IF Tmr_scan.Q Then
IF Pressure>=Old_pressure+Discreta_P then
Pressure_Up:=true;
end_if
IF Pressure<=Old_pressure-Discreta_P then
Pressure_Dn:=True;
end_if
Old_pressure:=Pressure;
End_if
Rtrig_up(Clk:=Pressure_Up);
Rtrig_dn(Clk:=Pressure_Dn);
If Rtrig_Up.Q Then
Count_Up:=Count_Up+1;
End_if
Далее счетчик обнуляйте когда требуется.
Оцифрованнее мислить надо Товарищи!!!!!!!
Цифра - это всегда кусочки.:pТока маленькие.
Предлагаю такой вариант
Можно измерить и время цикла ПЛК и время выполнения программы.Код:PROGRAM PLC_PRGVAR
delta: TIME; (*Время цикла ПЛК*)
prevScanTime: TIME;
t1: TIME;
t2: TIME; (*Время выполнения программы*)
END_VAR
------------------------------
(*Этот код в начале программы*)
t1:=TIME();
delta := t1 - prevScanTime;
prevScanTime := t1;
(*------------------------------*)
(*Здесь тело программы*)
(*------------------------------*)
(*В самом конце программы*)
t2:=TIME()-t1;