Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя
Показано с 41 по 50 из 60

Тема: ПР103. Измерение скорости энкодером.

  1. #41
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Я так понимаю, Вы лёгких путей не ищете, в смысле, время цикла программы можно посмотреть в сервисном меню ПР200, а ещё проще в ОЛ, после заливки программы(проекта) в ПР.
    ПР103 ). А про ОЛ не подумал

  2. #42
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Ну вот если главная задача (?) отмерить заданное расстояние, то каждый импульс это 0.5мм, а между импульсами это расчетное время (неплохой период - да)
    Если скорость постоянная (? важно! потому что ТС сам не знает походу - см. ниже) то можно по последнему интервалу рассчитываться.
    Заданное расстояние => в кол-во импульсов. Дробное!!
    А дальше целое кол-во фронтов + доля времени к последнему периоду (который тут то 10 то 15 то около 77)
    Стартовую позицию учесть по времени до 1-ого фронта с коррекцией последней доли и, возможно, общего кол-ва целых импульсов.
    Не понятно - учитывать ли инерционность механизма или старт/стоп компенсируют друг друга.




    2мс/77мс при замере между фронтами даст скачки 2..3%. Это не 10..15% (5см/0.4м) - но нужно ли это вообще?
    И что это


    В общем чётче - что имеете как обратную связь (импульсы и всё/не всё/звонок другу) и что имеете как управление. Кто скоростью рулит?
    Это экструдер. Скорость можно считать постоянной. Сложно раскачать экструдер что бы скорость скакала +- 5-6 см за минуту.
    10 - 15 это было на вскидку. 77 - посчитано на Ваших глазах.
    Нет обратной связи. Только импульсы с квадратурного энкодера + таймер в ПР. Скоростью рулит частотник который даже незнает про энкодер, да и не нужно ему это.
    Расстояние я отмеряю с точностью 1 мм. ( 0,5 мм на 6 метрах сложно померить рулеткой) А вот скорость измеряю с точностью +- 5-6 см ! Хотя в теории - должен до +- 0,5 мм.
    Но я понял проблему подсчета количества импульсов за дробную единицу времени.
    Думаю надо идти по пути измерения времени между соседними фронтами. Я уже пробовал но забуксовал в обработке переменных типа TIME. Кривой алгоритм получился.
    Точность нужна до 1 см/мин. мм/мин я отбрасываю.

  3. #43
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,968

    По умолчанию

    Цитата Сообщение от B.S.V Посмотреть сообщение
    Код:
    function_block Speed
        
        var_input
            xPuls : bool;
        end_var
        
        var_output 
            Q : real;
        end_var
        
        var        
            rPuls : real := 0;
            Time_1 : TIME := T#0ms;
            Time_2 : TIME := T#0ms;
        end_var
        
    //**********************************************
    //*****************   
    
    
        IF Time_1 = T#0ms THEN
            Time_1 := GET_TIME();
        END_IF
    
        Time_2 := GET_TIME();
    
        IF (Time_2 - Time_1) < T#30000ms THEN
            if xPuls then
                rPuls := rPuls + 1;
            end_if
        else 
            Q := rPuls / 1000;
            Time_1 := T#0ms;
            rPuls := 0;
        end_if
        
    
    end_function_block
    Не понял, зачем считать импульсы, если энкодер и так их считает?
    Берите разность за определенный период времени и обсчитывайте по пропорции

  4. #44
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,512

    По умолчанию

    Мне кажется, быстрый вход(ы) лучше сконфигурировать в режим счётчика импульсов, а не АВ энкодера, в смысле, использовать для этой функции оставшиеся(неиспользованные) быстрые входы тогда будет в 4 раза меньше импульсов, счётчик энкодера считает по фронту и спаду каждого из двух каналов, тогда и период следования импульсов(что нам важно) будет в 4 раза больше, соответственно и точность возрастёт!
    Последний раз редактировалось Сергей0308; 06.08.2025 в 00:39.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #45
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Не понял, зачем считать импульсы, если энкодер и так их считает?
    Берите разность за определенный период времени и обсчитывайте по пропорции
    В первом варианте так и делал. Потом решил попробовать привязаться к началу фронта... нечего не поменялось. Но причина понятна. Я теряю "полуимпульсы" которые накапливаются при пересчете в минуты. Если считать за минуту - точность должна быть приемлемой. Но минута на ожидание реальной скорости - не приемлемо ))

  6. #46
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Мне кажется, быстрый вход(ы) лучше сконфигурировать в режим счётчика импульсов, а не АВ энкодера, в смысле, использовать для этой функции оставшиеся(неиспользованные) быстрые входы тогда будет в 4 раза меньше импульсов, счётчик энкодера считает по фронту и спаду каждого из двух каналов, тогда и период следования импульсов(что нам важно) будет в 4 раза больше, соответственно и точность возрастёт!
    В момент реза происходит откат на пару мм. Счет энкодером компенсирует, а счетчик их приплюсует как я понимаю.

  7. #47
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Завтра попробую через период посчитать. Нашел ошибку в алгоритме.
    Такой вопрос : если к примеру разделить 1 секунду на 625 мс получится 1 мс или 1.6 мс ?

  8. #48
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,512

    По умолчанию

    Цитата Сообщение от B.S.V Посмотреть сообщение
    Завтра попробую через период посчитать. Нашел ошибку в алгоритме.
    Такой вопрос : если к примеру разделить 1 секунду на 625 мс получится 1 мс или 1.6 мс ?
    1 секунда это 1000 мс, если разделить на 625 мс, получится просто "1,6", в смысле, "мс" сократятся!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #49
    Пользователь
    Регистрация
    05.07.2015
    Адрес
    Орехово-Зуево
    Сообщений
    216

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    1 секунда это 1000 мс, если разделить на 625 мс, получится просто "1,6", в смысле, "мс" сократятся!
    То есть, произойдет преобразование типов из TIME в REAL ?
    Проверил - преобразования не происходит )
    Последний раз редактировалось B.S.V; 06.08.2025 в 07:46.

  10. #50

    По умолчанию

    Самый точный, но тоже скачущий спидометр у меня получился так:
    Owen.jpg

    Код:
    function_block Freq
        
        var_input
            in : real;  // Вход с текущим значением счётчика
        end_var
        
        var_output 
            F : real;   // Частота или скорость
        end_var
        
        var 
            inOLD : real;           // старое значение счётчика
            tsOLD, ts : udint;      // Фиксация системного таймера
        end_var
        
        ts := time_to_udint(get_time());    // Текущее значение системного таймера в мс
        if ts - tsOLD >= 1000 then          // ПР может проскочить 1000 мс период
            F := (in - inOLD) / udint_to_real(ts - tsOLD);   // Текущая разница за реальный период
            tsOLD := ts; inOLD := in;       // Фиксируем как предыдущие значения
        end_if
    
    end_function_block
    Чтобы не скакало использовал фильтр + сглаживание

Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя

Похожие темы

  1. Прошу помощи ПР103 работа с энкодером
    от Анатолий Varianty в разделе Трёп (Курилка)
    Ответов: 15
    Последнее сообщение: 24.05.2025, 09:24
  2. ПР103 ПРОЭКТ С ЭНКОДЕРОМ И СП310 НУЖНА ПОМОЩЬ
    от koliastok в разделе Среда программирования OWEN Logic
    Ответов: 11
    Последнее сообщение: 23.08.2023, 13:13
  3. Ответов: 24
    Последнее сообщение: 27.08.2021, 15:34
  4. измерение длины и скорости
    от smokin в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 16.10.2008, 14:02
  5. измерение скорости
    от незарегистрированный в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 21.11.2007, 08:20

Ваши права

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