Страница 23 из 117 ПерваяПервая ... 1321222324253373 ... ПоследняяПоследняя
Показано с 221 по 230 из 1349

Тема: Hardella IDE

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

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

    По умолчанию

    Цитата Сообщение от murdemon Посмотреть сообщение
    на счет интерфейса (примерно как тут https://www.youtube.com/watch?v=Ve8YcLyyq4s на 6й минуте, подобный есть у всех ПЛК с Motion)... по PLCOpen... я имею ввиду некую абстракцию мы забили настройки ШД или Серво в режим степ дир, (такие как сколько мм движение 1 шаг и тд) А потом через абстракцию говорим разогнать двигатель, с ускорением 0.1 м/c^2 до 3м .. или если позиционирование, то подвинуть на позицию 2 метра со скоростью разгона 0.1 м/c^2 и тд. Там также в бибке реализована абстракция (позиция 1 двигателя - "оси" от другой "оси" в виде 2D графика) и много еще чего. + кинематика вроде есть (для дельта робота например) задаем 3 оси (двигателя, длины плеча дельта робота и тд ) и говорим уже в координатах 3д подвинуть руку в позицию X Y Z. + CNC в PLC Open уже добавлен. Те перемещения можно задавать как некий стандартный CNC код.
    Мысль разумная. Но надо подумать как это органично встроить (с учётом того, что программы могут различаться)

  2. #2
    Banned
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    848

    По умолчанию

    ну там все функции и есть уже готовый вставляешь те что в бибке (те что надо по технологии движения) задаешь параметры и поехали , + эти блоки должны работать на уровне (процесса управления PRU) + передавать свои основные параметры на уровень выше в кодезис, так например мы делаем в PRU программу бесконечное движение оси с параметром скорости, а параметр скорости берем из процесса кодезиса. Это как обычно это делают, в той же Дельте.

  3. #3

    По умолчанию

    Цитата Сообщение от murdemon Посмотреть сообщение
    ну там все функции и есть уже готовый вставляешь те что в бибке (те что надо по технологии движения) задаешь параметры и поехали , + эти блоки должны работать на уровне (процесса управления PRU) + передавать свои основные параметры на уровень выше в кодезис, так например мы делаем в PRU программу бесконечное движение оси с параметром скорости, а параметр скорости берем из процесса кодезиса. Это как обычно это делают, в той же Дельте.
    Мы друг друга не понимаем.
    Кто будет указывать *куда именно* будут передаваться данные в PRU?

    Грубо говоря, у одного ШД висит на fast out1, а у другого на fast out4.
    Кто будет КДС библиотеку перенастраивать на разные выхода?

  4. #4
    Banned
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    848

    По умолчанию

    ну это должно быть возможно делать в виде конфигуратора ШД. Что куда подключено + тут же должны добавляться и настраиваться функции PLCOpen motion, и прописываться mapping между PRU и PLC Codesys

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Из работ по 1.6.0 осталась проверка и документация (чтобы по много раз одно и то же не писать в этой теме)
    Документация будет на русском (родном) языке?

  6. #6

    По умолчанию

    выкладываю свой вариант кода для управления одним ШГ. У меня подключены 4 ШГ у контроллеру - работают нормально. по 2шт одновременно.

    (* 1-й верхний*)
    IF (state1=STOP_STEPPER OR state1=INIT_STEPPER) AND rungen1=FALSE THEN SetPos_1presHig1:=SetPos_1presHig; oldpos2:=Pos_1presHig; END_IF
    IF SetPos_1presHig1<>Pos_1presHig AND rungen1=FALSE THEN
    Way1PresHig:=SetPos_1presHig1>Pos_1presHig;
    IF SetPos_1presHig>Pos_1presHig AND (state1=INIT_STEPPER OR state1=STOP_STEPPER) THEN
    difpos1:=SetPos_1presHig1-Pos_1presHig;
    ELSIF SetPos_1presHig1<Pos_1presHig AND (state1=INIT_STEPPER OR state1=STOP_STEPPER) THEN
    difpos1:=Pos_1presHig-SetPos_1presHig;
    END_IF
    Way1PresHigOut:=NOT Way1PresHig;
    IF state1=run_stepper OR state1=ACCEL_STEPPER OR state1=DECEL_STEPPER THEN Pos_1presHig:=oldpos2+pos1*BOOL_TO_WORD(Way1Preshi g)-pos1*(BOOL_TO_WORD(NOT Way1PresHig)); END_IF
    IF state1=init_STEPPER THEN
    rungen2:=TRUE;
    END_IF
    out1:=4;
    ELSE
    Way1PresHigout:=FALSE;
    END_IF
    IF state1=stop_stepper THEN rungen1:=FALSE; rungen2:=FALSE; END_IF
    Gen1Hig( ENABLE:=rungen1 OR rungen2 , MIN_SPEED:=0 , MAX_SPEED:=Speed1PresHig , QUANTITY:= difpos1 , ACCEL_RAMP:=2000 , DECEL_RAMP:=2000, OUT_NUM:=out1 , STATE=>state1 , CURRENT_SPEED=> , PULSES_GENERATED=>pos1 );

  7. #7

    По умолчанию

    Вариант использования PRU_Stepper для управления ШГ.


    IF (state1=STOP_STEPPER OR state1=INIT_STEPPER) AND rungen1=FALSE THEN SetPos_1presHig1:=SetPos_1presHig; oldpos2:=Pos_1presHig; END_IF
    IF SetPos_1presHig1<>Pos_1presHig AND rungen1=FALSE THEN
    Way1PresHig:=SetPos_1presHig1>Pos_1presHig;
    IF SetPos_1presHig>Pos_1presHig AND (state1=INIT_STEPPER OR state1=STOP_STEPPER) THEN
    difpos1:=SetPos_1presHig1-Pos_1presHig;
    ELSIF SetPos_1presHig1<Pos_1presHig AND (state1=INIT_STEPPER OR state1=STOP_STEPPER) THEN
    difpos1:=Pos_1presHig-SetPos_1presHig;
    END_IF
    Way1PresHigOut:=NOT Way1PresHig;
    IF state1=run_stepper OR state1=ACCEL_STEPPER OR state1=DECEL_STEPPER THEN Pos_1presHig:=oldpos2+pos1*BOOL_TO_WORD(Way1Preshi g)-pos1*(BOOL_TO_WORD(NOT Way1PresHig)); END_IF
    IF state1=init_STEPPER THEN
    rungen2:=TRUE;
    END_IF
    out1:=4;
    Speed1PresHig:=3000;
    Ramp:=2000;
    ELSE
    Way1PresHigout:=FALSE;
    do4:=TRUE;
    END_IF
    IF state1=stop_stepper THEN rungen1:=FALSE; rungen2:=FALSE; END_IF
    IF AlarmAktivGen THEN
    Speed1PresHig:=0;
    Ramp:=0;
    Difpos1:=0;
    IF State1=run_stepper OR state1=ACCEL_STEPPER OR state1=DECEL_STEPPER THEN
    Rungen1:=NOT rungen1;
    Rungen2:=FALSE;
    ELSE
    rungen1:=FALSE;
    Rungen2:=FALSE;
    END_IF
    END_IF

    Gen1Hig( ENABLE:=rungen1 OR rungen2 , MIN_SPEED:=0 , MAX_SPEED:=Speed1PresHig , QUANTITY:= difpos1 , ACCEL_RAMP:=ramp, DECEL_RAMP:=ramp, OUT_NUM:=out1 , STATE=>state1 , CURRENT_SPEED=> , PULSES_GENERATED=>pos1 );

  8. #8

    По умолчанию

    Выпустил Hardella 1.6.0 (см https://hardella.com/download/) и запустил сайт: https://hardella.com/

    В очередной версии:
    - можно программировать оба PRU ядра, и полностью управлять 4 выходами и 2 входами
    - встроен блок ШД

    Если что-то не описал -- пишите в комментариях.
    Если опечатки (или, например, непонятно написано), то можно выделить фрагмент на сайте и нажать ctrl+enter.

    Цитата Сообщение от dima64 Посмотреть сообщение
    Документация будет на русском (родном) языке?
    В основном да (см пример https://hardella.com/docs/pru/exampl...linkning-leds/ ), но я продублирую на английский.

    Цитата Сообщение от murdemon Посмотреть сообщение
    а PRU ввиде таска к Codesys прикрутить нельзя? (по типу как функции прерывания 20mks) Или там язык совсем другой? или как этот процесс заливки PRU вообще проходит ?
    PRU выполняется на другом процессоре. С точки зрения Codesys, заливка PRU программы выглядит как "запись байт по определённому адресу".
    Программируется-то на языке ST, но с точки зрения КДС это выглядит как филькина грамота (т.е. как один массив байт)

    Постарался тут описать: https://hardella.com/docs/pru/codesys-setup/


    Ура, товарищи!
    Последний раз редактировалось Владимир Ситников; 19.12.2016 в 16:26.

  9. #9

    По умолчанию

    Возвращаясь к теме: в 1.6.0 я добавил блок управления ШД, который работает с постоянной длительностью цикла.
    Грубо говоря, если длительность PRU цикла 1 мкс, то импульс может быть либо 1 мкс, либо 2 мкс, либо 3 мкс, ну вы поняли?

    Казалось бы 1 мкс это довольно хорошо, но нет.
    Например, если нужна частота 50кГц, то это будет 20 1мкс циклов.
    21 цикл это 47619Гц, а 19 циклов это 52631 Гц.

    Чтобы в таких условиях выполнять "плавный разгон", блок делает размазывание ошибки.
    Если частота не попадает в "точное значение микросекунд", то блок выдаёт смесь (задержка становится то 19 то 20 мкс)

    С математической точки зрения, конечно, всё хорошо.


    Но интересно проверить работает ли это на практике
    Внимание, вопрос: кто-нибудь может проверить работу ШД на реальном ШД?
    На частотах до 10кГц вряд ли что-нибудь изменится, а вот на более высоких уже интереснее.

    PS. Инструкция по ШД программе тут: https://hardella.com/docs/pru/examples/step-motor/

  10. #10

    По умолчанию

    Запустил сайт, на котором буду размещать новые версии и документацию: https://hardella.com/

    Цитата Сообщение от Вольд Посмотреть сообщение
    Сам удивляюсь. Может В.Ситников меня в черный список включил.
    Если во всех браузерах не работает и браузеры обновлены, то проверьтесь на вирусы. Сайт работает под управлением cloudflare.com с их стандартными настройками безопасности. Если что-то не работает, то практически наверняка проблема на стороне браузера.

Страница 23 из 117 ПерваяПервая ... 1321222324253373 ... ПоследняяПоследняя

Ваши права

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