Добрый день!
Помогите реализовать следующее:
На дискретный вход(например I0.0) приходит частота импульсов (допустим 30Гц). Нужно сделать так, чтобы маркер (например M0.0) маргал в 1.5 раза медленнее (например вместо 30Гц - 20Гц)
Заранее спасибо!
Помогите с генератором импульсов
Re: Помогите с генератором импульсов
Считаете входящие импульсы до трех, два раза мигаете выходом, один пропуск.
ПС Равномерность миганий в условиях не значится.)
ПС Равномерность миганий в условиях не значится.)
Re: Помогите с генератором импульсов
В условиях равномерность значится. Я же написал Герцы (Гц).and909 писал(а):Считаете входящие импульсы до трех, два раза мигаете выходом, один пропуск.
ПС Равномерность миганий в условиях не значится.)
Re: Помогите с генератором импульсов
Вопрос дискуссионный, ну да ладно.Fed писал(а):В условиях равномерность значится. Я же написал Герцы (Гц).
Если в общем виде, то измеряете частоту входящих импульсов, умножаете результат на нужный коэффициент, по результату генерируете выходные импульсы.
На каком этапе вы испытываете трудности?
Или нужна глубокая проработка и готовая программная реализация?
Re: Помогите с генератором импульсов
Генератор сделалand909 писал(а):Вопрос дискуссионный, ну да ладно.Fed писал(а):В условиях равномерность значится. Я же написал Герцы (Гц).
Если в общем виде, то измеряете частоту входящих импульсов, умножаете результат на нужный коэффициент, по результату генерируете выходные импульсы.
На каком этапе вы испытываете трудности?
Или нужна глубокая проработка и готовая программная реализация?
Сейчас застопорился посчитать время между импульсами, потом разделить это время на 1.5 -> перевести в Time -> это время ввести в генератор
Re: Помогите с генератором импульсов
Считайте количество импульсов за время (секунду)Fed писал(а):Сейчас застопорился посчитать время между импульсами...
Re: Помогите с генератором импульсов
не правильно. как мне потом герцы в генератор засовывать? туда только время нужноand909 писал(а):Считайте количество импульсов за время (секунду)Fed писал(а):Сейчас застопорился посчитать время между импульсами...
В общем, сделал программу которая считает время между импульсами и записывает в MD, но в формате REAL.
Как REAL перевести в TIME?
Re: Помогите с генератором импульсов
Как Вам будет угодно, я умываю руки.Fed писал(а):...не правильно. как мне потом герцы в генератор засовывать? туда только время нужно...
Re: Помогите с генератором импульсов
Ну буду я знать кол-во импульсов за секунду и что дальше?and909 писал(а):Как Вам будет угодно, я умываю руки.Fed писал(а):...не правильно. как мне потом герцы в генератор засовывать? туда только время нужно...
В блок генератора на вход нужно подать TIME!
А из REAL в TIME как перевести?
Re: Помогите с генератором импульсов
Попробуйте преобразовать ступенчато: REAL -> DINT -> TIME
Для конвертации из DINT в TIME можно использовать инструкцию MOVE.
Для конвертации из DINT в TIME можно использовать инструкцию MOVE.
Re: Помогите с генератором импульсов
можно на SCL написать простую функцию и использовать её.
Пример:
VAR_INPUT
In:REAL;
END_VAR
VAR_OUTPUT
Out:TIME;
END_VAR
VAR_TEMP
TempDint:DINT;
END_VAR
TempDint:=REAL_TO_DINT(In) ;
Out:=DINT_TO_TIME(TempDint) ;
END_FUNCTION
Задаются три переменных - входная реальная, Выходная временнАя и временная двойная целочисленная.
в теле идёт двойное преобразование.
Пример:
VAR_INPUT
In:REAL;
END_VAR
VAR_OUTPUT
Out:TIME;
END_VAR
VAR_TEMP
TempDint:DINT;
END_VAR
TempDint:=REAL_TO_DINT(In) ;
Out:=DINT_TO_TIME(TempDint) ;
END_FUNCTION
Задаются три переменных - входная реальная, Выходная временнАя и временная двойная целочисленная.
в теле идёт двойное преобразование.
Вот моя подпись...
Re: Помогите с генератором импульсов
mr_Frodo писал(а):можно на SCL написать простую функцию и использовать её.
Пример:
VAR_INPUT
In:REAL;
END_VAR
VAR_OUTPUT
Out:TIME;
END_VAR
VAR_TEMP
TempDint:DINT;
END_VAR
TempDint:=REAL_TO_DINT(In) ;
Out:=DINT_TO_TIME(TempDint) ;
END_FUNCTION
Задаются три переменных - входная реальная, Выходная временнАя и временная двойная целочисленная.
в теле идёт двойное преобразование.
Спасибо!Михайло писал(а):Попробуйте преобразовать ступенчато: REAL -> DINT -> TIME
Для конвертации из DINT в TIME можно использовать инструкцию MOVE.