Heidenhain TE-355-A => Arduino => EasyCAT => LinuxCNC

Odpovědět
xener
Příspěvky: 853
Registrován: 2. 3. 2019, 12:48

18. 6. 2020, 1:35

daj linux c alebo linux c++ spolu s dotazom aky mas a mozes si vyberat.
neexistuje jediny univerzalny najlepsi web
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

24. 7. 2020, 9:46

BTW: ono už není možné editovat staré příspěvky?
Chtěl jsem upravit název vlákna na Heidenhain TE-355-A => Arduino => EasyCAT.

EasyCAT => LinuxCNC už bude know-how kolegy, který se na projektu bude podílet.
-----------------------------------------------------------------------------------------------------------------------------
Nakonec jsem šáhl po Arduino MEGA, které mám doma a provizorně to pospojoval. Budu rád za konstruktivní kritiku.
Panel_a_EasyCAT.jpg
Zatím to vyhodnocuji jen pomocí programu Simple EtherCAT Explorer pro Widle.
Simple_EtherCAT_Explorer.JPG
Zapojení:
Arduino-panel-001_schem.pdf
(664.51 KiB) Staženo 160 x
Zdrojáky pro Arduino:
0S01-HEIDENHAIN_TE-355-A_Panel-002.zip
(13.53 KiB) Staženo 134 x
Jelikož to bude nutné učesat, abych se nestyděl dát do stroje, tak se přímo nabízí udělat plošňák se svorkama a zároveň na plošňák přidat vstupy/výstupy. I základní nastavení EasyCATu 32Byte vstupů a 32Byte musí uspokojit snad každého.
32 Byte = 256 bitů

Cca 4Kč/vstup je lákavá myšlenka, ovšem nevím, zda je to dobrý nápad s ohledem na spolehlivost. Vstupy bych pořešil přes optron PC817 (jiný neznám) a s nějakým tranzistorem na výstupy bych potřeboval poradit (THT, ideálně v integráči, 24V 20mA).

Klidně zapojit vstupy a výstupy do matic 8x8 a jenom bych rozšířil zdroják v Arduinu a měl bych pokrytý celý stroj.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

24. 7. 2020, 11:02

Já nemám žádnou kritiku, protože nikomu nic nekritizuji.

Snad jen pár otázek. Například:
- Je EtherCAT to správné komunikační médium pro přenos klávesnice do systému? Nevyšlo by snadněji a levněji udělat to třeba přes RS485 a číst to v user mode a nikoli v real-time režimu?
- Proč v každém průchodu smyčkou pořád inicializuješ porty pro čtení klávesnice, místo by se to udělalo jednou v rutině setup?
- Je to správné pojetí každou milisekundu pořád posílat do nadřízeného systému informaci, že je furt stlačená nějaká klávesa? Nebylo by logické udělat nějaké předzpracování už v tom Arduinu a klávesy posílat jen jednou po stlačení, případě pak s nějakým autorepeatem? Případně klávesy rozdělit na ty, které se vyšlou jednou a na ty, které se případně posílají pořád?
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

25. 7. 2020, 8:31

Mex píše: 24. 7. 2020, 11:02 - Je EtherCAT to správné komunikační médium pro přenos klávesnice do systému? Nevyšlo by snadněji a levněji udělat to třeba přes RS485 a číst to v user mode a nikoli v real-time režimu?
Použití EasyCATu, byl návrh garanta projektu. Zatím s ním není vše dohodnuté a tak ho zatím nechci otravovat s dotazy a tak nějak dopředu jsem si chtěl EasyCAT ošahat, pohrát si s ním. Možná vše co jsem doposud vytvořil, se smaže a udělá se to nějak jinak a líp. Uvidíme.
Mex píše: 24. 7. 2020, 11:02 - Proč v každém průchodu smyčkou pořád inicializuješ porty pro čtení klávesnice, místo by se to udělalo jednou v rutině setup?
No můj myšlenkový postup byl takový:
1. myšlenka
- všechny řádky v setupu inicializuji jako OUTPUT
- všechny sloupce v setupu inicializuji jako INPUT
během cyklu budu řádky měnit řádky z LOW na HIGH
a projedu všechny sloupce digitalRead .
Když jsem to chtěl začít psát, tak jsem si uvědomil 2 věci.
Na sloupcích nemám pull-down, takže by to nefungovalo, nebo fungovalo náhodně, protože vstup by byl napěťově nedefinovaný.
Když bych měl na všech řádcích LOW a na jednom HIGH, tak při stisknutí určitých tlačítek, tak by se mi povedlo spojit alespoň dvě GPIO, kde na jednom by bylo HIGH a na druhém LOW. Což asi nechci.

