Stránka 1 z 1

Jak se dotázat na aktuální pozici (souřadnice)?

PříspěvekNapsal: stř 14. zář 2022 11:53:04
od tulenimama
Ahoj všem,

můj dotaz bude možná trochu off-topic, ale sám už si nevím rady, věřím, že to padne na úrodnou půdu, ale nebudu se zlobit, když to smažete (jestli uznáte, že je to úplná blbost :). V práci jsme dostali sestavený stroj se dvěma krokovými motory, které jezdí po osách X a Y a máme za úkol napsat k němu v Pythonu program. Potřeboval bych nějakým způsobem zjistit, jestli existuje nějaký příkaz/dotaz takový, aby mi stroj vrátil zpět svoji aktuální pozici (souřadnice, kde se aktuálně fyzicky nachází). Protože když mu pošlu G kód se souřadnicemi, tak mi obratem vrátí toto: b'ok\r\n' - chápu to jako potvrzení, že ten kód zpracoval, ale neznamená to, že dokončil pohyb, který po něm chci. A my potřebujeme vědět, že skutečně dojel na souřadnice tak, abychom pak mohli volat další funkce (u nás konkrétně pořízení snímku). Motory ovládá deska, na které bohužel není žádné označení - je to tato věc: https://www.amazon.com/Engraving-Machin ... B07B3RFNJ7 a celé to je připojené přes USB a má to v sobě GRBL 1.1h (v tom nejsem úplně kovaný, je to asi všechno info, co takhle umím poskytnout). Předpokládám ale, že bude existovat 'něco', co když tam přes USB pošlu, tak si deska řekne 'aha, jasně, teď jsem na souřadnicích X = 10 Y = 10 - asi v mnohem méně srozumitelné podobě, ale s tím už si poradíme :)

Obecně kódy (stringy), které tam posíláme, vypadají nějak takhle: 'G01X150Y50F500\r\n' (to asi není nic převratného)

Předem děkuji za jakékoliv rady nebo jenom postrčení správným směrem
Jakub

Re: Jak se dotázat na aktuální pozici (souřadnice)?

PříspěvekNapsal: stř 14. zář 2022 12:51:11
od Sakul
Ahoj. Takze v tom bezi firmware grbl. Ten se pouziva pro jednoduche rizeni pomoci g-code. Ale bohuzelje tento firmware primarne navrzen pro 8bit mcu atmega328. Ten ma znacne omezenou pamet a proto tento firmware umi zpracovat jen velmi omezene mnozstvi G a M kodu. Doporucuji na githubu tohoto projektu si vyhledat jake podporuje kody. Nicmene tento firmware jde nakonfigurovat tak, ze ciklicky vraci aktualni pozici. A dokonce by mel potvrzovat dokonceni daneho prikazu. Vse je velmi dobre popsano v dokumentaci.

Re: Jak se dotázat na aktuální pozici (souřadnice)?

PříspěvekNapsal: pát 16. zář 2022 9:52:06
od tulenimama
Rád bych poděkoval. Skutečně to v dokumentaci je a ačkoliv jsem jí pročítal, tak tohle jsem přehlédl, nakonec to bylo v sekci 'real time commands' a po odeslání '$?' vrátí zpět status a souřadnice.

Pokud by to čirou náhodou někdo někdy potřeboval, tak kód, který mi funguje (hlídá kdy stroj nemá co dělat), vypadá takto:

while True:
command(ser, '$?\r\n')
test = ser.readline()
print(test)
test_str = str(test)
if 'Idle' in test_str:
print('yeah!')
break

Díky a hezký den.