1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

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

Ответить

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

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

Сообщение Stasyllius_83 »

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

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

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

Сообщение Ryzhij »

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

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

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

Сообщение Stasyllius_83 »

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

rwg
почётный участник форума
почётный участник форума
Сообщения: 1041
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 55 раз
Поблагодарили: 134 раза

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

Сообщение rwg »

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

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

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

Сообщение 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
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 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
эксперт
эксперт
Сообщения: 1109
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 321 раз
Поблагодарили: 218 раз

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

Сообщение Looker »

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

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

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

Сообщение Looker »

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

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

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

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 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
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 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
эксперт
эксперт
Сообщения: 1109
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 321 раз
Поблагодарили: 218 раз

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

Сообщение Looker »

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

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

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

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

Сообщение Stasyllius_83 »

Ошибся не IL, а ST. По тех. заданию нужно, чтоб вся программа(+ все подпрограммы, в том числе AOI) была в ST. Для легкой переносимости кода, на сколько это возможно.

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

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

Сообщение Stasyllius_83 »

Looker писал(а): 20 сен 2021, 18:52
Stasyllius_83 писал(а): 08 сен 2021, 10:11Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241)
Пришлось оценить возможности этого блока - 100 кГц, без аппаратной поддержки не реально.
Выхода у контроллеров Schneider поддерживают 100кГц.
В чем заключалась оценка, точнее каким образом определилось 100 кГц ?
Аватара пользователя

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

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

Сообщение Looker »

Stasyllius_83 писал(а): 21 сен 2021, 11:39В чем заключалась оценка, точнее каким образом определилось 100 кГц ?
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

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

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

Сообщение Stasyllius_83 »

Looker писал(а): 21 сен 2021, 12:58
Stasyllius_83 писал(а): 21 сен 2021, 11:39В чем заключалась оценка, точнее каким образом определилось 100 кГц ?
Благодарю!
Ответить

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