- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Программный блок генерации импульсного сигнала
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Добрый день! Стоит задача управления дозирующим насосом по импульсному сигналу заданной частоты. Данная задача уже была выполнена средствами Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241). В studio 5000 данного встроенного блока нет. По идее можно выдернуть из шнайдера(на диске С в установленной папке библиотеки) исходный код алгоритма работы данного блока или реализовать данный генератор на двух таймерах. Может кто-нибудь сталкивался с подобной ситуацией и подскажет оптимальное решение?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 841 раз
Программный блок генерации импульсного сигнала
Нужен генератор. Это понятно.
Частота? Скважность? С этим неясно ничего.
Частота? Скважность? С этим неясно ничего.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Программный блок генерации импульсного сигнала
Когда-то играл с ОВЕН ПР200. Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс. Ваша задача - 20 циклов дискретный выход замкнут, потом от 17 до бесконечности циклов разомкнут. Дешевле наверное только на Ардуино. Но перед покупкой железа полезно почитать документацию на наличие подводных камней (например задержки по замыканию-размыканию выходов) и оценить достаточность дискретности полученных частот.Stasyllius_83 писал(а): ↑08 сен 2021, 13:30 Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
-
- почётный участник форума
- Сообщения: 1181
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Программный блок генерации импульсного сигнала
Ответа на:Stasyllius_83 писал(а): ↑08 сен 2021, 13:30Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Не было.
20 мс - минимальный при 27 Гц, постоянный всегда или можно увеличивать, при уменьшении частоты?
PS. Баловался с FleхLogiх, единственная задача: "пульс-пара" в одну строку - время исполнения 0.5 мс, меньше не получалось. Сейчас могу провести такой-же эксперимент с CompactLogix (1769-LE35), только мне это уже не интересно.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
В том и дело, значение частоты величина не статическая. Ее значение может меняться хоть каждый цикл в теории. Также через таймера я воздействую на дискретный выход. Наверно данный вопрос лучше задать в ветке Schneider в ПО которого генератор частоты есть по умолчанию.rwg писал(а): ↑08 сен 2021, 17:58Когда-то играл с ОВЕН ПР200. Там программа исполняется циклически (как и в большинстве других устройств), время цикла 1мс. Ваша задача - 20 циклов дискретный выход замкнут, потом от 17 до бесконечности циклов разомкнут. Дешевле наверное только на Ардуино. Но перед покупкой железа полезно почитать документацию на наличие подводных камней (например задержки по замыканию-размыканию выходов) и оценить достаточность дискретности полученных частот.Stasyllius_83 писал(а): ↑08 сен 2021, 13:30 Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.
Отправлено спустя 9 минут 55 секунд:
Не располагаю значением скважности. Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.Looker писал(а): ↑08 сен 2021, 20:09Ответа на:Stasyllius_83 писал(а): ↑08 сен 2021, 13:30Частота будет задаваться от 0 до 27 Гц. Длительность импульса которую воспринимает насос 20 мс.Не было.
20 мс - минимальный при 27 Гц, постоянный всегда или можно увеличивать, при уменьшении частоты?PS. Баловался с FleхLogiх, единственная задача: "пульс-пара" в одну строку - время исполнения 0.5 мс, меньше не получалось. Сейчас могу провести такой-же эксперимент с CompactLogix (1769-LE35), только мне это уже не интересно.
-
- почётный участник форума
- Сообщения: 1181
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Программный блок генерации импульсного сигнала
Что пишут в РЭ на этот насос? Например для случаев при 1 Гц: 1) 0,5 c импульс и 0,5 с пауза. 2) 20 мс импульс, 0,980 с пауза. Неужели одинаково?Stasyllius_83 писал(а): ↑10 сен 2021, 09:50Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- почётный участник форума
- Сообщения: 1181
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Программный блок генерации импульсного сигнала
Лови готовое. Only_Mimimum задает вариант формирования длительности импульса, минимальное время тоже задается.
Сделано как AOI (Add On Instruction), на картинке основная логика. Prescan и EnableInFalse см. ZIP файл.
Для 1769-L35E (V19).
Сделано как AOI (Add On Instruction), на картинке основная логика. Prescan и EnableInFalse см. ZIP файл.
Для 1769-L35E (V19).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
В РЭ написано только про минимальную продолжительность импульса и максимальную частоту. Соответственно при изменении частоты будет меняться пауза между импульсами.Looker писал(а): ↑10 сен 2021, 16:21Что пишут в РЭ на этот насос? Например для случаев при 1 Гц: 1) 0,5 c импульс и 0,5 с пауза. 2) 20 мс импульс, 0,980 с пауза. Неужели одинаково?Stasyllius_83 писал(а): ↑10 сен 2021, 09:50Здесь нет необходимости менять ширину импульса. Насос воспринимает импульс не меньше 20мс. Т.е. его длительность может быть постоянна. Нужно варьировать частотой подачи этого импульса. Примерно в минуту от 0 до 120 импульсов.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Текст программы в 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;
Но здесь образуется незначительная погрешность, которая возрастает при уменьшении частоты. Учитывая продолжительность импульса это незначительно скажется на процессе дозирования.
//Значение параметра с аналогового входа
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;
Но здесь образуется незначительная погрешность, которая возрастает при уменьшении частоты. Учитывая продолжительность импульса это незначительно скажется на процессе дозирования.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- почётный участник форума
- Сообщения: 1181
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Программный блок генерации импульсного сигнала
В моем коде коде - предусмотрено: скважность 2, при соблюдении минимального времени Only_Mimimum - надо переименовать на Only_Minimum).Stasyllius_83 писал(а): ↑20 сен 2021, 17:26В РЭ написано только про минимальную продолжительность импульса и максимальную частоту. Соответственно при изменении частоты будет меняться пауза между импульсами.
Пришлось оценить возможности этого блока - 100 кГц, без аппаратной поддержки не реально.Stasyllius_83 писал(а): ↑08 сен 2021, 10:11Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241)
Stasyllius_83, у Allen Bradley IL нет, есть ST. Ты не ошибся с:
Сравни размер видимости на экране своего кода (IL) и моего (LD). Мой AOI можно использовать в FB, в ST.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Ошибся не IL, а ST. По тех. заданию нужно, чтоб вся программа(+ все подпрограммы, в том числе AOI) была в ST. Для легкой переносимости кода, на сколько это возможно.
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Выхода у контроллеров Schneider поддерживают 100кГц.Looker писал(а): ↑20 сен 2021, 18:52Пришлось оценить возможности этого блока - 100 кГц, без аппаратной поддержки не реально.Stasyllius_83 писал(а): ↑08 сен 2021, 10:11Schneider electric в Machine Expert. В нем есть готовый блок генератор "частоты" FreqReg(FrequencyGenerator_M241)
В чем заключалась оценка, точнее каким образом определилось 100 кГц ?
-
- почётный участник форума
- Сообщения: 1181
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 351 раз
- Поблагодарили: 241 раз
Программный блок генерации импульсного сигнала
Stasyllius_83 писал(а): ↑21 сен 2021, 11:39В чем заключалась оценка, точнее каким образом определилось 100 кГц ?
Schneider писал(а):FrequencyGenerator_M241: Commanding a Square Wave Signal
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Программный блок генерации импульсного сигнала
Благодарю!Looker писал(а): ↑21 сен 2021, 12:58Stasyllius_83 писал(а): ↑21 сен 2021, 11:39В чем заключалась оценка, точнее каким образом определилось 100 кГц ?Schneider писал(а):FrequencyGenerator_M241: Commanding a Square Wave Signal