• Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже предостаточно - придумайте что-то пооригинальнее.
  • Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО - бан без предупреждения.
  • Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать - читать здесь и здесь.

Программный блок генерации импульсного сигнала

Ответить

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Программный блок генерации импульсного сигнала

Сообщение Stasyllius_83 »

Добрый день! Стоит задача управления дозирующим насосом по импульсному сигналу заданной частоты. Данная задача уже была выполнена средствами Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241). В studio 5000 данного встроенного блока нет. По идее можно выдернуть из шнайдера(на диске С в установленной папке библиотеки) исходный код алгоритма работы данного блока или реализовать данный генератор на двух таймерах. Может кто-нибудь сталкивался с подобной ситуацией и подскажет оптимальное решение?


Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 4831
Зарегистрирован: 07 окт 2011, 08:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 284 раза
Поблагодарили: 440 раз

Программный блок генерации импульсного сигнала

Сообщение Ryzhij »

Нужен генератор. Это понятно.
Частота? Скважность? С этим неясно ничего.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может». Жан-Поль Сартр


Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Программный блок генерации импульсного сигнала

Сообщение Stasyllius_83 »

Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.


rwg
авторитет
авторитет
Сообщения: 802
Зарегистрирован: 29 апр 2014, 08:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 26 раз
Поблагодарили: 76 раз

Программный блок генерации импульсного сигнала

Сообщение rwg »

Stasyllius_83 писал(а):
08 сен 2021, 13:30
Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Когда-то играл с ОВЕН ПР200. Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс. Ваша задача - 20 циклов дискретный выход замкнут, потом от 17 до бесконечности циклов разомкнут. Дешевле наверное только на Ардуино. Но перед покупкой железа полезно почитать документацию на наличие подводных камней (например задержки по замыканию-размыканию выходов) и оценить достаточность дискретности полученных частот.

Аватара пользователя

Looker
авторитет
авторитет
Сообщения: 810
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 155 раз
Поблагодарили: 108 раз

Программный блок генерации импульсного сигнала

Сообщение Looker »

Stasyllius_83 писал(а):
08 сен 2021, 13:30
Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Ответа на:
Ryzhij писал(а):
08 сен 2021, 12:17
Скважность? С этим неясно ничего.
Не было.
20 мс - минимальный при 27 Гц, постоянный всегда или можно увеличивать, при уменьшении частоты?
rwg писал(а):
08 сен 2021, 17:58
Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс.
PS. Баловался с FleхLogiх, единственная задача: "пульс-пара" в одну строку - время исполнения 0.5 мс, меньше не получалось. Сейчас могу провести такой-же эксперимент с CompactLogix (1769-LE35), только мне это уже не интересно.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу


Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Программный блок генерации импульсного сигнала

Сообщение Stasyllius_83 »

rwg писал(а):
08 сен 2021, 17:58
Stasyllius_83 писал(а):
08 сен 2021, 13:30
Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Когда-то играл с ОВЕН ПР200. Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс. Ваша задача - 20 циклов дискретный выход замкнут, потом от 17 до бесконечности циклов разомкнут. Дешевле наверное только на Ардуино. Но перед покупкой железа полезно почитать документацию на наличие подводных камней (например задержки по замыканию-размыканию выходов) и оценить достаточность дискретности полученных частот.
В том и дело, значение частоты величина не статическая. Ее значение может меняться хоть каждый цикл в теории. Также через таймера я воздействую на дискретный выход. Наверно данный вопрос лучше задать в ветке Schneider в ПО которого генератор частоты есть по умолчанию.

Отправлено спустя 9 минут 55 секунд:
Looker писал(а):
08 сен 2021, 20:09
Stasyllius_83 писал(а):
08 сен 2021, 13:30
Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Ответа на:
Ryzhij писал(а):
08 сен 2021, 12:17
Скважность? С этим неясно ничего.
Не было.
20 мс - минимальный при 27 Гц, постоянный всегда или можно увеличивать, при уменьшении частоты?
rwg писал(а):
08 сен 2021, 17:58
Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс.
PS. Баловался с FleхLogiх, единственная задача: "пульс-пара" в одну строку - время исполнения 0.5 мс, меньше не получалось. Сейчас могу провести такой-же эксперимент с CompactLogix (1769-LE35), только мне это уже не интересно.
Не располагаю значением скважности. Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.

Аватара пользователя

Looker
авторитет
авторитет
Сообщения: 810
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 155 раз
Поблагодарили: 108 раз

Программный блок генерации импульсного сигнала

