Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54

Короткая временная задержка (микросекунды)

12.10.2011, 13:21. Показов 6649. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, люди добрые!

Подскажите пожалуйста как реализовать временную задержку на 50 микросекунд. Буду очень признателен. Максимум что мне удалось добиться через API это 1 миллисекунда.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2011, 13:21
Ответы с готовыми решениями:

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

Как на VB получить микросекунды?
Ну собственно субж.

Временная задержка
Вопрос такой. Есть 2 объекта TTrackBar. При измении одного ползунка, второй должен переходить в тоже значение с небольшой задержкой,...

20
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.10.2011, 14:40
...чем проверили, что 1 мс? Речь видимо про win-систему. Циферку подставили?

Есть так называемый мультимедийный таймер. Однако 50 мкс точность не под реал-ОС, увы ...да и от железа и загруженности сильно зависит.
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
12.10.2011, 14:45  [ТС]
Почему не реал для ОС? Необходимо управлять шаговым двигателем. Что бы достичь частоты вращения 3000 об/мин необходимо генерировать 50000 импульсов в секунду. На всех станках с ЧПУ стоит обычная ось. Поэтому это вполне возможно...
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.10.2011, 15:15
50 000 имп/cек = 20 мкс

На всех станках с ЧПУ стоит обычная ось. Поэтому это вполне возможно...
1- не на всех ...http://stankomach.com/cnc/all_cncs/
2- там, где вы говорите стоит обычная ось, пример http://www.semil.ru/new.htm, ось - выполняет функции CAD-системы, а управление осуществляется непосредственно через аппаратно-программную прослойку самого станка, оно формирует такие выдержки. Проще говоря, драйвер двигателя (не путать с программным драйвером) с контроллером. Проще говоря, там стоит либо мини-SCADA, в которой вы можете создавать алгоритм релейной схемой или на FBD-блоках, или G-код, а дальше это дело заливается в контроллер.

Структура современной системы ЧПУ включает: управляющее устройство на
базе DSP (сигнальный процессор) процессора, т.к. только сигнальный
процессор может наиболее быстро выполнять функции управления ре-
ального времени. Это устройство должно включать в себя следующие
функциональные устройства: 1) система ЧПУ, 2) контроллер электроав-
томатики, 3) управляющая часть привода. Совмещение на одном процес-
соре трех различных функциональных устройств приводит к тому, что
эти устройства (контроллер движения (КД)) могут взаимодействовать
друг с другом не через ЧПУ, а прямо через параметры...
p.s.: очень сомневаюсь, что в недешевом станке "дозволено" непосредственное баловство шаговиком.
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
12.10.2011, 15:56  [ТС]
Я знаю что 50 000 имп/cек = 20 мкс... 50 мкс я привёл к примеру. На счёт ЧПУ спорить я не собираюсь. Знаю лишь что возможно генерировать 50 кГц и возможно напрямую подавать эти импульсы на контроллер привода. Вопрос лишь как сделать столь короткую задержку. Читал что с помощью QueryPerformanceCounter точно замеряют время. А вот как на его основе сделать задержку?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.10.2011, 16:36
что возможно генерировать 50 кГц и возможно напрямую подавать эти импульсы на контроллер привода
генерировать никто не запрещает, другой вопрос - какой интерфейс используется для выдачи таких сигналов.

QueryPerformanceCounter()
данный таймер точнее упомянутого мультимедийного, но тоже "не сахар", так как работает с помощью счетчика тактов процессора, что характерно: может поменяться скорость работы при переключении частоты процессора, присутствуют флуктуации при переходе процесса с одного ядра на другой и т.п.. Для ЧПУ такие "глюки", как минимум, опасны и чреваты сами знаете чем для вас, как разработчика. Так что, если хотите высокой надежности и отсутствия "дрюков в одно место" от заказчика, то от этого таймера лучше отказаться.

А вот как на его основе сделать задержку?
не поверите, MSDN "Как использовать QueryPerformanceCounter в Visual Basic.NET или Visual Basic 2005" http://support.microsoft.com/kb/306978/ru

Добавлено через 17 минут
Цитата Сообщение от neoarey
Спасибо за ответ! Тогда задам ещё один вопрос. Поясните пожалуйста. Есть сервопривод http://www.electroprivod.ru/ezi_servo_pr.htm с блоком управления (контроллером) ШАГ/НАПРАВЛЕНИЕ. Чем мне генерировать импульсы? Я что-то не совсем понял...
очевидно, что нужно взять документацию на контроллер управления, наверняка его не просто так присобачили к двигателю.

