Komunikace mezi displejem a ridicim systemem

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod Remet » 28.02.2017 18:04

V linku mas popis + v tom zdrojaku to mas taky.
Kód: Vybrat vše
            //Calculate checksum
            if ( chkpos != string::npos ) {
                for (auto c = possible_command.cbegin(); *c != '*' && c != possible_command.cend(); c++)
                    cs = cs ^ *c;
                cs &= 0xff;  // Defensive programming...
                cs -= chksum;
            }


Tady mas jeste citaci z Repetieru:
- With higher speeds, the serial connection is more likely to produce communication failures.
The standard method is to transfer a checksum at the end of the line. This checksum is the
XORd value of all characters send. The value is limited to a range between 0 and 127. It can
not detect two identical missing characters or a wrong order. Therefore the new protocol
uses Fletchers checksum, which overcomes these shortcommings.
Kód: Vybrat vše
            uint8_t checksum_given = parseLongValue(pos);
            uint8_t checksum = 0;
            while(line != (pos - 1)) checksum ^= *line++;
#if FEATURE_CHECKSUM_FORCED
            Printer::flag0 |= PRINTER_FLAG0_FORCE_CHECKSUM;
#endif
            if(checksum != checksum_given)
            {
                if(Printer::debugErrors())
                {
                    Com::printErrorFLN(Com::tWrongChecksum);
                }
                return false; // mismatch
            }
         hasChecksum = true;
            break;
  • 0

Rebel II (Marlin 1.1.0) - uz tiskne, ale bude potreba krapet poladit
OpenSCAD
Remet
 
Příspěvky: 156
Registrován: 14.02.2017 00:00
Bydliště: Praha
Reputation: 0

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod fdd1222 » 28.02.2017 18:24

Dik za link, vsechny znaky jsou sproste xorovany proti sobe :-) a vysledek preveden do ascii - vyzkouseno sedi to.
Neni to nic moc CRC, ale asi lepsi nez dratem do oka.
  • 0

fdd1222
 
Příspěvky: 511
Images: 0
Registrován: 12.11.2016 19:59
Reputation: -5
Pokud je snaha, dá se to napravit.

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod Remet » 28.02.2017 19:04

Tak ono se v zasade na tech 40cm nepredpoklada moc chyb. Pokud bys chtel vic jistoty, tak udelej kabel mezi displayem a deskou stineny. Ale je pravda, ze obecne UART se dobou vzniku pasuje na rychlosti kolem 2400. O 250000 se tehda nikomu ani nesnilo a tak pokud nejaky cinan osidi design vic nez je zdravo, tak to pri tehle rychlostech muze delat sem tam chybky.
  • 0

Rebel II (Marlin 1.1.0) - uz tiskne, ale bude potreba krapet poladit
OpenSCAD
Remet
 
Příspěvky: 156
Registrován: 14.02.2017 00:00
Bydliště: Praha
Reputation: 0

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod fdd1222 » 28.02.2017 19:19

Dival jsem se na signal osciloskopem - o obdelniku se moc hovorit neda. Zvlast vzestupna hrana je od urcite urovne kulata. Ale prenosu to zjevne nevadi. Pokud by tam pronikalo moc ruseni z okoli, dam tam RS485 a bude.
  • 0

fdd1222
 
Příspěvky: 511
Images: 0
Registrován: 12.11.2016 19:59
Reputation: -5
Pokud je snaha, dá se to napravit.

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod svobpata » 02.03.2017 16:00

Remet píše:No display neposila vubec nic. To co popisujes je cteni z SD karty pres SPI. Hackovat komunikaci SPI je oproti prepsani par radku v Arduinu IDE fakt vyhra [ironie], nemluve o tom, ze tak zadnou funkci nepridas. Kdyby se ti to nahodou povedlo, tak maximalne dokazes zmenit nejaky G prikaz za jiny.

Jinak cteni souboru po radcich je obecne neefektivni a pitome, ale Arduino proste nema dostatecnou pamet na to, aby si tam cely soubor k tisku dokazalo natahnout. To je zakladni kamen urazu i pri tisku z PC pres USB - beznym 2D tiskarnam na papir posle pocitac komplet data k tisku do jejich pameti a nehrozi pak problem se ztratou komunikace v polovine tisku.

Ani Due by v tomhle ohledu neresilo nic jelikoz ma jen 96kB RAM. Muselo by se pouzit proste neco uplne jineho, co ma dost GPIO a aspon 32MB RAM.
Raspberry pi? Není pro to náhodou nějaký fw?


Sent from my iPhone using Tapatalk
  • 0

svobpata
 
Příspěvky: 259
Registrován: 02.01.2016 14:53
Reputation: 0

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod Remet » 03.03.2017 02:25

svobpata: RPi ma jen 26 GPIO (a to vcetne I2C, SPI, serial,...) takze se primo na rizeni tiskarny nehodi. Bezne se pouziva RPI -> serial -> MCU (arduino) ridici tiskarnu, coz je obdobne reseni jako ma fdd1222, jen misto RPi ma druhy MCU s LCD a SDkartou - princip komunikace je ale stejny.

