Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

Подскажите, как организовать аналог Timer a, чтобы определенная   Найти похожие ветки 

 
IDONTKNOW   (2005-02-15 14:58) [0]

процедура выполнялась быстрее 1ms?


 
Digitman ©   (2005-02-15 15:05) [1]


> IDONTKNOW


тебе оно нафих не надо
ибо не ведаешь что творишь


 
Ega23 ©   (2005-02-15 15:12) [2]

AFAIK, в user-mode - нельзя. Может быть можно в kernel-mode


 
Ega23 ©   (2005-02-15 15:15) [3]

AFAIK, в user-mode - нельзя. Может быть можно в kernel-mode


 
IDONTKNOW   (2005-02-15 16:27) [4]


> Digitman ©   (15.02.05 15:05) [1]
>
> > IDONTKNOW
>
>
> тебе оно нафих не надо
> ибо не ведаешь что творишь

Абыдно...надо, товарищи, очень надо.
Моя программа преобразует обычный принскрин из Rulay(программа для разработки печ.плат) в путь, понятный для прохождения фрезы. Эдакий спец. принтер, управляемый моей программулиной, с координатами x,y и z(положение фрезы) и т.д. и т.п. В общем, нахождение этого пути у меня висит на таймере и, сами понимаете, время сего процесса лихо увеличивается по квадрату в зависимости от размера схематулинки.
Например,картинка 25х25 пикселей обрабатывается ~10 сек.
А это не есть хорошо. Это ох как плохо.


 
Digitman ©   (2005-02-15 16:37) [5]

галиматья какая-то ...


 
Arm79 ©   (2005-02-15 16:49) [6]

1) А зачем привязка к таймеру?
2) используй qnx в качестве ОС. Там более реально достичь таких мелких интервалов

ЗЫ И, кстати, это как ты обрабатываешь картинку, если время обработки 625 точек равно 10 секундам? Вроде бы быстродействие компьютеров шагнуло далеко вперед...


 
olookin ©   (2005-02-15 16:50) [7]

Hyperkernel (NemaTron, NemaSoft) позволяет реализовать такты длительностью до 25 мкс. Встраивается в систему и работает как ее ядро (как я это понимаю). См. можно на www.nemasoft.com


 
Eraser ©   (2005-02-15 17:47) [8]

IDONTKNOW

Очень согласен с digitman"ом!!!
Что твоя фреза ПОЛНОСТЬЮ на программном обеспечени работает, и у неё внутри нету процессора???? Бред.


 
IDONTKNOW   (2005-02-15 17:54) [9]


> Eraser ©   (15.02.05 17:47) [8]
> IDONTKNOW
>
> Очень согласен с digitman"ом!!!
> Что твоя фреза ПОЛНОСТЬЮ на программном обеспечени работает,
> и у неё внутри нету процессора???? Бред.

Фреза управляется тремя шаговыми двигателями с lpt порта


 
arhis   (2005-02-15 17:56) [10]

вообще это называется драйвер. Добро пожаловать в MSC


 
IDONTKNOW   (2005-02-15 17:59) [11]


> olookin ©   (15.02.05 16:50) [7]

Спасибо, посмотрю

> Arm79 ©   (15.02.05 16:49) [6]

Что-то мозги уже кипят, совсем ничего не понимаю, почему до появления сообщения "Alles" проходит 10 сек?(интервал таймера -1)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if x<25 then
begin
  Inc(x,1);
end else
begin
  if y<25 then
  begin
    Inc(y,1);
    x:=0;
  end else
  begin
    ShowMessage("Alles!");
  end;
end;
end;


 
IDONTKNOW   (2005-02-15 18:07) [12]


> arhis   (15.02.05 17:56) [10]
> вообще это называется драйвер. Добро пожаловать в MSC

Если припаять к lpt порту светодиод и написать программу, которая подает на этот разряд 1, то это тоже драйвер?


 
Алхимик ©   (2005-02-15 18:16) [13]

Driver - Служебная программа, выполняющая функции посредника между операционной системой и внешним устройством.

