Просмотр полной версии : длительность импульса
здравствуйте.
необходимо определить длительность импульса по времени на дискретном входе плк-100.
подскажите как это можно сделать.
а если необходимо определить общую длительность импульса по времени на дискретном входе?
спсб.
а как сделать так чтобы счетчик общей продолжительности импульса не сбрасывался после выключения плк?
Николаев Андрей
16.08.2010, 00:50
Конечную переменную, в которую Вы время наработки складываете объявить как Retain
А как теперь его "сбросить"?:confused:
Николаев Андрей
16.08.2010, 17:27
Кого сбросить? Переменную из Retain ???
Перед пропаданием питания обнулите её... Ну или при появлении питания...
имелось ввиду, как обнулить счетчик при необходимости.
Счетчик := SEL ( Необходимость, Счетчик, T#0s );
:)
это понятно...
куда и как этот кусок вставить в:
VAR
Timer : TON;
FixDi : R_TRIG;
Последний_импульс : TIME;
Все_без_последнего : TIME;
Общая_продолжительность : TIME;
END_VAR
....
Timer( IN := Di, PT := INT_TO_TIME( -1 ) );
FixDi( CLK := Di );
Последний_импульс := SEL( FixDi.Q, MAX( Последний_импульс, Timer.ET ), T#0s );
Все_без_последнего := SEL( FixDi.Q, Все_без_последнего, Общая_продолжительность );
Общая_продолжительность := Все_без_последнего + Последний_импульс;
извиняюсь, может это..на курсы, там, сходите..
с удовольствием!!! только нету(((
может еще подскажешь как сюда впихнуть счетчик(+1) на каждые 60 секунд?
т.е. более 60 сек считать не надо, и доп счетчик на каждые 60 сек.
Валенок, этими примерами можно воспользоваться если Общая_продолжительность не более 2 месяцев….
А если она составляет полгода, год?
Вот мой вариант:
VAR
RST: BOOL;
RS: RS;
R_TRIG: R_TRIG;
TON: TON;
END_VAR
VAR RETAIN PERSISTENT
Last_imp : TIME;
All_without_last : TIME;
All_imp : TIME;
hours: DWORD;
END_VAR
http://s50.radikal.ru/i127/1008/a8/7ad49df4f257.jpg
Для примера, считает количество циклов(hours) каждые 5 сек.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot