Неправильно считает импульсы с энкодера

rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Неправильно считает импульсы с энкодера

Сообщение rsv »

Добрый день.
Начал осваивать RealTime. Первая задача - обработка данных с энкодера (число оборотов, частота, угол поворота).
Сделал простейший счётчик импульсов с одного выхода энкодера. Ожидал получить 1000 импульсов с оборота, а получаю каждый раз разное количество, причём в очень большом диапазоне: от 200 до 2000.
В утилите MAX всё показывает корректно - обороты и импульсы. Один оборот вала энкодера соответствует 1000 импульсов по каждому каналу и значение счётчика оборотов меняется на 1.
Подскажите, пожалуйста, как правильно реализовать счётчик импульсов в RealTime?

Оборудование:
- контроллер cRIO-9056;
- NI-9411 (6-ти канальный дифференциальный модуль цифрового ввода);
- Энкодер ЛИР-158А (инкрементный оптоэлектронный преобразователь угловых перемещений);
Вложения
Счётчик импульсов с энкодера.JPG
Artem.spb

Activity Автор
professor
professor
Сообщения: 3396
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение Artem.spb »

Первый вопрос: а почему не использовать тот же метод, что в MAXе?
Судя по описанию там вы счётчик используете, а тут прямое чтение.

Дальше, длительность импульса? Если он короче 1 мс, то могут быть банальные пропуски.
Ну и читать на таких скоростях по одной точке - довольно экстремальное занятие, проверьте ошибку цикла, подозреваю, что у вас реальный период вовсе не 1мс.
Читайте выборками по 0,1-1с ( в зависимости от необходимой скорости обновления индикаторов), и анализируйте уже полученный массив
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

Первый вопрос: а почему не использовать тот же метод, что в MAXе?
Судя по описанию там вы счётчик используете, а тут прямое чтение.
Вот это совсем не понял. В MAXе вроде ничего не настраивали - вставили модули, загрузили ПО и все модули сами определились. На закладке Test Panels тоже особо выбирать нечего - порт и канал только доступны. О каком методе Вы говорите?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Неправильно считает импульсы с энкодера

Сообщение Borjomy_1 »

rsv, читать непосредственно - не надо, это неправильно. Частота импульсов может достигать 100-300 кГц. И обычным опросом, тем более разовым чтением, вы гарантировано будете пропускать импульсы.
Для работы с энкодером применяют ТОЛЬКО счетчики (Counters).
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

Для работы с энкодером применяют ТОЛЬКО счетчики (Counters).

Счётчики - это настройка DAQmx Create Virtual Channel?
Сделал как на скрине - при выполнении вышла ошибка (тоже на скрине). И так на всех 6-ти каналах (менял через вход Task In).
Где-то ещё надо настраивать?
Вложения
Counter Input.png
Ошибка Angular Encoder.png
Ошибка Angular Encoder.png (8.56 КБ) 4473 просмотра
Artem.spb

Activity Автор
professor
professor
Сообщения: 3396
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение Artem.spb »

rsv писал(а):
Вот это совсем не понял. В MAXе вроде ничего не настраивали - вставили модули, загрузили ПО и все модули сами определились. На закладке Test Panels тоже особо выбирать нечего - порт и канал только доступны. О каком методе Вы говорите?
А как вы количество импульсов получили?
Сделал как на скрине - при выполнении вышла ошибка (тоже на скрине)
Попробуйте count edges
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 392
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение taras_33 »

Так вам же ошибка прямо указывает, что неправильно задан тип входа. Вместо line укажите ctr
Encoder.png
Encoder.png (4.27 КБ) 4461 просмотр
И правильно энкодер подключите
Последний раз редактировалось taras_33 10 дек 2019, 15:44, всего редактировалось 1 раз.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

А как вы количество импульсов получили?
Количество импульсов получил на закладке Counter I/O. А ещё есть закладка Digital I/O. Это и есть методы?
Попробуйте count edges
Попробовал. Ошибка та же. Похоже ей не нравится канал, заданный во входном параметре "task in".
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

Вместо line укажите ctr

Что такое ctr и где мне его взять? У меня все 6 выходов с модуля 9411 обозначены как line0..5.
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

Дошло...
Константа задаётся настройками VI, для которого создавалась. Если меняются настройки, надо удалить константу и создать заново. Не первый раз уже на эти грабли наступаю...
И вход не task in", а counter...
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 392
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение taras_33 »

Не Task in, а Phisical channel изменится на Counter
Вложения
Encoder3.png
Encoder3.png (5.8 КБ) 4453 просмотра
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение rsv »

Что-то я уже совсем запутался. Какой вариант выбрать для счётчика импульсов - CI Count Edges или CI Angular POsition?
И какой вариант выбрать для счётчика оборотов?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3396
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение Artem.spb »

Если нужен счётчик, то это counter.
Все остальные варианты выдают не количество импульсов, а пересчитанные значения. Углов, скоростей и пр. Но для этого нужно, чтобы железка умела их считать. А ваша не умеет. что написано в ошибке.
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 392
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение taras_33 »

Все остальные варианты выдают не количество импульсов, а пересчитанные значения
Как раз таки если задача сконфигурирована как Angular Encoder, то на выходе read vi количество импульсов. Причём значение может быть отрицательным, в зависимости от направления вращения. Поэтому можно получить не только угол, а и количество оборотов, которое учитывает направление. К примеру сделали 10 оборотов в одну сторону, а потом 2.5 в другую, то на выходе read vi будет количество импульсов соответствующее 7.5 оборота.
Например вот так.
Pulses ctr.png
Сами счётчики, а их четыре, находятся в самом контроллере. Ваш NI 9411 только предоставляет к ним доступ.
Последний раз редактировалось taras_33 12 дек 2019, 02:23, всего редактировалось 2 раза.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Artem.spb

Activity Автор
professor
professor
Сообщения: 3396
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Неправильно считает импульсы с энкодера

Сообщение Artem.spb »

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

Вернуться в «CompactRIO»