 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Čet Avg 23, 2007 11:47 pm Naslov sporočila: Timerji v Visual C# |
|
|
Morda za to vprašanje nisem na pravem foromu, sem pa prepričan, da se je kdo s podobno zadevo že ukvarjal.
Delam si svoj software (za svoje zadovoljstvo in razširitev znanja) za CNC gravirnik in rezkalnik za TIV v Microsoft Visual C# 2005 (poznam tudi druge podobne verzije ).
Zadeva že kar lepo deluje, razen časovnikov (timerji). Potrebujem namreč timer, ki bo vsako milisekundo spremenil položaj koračnih motorjev. Zadeva je navidez popolnoma preprosta, saj se timerji dajo nastavit na proženje 1 ms, a se ti na začudenje ne sprožijo 1000x v sekundi, temveč le dobrih 63x.
Za preizkus, sem izdelal preprost programček, ki sestoji iz petih timerjev, vsak ima 10x večji čas, ko se sproži, pa se izpiše število, kolikokrat se je že sprožil. Program sem zagnal in ustavil po točno 5 minutah, rezultati pa so takšni, kot jih prikazuje priložena slika .
Ve kdo morda v čem bi lahko bila težava in kako bi se jo dalo odpravit?
V nasprotnem primeru je alternativa, da za to opravilo sprogramiram PIC-ov mikrokrmilnik, ki mu zakasnitve kar lepo delujejo . S tem pa si žal naložim kar nekaj dodatnega dela, pa tudi zadeva o timerjih bi me še vedno "mučila".
V naprej hvala za odgovore!
Opis: |
|
Velikost datoteke: |
12.43 KB |
Pogledana: |
9867 krat |

|
_________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano???
Nazadnje urejal/a gkrusi Pet Avg 24, 2007 3:06 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Čet Avg 23, 2007 11:54 pm Naslov sporočila: |
|
|
Odgovor leži v naslednjem vprašanju. Kam prožiš signal. Če uporabljaš paralelni port, potem imaš težavo že s samim HW-jem. Druga stvar pa je še operacijski sistem, ki ti nagaja pri tem početju. Iz same številke 63 se pa še iz DOS časov spomnim, da je to število ponovitev, ki jih naredi en izmed interruptov v sekundi.
Problem programja, ki bazira na windowsih je OS sam. Rešitev tega problema je več. Najboljša je ta, da izdelaš ustrezen HW, kateremu potem pošiljaš ukaze in se le-ta ukvarja s točnostjo in številom ponovitev
|
|
Nazaj na vrh |
|
 |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Pet Avg 24, 2007 12:04 am Naslov sporočila: |
|
|
Se mi je zdelo, da je težava v operacijskem sistemu, kajti opazil sem, da če prenosniku izključim zunanje napajanje, se hitrost tajmerjev še drastično zmanjša .
Samo zakaj pa potem Visual C# sploh omogoča takšno hitrost prekinitev, če je nerealna?
Ali bi zadeva morda na katerem drugem računalniku bolje delovala?
Do sedaj še na zadevo nisem prikljuil hardwerja, bom pa naredil povezavo preko RS-232 s PIC-om. Nameraval sem mu poslati le podatek, katere tuljave katerega motorja naj vključi, bom pa mu moral očitno poslati zahtevan položaj in hitrost rezkarja, ostalo pa naj mikrokrmilnik sam uredi in naj mimogrede še poroča o dogojanju. Tako lahko pošteno zmanjšam število prekinitev. Aja, za RS-232 sem se odločil, ker še potrebujem kar nekaj drugih odčitkov, tako da je zadeva za parallel port preobsežna (vsaj kolikor vem).
Neverjetno, mikrokrmilnik za par €, je bolj uporaben, kot pa računalnik za nekaj 1000 € !!!
_________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano??? |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Avg 24, 2007 12:34 am Naslov sporočila: |
|
|
Saj ni nerealna, le Windowsi niso RTOS. Jaz sem s PCom (v DOSu) meril intervale ranga nekaj deset mikrosekund, pa ni bilo nobenih tezav s tem, samo nic drugega se pac ni moglo takrat izvajati. V Windowsih se - ce ne drugega - mora izvajati vsaj scheduler, sicer bi sel cudoviti preemptive multitasking OS v franze
Aja pa se bolj neverjetno je to, da je kladivo za nekaj evrov bolj uporabno kot helikopter za nekaj sto tisoc evrov (za zabijanje zebljev)
_________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Pet Avg 24, 2007 3:03 am Naslov sporočila: |
|
|
Torej se bom moral sprijaznit s počasnostjo timerjev v Windows-u.
Kaj pa morda kakšne prekinitve? Da bi mikrokrmilniku daodelil nalogo, da preko svojega časovnika po RS-232 prekine program (mislim, da obstaja tukaj neka prekinitev) in bi tako dobil neke sorte zunanji timer. Ali bi se zgodilo enako, da bi operacijski sistem zadevo upočasnil do neuporabnosti?
Sokrat, kaj pa pomeni kratica RTOS?
gkrusi je napisal/a: |
Neverjetno, mikrokrmilnik za par €, je bolj uporaben, kot pa računalnik za nekaj 1000 € !!! |
No ja, slaba primerjava, samo glede na razliko v ceni, je delovanje mikrokrmilnikov kar primerljivo z računalnikom. Seveda, če odštejemo operacijski sistem in podobno....
_________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano??? |
|
Nazaj na vrh |
|
 |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Pet Avg 24, 2007 3:12 am Naslov sporočila: |