Сообщение Looker »

Stasyllius_83 писал(а):
10 сен 2021, 09:50
Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.
Что пишут в РЭ на этот насос? Например для случаев при 1 Гц: 1) 0,5 c импульс и 0,5 с пауза. 2) 20 мс импульс, 0,980 с пауза. Неужели одинаково?
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Аватара пользователя

Looker
авторитет
авторитет
Сообщения: 810
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 155 раз
Поблагодарили: 108 раз

Программный блок генерации импульсного сигнала

Сообщение Looker »

Лови готовое. Only_Mimimum задает вариант формирования длительности импульса, минимальное время тоже задается.
Изображение

Сделано как AOI (Add On Instruction), на картинке основная логика. Prescan и EnableInFalse см. ZIP файл.
Изображение

Для 1769-L35E (V19).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу


Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Программный блок генерации импульсного сигнала

Сообщение Stasyllius_83 »

Looker писал(а):
10 сен 2021, 16:21
Stasyllius_83 писал(а):
10 сен 2021, 09:50
Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.
Что пишут в РЭ на этот насос? Например для случаев при 1 Гц: 1) 0,5 c импульс и 0,5 с пауза. 2) 20 мс импульс, 0,980 с пауза. Неужели одинаково?
В РЭ написано только про минимальную продолжительность импульса и максимальную частоту. Соответственно при изменении частоты будет меняться пауза между импульсами.
У вас нет необходимых прав для просмотра вложений в этом сообщении.


Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Программный блок генерации импульсного сигнала

Сообщение Stasyllius_83 »

Текст программы в IL:
//Значение параметра с аналогового входа
Real_In := ABS(DINT_In.Data[1]);
//Преобразуем в натуральную величину
SCL_PDG_1.In:= Real_In;
SCL_PDG_1.InRawMin:=0;
SCL_PDG_1.InRawMax:=32767;
SCL_PDG_1.InEUMin:=0.0;
SCL_PDG_1.InEUMax:=26.6;
SCL(SCL_PDG_1);
SCL_REAL:= SCL_PDG_1.Out;
//Вызов функции генератора частоты
FreqGen_1.Frequency:=SCL_REAL;
FreqGen(FreqGen_1);
Impulse_OUT:=FreqGen_1.Impulse_OUT;
Текст функции генератора частоты:
//Получаем время паузы между импульсами
Time_Pause_Real:= 1000/Frequency;
//Преобразуем в DINT
Time_Pause_DINT := ABS(Time_Pause_Real);
//Таймер продолжительности импульса
TONR_pulse_duration.PRE:= 50;
TONR_pulse_duration.TimerEnable:= Impulse_OUT;
TONR(TONR_pulse_duration);
Pulse_duration:= TONR_pulse_duration.DN;
//Таймер продолжительности паузы
TONR_pause_duration.PRE:= Time_Pause_DINT;
TONR_pause_duration.TimerEnable:= NOT Impulse_OUT;
TONR(TONR_pause_duration);
Pause_duration:= TONR_pause_duration.DN;
//Активация выхода
RESD_Impulse.Set:= Pause_duration;
RESD_Impulse.Reset:= Pulse_duration;
RESD(RESD_Impulse);
Impulse_OUT:= RESD_Impulse.Out;
Но здесь образуется незначительная погрешность, которая возрастает при уменьшении частоты. Учитывая продолжительность импульса это незначительно скажется на процессе дозирования.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

Looker
авторитет
авторитет
Сообщения: 810
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 155 раз
Поблагодарили: 108 раз

Программный блок генерации импульсного сигнала

Сообщение Looker »

Stasyllius_83 писал(а):
Сегодня, 17:26
В РЭ написано только про минимальную продолжительность импульса и максимальную частоту. Соответственно при изменении частоты будет меняться пауза между импульсами.
В моем коде коде - предусмотрено: скважность 2, при соблюдении минимального времени Only_Mimimum - надо переименовать на Only_Minimum).
Stasyllius_83 писал(а):
08 сен 2021, 10:11
Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241)
Пришлось оценить возможности этого блока - 100 кГц, без аппаратной поддержки не реально.

Stasyllius_83, у Allen Bradley IL нет, есть ST. Ты не ошибся с:
Stasyllius_83 писал(а):
Сегодня, 18:36
Текст программы в IL:
Сравни размер видимости на экране своего кода (IL) и моего (LD). Мой AOI можно использовать в FB, в ST.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Ответить

Вернуться в «ПЛК»