2. myšlenka
- všechny řádky v setupu inicializuji jako OUTPUT
- všechny sloupce v setupu inicializuji jako INPUT_PULLUP
Tohle by už fungovalo, na všech řádcích bych musel mít standardně HIGH a jenom prohledávaný řádek by měl LOW.
Ovšem stále to neřeší nebezpečí spojení dvou GPIO, když jeden bude v LOW a druhý v HIGH

3. myšlenka - stávající
v setupu začínám s tím, že vše je inicializováno jako INPUT.
během cyklu měním řádky z INPUT na OUTPUT LOW
a sloupce měním z INPUT na INPUT_PULLUP
Je to taková obrácená logika, kdy aktivaci PULLUP používám režim INPUT zároveň jako výstup.
Funguje to, ale mám takový pocit, že jsem to zase nějak zbytečně z komplikoval.
Mex píše: 24. 7. 2020, 11:02 - Je to správné pojetí každou milisekundu pořád posílat do nadřízeného systému informaci, že je furt stlačená nějaká klávesa? Nebylo by logické udělat nějaké předzpracování už v tom Arduinu a klávesy posílat jen jednou po stlačení, případě pak s nějakým autorepeatem? Případně klávesy rozdělit na ty, které se vyšlou jednou a na ty, které se případně posílají pořád?
Co se týče pojetí, tak z Tvého dotazu vyplývá, že to půjde asi udělat lépe. Zamyslím se. Každopádně bych se zeptal, co je to ten autorepeat?
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

25. 7. 2020, 11:18

zz912 píše: 25. 7. 2020, 8:31 ... Každopádně bych se zeptal, co je to ten autorepeat?
Otevři si nějaký editor. Stiskni a drž na klávesnici třeba písmenko 'a'.
Právě vidíš, co je autorepeat. ;-)
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

10. 10. 2020, 5:10

Tak jsem chtěl udělat mezikrok od navrhovaného mezikroku s RS 485 a zkusit to jen s Arduinem bez EasyCatu.

Začalo to tím, že jsem si našel tento zdroják, ze kterého bych chtěl vycházet:
https://forum.linuxcnc.org/18-computer/ ... nc?start=0

Bohužel se mi ho nedaří zkompilovat. Nevím, zda je to tím, že je z roku 2012, nebo něco dělám blbě.

Zde je manuál pro výrobu component do halu:
http://linuxcnc.org/docs/2.8/html/hal/comp.html
(preferuji psaní HAL component v C před Pythonem, Python neumím vůbec a C alespoň trochu)

Už mám problém s bodem 2:
http://linuxcnc.org/docs/2.8/html/hal/c ... installing
Lze mi nainstalovat:

Kód: Vybrat vše

sudo apt install linuxcnc-uspace-dev
linuxcnc-uspace-dev je již nejnovější verze (1:2.8.0.57.gfaad4fa22).
:-)
ale nemůže to najít:

Kód: Vybrat vše

