Помогите с генератором импульсов

ПЛК / Децентрализованная периферия
Ответить
Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Помогите с генератором импульсов

Сообщение Fed »

Добрый день!

Помогите реализовать следующее:

На дискретный вход(например I0.0) приходит частота импульсов (допустим 30Гц). Нужно сделать так, чтобы маркер (например M0.0) маргал в 1.5 раза медленнее (например вместо 30Гц - 20Гц)

Заранее спасибо!

and909
Любитель
Сообщения: 30
Зарегистрирован: 07 апр 2016, 18:56

Re: Помогите с генератором импульсов

Сообщение and909 »

Считаете входящие импульсы до трех, два раза мигаете выходом, один пропуск.
ПС Равномерность миганий в условиях не значится.)

Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Re: Помогите с генератором импульсов

Сообщение Fed »

and909 писал(а):Считаете входящие импульсы до трех, два раза мигаете выходом, один пропуск.
ПС Равномерность миганий в условиях не значится.)
В условиях равномерность значится. Я же написал Герцы (Гц).

and909
Любитель
Сообщения: 30
Зарегистрирован: 07 апр 2016, 18:56

Re: Помогите с генератором импульсов

Сообщение and909 »

Fed писал(а):В условиях равномерность значится. Я же написал Герцы (Гц).
Вопрос дискуссионный, ну да ладно.

Если в общем виде, то измеряете частоту входящих импульсов, умножаете результат на нужный коэффициент, по результату генерируете выходные импульсы.
На каком этапе вы испытываете трудности?

Или нужна глубокая проработка и готовая программная реализация?

Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Re: Помогите с генератором импульсов

Сообщение Fed »

and909 писал(а):
Fed писал(а):В условиях равномерность значится. Я же написал Герцы (Гц).
Вопрос дискуссионный, ну да ладно.

Если в общем виде, то измеряете частоту входящих импульсов, умножаете результат на нужный коэффициент, по результату генерируете выходные импульсы.
На каком этапе вы испытываете трудности?

Или нужна глубокая проработка и готовая программная реализация?
Генератор сделал
Сейчас застопорился посчитать время между импульсами, потом разделить это время на 1.5 -> перевести в Time -> это время ввести в генератор

and909
Любитель
Сообщения: 30
Зарегистрирован: 07 апр 2016, 18:56

Re: Помогите с генератором импульсов

Сообщение and909 »

Fed писал(а):Сейчас застопорился посчитать время между импульсами...
Считайте количество импульсов за время (секунду)

Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Re: Помогите с генератором импульсов

Сообщение Fed »

and909 писал(а):
Fed писал(а):Сейчас застопорился посчитать время между импульсами...
Считайте количество импульсов за время (секунду)
не правильно. как мне потом герцы в генератор засовывать? туда только время нужно

В общем, сделал программу которая считает время между импульсами и записывает в MD, но в формате REAL.
Как REAL перевести в TIME?

and909
Любитель
Сообщения: 30
Зарегистрирован: 07 апр 2016, 18:56

Re: Помогите с генератором импульсов

Сообщение and909 »

Fed писал(а):...не правильно. как мне потом герцы в генератор засовывать? туда только время нужно...
Как Вам будет угодно, я умываю руки. :bb:

Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Re: Помогите с генератором импульсов

Сообщение Fed »

and909 писал(а):
Fed писал(а):...не правильно. как мне потом герцы в генератор засовывать? туда только время нужно...
Как Вам будет угодно, я умываю руки. :bb:
Ну буду я знать кол-во импульсов за секунду и что дальше?
В блок генератора на вход нужно подать TIME!

А из REAL в TIME как перевести?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Помогите с генератором импульсов

Сообщение Михайло »

Попробуйте преобразовать ступенчато: REAL -> DINT -> TIME
Для конвертации из DINT в TIME можно использовать инструкцию MOVE.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

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

Задаются три переменных - входная реальная, Выходная временнАя и временная двойная целочисленная.
в теле идёт двойное преобразование.
Вот моя подпись...

Fed
Дилетант
Сообщения: 17
Зарегистрирован: 31 авг 2016, 10:52

Re: Помогите с генератором импульсов

Сообщение Fed »

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.
Спасибо!

Ответить