Узнать количество сгенерированных импульсов

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Узнать количество сгенерированных импульсов

Сообщение jane_wild »

Ребята, возможно ли в реальном времени узнать количество уже сгенерированных импульсов?
Счетчик NI 6212 генерирует определенное количество импульсов, используемых для управления шаговым двигателем. Я задаю несколько тысяч импульсов, запускаю задачу, шаговик начинает вращаться, ну и вот - вопрос озвучен в первом предложении. Я бы хотела знать сколько оборотов ему осталось вращаться, а для этого мне нужно каким то образом узнать сколько уже импульсов сгенерировано... Пробовала с различными property - не работает
Generate Pulses.png
Upd. Тут идея возникла. Поскольку у NI 6212 два счетчика, подумала может второй использовать для подсчета импульсов, соединить терминалы перемычкой и пусть первый генерирует, а второй считает.
Generate Pulses 2.png
Попробовала, не получается, выдает ошибку :think:
Pulses Error.jpg
Pulses Error.jpg (19.78 КБ) 1311 просмотров
Спасибо
Artem.spb

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

Re: Узнать количество сгенерированных импульсов

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

А Status:Total Samples Per Channel Generated Property что возвращает?
Использовал его в обычном DO, про импульсы не знаю, но суть та же
daq.png
daq.png (13.38 КБ) 1310 просмотров
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Узнать количество сгенерированных импульсов

Сообщение jane_wild »

Artem.spb писал(а): 10 мар 2022, 22:46 А Status:Total Samples Per Channel Generated Property что возвращает?
Использовал его в обычном DO, про импульсы не знаю, но суть та же
Возвращает ошибку
Error Pulses.jpg
Artem.spb

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

Re: Узнать количество сгенерированных импульсов

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

jane_wild писал(а): 10 мар 2022, 20:38 Upd. Тут идея возникла. Поскольку у NI 6212 два счетчика, подумала может второй использовать для подсчета импульсов, соединить терминалы перемычкой и пусть первый генерирует, а второй считает.
Они там оба задействованы
https://knowledge.ni.com/KnowledgeArtic ... AS&l=ru-RU
Artem.spb

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

Re: Узнать количество сгенерированных импульсов

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

Как говорится, в порядке бреда.
Проверить не на чем, а на симуляторе не работает, но вдруг реальное потянет.
daq2.png
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: Узнать количество сгенерированных импульсов

Сообщение IvanLis »

jane_wild писал(а): 10 мар 2022, 20:38 Счетчик NI 6212 генерирует определенное количество импульсов, используемых для управления шаговым двигателем. Я задаю несколько тысяч импульсов, запускаю задачу, шаговик начинает вращаться.....
Я бы хотела знать сколько оборотов ему осталось вращаться, а для этого мне нужно каким то образом узнать сколько уже импульсов сгенерировано...
С точки зрения управления, Вы изначально рассуждаете неверно.
Как минимум, Вы должны иметь возможность экстренной остановки (emergency stop) или остановки по условию. Т.е. по ее нажатии, все должно замереть на месте, это требование ЧПУ (CNC)
10022793a_AM0.jpg
У Вас же реализация подразумевает "отправил и забыл", это удобно и просто, но не правильно.
Потом начинаются проблемы с самим ШД, его возможности ограничены, он не может мгновенно начать/остановить движение. Попытки это сделать приводит к пропускам шагов (это отдельная тема), "перелетам" точки назначения, а возможно повреждению заготовки и поломки механизмов. Есть понятия ускорение/торможение и рывок, которые необходимо учитывать.
Это значит, вы должны плавно разгонять, после вывода на необходимую скорость поддерживать ее, а при приближении к точке назначения, плавно сбрасывать скорость, вплоть до полной остановки. А затем "удержание", он сам не будет стоять на месте. Про явление резонанса, можете самостоятельно почитать.

Исходя из всего, Вам нужно отдельно формировать каждый импульс.
Частота и/или длительность (не знаю, что за драйвер у Вас) импульса определяют скорость и все ее производные (и интеграл :wink: ) должны соответствовать построенной диаграмме изменения скорости.
Это позволит мгновенно остановить ШД, плавно разгонять/тормозить и т.д. Ну и естественно знать сколько он шагов сделал, сколько осталось и где он находится, при условии, что шаги пропущены не были.
Посмотрите NI Motion Control, как у них там все настраивается для каждого ШД.
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Узнать количество сгенерированных импульсов