Ссылок: Зубков С. В. Assembler для DOS, Windows и Unix. М., ДМК Пресс, 2004г.


 
arhis   (2005-02-15 18:22) [14]

IDONTKNOW   (15.02.05 18:07) [12]
Абсолютно верно. просто очень простой.
А вы пытаетесь в дельфях написать программу позиционирования сложного устройства в трех измерениях в реальном времени. Я не очень разбираюсь в драйверах, но драйвер, какой-нибудь, видюхи по сравнению с этим - полная фигня.


 
IDONTKNOW   (2005-02-15 18:36) [15]


> arhis   (15.02.05 18:22) [14]

Это дипломная работа, большая точность позиционирования ненужна, там все гораздо проще


 
Anatoly Podgoretsky ©   (2005-02-15 19:30) [16]

Для того чтобы "процедура выполнялась быстрее 1ms?" таймер не требуется, таймера они вообще то для другого.
Кстати раз шаговый двигатель, то интервал паузы между шагами роли не играет.


 
IDONTKNOW   (2005-02-15 19:41) [17]


> Anatoly Podgoretsky ©   (15.02.05 19:30) [16]

ШД не управляется в таймере.
В таймере идут расчеты, т.е. обрабатывается картинка. Проблема в том, что я не могу придумать альтернативу таймеру. В for do расчет организовать также нельзля, потому что x и y не обязательно идут слева-направо, сверху-вниз, они изменяются в любую сторону, в зависимости от схемы


 
Fay ©   (2005-02-15 19:46) [18]

var
 x, y : Integer;

procedure TForm1.Button1Click(Sender : TObject);

function GetPerformanceCounter : Int64;
 begin
   QueryPerformanceCounter(Result);
 end;
var
 c, f : Int64;
 i : Integer;
 tc : DWORD;
label
 Label_Jopa;
begin
 if not QueryPerformanceFrequency(f) then
   RaiseLastOSError;
 tc := GetTickCount;
 f := f div 1000;
 x := 0;
 y := 0;
 i := 0;
 c := GetPerformanceCounter;
 while True do
   begin
     Inc(i);
     while GetPerformanceCounter < (c + i * f) do
       ;
     if x < 25 then
       Inc(x)
     else if y < 25 then
       begin
         Inc(y, 1);
         x := 0;
       end
     else
       begin
         ShowMessage(Format("%d ms, i = %d", [GetTickCount - tc, i]));
         Break;
       end;
   end;
end;


 
Fay ©   (2005-02-15 19:55) [19]

В случае "процедура выполнялась быстрее 1ms"
f := f div нечто_большее_тысячи;


 
Verg ©   (2005-02-15 20:05) [20]


> [17] IDONTKNOW   (15.02.05 19:41)


Не, непонятно абсолютно.
Какой "расчет" ты оргнизуешь в таймере? Почему в таймере? На кой ляд тут нужен таймер?


 
GEN++ ©   (2005-02-15 20:31) [21]

Сколько раз разработчики наступали на эти грабли:
 Windows не предназначена для управления ШД.
 ШД ОБЯЗАН управлять КОНТРОЛЛЕР !!!!
А вот управлять контроллером - сколько угодно.


 
Vaitek ©   (2005-02-15 20:42) [22]

Сейчас пишу нечто подобное. Только расчет там зафигистический, поскольку матмодель пересчета координат сам писал 8-). В общем металлообрабатывающий станок у которого платформа шинделя крепится на трех перемещаемых вертикально штангах. Для решения нелинейной системы из 11 уравнений использую метод Возмущений (линеаризация).
Но не смотря ни на что, на Р4 2.8ГГц+НТ расчет занимает меньше 1мс. Подсчет стандартным GetTickCount"ом возваращает обычно 0.
Точность расчета ~ 0.000001

Короче я сделал так:
Событие вызова перемещения режущего инструмента у меня вызывается по таймеру сделанному мною в отдельном потоке на основе вышеуказанного QueryPerformanceCounter. После перерасчета новые координаты сохраняются.

Еще один поток перересовывает изображение на экране, DirectX (я тут раздел по играм просто завлил тупыми вопросами 8-). Каоординаты берет выше сохраненные. Потоки работают асинхронно.