И судя по всему, ОБЩЕЕ управление идет по сети RS-485 от ПЛК (контроллера), управление шаговиком осуществляет контроллер на борту. В подтверждение моих слов вот фраза с приведенной вами же ссылки:
В приводах Ezi-SERVO PR используются датчики обратной связи с разрешением до 32000 имп./об. Высокопроизводительный процессор блока управления обрабатывает данные датчика и осуществляет векторное управление током фаз, обеспечивая плавное движение и минимум пульсаций. Данные от датчика обратной связи анализируются блоком управления каждые 25мкс. Это позволяет приводу компенсировать возможные потери шагов и осуществлять точное позиционирование даже в случаях внезапного изменения нагрузки.

Привод управляется командами от компьютера или сигналами от внешнего устройства. Для работы с блоками предоставляется программа с графическим интерфейсом. Для разработки собственных программ предоставляются готовые DLL библиотеки. Команды и протокол обмена открыты.
Подключение к компьютеру осуществляется через разъем USB. Обращение к компьютеру производится по RS-232 через преобразователь USB-RS-485.
там и схема управления разрисована.

Вам нужно скачать мануал и руководство на данный блок управления и реализовывать управление посылкой ВСЕГО ЛИШЬ управляющих команд по сети RS-485. Я не смотрел какой там протокол, но чаще всего - Modbus.
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
12.10.2011, 16:54  [ТС]
Кстати на счёт управления шаговым двигателем под ОС. Вот выдержка из описания CNC программы: Mach3 генерирует импульсы шага и сигналы направления...
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.10.2011, 16:58
вы забываете, что задачу нужно рассматривать в комплексе с используемым интерфейсом связи.

Цитата Сообщение от neoarey
Прошу прощения, маленько не та ссылка. Вот http://www.electroprivod.ru/ezi_servo_st.htm... Там их два типа: один программируемый (со встроенным ПЛК), второй обычный с управлением через ШАГ/НАПРАВЛЕНИЕ. Вопрос так и остаётся в подвешенном состоянии. Чем генерировать импульсы?

Максимальная частота 500кГц

Входы
1. «Шаг» и «Направление»
2. Включение/выключение Servo
3. Сброс ошибки


А то что есть интегрированные приводы с управлением через Modbus, CANOpen и др. я знаю. Некогда просто разбираться, стоит задача по автоматизации срочная.
кхе, даже для LPT при прямой выдаче через "нулевое кольцо" (через драйвера giveo, inpout), 100-150 кГц - это малодостижимо, причем еще и нужно выпаять конденсаторы с пинов (для повышения крутизны фронтов). А уж 500 кГц.

Как насчет использования внешнего контроллера со своим тактовым генератором и управления им по USB ...FTDI как конвертор можно использовать. По сути вам придется разработать свой аналог отсутствующего блока управления.
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
12.10.2011, 18:30  [ТС]
Я использую не LTP, а USB модуль... http://www.kernelchip.ru/Ke-USB24A.php

Модуль Ke-USB24A предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Определяется как дополнительный (виртуальный) COM порт. Модуль имеет 24 дискретные линии ввода/вывода (либо лог. 0 либо лог. 1) с возможностью настройки направления передачи данных (вход/выход) и встроенный 10-ти разрядный АЦП. Для управления модулем предусмотрен набор текстовых команд управления (KE - команды).

Добавлено через 1 минуту
Так всё таки как программно реализовать задержку в 20 мкс?

Добавлено через 3 минуты
"По сути вам придется разработать свой аналог отсутствующего блока управления." Какого блока управления? Генератора импульсов? Я не думаю что какждый, кто сталкивается с подобными задачами разрабатывает "свой блок управления"....
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.10.2011, 18:44
Цитата Сообщение от neoarey Посмотреть сообщение
Так всё таки как программно реализовать задержку в 20 мкс?
Под виндой никак - погрешность будет слишком большая (о чем уже упоминали выше), а это недопустимо для ЧПУ.
Наилучшим решением будет использование микроконтроллера для управления станком, а комп будет только передавать команды контроллеру.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.10.2011, 21:20
Я использую не LTP, а USB модуль... http://www.kernelchip.ru/Ke-USB24A.php
...эх, TC, TC, я, к сожалению не телепат уровня Пи-12 (с Vavilon-5 ) и мне отсюда не видно, что вы там используете. Вы как то об этом умалчиваете или считаете это само собой разумеющимся. Только не LTP, а LPT и не то, что вы его используете, а как показательный пример интерфейса связи.

