Страница 22 из 57 ПерваяПервая ... 12202122232432 ... ПоследняяПоследняя
Показано с 211 по 220 из 688

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

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

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

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Еще один интересный вопрос к В.Ситникову. На каких условиях можно будет использовать ваш ФБ ?
    Apache license 2.0: https://www.apache.org/licenses/LICENSE-2.0 (~ http://www.dataved.ru/2011/03/apache-license-2.html )

    Если грубо, то:
    1) Можно использовать как угодно
    2) Слова "(c) Vladimir Sitnikov" удалять нельзя (Вы должны сохранить в Исходной форме любых Производных работ, которые вы распространяете, все авторские права, патенты, торговые марки, а также соответствующие атрибуции из Исходной формы Работы, за исключением тех, что не имеют отношения к какой-либо части Производной работы)
    3) Если в код (в том числе pru_stepper.lib) вносятся изменения, то нужно добавлять комментарий "допилено Newcomer'ом..." (Вы должны снабдить все модифицированные файлы явными уведомлениями, что Вы изменили файлы)

  2. #2

    По умолчанию

    Правильно я понял, что использование вашего ФБ для управления ШД будет совершенно бесплатным ?

  3. #3

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Правильно я понял, что использование вашего ФБ для управления ШД будет совершенно бесплатным ?
    Неправильно

    Если очень хочется заплатить, то я никогда не отказываюсь


    А так, да, никаких специальных закладок типа "не крутить больше 1000 оборотов" в коде нет. Т.е. файлом PRU0.prg можно пользоваться бесплатно и без s m s на свой страх и риск, с надеждой, что в будущих версиях прошивки ПЛК поддержка файла PRU0.prg останется.

    Если посмотреть внутрь pru_pulse_v4.zip, то там так и говорится, что "apache license 2.0"

  4. #4

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Неправильно

    Если очень хочется заплатить, то я никогда не отказываюсь


    А так, да, никаких специальных закладок типа "не крутить больше 1000 оборотов" в коде нет. Т.е. файлом PRU0.prg можно пользоваться бесплатно и без s m s на свой страх и риск, с надеждой, что в будущих версиях прошивки ПЛК поддержка файла PRU0.prg останется.

    Если посмотреть внутрь pru_pulse_v4.zip, то там так и говорится, что "apache license 2.0"
    А где последний релиз вашего ФБ для ШД ?

  5. #5

    По умолчанию ПЛК110 М02: библиотека для управления шаговыми двигателями

    В ПЛК110 М02 есть 4 быстрых выхода, с помощью которых можно управлять шаговыми двигателями и серво-системами.

    Сам инструментарий для создания "быстрых" программ на текущий момент широкой публике не доступен и обсуждается в теме Программирование ПЛК110 М02 для задач реального времени

    Я записался на beta тестирование и мне удалось сделать PRU программу, которая выдаёт указанное количество импульсов на быстрый 3-ий выход.

    Должно получиться управление четыремя ШД (одновременно только 2). Один ШД на выходы 1 или 2, второй -- на выходы 3 или 4.

    Сама тема "использования PRU" программ пока под вопросом -- ОВЕН пока никак не обозначили свою позицию.
    Тем не менее, можно надеяться, что PRU0.prg будет работать и в будущих версиях прошивки ПЛК110.

    Внимание, для работы нужно подключать библиотеку pruAccessLib.lib, которую берут тут http://www.owen.ru/forum/showthread....l=1#post180471

    2016-12-19: Доступно обновление Hardella IDE 1.6.0: https://hardella.com/blog.
    * Блок управления ШД встроен в стандартную библиотеку, пример входит в базовую поставку

    2016-10-02: 12-ая версия pru_stepper_v12.zip
    * Поправлен цикл задержки. Частота на выходе должна лучше соответствовать уставке.
    * "decel_ramp>0 AND enable=false" баг исправлен

    2016-10-02: 10-ая версия pru_stepper_v10.zip
    * Уж теперь-то 2 ШД должны заработать. Помним, что одновременно могут работать следующие комбинации выходов: 1 и 3, 1 и 4, 2 и 3, 2 и 4.
    * За частоту PRU взята 200MHz (совпадает с тестами dima64)
    * Убран выходной параметр "READY". Вместо него стоит проверять STATE=STOP_STEPPER.
    * Добавлен выходной параметр "CURRENT_SPEED : REAL"
    * Изменён тип параметра "STATE" на enum PRU_STEPPER_STATE
    * Баг: при ненулевом decel_ramp enable=false не останавливает генерацию

    Демонстрация "разгона ПЛК110 М02 до 2МГц": http://recordit.co/XLaOe3LOYE (то же самое в виде анимированного gif: http://g.recordit.co/XLaOe3LOYE.gif )

    2016-09-30: 8-ая версия pru_pulse_v8.zip
    * Добавлен выходной параметр "количество сгенерированных импульсов"
    * За частоту PRU теперь берётся 228МГц, а не 150МГц

    2016-09-30: 7-ая версия pru_pulse_v7.zip
    * Добавлен параметр "минимальная скорость"
    * Параметр OUT_NUM теперь должен работать по-настоящему. Т.е. выбирать номер выхода. Тем не менее, для разных выходов лучше использовать разные экземпляры ФБ PRU_STEPPER.

    2016-09-30: 6-ая версия pru_pulse_v6.zip
    * не работает

    2016-09-29: 5-ая версия pru_pulse_v5.zip
    * Исправлено поведение при quantity=0, 1 (т.е. выдаётся 0 и 1 импульс)
    * PRU1.prg подхватится, но работать не будет

    2016-09-26: 4-ая версия pru_pulse_v4.zip
    * Реализован разгон-торможение
    * Реализован режим "выдачи нужного количества импульсов без разгона/торможения"
    * Реализован "внезапный останов" (включается торможение с текущей позиции)


    ШД управляется следующим блоком (pru_stepper.lib):
    Код:
    FUNCTION_BLOCK PRU_STEPPER
    VAR_INPUT
      ENABLE: BOOL;
      MIN_SPEED: REAL; (* Гц *)
      MAX_SPEED: REAL; (* Гц *)
      QUANTITY: DWORD; (* количество импульсов *)
      ACCEL_RAMP: REAL; (* Гц/сек, положительное. Например, 10000Гц/20сек == 500Гц/сек *)
      DECEL_RAMP: REAL; (* Гц/сек, положительное. Например, 10000Гц/10сек == 1000Гц/сек *)
      OUT_NUM: BYTE; (* 1, 2, 3 или 4 *)
    END_VAR
    VAR_OUTPUT
      STATE : PRU_STEPPER_STATE; (* INIT -> ACCEL -> RUN -> DECEL -> STOP *)
      CURRENT_SPEED: REAL;
      PULSES_GENERATED: DWORD;
    END_VAR
    VAR
      TMP: DWORD;
      pru_num : BYTE;
      bit_num : BYTE;
    END_VAR
    
    TYPE PRU_STEPPER_STATE : (
      INIT_STEPPER, (* STEPPER is waiting for new configuration and activation ENABLE=TRUE signal *)
      ACCEL_STEPPER, (* STEPPER is accelerating *)
      RUN_STEPPER, (* STEPPER is moving at MAX_SPEED *)
      DECEL_STEPPER, (* STEPPER is decelerating *)
      STOP_STEPPER (* STEPPER is stopped and it is waiting for ENABLE=FALSE to switch to INIT state *)
    );
    END_TYPE
    max_speed/quantity/accel_ramp/decel_ramp можно менять только в состоянии INIT. Т.е. менять на ходу параметры нельзя.

    ENABLE можно выключать в любое время (будет плавный останов, если исходно был плавный запуск).
    Для экстренного останова сначала перевести decel_ramp в 0, а потом уже передавать ENABLE=FALSE -- будет просто останов, без плавного торможения.

    Если ACCEL_RAMP равно нулю, то ускорения/замедления не происходит, а просто генерируются QUANTITY импульсов с частотой MAX_SPEED

    Если QUANTITY равно -1 (16#ffffffff), то генерируется бесконечное количество импульсов. Генератор работает до перевода ENABLE в false.

    До 100кГц должно работать с запасом.

    Для использования, нужно залить файлы PRU0.prg/PRU1.prg в контроллер и перезагузить его.
    При использовании PRU0.prg/PRU1.prg напрямую работать с fast output 3, 4 не получится. При использовании PRU1.prg выходы 1 и 2 будут доступны только через программу ШД.

    Вот несколько графиков, на которых отображена работа библиотеки:

    move_100_50_60.png

    10pulses_1000_500_60.png

    Лицензия: Apache License 2.0


    Тестирование выполнялось как на эмуляторе сопроцессора (графики выше получены с эмулятора), так и на реальном сервоприводе.
    Вложения Вложения
    Последний раз редактировалось Владимир Ситников; 21.12.2016 в 12:09. Причина: 12-ая версия: более точное выдерживание частоты

  6. #6

    По умолчанию

    Здравствуйте, есть ПЛК 110 с файлами PRU0.prg/PRU1.prg в контроллере, как от них избавиться?

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,254

    По умолчанию

    Цитата Сообщение от Евгений агрохит Посмотреть сообщение
    Здравствуйте, есть ПЛК 110 с файлами PRU0.prg/PRU1.prg в контроллере, как от них избавиться?
    через ПЛК-браузер не получается?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8

    По умолчанию

    Цитата Сообщение от Евгений агрохит Посмотреть сообщение
    Здравствуйте, есть ПЛК 110 с файлами PRU0.prg/PRU1.prg в контроллере, как от них избавиться?
    Удалить с файловой системы.
    Тролль-наседка, добрый, нежный и ласковый

  9. #9

    По умолчанию

    Товарищи, а не кажется ли Вам, что подход к управлению движением в виде 1 ФБ "сделай всё" в корне не верен?
    ИМХО, правильнее было бы разделить задачу на:
    1. Вычисление кривой движения (делает основной цикл ПЛК)
    2. Деление кривой на N отрезков (опять же основной цикл)
    3. Выдача импульсов по отрезкам силами PRU

    Проводить сложные вычисления с плавающей точкой (или её эмуляциями) внутри PRU - это много лишнего кода и времени.
    Код генератор N импульсов с M периодом и подгрузкой нового отрезка по мере выполнения - гораздо проще и гибче.
    Тролль-наседка, добрый, нежный и ласковый

  10. #10

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Товарищи, а не кажется ли Вам, что подход к управлению движением в виде 1 ФБ "сделай всё" в корне не верен?
    ИМХО, правильнее было бы разделить задачу на:
    1. Вычисление кривой движения (делает основной цикл ПЛК)
    2. Деление кривой на N отрезков (опять же основной цикл)
    3. Выдача импульсов по отрезкам силами PRU

    Проводить сложные вычисления с плавающей точкой (или её эмуляциями) внутри PRU - это много лишнего кода и времени.
    Код генератор N импульсов с M периодом и подгрузкой нового отрезка по мере выполнения - гораздо проще и гибче.
    теоретически конечно так, а на практике нужно будет организовывать кэш в памяти ПРУ ( довольно маленькой!), ибо такт основного цикла в 1 мс не сильно подходит для бесшовной передачи новых блоков... а способ "забирать" подготовленные данные средствами ПРУ, по необходимости, из основной памяти пока не понятен

Страница 22 из 57 ПерваяПервая ... 12202122232432 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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