Еще хочу один поток сделать для пердварительного расчета будущих координат, поскольку считает комп быстрее чем выполняется программа.

На станках эта функция кажись LookAhead называется.

Не могу гарантировать, что это оптимальный вариант - но у меня работает 8-).


 
Eraser ©   (2005-02-15 20:55) [23]

IDONTKNOW

Не знаю, что там у вас за институт (и что за руководитель проекта), но ИМХО надо либо самому делать контроллер и писать к нему драйвер (согласен с GEN++), либо писать драйвер к какому-либо контроллеру. Но писать драйвер напрямую к двигателю это что-то не то. Конечно я не сомневаюсь, что вся эта схема у тебя заработает, но для производства это не годиться. PC - очень не надёжная штука для ПРЯМОЙ работы со станками.
ИМХО нужен контроллер (процессор+память+интерфейс).


 
Vaitek ©   (2005-02-15 21:05) [24]

Power Automation.

Промышленный комп + NT4/W2000 + Плата контроллера + шкаф с оборудованием, управляющий двигателями и т.п.

Так это делается у нас.


 
Eraser ©   (2005-02-15 21:08) [25]

Vaitek ©

Что и требовалось доказать...

Но как я понимаю от этого IDONTKNOW"у не легче, раз заставили- надо делать!
Попробуй совместить НЕприятоне с полезным, копай в сторону DDK.


 
Defunct ©   (2005-02-16 00:33) [26]

Eraser ©   (15.02.05 21:08) [25]

IMHO не надо тут даже DDK.
http://www.vbrussian.com/Article.asp?ID=81
смотреть в сторону TVicHW32

> ШД ОБЯЗАН управлять КОНТРОЛЛЕР !!!!
Это уж кто как хочет так и делает.
Контроллер тоже можно сделать на x86 под windows. :)


 
MegaVolt ©   (2005-02-16 13:13) [27]

>Контроллер тоже можно сделать на x86 под windows. :)

:):) Ага можно только потом и появляется вопрос как выдержать требуемую времянку.

Хотя чесно говоря я так и не понял проблемы. Если всё же решили управлять движком с винды значит времянка не очень критична т.е. если я не могу управлять быстрее 1 ms значит можно управлять и на 2 и на 3 и на 10 и вообще как угодно. Но при этом станок будет работать дольше и все. Если же времянка должна быть соблюдена очень точно то винда в этом не помощник. нужно ставить себе ядра операционок который могут работать в реальном времени. Они позволяют делать такие фичи. Но стоят денег.

Итак:
В первом случае опиши подробно что у тебя есть на входе и что нужно получить на выходе. Как ты это делаешь можешь написать но это не обязательно. Тебе подскажут как это лучше сделать нормально.

Во втором случае ставь операционку реального времени или делай некий небольшой контроллер который позволяет выдерживать времянку требуюмуб движкам но брать данные так как их может выдавать винда. Т.е. некая буферная память+ПЛИСина или микроконтроллер.


 
Vaitek ©   (2005-02-16 13:18) [28]

Обычно на плате микроконтроллера свой микропроцессор и таймер. А из какой ОС ты будешь им управлять - зависит лишь от твоих личных предпочтений и наличия драйверов.

Ну вообщем как в последнем абзаце мегавольта.


 
idontknow   (2005-02-16 16:07) [29]

Всем спасибо за ответы, проблема решена, на данный момент вопросов не имею.
Отдельное спасибо
> Fay ©   (15.02.05 19:46) [18]

за код



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.03 c
14-1108403950
Rouse_
2005-02-14 20:59
2005.03.06
Любителям потрепаться о СМИ :)


6-1103815645
VadimEagle
2004-12-23 18:27
2005.03.06
Скачать файл


1-1108906887
TeNY
2005-02-20 16:41
2005.03.06
Размер картики в TBitmap?


1-1108665072
CSC
2005-02-17 21:31
2005.03.06
Глобальные данные


14-1108388109
Набережных С.
2005-02-14 16:35
2005.03.06
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский