Можно поподробнее про формулу?
Можно поподробнее про формулу?
каждый цикл снимаете показания с датчика давления. Далее текущее значение записываете в промежуточную переменную, а значение промежуточной переменной перед этим во вторую промежуточную переменную, таким образом будет три значения текущей итерации и двух предыдущих, вернувшись к формуле получается что если сумма значений текущего и две итерации назад больше чем предыдущая итерация умноженная на два, то показания растут, если меньше то падают, если равно нулю значит это линейный график, что в реальности невозможно
через конфигурацию вряд ли, а через библиотечные функции можно в среднем посылать запросы с периодом 20мс
Смысл в этих 20мс???
Какая скорость опроса у аналогового входа , к которому подключен датчик????
Блин , опрос весовых дозаторов (3...5) с реально быстрым опросом (50гц) через конфигурацию с периодом 50мс успеваем проводить.
Сколько можно парить юные(и не очень) головы своими библиотеками опроса??????
Ну нет у библиотеки такого уж сильного преимущества.(чес слово вообще по модбасу преимуществ НЕТУ).
Последний раз редактировалось Sergey666; 08.12.2013 в 23:16.
А есть ли весоаые дозаторы,работающие по модбас,вроде бы у них свой протокол,аскишный,что помедленее рту будет.
По поводу преимуществ библиотечного способа, при отключении питания весь модбас в клнфигурации пишется на флеш, скорее всего в ущерб ретайнам проекта,поэтому и быват проблемы с ними. Сам опрос, как нибудь при свободном времени, выложу видео с логом, какие запросы приходят от мастера модбас через коныигуратор и через бибку
Предложите свое решение, раз в моем глазу соринка не нравиться
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
Далее счетчик обнуляйте когда требуется.
Оцифрованнее мислить надо Товарищи!!!!!!!
Цифра - это всегда кусочки.Тока маленькие.
Последний раз редактировалось Sergey666; 08.12.2013 в 23:56.
Предлагаю такой вариант
Можно измерить и время цикла ПЛК и время выполнения программы.Код:PROGRAM PLC_PRGVAR delta: TIME; (*Время цикла ПЛК*) prevScanTime: TIME; t1: TIME; t2: TIME; (*Время выполнения программы*) END_VAR ------------------------------ (*Этот код в начале программы*) t1:=TIME(); delta := t1 - prevScanTime; prevScanTime := t1; (*------------------------------*) (*Здесь тело программы*) (*------------------------------*) (*В самом конце программы*) t2:=TIME()-t1;
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg