Страница 53 из 57 ПерваяПервая ... 3435152535455 ... ПоследняяПоследняя
Показано с 521 по 530 из 688

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

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

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

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Иными словами:
    1) Я могу генерировать и публиковать PRU0.prg для законченных программ. Например, я могу опубликовать PRU0.prg для работы с ШД.
    2) Я не могу встроить механизм генерации PRU0.prg в Hardella, т.к. для этого придётся публиковать "секретный инструмент создания FB_ARRAY.bin"
    Прошу провести натурные испытания.
    pru_pulse_v1.zip

    Порядок работы:
    1) Заливаем PRU0.prg (как-то)
    2) Подключаем ШД на fast output 3
    2) Используем блок pru_pulse.lib для работы с ШД
    CYCLE_LENGTH задаёт длительность единичного и нулевого значения на выходе. Оно указывается в тактах PRU. Вроде как PRU работает на частоте 150МГц, т.е. значение cycle_length=150 это импульсы по 1мкс.
    Параметр CYCLE_LENGTH сейчас WORD, т.е. максимальное значение 65535, и, значит, возможна генерация частот в пределах 1кГц...1МГц
    Если нужны более низкие частоты, то придётся перекомпилировать программу, а мне было немного лень, т.к. для этого нужно перезапускать bat'ники.

    В pru_pulse один блок:
    Код:
    FUNCTION_BLOCK PRU_PULSE
    (* Output will be generated to FAST OUTPUT 3 *)
    VAR_INPUT
      ENABLE: BOOL;
      CYCLE_LENGTH: WORD; (* PRU cycles *)
      QUANTITY: DWORD;
    END_VAR
    VAR_OUTPUT
      READY : BOOL;
      QUANTITY_LEFT: DWORD; (* for debugging *)
    END_VAR

    Вышеобозначенное получено "официальным линкером".
    Я ему скормил всю-всю программу как один ФБ.

    Для примера, вот так выглядит pulse.p -- т.е. просто вызов одного моего ФБ.
    Код:
    ;include "target.trg"
    FBDECL
    #defFB PRU_PULSE PRU_PULSE
    /FBDECL
    
    SYNCLIST
    IN=R25
    IN=R26
    IN=R27
    OUT=R28
    OUT=R29
    /SYNCLIST
    PROGRAMM
    PRU_PULSE
    /PROGRAMM
    А так выглядит "ассемблерный код" моего ФБ:
    Код:
    .origin 0
    .entrypoint __INIT_PROGRAM
    
    ;FB_WORKTIME=40
    ;FB_NAME=PRU_PULSE
    
    __INIT_PROGRAM:
    Да, да. Код целиком и полностью сгенерирован в Hardella, а линкеру я скормил пустой файл. Вроде, тот не подавился, и ладно.


    Обмен с PRU я сделал так. Тут, к сожалению, сделано наугад в надежде на то, что PRU_FB_GetParameter/PRU_FB_SetParameter будут читать/писать по нужным адресам в PRU памяти.
    Код:
    TMP : DWORD;
    ...
    PRU_FB_GetParameter(pru_num:=0, index:=28, value:=ADR(TMP));
    READY := TMP <> 0;
    PRU_FB_GetParameter(pru_num:=0, index:=29, value:=ADR(QUANTITY_LEFT));
    PRU_FB_SetParameter(pru_num:=0, index:=25, value:=ADR(QUANTITY));
    TMP := WORD_TO_DWORD(CYCLE_LENGTH);
    PRU_FB_SetParameter(pru_num:=0, index:=26, value:=ADR(TMP));
    TMP := SEL(ENABLE, 0, 1);
    PRU_FB_SetParameter(pru_num:=0, index:=27, value:=ADR(TMP));
    Последний раз редактировалось Владимир Ситников; 19.09.2016 в 13:10. Причина: fast output 1 -> fast output 3

  2. #2

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Прошу провести натурные испытания.
    Обмен с PRU так не работает. смотрим ФБ END_1_1 и понимаем 2 номера регистра, по которым идёт обмен.
    Если надо больше - модифицируем ФБ соответственно.

    Сама библиотека работает с любым номером регистра, если он задаётся и поддерживается ФБ END и опредёлен в программе в разделе
    SYNCLIST

    Копирование данных в PRU и из PRU происходит силами самой PRU. Через разделяемую память, куда пишет библиотека
    Последний раз редактировалось Филоненко Владислав; 20.09.2016 в 09:34.
    Тролль-наседка, добрый, нежный и ласковый

  3. #3

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Копирование данных в PRU и из PRU происходит силами самой PRU. Через разделяемую память, куда пишет библиотека
    У меня вопрос про HOST составляющую.
    Библиотека pruAccessLib.lib, похоже, не просто "пишет в память", а ещё и ждёт того, как PRU обработает данные. Вот этот момент ни в "писании" не сказан, ни из исходных кодов тоже не считывается.
    Последний раз редактировалось Владимир Ситников; 20.09.2016 в 09:47.

  4. #4

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    "и сказано в писании.." что в программе обязательно присутствуют модули PRU_START и PRU_END, которые подставляются автоматически... возможно там...
    На заборе тоже написано, а там дрова лежат.

    Я составляю *.p программу сам, и никаких PRU_START/PRU_END никуда не добавляется.


    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    "и сказано в писании.." что в программе обязательно присутствуют модули PRU_START и PRU_END, которые подставляются автоматически... возможно там...
    т.е. вы категорически не хотите сами проверять свой код?
    Дмитрий:
    1) Я проверяю код на эмуляторе. На PRU процессор есть документация -- я его эмулирую. На pruAccessLib.lib документации нет -- приходится гадать и проводить натурные эксперименты.
    2) У меня нет проводов для соединения ПЛК
    3) Можете проверить? Ну, реально. Если у вас "расчехлён ПЛК", то проверить должно быть недолго.
    Последний раз редактировалось Владимир Ситников; 20.09.2016 в 09:47.

  5. #5
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Плохо то, что мало кто раскусил и мало кто проявил интерес к технологии PRU. Иначе можно было бы устроить голосование и продавить разработку цивильной среды. Может действительно написать открытое письмо руководству фирмы "ОВЕН" для разрешения этой абсурдной ситуации.
    ОВЕН идут от противного - мало запросов => задачу в конец очереди.
    Хотя мое мнение другое - т.к. ОВЕН раньше не делал ПЛК для управления ШД и Сервоприводами - никто и не смотрит в их сторону при таких задачах.
    А если бы предоставили готовое решение - запросов стало бы больше.
    "Жираф большой, ему виднее" (с)

    Лично мне - нравится CDS, есть на руках Дельта, которая из коробки может 200кГц на выходах и готовые блоки.
    Но система программирования....

  6. #6

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Плохо то, что мало кто раскусил и мало кто проявил интерес к технологии PRU. Иначе можно было бы устроить голосование и продавить разработку цивильной среды. Может действительно написать открытое письмо руководству фирмы "ОВЕН" для разрешения этой абсурдной ситуации.
    вы главного упорно не видите, в приведенном выше коде - 90% ассемблерные вставки и тратить время на разработку среды для "обертывания" их в одиночный repeat - until даже с выделением цветом ключевых слов смысл не великий... кому нравится эстетствовать - в добрый путь, а для нормальной работы там есть еще много сырых мест которые и надо допиливать не отвлекаясь на разноцветные флажки и гирлянды )))

    кстати, входы заведены на PRU0 и при необходимости передаются в PRU1 через память

    Если делать на PRU программе, то можно сделать импульсы шириной до 0.3..0.7 мкс
    не получится принципиально, по двум причинам: код не выполниться чаще чем 1 МГц и и примененные опропары не отработают фронты на данной частоте
    Последний раз редактировалось Дмитрий Артюховский; 22.09.2016 в 00:04.

  7. #7

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    вы главного упорно не видите, в приведенном выше коде - 90% ассемблерные вставки и тратить время на разработку среды для "обертывания" их в одиночный repeat - until даже с выделением цветом ключевых слов смысл не великий... кому нравится эстетствовать - в добрый путь,
    Дмитрий.
    1) А, давайте, покажите, где там 90% ассемблерных вставок.
    Не надо бросаться голословными утверждениями.

    Весь код от и до написан на нормальном ST.
    Надеюсь, у вас хватит совести не обсуждать, что "блок PRU_OUT1 состоит из одной единственной команды, и эта команда ассемблерная"?

    Вот, реально. Найдите хоть одну ассемблерную инструкцию в самом блоке генератора импульсов.
    Или найдите ассемблерную инструкцию в коде, который генерирует задержку.
    Да хоть где.

    Я без проблем могу завернуть оставшиеся LBCO/SBCO в нормальный ST код, но именно здесь я не хочу тратить время, т.к. здесь и сейчас именно эти 2 инструкции никому не мешают.

    А вы увидели "asm" и давай говорить "смысл не великий".


    2) Сейчас обсуждается не подкраска синтаксиса. Сейчас обсуждается вообще возможность PRU программирования, т.е. сама возможность задействования быстрых входов-выходов.
    Если вы до сих пор не поняли, что ОВЕН никак не хочет разрешать работу с быстрыми входами-выходами, то я не знаю как ещё объяснить.

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    а для нормальной работы там есть еще много сырых мест которые и надо допиливать не отвлекаясь на разноцветные флажки и гирлянды )))
    Каждый считает своим долгом сказать, что "ничего у вас не получится".
    Давайте с другой стороны: у вас получился блок управления ШД? (ну или что вы там делали?) Покажете?
    У Филоненко получился блок управления ШД?
    Ещё у кого-нибудь получился?

    Почитайте выше -- пишут, что даже просто fast PWM не работает как надо. Я уж не говорю про ШД с разгоном.

    У меня -- ШД получился. Если считаете, что "можно было просто на ассемблере сделать, и не парить мозг с разработкой среды", то продолжайте так считать.
    Но есть одно но: очень много кто считает, что "можно просто на ассемблере было написать", а как доходит до дела, то все сдуваются. Прямо реально, страна советов. Все только и делают, что советуют "как надо". А, если реально сделать, то всё. Сразу "да на один только ОЛ 5 человеколет ушло", да и вообще "разработка компилятора это 50 человеколет".

    Почему-то никто из скептиков не учитывает, что среда УЖЕ есть. В ней УЖЕ можно писать программы, и не просто абы какие, а прямо те, которые давным-давно нужны на проектах: ШД, серво, вот это всё.

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    не получится принципиально, по двум причинам: код не выполниться чаще чем 1 МГц
    Это откуда взяли?
    Код выполняется с частотой 150МГц -- это частота PRU ядра. Почти все команды занимают 1 такт.
    Можно хоть 50МГц на быстрый выход выводить программой из двух команд "вкл-выкл-goto start".

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    1 МГц и и примененные опропары не отработают фронты на данной частоте
    Тут без понятия.
    Последний раз редактировалось Владимир Ситников; 22.09.2016 в 10:30.

  8. #8

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    кстати, входы заведены на PRU0 и при необходимости передаются в PRU1 через память
    Если знаток PRU1, то, может, расскажете как pruAccessLib.lib взаимодействует с PRU1?
    Ну, какие адреса памяти используются для обмена?

    Понятно, что можно сделать host-PRU0-PRU1, но всё-таки, лучше сделать независимый обмен, чтобы не нагружать PRU0 лишней работой по пересылке данных туда-сюда.

  9. #9

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    не получится принципиально, по двум причинам: код не выполниться чаще чем 1 МГц и и примененные опропары не отработают фронты на данной частоте
    Вот что в первом посте этой темы написал В.Филоненко: Для этого в ПЛК есть 2(4) быстрых входа и 4 быстрых выхода (которые способны воспринять или сформировать импульсы от 0,5 мкс длительностью) и 2 специализированых сопроцессора, PRU, которые подключены непосредственно к этим I/O и могут обрабатывать данные и управлять отдельно от основного цикла ПЛК.

    Дмитрий, что вообще вы такое пишите. Откуда у вас столько пессими́зма ? Вы что древний старик ?
    Последний раз редактировалось Newcomer; 22.09.2016 в 10:37.

  10. #10

    По умолчанию

    Цитата Сообщение от ASo Посмотреть сообщение
    Именно поэтому на такие проекты не нанимают фрилансеров.
    Вы отстали от жизни. Полмира так уже работает.

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

Похожие темы

  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

Ваши права

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