|
|
Aha, že imam.
RTOS - Real Time Operating Systems
Mimogrede, kaj pa bi naj predstavljalo RTOS, kakšen poseben OS, ali ....?
Aja, pa sem premlad, tako da se na DOS ne spoznam kaj preveč, če je prav v DOS-u kakšna rešitev. Prvi računalnik ki sem ga imel je že uporabljal Windows 98. (nisem pa še na Visti )
_________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano??? |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Pet Avg 24, 2007 8:25 am Naslov sporočila: |
|
|
Prever si EMC ( http://www.linuxcnc.org/ ), ki temelji na RealTime Linuxi ( http://www.fsmlabs.com/ ).
Imaš zadevo že precej dodelano. Zadeva je open source. Oglej si, koliko in kakšna je koda, in ti bo jasno, da sam ne boš "spacal" enega kolikor toliko resnega programa. Raje uporabi, kar je že narejeno, in nadgrajuj to.
Če pa še vedno vztrajaš da boš sam, pa uporabi RealTime Linux.
|
|
Nazaj na vrh |
|
 |
Hi-End Član


Pridružen-a: Sre 25 Feb 2004 11:51 Prispevkov: 284 Aktiv.: 1.20 Kraj: Višnja Gora
|
Objavljeno: Pet Avg 24, 2007 9:42 am Naslov sporočila: |
|
|
Timerji v System.Windows.Form ne zmorejo biti točni na takšno natančnost kot želiš. Timerje poganja z tickom priblizno 20ms, kolikor je tick Windows OS-a. Zakaj približno, ker pač Windowsi niso RTOS in uporabljajo krasen scheduler, ki pa za to kar ti potrebuješ ni uporaben. Že napaka pri 100ms intervalih je pri 1 minuti velika kar 52 tickov (namesto 600, jih je generiral samo 548-).
_________________ Music is a part of my life, DIY is my life ! |
|
Nazaj na vrh |
|
 |
Benjamin Član

Pridružen-a: Tor 10 Jul 2007 11:23 Prispevkov: 116 Aktiv.: 0.53 Kraj: Trebnje, Ljubljana
|
Objavljeno: Pet Avg 24, 2007 10:52 am Naslov sporočila: |
|
|
Hm, ne vem, bi mogoče pomagalo če bi nastavil prioriteto procesa na realtime, ali vsaj na visoko?
|
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Avg 24, 2007 11:06 am Naslov sporočila: |
|
|
Problem je, da ti timerji, če ga nastaviš na 1ms delujejo 1 ms. Samo že prej omenjeno preklaplanje programov in... 1 ms pomeni 1 ms čakanja.
Izvajanje timer rutine, 1 ms čakanja, timer rutina, 1 ms čakanja... Če se ti timer rutina izvaja 0.5ms to pomeni, da se bo zagnala na vsake 1.5ms.
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Avg 24, 2007 11:49 am Naslov sporočila: |
|
|
Benjamin je napisal/a: |
Hm, ne vem, bi mogoče pomagalo če bi nastavil prioriteto procesa na realtime, ali vsaj na visoko? |
V tem primeru bi bilo manj slabo. Se vedno bi pa bilo slabo. Za vsako nalogo obstajajo bolj in manj primerna orodja in Windowsi niso primerno orodje za RT zadeve (pa se za marsikaj drugega ne).
_________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70822.44
|
Objavljeno: Pet Avg 24, 2007 12:21 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
tonko Član


Pridružen-a: Sob 25 Jun 2005 13:45 Prispevkov: 541 Aktiv.: 2.28 Kraj: Črnomelj
|
Objavljeno: Pet Avg 24, 2007 12:23 pm Naslov sporočila: |
|
|
Jaz sem pred leti naredil en program za Graviranje v Turbo C++ za DOS.
Bere HPGL in poganja koračne motorje na LPT portu.
CNC-GRAV.EXE - ZIP
Opis: |
|
 Download |
Ime datoteke: |
CNC-GRAVIRANJE.ZIP |
Velikost datoteke: |
44.13 KB |
Downloadano: |
13 krat |
|
|
Nazaj na vrh |
|
 |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Sob Avg 25, 2007 4:40 am Naslov sporočila: |
|
|
Zanimiv program tonko. Moj pa bo izgledal nekako tako, kot na priloženi sliki. Res ne bo preveč kompleksen, a bo za izdelavo TIV in za graviranje čisto primeren. Sprejema pa format *.pbm (Portable Bitmap), tako da se da kakršno koli sliko, tekst ali vezje pretvorit v ta format, pa tudi izdelava softwerja je na ta način dokaj preprosta in tudi nadgradljiva v 3D verzijo, za rezkanje (uporabim lahko dokaj preprosto matematiko).
Kot opažam, se bom raje odpovedal RTOS, je kar zakomplicirana zadevica . Vseeno, hvala za pomoč!
Opis: |
|
Velikost datoteke: |
365.46 KB |
Pogledana: |
40 krat |

|
_________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano??? |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|