szybkość działania programu i biblioteka inpout32.dll

Rozmowy dotyczące oprogramowania sterującego maszynami CNC i sterowników CNC obrabiarek numerycznych

Autor tematu
cempulik
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 20
Rejestracja: 19 kwie 2006, 16:44
Lokalizacja: Bytom

szybkość działania programu i biblioteka inpout32.dll

#1

Post napisał: cempulik » 22 lis 2007, 14:10

Wykorzystuje bibliotekę inpout32.dll jednak mam z nią problemy. Nie da się ustawić "dobrej" szybkości silników. Pomiędzy krokami muszę dawać uśpienie głównego wątku programu na 1ms. Bardzo zmniejsza to szybkość pracy.

Fragment mojego programu wygląda następująco:


timeDelay=1;
mikroStep=30;
public void Xgo()

{

for (int j = 0; j < mikroStep; j++)

{

suma = 0;

suma += (int)Math.Pow(2, 3);

PortAccess.Output(adress, suma);

Thread.Sleep(timeDelay);

Reset();

}

}

public void Reset()

{

PortAccess.Output(adress, 0);

Thread.Sleep(timeDelay);

}

Jeśli nie dam "Thread.Sleep(timeDelay);" to silnik właściwie się nie obraca.
Jak można temu zaradzić?



Tagi:


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 2
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#2

Post napisał: jarekk » 22 lis 2007, 14:16

Nie da się - taka dyskusja już była.
Bibilioteka ma pod sobą duży kod drivera Windowsowego, jej wywołania (w pętli, bez opóżnienia) będą dawały dość przypadkowy rezultat

A samo ...Sleep(1ms) jest tylko poboznym życzeniem - można się spodziewać 10-20ms

Tylko bardzo specjalistyczne drivery ( Mach, który używa wpina się w zasadzie pod Windowsy) lub DOS da radę ( DOS nawet lepiej).

Może zatem dual(quad) core oraz pętla w programie ( bez funkcji systemowych ) ?


Autor tematu
cempulik
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 20
Rejestracja: 19 kwie 2006, 16:44
Lokalizacja: Bytom

szybkość

#3

Post napisał: cempulik » 22 lis 2007, 14:51

niestety taki sam efekt jest po użyciu jakiegoś Timera i zdarzeń "tick" przy wartościach mniejszych niż 1 ms


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 2
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#4

Post napisał: jarekk » 22 lis 2007, 15:03

Jakich zdarzeń "tick" ?

Nie tędy droga - kolega nie ma szans na zbudowanie czegoś dobrze działającego używając inpout32.dll ( lub podobnych) - prościej podłączyć coś pod USB/port szeregowy ( mikroprocesor) i tam sterować silnikami.

Awatar użytkownika

triera
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 2
Posty: 1454
Rejestracja: 16 paź 2005, 01:26
Lokalizacja: Świecie

#5

Post napisał: triera » 22 lis 2007, 16:49

nie stosując specjalistycznych (drogich) bibliotek -> DOS.
Można zacząć się bawić stosując choćby kompilator FirstBASIC (shareware, 25$)
http://www.powerbasic.com/files/pub/pbdos/
i można bezpośrednio obsługiwać LPT.

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#6

Post napisał: markcomp77 » 22 lis 2007, 20:03

jeśli już zmieniamy system operacyjny (Win32 -> DOS)...
to może lepiej rozważyć programowanie w linuksie z jądrem czasu rzeczywistego?
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm

Awatar użytkownika

triera
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 2
Posty: 1454
Rejestracja: 16 paź 2005, 01:26
Lokalizacja: Świecie

#7

Post napisał: triera » 22 lis 2007, 20:25

Instalujemy FreeDos-a + jakąś nakładkę a-la NortonCommander,
następnie jakiś kompiler (może być QuickBASIC (free), Pascal, C... jak ktoś woli,)
i w ciągu pół godziny możemy zacząć się bawić w sterowanie silnikami.
Komputer może być z odzysku - przy Pentium 200MMX silniki kręcą jak rakieta.
Jak się znudzi naciskamy wyłączamy klawiszem POWER.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne Dyskusje na Temat Systemów Sterowania CNC”