Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 688

Тема: Программирование ПЛК110 [М02] для задач реального времени

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    А разве будет не понятнее, если указать вместо 1000 просто 10. Хочу мол чтобы за 10 секунд ШД раскрутился до 10 кГц.
    А вы уж там в своей программе оперируйте какими угодно величинами.
    Нет, понятнее не будет. Уверяю вас.

    Объясню на примере: нужно сделать 300 импульсов, предельная скорость 60 импульсов/сек.
    Внимание, вопрос: какое время разгона/торможения ставить?

    Потом оказывается, что нужно сделать 400 импульсов.
    Какое время разгона/торможения ставить?

    Уже здесь будет огромная проблема, т.к. даже если есть "время разгона/торможения для 300 импульсов, то совершенно неясно какие времена должны быть для 400"

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Скажите у вас возникнут какие-то принципиальные проблемы, если на входе ФБ будет указано время, а не ускорение.
    Более того. Вот реальная проблема, которая не позволяет сделать ФБ "по вашему ТЗ".
    Допустим, вы указали: "разгон за 5 секунд, торможение за 5 секунд, макс скорость 60 импульсов/сек, всего нужно 300 импульсов".
    Внимание, вопрос: как должен действовать ФБ?
    Должен ли он за первые 5 секунд пытаться выйти на макс скорость?



    Так вот: для каждой конкретной установки, ускорение и замедление -- константы. Т.е. их вообще изменять не нужно. Достаточно либо подобрать (опытным путём), либо методом тыка (поделить 10'000 Гц на желаемую длительность разгона до этой скорости) вычислить и всё.
    В итоге, на вход блоку нужно только "количество импульсов".

    Надо 300 импульсов -- блок сделает 300, вычислив сколько нужно разгоняться и сколько тормозить. Блок поймёт успеваем ли выйти на макс скорость или нет.


    Поэтому, ещё раз повторюсь: если сделать "указание времён", то будут проблемы "200 импульсов отрабатывает нормально, а на 250 пропуски". Будут вечные игры с подбором времени и т.п.
    Последний раз редактировалось Владимир Ситников; 25.09.2016 в 22:22.

  2. #2

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Надо 300 импульсов -- блок сделает 300, вычислив сколько нужно разгоняться и сколько тормозить. Блок поймёт успеваем ли выйти на макс скорость или нет.
    Каким это образом блок вычислит сколько времени надо ускоряться что бы не было пропусков импульсов. Что блок знает момент инерции конкретной механической системы ? Для каждой механической системы время разгона будет свое.
    Последний раз редактировалось Newcomer; 25.09.2016 в 22:28.

  3. #3

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Каким это образом блок вычислит сколько времени надо ускоряться что бы не было пропусков импульсов. Что блок знает момент инерции конкретной механической системы ?
    Я же говорю: допустимое ускорение подаётся на вход блоку.
    Ему передаётся:
    enable
    количество импульсов
    ускорение при разгоне
    ускорение при замедлении

    Если вопрос только "в пропусках импульсов", то указываем "допустимое ускорение" и радуемся.
    Блок будет правильно отрабатывать все движения, понимая пределы для данной установки.

  4. #4

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Я же говорю: допустимое ускорение подаётся на вход блоку.
    Ему передаётся:
    enable
    количество импульсов
    ускорение при разгоне
    ускорение при замедлении

    Если вопрос только "в пропусках импульсов", то указываем "допустимое ускорение" и радуемся.
    Блок будет правильно отрабатывать все движения, понимая пределы для данной установки.
    Можно задать 10 как говорю я, а можно задать 10000/10 = 1000 как говорите вы и на выходе ФБ получится одинаковый результат. Только в моем случае не надо ничего делить.
    Последний раз редактировалось Newcomer; 25.09.2016 в 22:35.

  5. #5

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Можно задать 10 как говорю я, а можно задать 10000/10 = 1000 как говорите вы и не будет никакой разницы. Только в моем случае не надо ничего делить.
    Друг мой (или не друг). Вы хотите странного. Я уже сказал, что само по себе "время разгона" не несёт в себе достаточной информации.
    Нужна ещё информация о том "какая скорость будет достигнута при этом разгоне".

    Если очень уж хочется играться со временами, то можете потом сделать обёртку, которая вычисляет времена и всё такое.

    Но, с точки зрения физики процесса, ускорение является основополагающей величиной, поэтому сам блок будет работать именно с ускорением.
    Тащить лишнее преобразование "времени в ускорение" внутрь блока я не буду -- это лишь осложнит сам блок, и не принесёт абсолютно никакой пользы.
    Тут не только "в физике" дело, а ещё и в том, что в фактических формулах время не фигурирует. Либо скорость, либо ускорение. Время -- нет.



    Более того, если говорить об S кривых, то вы никогда не сможете вычислить "время разгона" для случая S кривой. Ну, даже если вы и сможете (вдруг?), то среднестатистический пользователь -- точно нет.
    Поэтому вынесение параметра "время разгона" будет мешать дальнейшим улучшениям блока. S-кривую уже просто так не получится добавить, т.к. у S-кривой понятие "время разгона" весьма относительно.
    Последний раз редактировалось Владимир Ситников; 25.09.2016 в 22:42.

  6. #6

    По умолчанию

    По вашему предельную частоту и время разгона надо держать в голове чтобы вычислить предельное ускорение. По моему ничего в голове держать и вычислять не надо, а надо тупо на входе блока задать предельную частоту и время разгона.
    Последний раз редактировалось Newcomer; 25.09.2016 в 22:43.

  7. #7

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    По вашему предельную частоту и время разгона надо держать в голове чтобы вычислить предельное ускорение. По моему ничего в голове держать и вычислять не надо, а надо тупо на входе блока задать предельную частоту и время разгона.
    А?
    Кто запрещает в коде указать:
    stepper(quantity := 300, max_speed := 60, accel_ramp := 10000/10, decel_ramp := 10000/20, enable:=...) ?
    Надо 400 импульсов? Вот 400:
    stepper(quantity := 400, max_speed := 60, accel_ramp := 10000/10, decel_ramp := 10000/20, enable:=...) ?
    Надо 10? Вот 10:
    stepper(quantity := 10, max_speed := 60, accel_ramp := 10000/10, decel_ramp := 10000/20, enable:=...) ?

    Надо просто раскрутить до 60 имп/сек и пусть фигачит?
    stepper(quantity := -1, max_speed := 60, accel_ramp := 10000/10, decel_ramp := 10000/20, enable:=...) ?
    Надо раскрутить до 5000имп/сек?
    stepper(quantity := -1, max_speed := 5000, accel_ramp := 10000/10, decel_ramp := 10000/20, enable:=...) ?

    Надо просто сделать 100 импульсов на частоте 60Гц?
    stepper(quantity := 100, max_speed := 60, accel_ramp := 0, decel_ramp := 0, enable:=...) ?


    В таком коде можно без проблем менять max_speed, можно без проблем менять quantity.
    И никаких вычислений "времени разгона" делать не нужно.
    Числа 10000/10, как я говорил, берутся "из пальца, что установка без проблем разгоняется до 10000 за 10 секунд". Хотите того или нет, но подобные числа в любом случае придётся откуда-то брать.
    Вы ШД как выбираете? Не по цвету же?

    А теперь покажите, как будет выглядеть предлагаемый вами вариант. Хотя бы для случая 300/400 импульсов.
    Последний раз редактировалось Владимир Ситников; 25.09.2016 в 22:53.

  8. #8

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    А теперь покажите, как будет выглядеть предлагаемый вами вариант. Хотя бы для случая 300/400 импульсов.
    А что такое 300/400 импульсов ?

  9. #9

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    А что такое 300/400 импульсов ?
    Я привёл варианты кода, которые решают задачи управления ШД.
    Есть установка, у которой предельное ускорение 10'000Гц/10сек, предельное замедление предельное ускорение 10'000Гц/20сек
    1) Сделать 300 импульсов, максимальная скорость 60 Гц
    2) Сделать 400 импульсов, максимальная скорость 60 Гц
    3) Сделать 10 импульсов, максимальная скорость 60 Гц
    4) Раскрутиться до 60 имп/сек и продолжить вращение бесконечно
    5) Раскрутиться до 5000 имп/сек и продолжить вращение бесконечно
    5) Просто сделать 100 импульсов на частоте 60 имп/сек.

    Покажите как хотя бы первые 1-2-3 задачи будут решаться, если у ФБ будут такие аргументы, как вы предлагаете:
    enable, period, quantity, accel_time, decel_time

    Я к тому, что "accel_time" и "decel_time" совершенно непонятно как вычислять.


    Реально, приведите пару строк, как будет выглядеть использование блока, если аргументы такие, как вы предлагаете. По факту -- аргументов "enable, period, quantity, accel_time, decel_time" недостаточно. Как минимум, нужен аргумент "какая по факту скорость достигается в конце разгона".
    Последний раз редактировалось Владимир Ситников; 25.09.2016 в 23:07.

  10. #10

    По умолчанию

    Так бы сразу и написали, что у вас проблемы с делением в коде. Я вас про это сразу спросил.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 38
    Последнее сообщение: 24.01.2022, 11:56
  2. Ответов: 10
    Последнее сообщение: 11.06.2021, 14:55
  3. часы реального времени
    от vetaly в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 28.08.2015, 16:21
  4. Таймер реального времени УТ1-РiС
    от ser10 в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 16.09.2010, 12:24

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •