LinuxCNC

Indította gaben, 2024 április 09, 16:55

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

akcut53

Persze megint nem nagy tapasztalattal mondom, de amit USBCNC-n be lehetett állítani grafikus felületen azt a Linuxcnc GUI-val is megtaláltam.
Több levelet is váltottam akkoriban Andrej-al
és a szoftver elég kötött tehát nem testreszabható, ha meg már jól megy a Linuxcnc-akkor majd ráérek a fileokban matatni.

akcut53

Mondjuk az is hozzátartozik a dologhoz hogy egy vezető rendszerintegrációs cégnél dolgozom így ha nekem nem is megy valami a másik szobába ül pár szakértő így az oprendszer részével biztosan nem lesz gondom.

000000000

Szia János!
Mint nagy Linux CNC szakértő, a 3D nyomtató topikban feljött csillagtesztet lefuttatnád egy 6000 mm/min előtolás beállítással? Tanulságos lenne a lefutási idő.

x4rhew5r3

Szia, el kell oszlatnom abbéli kételyeid, hogy lassú az LPT. A stepgen, pwmgen és encoder driver a 7i43 FPGA-jában fut rakéta sebességgel. A Linuxcnc 0.5-1 msec ismédlődéssel küldi a csomagot az FPGA-nak, a csomag mérete meg nem nagy.
Néhány MHz-es stepjel, vagy enkóder jel nem gond.
 
Gyakorlati példa: Egy garázs méretű kínai faipari marógép, kínai vezérlővel. 3 órás szenvedés után úgy döntöttünk, hogy ez sosem lesz jó. Következetlen, megbízhatatlan működés miatt le kell cserélni az egész vezérlést. A 400W-os ac szervók szerencsére profi kategóriából vannak benne, azzal nincs gond. Ez volt múlt vasárnap. Hétfőn és kedden nem értem rá, de csütörtökön már működött  gép:)
A megoldás: Linuxcnc - 7i43-U-4 Mesa kártya LPT porton - saját építésű interfész áramkörök.
 
A kínai vezérlő helyére egy alulemezen összelegóztam a szükséges panelokat és WAGO rugós szorítású sorkapcsokon összemadzagoltam. Asztalon így nézett ki:
 
http://cnctar.hobbycnc.hu/Sneci/Kmaro/kmaro_interface.JPG" border=0>
 
Jó az a 7i43!

akcut53

Szia !
 
      így rákeresve a sebességekre, az LPT tud (EPP) 2Mb/s,
a PCI 133MB/s-et a PCIE pedig 1000MB/s-et.
 
2Mb/sec az 2097152Byte/sec azaz ~2byte/uS.
Az említett kártya ha jól emlékszem 48I/O-val rendelkezik
ami 6byte-on vihető át, tehát ha minden klappol és a kártya nem kommunikál
csak folyaamatosan olvassa az adatot akkor kijön 333KHz-es adatfrissítés.
Ha mondjuk az LPT kártya is küld egy byte-ot és utána olvassa az adatot
akkor már "csak" 285KHz az adatfrissítés. Szerintem a Mhz-s tartomány ezzel a kártyával nemigen érhető  
el az LPT port "lassúsága" miatt. Persze azért az sem kevés, nem vitatom.
És akkor még az is benne van hogy tévesen számoltam esetleg. :-)

akcut53

Bocsánat a válasz gomb megnyomása lemaradt!

9a43swpp

A bemeneteket nem olvasgatja a gép folyamatosan, hanem csak akkor, amikor változás van (jelez a kártya egy bemenő vonalon). És akkor sem az összes bemenetet bitenként, hanem egy byte-ban a változást kódolva (ugye nem változik az összes bemenet egyfolytában). Tehát ha egy bemenő bitet változtatgatsz fel-le, akkor minden egyes változtatásnál csak egy byte lesz a bemenő adat (mondjuk, hogy melyik bit változott, és annak mi az új értéke). Ez azért inkább lesz a MHz-es tartományban. Másrészt ugyanez a kimenő I/O vonalakra is igaz tud lenni: mondjuk egy byte-os parancsban ki tud menni, hogy az egyik bit értéke változzon, vagy két byte-os parancsban ki tud menni mondjuk 8..12 I/O vonal új értéke (ha egyidőben többet is változtatna a program). És persze a legfontosabb, hogy ezek az I/O vonalak nem a nagyfrekvenciás kimenetekre valók, mert azokat a kártyával autonóm módon kell előállítani (adjál akkor most 427568 darab impulzus 1MHz-en az x. kimeneten). Ez kb. egy pár byte-os parancs, utána a kártya már magától dolgozik, hardverből.

x4rhew5r3

Ez van a Te logikád szerint:)
A valóságban totál máshogyan működik.
A linuxcnc servo_period ütemezéssel szólitja meg a kártya driverét. Ez alapban 1 msec. A driver kiküldi az FPGA-ban "installált" komponenseknek az aktuális paramétereket. Nem a stepjeleket, hanem csak azt, hogy a következő időszeletben mit kell csinálni.  
Legyen ez a csomag - nagyot mondok - 500 byte. Ez 2MB/s sebességgel számolva 250 usec. Természetesen írás-olvasás műveletekből áll a csomag, de ez nem érinti a lényeget.
 
A step-generátor az FPGA-ban a kapott paraméterek alapján generálja a stepjeleket. Az FPGA órajele - ha jól emlékszem, nincs kedven utána nézni - 7i43 esetén 33MHz, 5i20... esetén 50 MHz. Az FPGA meg nem mikroprocesszor, a stepgenerátor egy szekvenciális hardver hálózat, és minden párhuzamosan működik.
 
Az enkódereknél ha be van kapcsolva a debouce szűrő, akkor is - ugyancsak nincs kedvem megkeresni a doksit - több MHz az impulzus feldolgozás sebessége.
 
Nem mértem ki a határokat, hiszek a fejlesztők által leírtakban:)  
 

akcut53

Ebben igazad van de ha valós értékre vagyok kíváncsi akkor azzal kell számolni hogy minden bit változhat, mert előre nem lehet kiszámítani mikor mi változik.Másrészt meg szerintem az nem jó eleve hogy hány impulzus menjen ki a kimeneten mert vannak benne gyorsítások lassítások is, folyamatosan változó sebesség, ez akkor működhetne ha mozgásvezérlőről beszélnénk ez meg szerintem csak egy sima FPGA.

akcut53

Hát ezt még emésztenem kell, de ha jól értelek akkor szerencsétlen esetben egy végállás megnyomása és annak érzékelése között eltelhet
maximum 1ms ? (ez nem kritikai kérdés) csak hogy jól értem e ?

4utepsca

Szia Tibor!
 
Rajta vagyok a teszten, ha lesz eredmény jelzek.

x4rhew5r3

Igen jól érted. 1 ms periódussal olvassa be, írja ki a gpio lábakat és megy a paraméter csere a linuxcnc és a Mesa kártya között.
 
Ha 10m/sec a gyorsjárat, akkor is legrosszabb esetben csak 16 századot megy gép.

000000000

Köszönöm előre is, majd amikor lesz időd rá, ráér a dolog.

000000000

1 ms alatt ekkora sebességnél nem 10 mm elmozdulás történik? Ezt a 16 századot nem értem...

x4rhew5r3

Bocs, elírtam, 10 m/perc és nem 10 m/s.
Így a 15 század az jó.