Показано с 1 по 10 из 688

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

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

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

    По умолчанию

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

    Ещё есть кандидаты на PRU программы?
    Надо кому-нибудь что-нибудь на тему "быстрого управления"?

    Поясню, что мне не нравится в моём текущем подходе.
    Вот фрагмент программы, которая следит за энкодером и выключает двигатель как только энкодер отсчитает нужное количество импульсов:

    Снимок экрана 2016-10-08 в 22.33.42.png

    Несложно заметить, что обмен данными сделан ассемблерными командами.
    Код:
    ASM 
      SBCO (* записываем переменную в память *) cutter.state, 3 (* тут всегда 3 *), 60 (* это адрес куда писать *) , 1  (* 1 байт *)
      SBCO cutter.offset, 3, 64, 4 
      SBCO abz.zeroDetected, 3, 68, 1 
      SBCO abz.position, 3, 72, 2 
      SBCO abz.counter, 3, 76, 2 
    END_ASM
    На КДС стороне эти данные принимаются по соответствующим адресам
    Код:
    VAR
      TMP: DWORD;
    END_VAR
    
    PRU_FB_GetParameter(pru_num:=0, index:=15 (* == 60/4 == cutter.state *), value:=ADR(TMP));
    PRU_FB_GetParameter(pru_num:=0, index:=16 (* == 64/4 == cutter.offset *), value:=ADR(OFFSET));
    Нормально?
    Готовы так PRUграммировать?

    Мне не нравится, что приходится следить за адресами и соответствием PRU кода и КДС кода.
    Хочется чего-то автоматического, чтобы адреса выбирались сами собой, и чтобы КДС обёртка генерировалась одновременно с PRUграммой.
    Мне-то подобная работа с памятью ещё более-менее, но, думаю, для обывателя это сложновато.

    Моя проблема в том, что пары имеющихся у меня программ маловато, чтобы "обобщить опыт"

    Думаю пока в таком направлении: в "основной" PRUграмме отмечаем спец флагом те блоки/переменные, которые нужно передавать между КДС и PRU.

    Например, так:
    Снимок экрана 2016-10-08 в 23.37.29.png

    Ключевое слово @Export указывает имя ФБ на КДС стороне и перечень переменных, которые нужно передавать из/в КДС.
    В примере выше, Hardella создаст не только PRUграмму, но и КДС блоки PRU_ABZ_ENC/PRU_FAST_INPUTS, входы-выходы которых будут обмениваться с PRU.


    Как придумается адекватный подход, можно будет запускать PRUграммирование в массы.

  2. #2
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

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

    Ещё есть кандидаты на PRU программы?
    Надо кому-нибудь что-нибудь на тему "быстрого управления"?
    Да, я жду плк110 М02, задача стоит в управлении ШД с ускорением и замедлением и обратная связь от энкодера.
    Я так понимаю PRU мне как раз должна помочь в этом?
    В прошлом году задача решена была на плк160 + драйвер onitex, управление по rs485 (modbus), теперь хочу исключить onitex.
    На плк siemens (очень старом и очень давно) эти задачи решались 'мышкой' и работают по сей день, овен не очень хочет видимо делать просто и доступно.

  3. #3

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Да, я жду плк110 М02, задача стоит в управлении ШД с ускорением и замедлением и обратная связь от энкодера.
    Я так понимаю PRU мне как раз должна помочь в этом?
    Да, верно. Можно задачу по-подробнее?


    Цитата Сообщение от Scream Посмотреть сообщение
    В прошлом году задача решена была на плк160 + драйвер onitex, управление по rs485 (modbus), теперь хочу исключить onitex.
    Вот смотрите: у вас и так и сяк ОВЕН ПЛК. Какой смысл "париться" ОВЕНу по вопросу PRU, если от этого всё равно не зависит ничего?

  4. #4
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Да, верно. Можно задачу по-подробнее?
    У нас фасовочный аппарат, объёмное дозирование. Пневмоцилиндр тягает поршень (в котором продукт) и упирается в ограничитель, который и двигает ШД.
    Позиция энкодера 0 ~ 3 кг продукта
    Позиция энкодера 850 ~ 1.5 кг продукта и т.д.
    Мне скорость не так важна как точность, так как цена одного оборота = 3 грамма продукта, ошибся на несколько оборотов = брак
    Ускорение и замедление делал как раз для точности.
    Машина выдаёт продукт, затем тара попадает на весы и если вес нужно подкорректировать, то ПЛК крутит в нужную сторону ШД на рассчитанное кол-во импульсов, таким образом получаем аппарат розлива с автоматической корректировкой веса.

  5. #5

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Машина выдаёт продукт, затем тара попадает на весы и если вес нужно подкорректировать, то ПЛК крутит
    Ясно. Буду делать @Export. Вроде, и для вашего случая подходит.

Похожие темы

  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

Ваши права

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