Me osobne by se nejvic libilo reseni podobne soucasnemu tisku z SD karty (rikejme tomu uloziste) jen s tim rozdilem, ze gcode soubor pro tisk by se na to uloziste dost po LAN, USB nebo WiFi a to uloziste by nemusela byt zrovna SD karta, ale lepe treba SPI Flash (ktere jsou dnes za par korun k dostani i ve velikostech pres 16MB). Proste by tiskarna mela svoji "cache", ze ktere by lokalne tiskla a "nespolehlivost" pripojeni pres serial, USB, WiFi, BT by byla uplne nepodstatna - tisk bez lokalni cache bude problematicky vzdycky. Reseni s RPi neni uplne zle, jen se nesmi nikdy "seknout"/zpomalit komunikace (tj. nesmi se na RPi najednou zacit delat nic moc jineho). Kdyz to vztahnu na klasicke 2D tiskarny na papir, tak ted jsme nekde v dobe BT100 :-) a ja bych byl radej v dobe postscriptove sitove laserovky (a ty take staly na pocatku desitky az stovky tisic).

fdd1222: Apropo, klobouk dolu za odchytavani komunikace a oscioskop. Pro me jako programatora je snazi se podivat do zdrojaku "firmware" :-)
  • 0

Rebel II (Marlin 1.1.0) - uz tiskne, ale bude potreba krapet poladit
OpenSCAD
Remet
 
Příspěvky: 156
Registrován: 14.02.2017 00:00
Bydliště: Praha
Reputation: 0

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod fdd1222 » 03.03.2017 08:58

No tak urcite by bylo lepsi nahrat cely soubor do pameti, ale aby to melo vyznam, musely by generatory Gkodu vlozit do souboru kontrolni soucet a to si nejsem jisty jestli nejaky dela. Pokud se to nacte do pameti s prenosovymi chybami, je utrum. Pokud se ale nacitaji data z karty prubezne a neco je spatne, neposle deska ACK a prenos se tak zopakuje znovu dokud nebude bez chyb. Co by prospelo je nejaky masivnejsi CRC nez to XORovani, ale zase nevim jestli by ho ty 8bitove arduina stihaly pocitat.

Osciloskopem jsem kontroloval prenosovou rychlost toho displeje - zpocatku to nechtelo chodit. Pro mne je rychlejsi zapichnout tam jednu svorku a zkontrolovat to, nez prochazet nastaveni a hledat kde se vlastne nastavuje :-) Mam osciloskop, LA a FTDI na stole.
  • 0

fdd1222
 
Příspěvky: 511
Images: 0
Registrován: 12.11.2016 19:59
Reputation: -5
Pokud je snaha, dá se to napravit.

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod Remet » 03.03.2017 10:13

No ono by mozna i stacilo dopocitat na kazdy radek i ty soucasne xory... tisk z SD karty je fajn, ale kdyz si predstavim, ze bych takhle tiskl i ma bezne tiskarne, tak bych se asi zblaznil. Ono stejne chybi nejaka standardizace ala RFC. Jelikoz i Gcode podporuje kazdy firmware jen neco a kazdy neco trosku jinak, nemluve o tom, ze textovy soubor je sice hezky citelny pro lidi, ale binarni by mohl byt co do velikosti mene nez polovicni.
  • 0

Rebel II (Marlin 1.1.0) - uz tiskne, ale bude potreba krapet poladit
OpenSCAD
Remet
 
Příspěvky: 156
Registrován: 14.02.2017 00:00
Bydliště: Praha
Reputation: 0

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod fdd1222 » 03.03.2017 11:32

U 3D tiskarny mi neprijde tisk z karty nebo flash jako zasadni omezeni. Tisky trvaji dlouho a ja nemusim mit zaply pc na kterem bych stejne nemohl nic poradne delat kvuli obavam ze windows se bude venovat necemu jinemu a na tisk se vyprdne. Ja budu delat vetsinou velke tisky ktere trvaji mnoho hodin a tiskarna bude ve vyrobni hale kde nebude vadit jeji, hluk, smrad apod. Tisk z flashky mi pri takovem pouziti prijde v pohode. Pripravim si ho na compu, hodim flasku do tiskarny a muzu delat cokoliv jineho.
  • 0

fdd1222
 
Příspěvky: 511
Images: 0
Registrován: 12.11.2016 19:59
Reputation: -5
Pokud je snaha, dá se to napravit.

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod oscar » 03.03.2017 11:53

Remet píše:textovy soubor je sice hezky citelny pro lidi, ale binarni by mohl byt co do velikosti mene nez polovicni.


pouzij binarni prenos.
https://github.com/repetier/Repetier-Fi ... otocol.txt

je to mnohem jednodussi na zpracovani.
  • 0

.... večer se přezujou, hodinu frézujou ....
oscar
 
Příspěvky: 730
Images: 4
Registrován: 16.06.2014 20:51
Bydliště: Perníkovice
Reputation: 10
Jen tak dál :)

Re: Komunikace mezi displejem a ridicim systemem

Příspěvekod Remet » 03.03.2017 19:25

Tak to se mi libi, jeste aby to tak rovnou ukladal slicer. Ikdyz bych k tomu mel jednu pripominku (to samosebou nemyslim vubec na tebe). Osobne bych se na nevykonnem Arduinu vykaslal na floating point vypocty a XYZE a rychlosti zpracovaval v um jako uint32* misto v mm jako 32bit float.

* no mozna asi ne unsigned int, obcas je potreba jit s osou do minusu.
  • 0

Rebel II (Marlin 1.1.0) - uz tiskne, ale bude potreba krapet poladit
OpenSCAD
Remet
 
Příspěvky: 156
Registrován: 14.02.2017 00:00
Bydliště: Praha
Reputation: 0

Předchozí

Zpět na ELEKTRONIKA

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 10 návštevníků