sudo apt install linuxcnc-dev
:-(
Pokud je linuxcnc-dev pro real-time a linuxcnc-uspace-dev pro uspace, tak to asi to ničemu nevadí.

Pal jsem bojoval s bodem 12
http://linuxcnc.org/docs/2.8/html/hal/c ... _compiling
že jsem nevěděl kde vytvořit/najít složku linuxcnc/src/hal/components složek linuxcnc je v systému více, např.:
/etc/linuxcnc/
/home/cnc/linuxcnc/
/usr/lib/linuxcnc/
/usr/share/linuxcnc/
....
Nedomluvil jsem se ani s příkazovým řádkem a find

Kód: Vybrat vše

find / -name "linuxcnc/src"
mi to vypíše hromadu souborů s popisem:

Kód: Vybrat vše

.....
.....
.....
find: ‘/run/udisks2’: Operace zamítnuta
find: ‘/run/lightdm’: Operace zamítnuta
find: ‘/run/alsa’: Operace zamítnuta
find: ‘/run/cups/certs’: Operace zamítnuta
find: ‘/run/user/112’: Operace zamítnuta
find: ‘/run/log/journal/1872d788f9cd4a00a9107f1c30546eb0’: Operace zamítnuta
find: ‘/run/systemd/inaccessible’: Operace zamítnuta
.......
......
......
Zkoušel jsem různé varianty find, ale nic použitelného.

nakonec jsem vytvořil složku:
/usr/share/linuxcnc/src/hal/components
Je to v pohodě? Na internetu psali, lidem se stejným dotazem, že je to jedno, ale nějak se mi to nezdá. Pro kompilaci to jedno je, ale jak by pak LinuxCNC měl vědět, kde hledat nové hal_komponenty?

Pak jsem vytvořil soubor serialreceive.comp se zdrojákem viz odkaz výše a zkusil ho zkompilovat. Bohužel to nedopadlo:

Kód: Vybrat vše

cnc@LinuxCNC:/usr/share/linuxcnc/src/hal/components$ sudo halcompile --install serialreceive.comp
gcc -I/usr/include -I/usr/include/linuxcnc -URTAPI -U__MODULE__ -DULAPI -Os  -o serialreceive /tmp/tmpsOLu45/serialreceive.c -Wl,-rpath,/lib -L/lib -llinuxcnchal 
/tmp/tmpsOLu45/serialreceive.c: In function ‘__comp_parse_count’:
/tmp/tmpsOLu45/serialreceive.c:80:13: error: ‘count’ undeclared (first use in this function)
             count = strtoul(&argv[i][6], NULL, 0);
             ^~~~~
/tmp/tmpsOLu45/serialreceive.c:80:13: note: each undeclared identifier is reported only once for each function it appears in
/tmp/tmpsOLu45/serialreceive.c: In function ‘__comp_parse_names’:
/tmp/tmpsOLu45/serialreceive.c:107:17: error: ‘names’ undeclared (first use in this function)
                 names[j] = strtok(p, ",");
                 ^~~~~
Makefile:2: návod pro cíl „serialreceive“ selhal
make: *** [serialreceive] Chyba 1
Tak jsem začal bádat dál. Příkaz halcompile spustí Python zdroják uložený v /usr/bin/halcompile.
Tento zdroják vytvoří ze souboru *.comp soubor *.c a do něj ledacos přidá, poté se jej pokusí zkompilovat. Soubor *.c se buď při "halcompile --install" vytvoří dočasně ve složce "/tmp/tmpsOLu45/", nebo si jej můžeme vytvořit ručně do složky pomocí:

Kód: Vybrat vše

sudo halcompile serialreceive.comp
Začal jsem porovnávat soubory *.c a *.comp. Zjistil jsem, že chyby:

Kód: Vybrat vše

error: ‘count’ undeclared (first use in this function)
error: ‘names’ undeclared (first use in this function)
jsou v té části, kterou přidává zdroják /usr/bin/halcompile. Tudí to na mě budí dojem, že ve zdrojáku /usr/bin/halcompile je nějaký bug.

Chyba se objevuje v této části zdrojáku:

Kód: Vybrat vše

int __comp_parse_count(int *argc, char **argv) {
    int i;
    for (i = 0; i < *argc; i ++) {
        if (strncmp(argv[i], "count=", 6) == 0) {
            errno = 0;
            count = strtoul(&argv[i][6], NULL, 0);
            for (; i+1 < *argc; i ++) {
                argv[i] = argv[i+1];
            }
            argv[i] = NULL;
            (*argc)--;
            if (errno == 0) {
                return 1;
            }
        }
    }
    return 0;
}

int __comp_parse_names(int *argc, char **argv) {
    int i;
    for (i = 0; i < *argc; i ++) {
        if (strncmp(argv[i], "names=", 6) == 0) {
            char *p = &argv[i][6];
            int j;
            for (; i+1 < *argc; i ++) {
                argv[i] = argv[i+1];
            }
            argv[i] = NULL;
            (*argc)--;
            for (j = 0; j < 16; j ++) {
                names[j] = strtok(p, ",");
                p = NULL;
                if (names[j] == NULL) {
                    return 1;
                }
            }
            return 1;
        }
    }
    return 0;
}
Je divné, že jsem zkoušel kompilovat příklad constant.comp a tam to vše prošlo a vytvořilo to constant.so bez chybových hlášek. Poradí někdo jak dál?
hal_component.gz
(10.9 KiB) Staženo 105 x
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

11. 10. 2020, 3:18

Poslyš, nespletl sis fórum?
Tady se diskutuje o zdravotnictví (speciálně o koroně), o potravinářství (zejména o koblihách) a biologii (zejména o tchořích a prasatech).
A Ty sem taháš nějaké programování, navíc ještě pro CNC.

No ale když už jsi to sem napsal...

Zkusil jsem to přeložit. Jenom přeložit, fyzicky jsem to do žádného Arduina neprogramoval, žádné tady po ruce nemám.
Ten zdroják pro Arduino se dá přeložit na prví šup. Nakonec je to úplně základní konstrukce, tak není důvod aby to nechodilo.

Ze zdrojáku pro HAL-komponentu vyhoď řádek "option singleton yes;".
Obecně je asi celkem blbost ho používat. A pokud by se použil, tak by se asi musely udělat nějaké kličky. Ale je to fakt k ničemu.
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

11. 10. 2020, 9:15

Tak nejdřív začnu s tím, že si sám odpovím na vlastní otázky, abych to tu v budoucnu našel.

Aby mi find v příkazovém řádku nevypisoval "operace zamítnuta", tak je potřeba dopsat "2>/dev/null"

Kód: Vybrat vše

find -name "*serialreceive*" 2>/dev/null
Zároveň se samo vyřešil můj dotaz, kam kopírovat nezkompilované soubory. Ono je to opravdu jedno, protože výsledek si to hodí do ./usr/bin/ a tam si ho LinuxCNC najde.

Kód: Vybrat vše

cnc@LinuxCNC:/$ find -name "*serialreceive*" 2>/dev/null
./usr/share/linuxcnc/src/hal/components/serialreceive.comp
./usr/bin/serialreceive
Jinak už jsem to rozchodil:
serialreceive.png
Díky za pomoc
Mex píše: 11. 10. 2020, 3:18 Poslyš, nespletl sis fórum?
Tady se diskutuje o zdravotnictví (speciálně o koroně), o potravinářství (zejména o koblihách) a biologii (zejména o tchořích a prasatech).
A Ty sem taháš nějaké programování, navíc ještě pro CNC.
Když už su tak drzý a nevychovaný, tak mohl bych se zeptat, k čemu ta volba singleton měla být určená? Studoval jsem její popis v manuálu LinuxCNC a nepochopil jsem to.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

11. 10. 2020, 3:32

Singleton znamená, že tato komponenta může běžet jen jedna. Jinak je obecně možné komponenty natáhnout ve více instancích.
Ta singletonová pak nemá v názvu signálu číslo instance, protože je jen jediná možná.

Takže normální komponenta má např. serialreceive.0.bit-14,
singletonová by měla např. serialreceive.bit-14.
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

11. 10. 2020, 4:20

A můžu ještě poprosit o lidské vysvětlení k čemu je FOR_ALL_INSTS() ?
http://linuxcnc.org/docs/2.8/html/hal/c ... nce_macros
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

20. 10. 2020, 12:33

Jelikož jsem se zaseknul na mrtvém bodě, co se týče tvorby a pochopení HAL_komponenty
viewtopic.php?t=38067 , tak jsem si nechal půjčit několik knížek o linuxu a budu se učit.

Mezitím o volných chvilkách (jsem na nemocenské), mě v jiném vlákně poradily software KiCad a popostrčily k SMD součástkám.

Tudíž jsem se konečně rozhoupal k tomu, abych si alespoň trochu odtrhnul pupeční šňůru od Arduina co setýče hardwaru. Co setýče softwaru, tam zatím u Arduina zůstanu. Nakreslil jsem tohle schéma, které vychází z desky NANO/UNO. Mimo jiné půjde použít i na ovládání tohoto panelu Heidenhain TE-355-A. (Vím, že ty tranzistory by tam nemusely být, ale ať mám tu desku univerzálnější.)
0S01-KiCad-001.pdf
(95.38 KiB) Staženo 147 x
Můj největší problém je výběr komponent. Hold se vrhám do oboru, kterému se jiní věnovali celý život, kdežto já jen při chvilkách. Nejde mi o cenu komponent, ale o spolehlivost řešení.

https://www.tme.eu/cz/en/details/tajr10 ... itors/avx/
4.39000 CZK

https://www.tme.eu/cz/en/details/t491a1 ... ors/kemet/
5.9070 CZK

https://www.tme.eu/cz/en/details/t491a4 ... ors/kemet/
3.33400 CZK

https://www.tme.eu/cz/en/details/t491a1 ... ors/kemet/
7.52500 CZK

https://www.tme.eu/cz/details/atmega328 ... hip-atmel/
57.63 CZK 1ks

https://cz.farnell.com/xp-power/ia2405d ... aMfpn=true
147,6140 Kč 1ks

https://www.tme.eu/cz/details/max485ecs ... ntegrated/
102.31 CZK 1ks

https://www.tme.eu/cz/details/74hc595d. ... /nexperia/
4.1018 CZK

Nejvíce mi jde o zvládnutí té levé strany microprocesor + napájení + RS485 . Když tohle zvládnu, tak pak bych mohl dělat mnoho variací tohoto schématu s tím, že na pravou stranu si dám, to co potřebuji (jenom vstupy, relátka, ledky, cokoliv ....). Kdyby tohle řešení bylo spolehlivé, tak bych jej dokázal vyžít v práci, kde často potřebuji kvůli místu, nahradit velký průmyslový elektro-komponent, něčím vlastním.

Tak a teď k prckovu motu:
"Všechno je snadné, než to zkusíš sám." :-)
Co na tom je, vzít schéma Arduina NANO ,vyházet z něj nepotřebné věci?
https://www.arduino.cc/en/uploads/Main/ ... .2-SCH.pdf

První problém, se kterým jsem nepohnul je krystal. Půl dne jsem googlil, abych zjistil, co tam má být, a až když jsem našel dvě varinaty konkrétní označení, tak jedna je výběhová a druhá nelze v ČR sehnat. Vím že potřebuji 16MHz, ale už nevím, jakou kapacitu, by měli mít ty "uzemňující" kondenzátory. Poradí někdo s konkrétním ozančením? Když bude nejhůř, tak použiji bootloader pro interní 8MHz krystal. Ovšem je to škoda, ušetřit jednu součástku a zpomalit si na polovinu výpočetní výkon.

Desku chci mít napájenou 24V, ať je to jako každý správný průmyslový elektrokomponent, a vím že na zdrojích 24V => 5V se nemá šetřit. Dotaz mám, jaké použít jeho zapojení:
IA2405D
https://www.xppower.com/portals/0/pdfs/SF_IA.pdf
DC-DC.JPG
Jestli EMI Filter, nebo DIP ?

Tak a teď se dostávám asi k složitější otázce, jak se spojováním mínus pólů? Už jsem o tom četl hodně, někdo radí nespojovat, aby se po připojených věcech nepřenášelo rušení a jiní radí, všechny mínusy spojit ať to rušení nevzniká.

Dále jsem na jednom fóru narazil na to, aby na konektoru pro bootování 5V, MISO, MOSI, SCK, RESET, GND byl někde nějaký kondenzátor. Ovšem už tam neupřesnily o jaký jde a kde by měl být. Nevíte o tom někdo něco?

Jinak s KiCadem jsem hoodně spokojenej. Nedělal jsem v Eaglu, takže s ním nemohu porovnávat, ale oproti Fritizingu je to vyšší liga.

Předem díky za odpovědi.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

22. 10. 2020, 12:24

Tak už jsem zase trochu pokročil.
Krystal jsem našel tento:
https://www.tme.eu/cz/details/cstne16m0 ... md/murata/

Dodělal jsem "tlumení" DC-DC měniče a rozhodl jsem se propojit země.
0S01-KiCad-001.jpg
0S01-KiCad-002.jpg
0S01-KiCad.pdf
(97.31 KiB) Staženo 214 x
0S01-KiCad-PCB-001.pdf
(83.31 KiB) Staženo 113 x
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

22. 10. 2020, 1:51

To, cos vybral, je keramický rezonátor ne krystal. Takže je to drahé a málo přesné.
Strč tam normální krystal. Třeba ten nejlevnější: https://www.tme.eu/cz/details/16m-49s-s ... -passives/

Nemám teď čas a sílu se tím nějak obšírněji zabývat. Už jsem se pěkně dlouho nevyspal, proklatě nestíhám.
Tak jsem to jenom schema narychlo přejel očima (tišťák jsem nekontroloval vůbec).
Na tom zapojení je dost co vylepšovat. Namátkou věci kolem RS485 by chtěly zapojit jinak, i to její zakončení je podivné (odporem 20k ?)
Pokud nemusíš, tak raději moc nepoužívej tantaly. Atd. atd.
Uživatelský avatar
zz912
Příspěvky: 1349
Registrován: 25. 5. 2008, 7:16

22. 10. 2020, 10:53

Pokud bys byl ochotný poradit, jak to udělat lépe, rád počkám, až budeš mít více času a klidně to schéma i několikrát celé překopám. To schéma, co jsem stvořil, je poskládání modulů pro Arduina, takže jsem tam pravděpodobně okopíroval hromadu chyb a věcí, které měly smysl v samotném modulu a nemají smysl na plošném spoji, kde je všechno pohromadě. Další problém je, že kopíruji Arduino, kde je požadavek na co nejnižší cenu, ale já potřebuji maximální spolehlivost.

V noci jsem si uvědomil (píšu to sem, abych na to nezapomněl, pokud bude tento projekt chvíli spát), že mi tam úplně chybí LED-ky na vstupech a výstupech, v provozu jsou k ničemu, ale jsou velmi příjemné na odlaďování programu.

Dále jsem zapomněl na to, že to budu chtít nějak programovat. Sice tam mám SPI pro bootloader, ale nemám vyvedený přístup k RS232 RX, TX. Zároveň nevím zda bude problém, když na RX, TX mám zapojenou tu komunikaci s RS485.

Dále se mi nelíbí vstup pro ty dva potenciometry. Na jednu stranu, mám vše krásně oddělený optronama, takže když pak škrtnu drátama o něco do 5kV , tak mi shoří jen obvod po optočlen, ale zase na druhou stranu tam mám vyvedený analogový vstup přímo do mikrokontroléru. Takže je to takový kočko-pes.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
OompaLoompa
Příspěvky: 459
Registrován: 28. 6. 2017, 1:45
Bydliště: Západný Slovakistan

22. 10. 2020, 12:54

je dáky špeciálny dôvod, prečo si volil cestu návrhu/vyroby všetkého do piky (včetne tej ATmegy),
namiesto návrhu len "shieldu" pre to Nano (keď už to má teda byť AVR),
za sakum-prásk 30Kč vč. DPH ? :D

plánuješ to na sériovú výrobu? :roll:
či klasika, cesta je primárny cieľ ? :wink:
Odpovědět

Zpět na „Ostatní elektronika“