Сообщение jane_wild »

Artem.spb писал(а): 10 мар 2022, 23:23 Как говорится, в порядке бреда.
Проверить не на чем, а на симуляторе не работает, но вдруг реальное потянет.
К сожалению не работает
Вложения
Error Pulses2.jpg
Error Pulses2.jpg (37.49 КБ) 1249 просмотров
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Узнать количество сгенерированных импульсов

Сообщение jane_wild »

IvanLis писал(а): 11 мар 2022, 10:27
С точки зрения управления, Вы изначально рассуждаете неверно.
Как минимум, Вы должны иметь возможность экстренной остановки (emergency stop) или остановки по условию. Т.е. по ее нажатии, все должно замереть на месте, это требование ЧПУ (CNC)
У Вас же реализация подразумевает "отправил и забыл", это удобно и просто, но не правильно.
Конечно же это реализовано, я просто выложила тестовый vi. Не выкладывать же весь проект.
IvanLis писал(а): 11 мар 2022, 10:27 Потом начинаются проблемы с самим ШД, его возможности ограничены, он не может мгновенно начать/остановить движение. Попытки это сделать приводит к пропускам шагов (это отдельная тема), "перелетам" точки назначения, а возможно повреждению заготовки и поломки механизмов. Есть понятия ускорение/торможение и рывок, которые необходимо учитывать.
Это значит, вы должны плавно разгонять, после вывода на необходимую скорость поддерживать ее, а при приближении к точке назначения, плавно сбрасывать скорость, вплоть до полной остановки. А затем "удержание", он сам не будет стоять на месте. Про явление резонанса, можете самостоятельно почитать.
Исходя из всего, Вам нужно отдельно формировать каждый импульс.
Частота и/или длительность (не знаю, что за драйвер у Вас) импульса определяют скорость и все ее производные (и интеграл :wink: ) должны соответствовать построенной диаграмме изменения скорости.
Это позволит мгновенно остановить ШД, плавно разгонять/тормозить и т.д. Ну и естественно знать сколько он шагов сделал, сколько осталось и где он находится, при условии, что шаги пропущены не были.
Посмотрите NI Motion Control, как у них там все настраивается для каждого ШД.
С этим все нормально. Сам шаговик имеет внутреннюю обратную связь, там внутри встроен энкодер. А сам драйвер обеспечивает разгон торможение, так в документации написано. Правда о плавности речь не идет, но скорость собственно не велика- 2500/1600 = 1.5 оборота в секунду поэтому с этим проблем нет. Да и после остановки стоит как вкопаный, согласно даташиту удержание 2nm

Из документации:
No loss of synchronization , the Integrated Closed Loop Motors will overcome the synchronization issues with its in-corporation of the Position Tracking Technology, by integrating a Position Encoder behind the Step Motor. These will allow the Step Motor to behave like a Closed Loop Motor System, providing an automatic position correction, ensuring a higher degrees of positioning.
Low Heat / High Efficiency Hybrid Stepper Motor Driver
Smooth and Accurate : with the Encoder feedback vector current control algorithm and filtering technique, it overcome the Low-Frequency Resonance problem. This will results in a smoother motion at low speed, overcome the noise and vibration concern, experienced by the traditional Step Motor system.
Hybrid step servo system have some advantages of the traditional open-loop stepper system, position response input and output command signal are almost real-time synchronization, so very suitable for condition of short distance quickly start / stop and zero-speed stop stably.
In condition of point-to-point fast positioning, advanced servo control technology provides a large torque output. It makes the system has a very high dynamic response, it is far over the limit of step system


Но в любом случае, Иван - Спасибо
Аватара пользователя
taras_33

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

Re: Узнать количество сгенерированных импульсов

Сообщение taras_33 »

jane_wild писал(а): 10 мар 2022, 20:38 Я бы хотела знать сколько оборотов ему осталось вращаться, а для этого мне нужно каким то образом узнать сколько уже импульсов сгенерировано...
Если супер точность не требуется, то можно организовать обычный программный таймер. Частота генерации импульсов известна, их количество тоже, следовательно время за которое они сгенерируются также известно (время = импульсы / частота) Вот и использовать это время при инициализации таймера. Ну и запустить обратный отсчет одновремменно с запуском шаговика. Количество оставшихся оботов также подсчитать не составит труда...
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!
Ответить

Вернуться в «Для чайников»