Какого блока управления? Генератора импульсов? Я не думаю что какждый, кто сталкивается с подобными задачами разрабатывает "свой блок управления"....
а такого, не просто генератора, а именно блока управления. Можно на рассыпухе, можно на МК, а можно и готовое ...купить. И правильное замечание: те кто сталкивается с такими задачами - внимательно читают документацию и описание на закупаемое оборудование и не экономят на мелочах. А судя по тому, что сервопривод как бэ есть (я предполагаю, что есть, вы ведь - молчок), а Блок контроля отсутствует, то можно сделать выводы, что вы или ваше руководство решило сэкономить на блоке, да? И типа обойтись малой кровью . Так вот и расхлебывайте: разработка железа, человеко-часы, наладка аппаратно, разработка ПО, отладка, человеко-часы, время-месяц-два-три.

Вам приведены практические реализации таких управлений, вы видите, что делается на аппаратном уровне, не под Windows. Вы это не воспринимаете, все вокруг "дураки", могли бы сэкономить, а вы умные, вы реализуете под виндой полумегагерц стабильность на таймере.
0
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
13.10.2011, 08:29  [ТС]
Привод ещё не куплен. Это не относится к моей основной работе. Документацию я читаю и смотрю что покупаю. Привод между прочим продаётся только с блоком!
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
13.10.2011, 09:08
Будьте любезны давать полную информацию по теме.
0
13.10.2011, 11:05
 Комментарий модератора 
neoarey,
raxp,
Говорим по делу
0
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 53
14.10.2011, 01:09
Я добавляю таймер и пишу такие вот процедуры:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Wait(seconds)
Timer1.Enabled = True
Me.Timer1.Interval = 1000 * seconds
While Me.Timer1.Interval > 0
DoEvents
Wend
End Sub
 
Private Sub Timer1_Timer()
  Timer1.Interval = 0
End Sub
и в месте программы, где нужна задержка:
Visual Basic
1
Wait (0.00005)
(время в секундах)
0
14.10.2011, 07:15

Не по теме:

Не бейте limited`a. Он просто устал...

2
3 / 3 / 2
Регистрация: 18.01.2011
Сообщений: 54
14.10.2011, 08:40  [ТС]
А вы сами то пробовали делать такую малую задержку? Wait (0.00005). Попробуйте, не работает:

Visual Basic
1
2
3
4
5
6
Private Sub Command1_Click()
Do
Text1.Text = Text1.Text + 1
Wait (0.00005)
Loop While Text1.Text < 50000
End Sub
Вообще читал про таймер, что его можно использовать только до миллисекунд или 1/64 сек. В общем что-то в этом роде. Так что не то, спасибо!
 Комментарий модератора 
Оформляйте код тегами VB
0
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 53
15.10.2011, 01:14
Цитата Сообщение от Апострофф Посмотреть сообщение

Не по теме:

Не бейте limited`a. Он просто устал...

Не по теме:

Вот язвы, не видели под логином написано: Новичок? Так что ирония не уместна. :p

Не по теме:

Лучше книжку толковую посоветуйте.


Ошиблась, что ж, буду знать.
0
Заблокирован
15.10.2011, 01:32

Не по теме:

Цитата Сообщение от limited Посмотреть сообщение
Вот язвы, не видели под логином написано: Новичок?
Так нужно было написать "Девушка".

Добавлено через 2 минуты
Цитата Сообщение от limited Посмотреть сообщение
Лучше книжку толковую посоветуйте.
(сам VB учился по интернету)

на С# переходите, имхо.



Добавлено через 1 минуту
limited, А зачем вам VB?
0
15.10.2011, 12:49

Не по теме:

Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
Так нужно было написать "Девушка".
Ну зачем так-то? Девушки бывают разные. Просто в VB недавно. :) Зато теперь знаю, что таймер до милисекунд эффективен, и то под вопросом.

Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
(сам VB учился по интернету)
на С# переходите, имхо.
уже поздно метаться, много в VB вложено. Он вроде и попроще

Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
limited, А зачем вам VB?
По учебе надо сделать кое-какие наглядные программки. ( специальность к IT не относится)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2011, 12:49
Помогаю со студенческими работами здесь

Временная задержка в цикле
Здарова,нужно сделать задержку в цикле for для отрисовки трапеции,которая двигается вдоль линии. System.Threading.Thread.Sleep(50); не...

Точная временная задержка
Появилась необходимость задать в программе точную временную задержку 1 мс., которая была бы одинакова на любом компьютере, не зависимо от...

Временная задержка в циклах
Для чего в бесконечных циклах делают временную задержку? Например: While(1){ porta = portb; _dalay_ms(10); } ...

Временная задержка (без Sleep)
Всем привет. У меня проблема - не знаю как создать временную задержку. while(p&lt;290) { ...

Большая временная задержка при загрузке win7
Последние 4 дня мой комп грузится в замедленном режиме. 1. При включение компа происходит тестирование биоса (как обычно). 2. Дальше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru