Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

DC szervó motoros vezérlés

Indította gaben, 2025 február 03, 18:16

Előző téma - Következő téma

000000000


000000000

Elore bocsatva, hogy  
nem ertek ez ilyen Mach es hasonlo rendszerek windows alatti step impulzus gyarto megoldasaihoz...de erdekel(ne) a technikaja:-)))
 
Szoval, ha ez a "hw-es orajelgeneretor" is
a pc alaplapi timer/counter aramkorere alapoz, akkor szerintem azt eppugy kvazi megszakitaskent kezeli a rendszer....hiszen beuteskor a valtozast ki kell tenni a printer port adott labara. Illetve el kell vegezni az interpolacio kovetekezo lepeset is...ha az eppen idoszeru.
 
Ha nem igy lenne akkor csak a windows utemezo utemezne az alkalmazas futasat kb. 1-16-(100) msec-enkent...
 
Azaz lenyegeben ez a hw timer is sw timer-re valik, az alkalmzas szintjen, amit az alaplapi timer/counter idozit a rendszer timer-en keresztul.
 
Szoval szerintem a timer beutesekor muszaj neki valami callback fuggvenyt meghivnia az alkalmazasbol, merugye a printer portban NINCS programozhato timer/counter...ezert csak az oprendszer szintu timer-t lehet hasznalni, valami waitable+callback modon.  
(felhuzom-mast_csinalok_beut-callback-akcio)
 
Tehat a timer MINDEN beutesekor (1 impulzus = 2 beutes) egy "megszakitas" KELL, hogy keletkezzen
ami hivja z alklamzast es az majd billenti a printerporton a lab szintjet...meg interpolal egy jot ha eppen kell.
 
Gondolom eppen ezert nem total egyenletesek a Mach inpulzusai sem, mert a beueteskor a callback ideje fugg a sw kornyezet aktualis allapotatol (az ervenyre jutasi ido szor)
 
Szoval szerintem a max. impulzus frekvenciat a kontextus valtas ideje szabja meg, hiszen nem biztos, hogy eppen a callback-olt alkalmazasom van futasra utemezve az oprendszerben.
 
Mondjuk a szohasznalatom valoban helytelen volt, nem megszakitas,  hanem a callback ervenyre jutasa a helyesebb kifejezes...de a megszakitas talan szemleletesebben fejezi ki a lenyeget, hogy a timer beutesekor ido kell  
amig az oprendszer atadja a vezerlest az alkalmazasomnak a kiszolgalashoz....
 
Van valaki aki valoban ismeri az ilyen Mach es tarsai eseten alkalmazott megoldas elvét... ?
 
 
 
 

x4rhew5r3

Mármint azt, hogy 20 kHz-es pwm-mel lehet 100 kHz-es változást követni? Vagy azt, hogy itt nem érvényesül a mintavételi alapaszabály?
Vagy azért, mert a gép majd kiintegrálja magának azt, amit bír követni?

bmejdz9nu

Teszteljétek... én teszteltem...
Léptetőmotorral nem hallani az egyenletlenséget, de egy szervómotorral már igen. (halk a járása azért. nem zörög mint a léptető...)
25Khz minden ok. 25-40Khz kicsi a probléma... felette nagy... 60Khz felett... :)
Jobb elkerülni...  
Talán jobb "hardveres-külső step jel sokszorozót" használni... szerintem.
Végül is szoftveresen jobb lenne, olcsóbb megoldás... de a kivánt sebességhez már nem kell olyan nagy felbontás (vagy fordítva)... leírtam már... kicsit lejjebb... MInek terhelni a procit? feleslegesen? Számoljatok arányokat! Sebesség és felbontás! Jó méretezés persze nagyon fontos!

4mjnxdwuu

Hali,
Az a probléma, hogy ezek nem fix pwm-ek, hanem álltalában chopperes szaggatók.
 Tehát mindíg bekapcsolással kezdenek, ha meghalatta a beállított áram értéket lekapcsol. ( azért jó mert sokkal nagyobb feszről járathatod a mocit. / hamarabb kialakul a névleges áram./ Az hogy olyan gyorsan lépteted, hogy a szaggató nem kapcsol ki,egy adott tekercsen, (mert már tovább kell lépnie másik tekercsre) semmi problémát nem okoz, viszont innenetől kezdve, ha tovább gyorsítasz nem lesz meg a névleges beállított áramod, tehát erőteljesen csökken a nyomatékod.

e3h0cv4ph

Az elved jó de szerintem sneci nem léptetőmeghajtóban gondolkozik (kicsit gyors lenne 100 KHz-ről léptetőt hajtani).
Szerintem szervó motorról beszélgetünk (pláne ebben a topic-ban)

4mjnxdwuu


e3h0cv4ph

Az elved jó de szerintem sneci nem léptetőmeghajtóban gondolkozik (kicsit gyors lenne 100 KHz-ről léptetőt hajtani).
Szerintem szervó motorról beszélgetünk (pláne ebben a topic-ban)

e3h0cv4ph

Az elved jó de szerintem sneci nem léptetőmeghajtóban gondolkozik (kicsit gyors lenne 100 KHz-ről léptetőt hajtani).
Szerintem szervó motorról beszélgetünk (pláne ebben a topic-ban)

e3h0cv4ph

bocsi, most meg én nem figyeltem :) (és megin elveszett egy csomó, kezd néha igen belassulni ez a fórum)

e3h0cv4ph

Lehet a PWM freki felett is pályahű mozgást csinálni.
A kettőnek ilyen módon nincs köze egymáshoz!
Lehet pl. hogy 50 KHz-el pörgeted a motort és a vezérlő 100%-os PWM jelet ad ki, ilyenkor a PWM freki meg sem jelenik a rendszerben (de ha mégis megjelenik nincs ehhez semmi köze).
A MACH step jel generátora egyébként nem tudja, hogy éppen történik -e megmunkálás vagy sem. Elvárt követelmény, hogy a legnagyobb beállítható frekin is pályakövetés történjen.

e3h0cv4ph

Hogy pontosan mi történik a MACH-ban azt nem tudom, sajnos nem én írtam :)
Akik viszont írták nem fogják elárulni a részleteket, ezért csak találgatni tudunk.
De az biztos, hogy a Windows megszakításaira nem lehet alapozni egy ilyen gyors és nagy megbízhatóságú jelkiadást, mert pl. gondol egyet a windows és két stepjel között megkérdezné a felhasználót, hogy áttérjen -e a téli időszámításra vagy sem, ez nem elfogadható.
Valószínűsítem, hogy ezt az órajelgenerátort szoftveresen emulálja (korábban hibásan hardverest írtam), és ezt állítgatja a feljebbi szinten elhelyezkedő felhasználói program, a MACH. Így ha a MACH-tól el is veszi a vezérlést a Windows (mert fontosabb dolgai vannak, csicsa stb.) az órajel generálás nem szakad meg.

x4rhew5r3

Ez valahol sántít, mert a motor ilyenkor nem vezérelt állapotban pörög, hanem a táptól és motortól függő max. fordulaton. Ha nem egyetlen tengely irányában van mozgásösszetevő, akkor már nem biztos, hogy követi a pályát.

x4rhew5r3

Azért ennyire nem rossz a helyzet. Bár szegényes a W. priorotás kezelése, de ha külön szálban (thread) indítod el az lpt vezérlését, és a thread prioritását átteszed TimeCritical-ba, akkor nem áll meg egérre ,menüre és normál szintű akciókra. Én - ráadásul soros porton - használtam, és "fülre" egész jó volt. Ettől még azért minden nem realtime miatti probléma megmarad.

000000000

Két nagy baj van. A motor főleg mechanikával
terhelten egy tetű lassú rendszer, a legjobb
rendszerekben is csak néhány 10 Hz-ig képes követni 1-3 inkrementumon belül az alapjelet.
Arról nem is beszélve, ha léptető vagy nem
szervo motorról van szó, még drámaibb a
dinamikai képesség.
Tehát 2 Khz-es PWM bőven elég lenne mindenhez.
Azonban a másik tévedésed ott van, hogy a
step alapjel frekvenciája hordozza a sebesség
adatot, míg a motor PWM jelnél az egy ciklus
integrál középértéke, vagy nevezhetjük ezt
kitöltési téynezőnek is. Az pedig jobb szervókban analóg,
azaz 0 és 100 % között bármi lehet, és általában 1 nagyságrendel nagyobb dinamikai
képességre illik méretezni a szervoszabályzó
ezen részét, én legalábbis így csinálom.
Tehát ahogyan itt már más is írta, ilyen értelemben nincs közvetlen összefüggés a két freki között,
és nagy résszámű encodernél sajna jól jön a
nagy frekis kimenetű vezérlő program, már
akinek van ilyen. Pl. a Turbó CNC alapból lever
majdnem minden más kereskedelmi programot. Mert nem
a csicsával meg a fölöslges szolgáltatásokkal
foglalkozik, hanem ami a lényeg, azt csinálja,
no meg persze DOS-os.