Страница 37 из 69 ПерваяПервая ... 27353637383947 ... ПоследняяПоследняя
Показано с 361 по 370 из 688

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

  1. #361

    По умолчанию

    Разгони свой ПЛК110 М02 бесплатно и без S M S.

    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


    Спасибо прибористу за ПЛК -- нашёл причину неработоспособности прошлых версий программы.
    Причин несколько:
    1) Похоже, PRU0.prg/PRU1.prg не поддерживают программы более 2048 байт. Это большая печаль, т.к. в спецификации TI написано, что процессор поддерживает программы до 4096 байт. Как я добавил в программу обсчёт минимальной скорости, то программа стала чуть больше 2048 и, соответственно, работать не работала.

    Можно смеяться, можно плакать, но если в *.prg формате действительно ограничение на 2048 байт, то это ещё одна грабля, про которую Владислав ничего не сказал.
    Блин. Ну был бы описан формат *.prg -- было бы наверняка понятно, что "больше 2048 в него не влезет".
    А так получается, я методом тыка исследую и догадываюсь, что всё дело в размере программы.

    Я немного упростил программу, добавил небольшую оптимизацию в компилятор, и программа стала занимать 1964 байта.

    2) Как оказалось, в PRU1 регистр счётчика выполненных команд находится по адресу 0x780C, а не по адресу 0x7800.
    Я про эту догадку уже говорил:

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    И, да, если покажете пример хоть какой-нибудь программы для PRU1, то скажу большое спасибо. Я пробовал читать "регистр счётчика выполненных команд по адресу 0x7800+0xC", но почему-то не работает. У PRU0 счётчик команд находится по адресу 0x7000 + 0xC, а у PRU1 должен (вроде как) быть в 0x7800+0xC.
    но потом Владислав уверил меня, что в документации TI ошибка, а регистр у каждого PRU находится по адресу 0x7800

    Как оказалось, документация TI говорит правду, и регистр находится по своему адресу у каждого PRU.
    Т.е. для PRU0 и PRU1 должны быть разные программы.



    После того, как разобрались с проблемами, давайте разгоним наш ПЛК.
    Осциллографом до прибориста я не дотянусь, но я сделал замер "средней скорости генерации импульсов" через TIME().
    PRU программа возвращает количество сделанных импульсов, а мы делим на "время генерации" и получаем фактическую частоту.
    Вот демонстрация: http://recordit.co/XLaOe3LOYE (то же самое в виде анимированного gif: http://g.recordit.co/XLaOe3LOYE.gif )

    По факту, частота немного отличается от заданной. Например, вместо 500'000 показывает где-то 495'126 Гц. Но тут, возможно у меня ошибка. Например я могу неправильно учитывать то, сколько тактов работают команды с памятью. Ещё, возможно, задержки в самом TIME() или чём-то таком.

    За частоту PRU я выбрал 200МГц. Надо всё-таки перепроверить это хозяйство осциллографом.

    По факту, ПЛК разогнался до 2'200'000 Гц, что, на мой взгляд, хорошее достижение, с учётом того, что ОВЕН пишет 100кГц.
    Сколько из этих 2МГц смогут передаться через быстрые выходы, конечно, вопрос открытый.
    Последний раз редактировалось Владимир Ситников; 02.10.2016 в 13:41.

  2. #362

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    За частоту PRU я выбрал 200МГц. Надо всё-таки перепроверить это хозяйство осциллографом.
    Но В.Филоненко заявил, что тактовая частота PRU 150 мГц.

    Чтобы окончательно разобраться в этой непонятной ситуации нужен цифровой осциллограф или цифровой частотомер, иначе получается гадание на кофейной гуще.

    А вообще позиция программистов фирмы "ОВЕН" просто удивляет.

  3. #363

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Давайте всё-таки попросим товарища протестировать в режиме "min_speed=500" ?
    Я когда теорию читал, то много где написано, что ШД лучше стартовать со скорости большей чем 200, т.к. на ней резонанс.
    У разных ШД резонанс может наступить на своей частоте. Вы предлагаете стартовать на частоте выше резонансной. А что если в конкретном случае потребуется работать на частоте ниже резонансной ?

  4. #364

    По умолчанию

    Вопрос о том правильно ли формируется на выходе ФБ заданная частота остается открытым. То ли ошибка в ФБ, то ли PRU тактируется не той частотой что заявлена. В этой связи нужны тестировщики, у которых есть ПЛК110[М02] + цифровой осциллограф или цифровой частотомер. Задача простая: надо "залить" в ПЛК ФБ, разработанный В.Ситниковым, задавать разные частоты и мерить частоту сигнала на быстром выходе ПЛК.
    Последний раз редактировалось Newcomer; 02.10.2016 в 16:08.

  5. #365

    По умолчанию

    Владимир, у вас описание (РЭ) всего того, что вы сделали для программирования PRU есть ?

  6. #366

    По умолчанию

    Посмотрел как ведёт себя ПЛК при обращении с регистром "счётчика команд" -- врагу не пожелаешь.
    В точности воспроизвести в эмуляторе пока не смог, но приближаюсь.

    Доработанный эмулятор стал показывать, что при уставке 500 кГц на выходе 495050 (т.е. похоже на то, что наблюдалось на реальном ПЛК -- там было 495126).
    Поправил программу -- теперь частота уж совсем хорошая должна быть.

    Кстати, по поводу генерации частоты: сейчас длина каждого импульса одинаковая. Т.е. на высоких частотах (напр. 200кГц) длина периода это где-то 1000 тактов. 1001 такт это уже 199800Гц. Возможно, на больших частотах стоит какого-нибудь брезенхема прикрутить, чтобы длины тактов немного варьировались, а в среднем получалось нужное значение.

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    В точности воспроизвести в эмуляторе пока не смог, но приближаюсь.
    а зачем свой, у TI же есть эмуляторы и среда CCS?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #368

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а зачем свой, у TI же есть эмуляторы и среда CCS?
    CCS стоит немалых денег.

  9. #369
    Пользователь
    Регистрация
    28.01.2011
    Адрес
    Новосибирск
    Сообщений
    79

    По умолчанию

    pru_stepper_v12.zip
    Работают два привода, на разных каналах со своими частотами.
    Смотри фото по частотам: 1000Hz_0,2ms_дел.jpg,100kHz_5mks_дел.jpg, 300kHz_1mks_дел.jpg, 500kHz_1mks_дел.jpg.
    Осциллограф С1-118А (какой есть).
    При QUANTITY отличном от 0 и MAX_SPEAD=0, при подаче команды ENABLE выдается один импульс, см. SPEAD_0.jpg.
    Количество выдаваемых импульсов плавает и зависит от частоты и от заданного количества импульсов:
    • MAX_SPEAD = 148500 Гц ± 3…30 имп.
    • MAX_SPEAD > 148500 Гц - 3…300 имп.
    • MAX_SPEAD < 148500 Гц + 3…30 имп.
    Хотя PULSES_GENERATED= заданное значение.
    Последний раз редактировалось dima64; 03.10.2016 в 11:36.

  10. #370
    Пользователь
    Регистрация
    28.01.2011
    Адрес
    Новосибирск
    Сообщений
    79

    По умолчанию

    Это показания с дисплея сервопривода, да и визуально вал двигателя останавливается в разных местах.

Страница 37 из 69 ПерваяПервая ... 27353637383947 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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