Repetier fw - chyba sd file print pause - VYŘEŠENO

Repetier fw - chyba sd file print pause - VYŘEŠENO

Příspěvekod romanm » 27.07.2014 22:46

Narazil jsem teď na takovou divnou chybu. Při tisku z sd karty jsem potřeboval pozastavit tisk, takže jsem dal na LCD ovládání pauzu, ta se sice provedla, extruder nepochopitelně zajel X do home a Y do max, ale zahrčelo to jako když se motor snaží zajet mimo povolený rozsah. No a když jsem pak znova tisk spustil, souřadnice byly rozhozené a začalo se tisknout úplně mimo.

Neřešil někdo něco podobného? Nebo hodilo by se mi, kdybych si mohl změnit chování pauzy (třeba X-home, Z zvednout o 3cm a prodloužit dobu do vypnutí driverů)

Co jsem tak procházel firmware, jestli tomu dobře rozumím, tak při pauze se odešle na tiskárnu custom gcode pauzy, ale nenašel jsem nikde v kódu definici, co se všechno má provést.
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod Rebel » 28.07.2014 07:18

Chova se mi v91 stejne. Mam k tomu zatim jediny, vcelku nepodstatny poznatek, ze starsi verze fw pauzu udelaji, ovsem uz se z ni nikdy tiskarna nedostane, takze v posledni v91 je to docela pokrok, ze to aspon neco dela :D
Obcas by se funkcni pauza hodila, takze pokud nekdo ma nejake reseni, bylo by to fajn :)
  • 0

Dan - Rebel ? ;) - http://rebelove.org - Nevyzkoušíš = nevíš - Rebel I-III, Rebel sCUBE, Anycubic i3 MEGA, Anycubic - Kossel Mini, MeCretor2-upravený, Anycubic Photon, RR1, RR400M ! Pro STL přílohy použij čudlík "UMÍSTIT DO PŘÍSPĚVKU" !
Rebel
 
Příspěvky: 3896
Images: 243
Registrován: 12.08.2013 11:44
Bydliště: HK.......není Hong Kong :D
Reputation: 108
Zasloužil bys asi medajli :) Nebo jsi admin :D

Re: Repetier fw - chyba sd file print pause

Příspěvekod FBITuco » 28.07.2014 07:25

Kód: Vybrat vše
void SDCard::pausePrint(bool intern)
{
    if(!sd.sdactive) return;
    sdmode = false;
    Printer::setMenuMode(MENU_MODE_SD_PAUSED,true);
#if FEATURE_MEMORY_POSITION
    if(intern) {
        Commands::waitUntilEndOfAllBuffers();
        Printer::MemoryPosition();
#if DRIVE_SYSTEM==3
        Printer::moveToReal(0,0.9*EEPROM::deltaMaxRadius(),IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#else
        Printer::moveToReal(Printer::xMin,Printer::yMin+Printer::yLength,IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#endif
    }
#endif
}
void SDCard::continuePrint(bool intern)
{
    if(!sd.sdactive) return;
    Printer::setMenuMode(MENU_MODE_SD_PAUSED,false);
#if FEATURE_MEMORY_POSITION
    if(intern) {
        Printer::GoToMemoryPosition(true,true,false,true,Printer::maxFeedrate[X_AXIS]);
        Printer::GoToMemoryPosition(false,false,true,false,Printer::maxFeedrate[Z_AXIS]);
    }
#endif
    sdmode = true;
}


EDIT: A co to dělá? Celá nefunkčnost bude spočívat v tomhle: #if FEATURE_MEMORY_POSITION
EDIT: A nebo ani ne... Ta metoda má uvnitř jednu proměnnou... intern. Ta je při inicializaci nastavená na false... Ale nemůžu nikde dohledat, kde by se to měnilo na true... Protože změna na true je podmínka zapamatování polohy. Ale vzhledem k tomu, že se po stisku pause tiskárna pohne tak, jak jste psali... Tak v tom asi problém nebude.
SKuste zkouknout Printer::MemoryPosition a Printer::GoToMemoryPosition.
  • 0

FBITuco
 
Příspěvky: 58
Registrován: 10.03.2014 14:15
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod FBITuco » 28.07.2014 07:42

Možná bych jen skusil upravit funkci void SDCard::pausePrint(bool intern) na:

Kód: Vybrat vše
void SDCard::pausePrint(bool intern)
{
    if(!sd.sdactive) return;
    sdmode = false;
    Printer::setMenuMode(MENU_MODE_SD_PAUSED,true);
#if FEATURE_MEMORY_POSITION
    if(intern) {
        Commands::waitUntilEndOfAllBuffers();
        Printer::MemoryPosition();
#if DRIVE_SYSTEM==3
        Printer::moveToReal(0,0.9*EEPROM::deltaMaxRadius(),IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#else
        Printer::moveToReal(Printer::xMin,IGNORE_COORDINATE,IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#endif
    }
#endif
}


Tzn. při pauze by se měla zahomovat jen osa x a žádný další pohyb by neměl nastat. Mě se to s tím y nějak nezdá...
Změnit, zkompilovat, nahrát, testnout...
  • 0

FBITuco
 
Příspěvky: 58
Registrován: 10.03.2014 14:15
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod Rebel » 28.07.2014 07:51

Na me tam pises az moc pismenek kodu, kterymu az tak moc nerozumim :D
Kazdopadne z tohoto pohledu si muzu aspon dovolit pripominku, mozna trochu slovickareni ale dost zasadni poznamku.
Urcite nemuzes pri pauze homovat, tzn. cekat na odezvu koncaku, ktera muze zanest chybu.
Tedy zaparkovani do home by melo byt odvozeno od aktualni pozice "minus" aktulani pozice :)

Vim, ze mi ted napises, ze je to jasne, ale ver tomu, ze to 99% lidi z toho kodu jasne neni :D
  • 0

Dan - Rebel ? ;) - http://rebelove.org - Nevyzkoušíš = nevíš - Rebel I-III, Rebel sCUBE, Anycubic i3 MEGA, Anycubic - Kossel Mini, MeCretor2-upravený, Anycubic Photon, RR1, RR400M ! Pro STL přílohy použij čudlík "UMÍSTIT DO PŘÍSPĚVKU" !
Rebel
 
Příspěvky: 3896
Images: 243
Registrován: 12.08.2013 11:44
Bydliště: HK.......není Hong Kong :D
Reputation: 108
Zasloužil bys asi medajli :) Nebo jsi admin :D

Re: Repetier fw - chyba sd file print pause

Příspěvekod romanm » 28.07.2014 08:19

Asi jsem v noci udělal jen náhled a zapomněl to postnout..

Jak píše FBITuco, je to v souboru SDCard.cpp, deklarace funkce pausePrint (je to kousek od začátku):

Kód: Vybrat vše
void SDCard::pausePrint(bool intern)
{
    if(!sd.sdactive) return;
    sdmode = false;
    Printer::setMenuMode(MENU_MODE_SD_PAUSED,true);
#if FEATURE_MEMORY_POSITION
    if(intern) {
        Commands::waitUntilEndOfAllBuffers();
        Printer::MemoryPosition();
#if DRIVE_SYSTEM==3
        Printer::moveToReal(0,0.9*EEPROM::deltaMaxRadius(),IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#else
        Printer::moveToReal(Printer::xMin,Printer::yMin+Printer::yLength,IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);
#endif
    }
#endif
}


Problém je pravděpodobně v tom, že se repetier snaží zajet Y do MAXu (parametr Printer::yMin+Printer::yLength u posledního příkazu Printer::moveToReal), ale při tisku už je tato hodnota vyšší o aktuální pozici Y, což nemá ošetřeno a vyjede za hranici (možná by to bylo ok s osazeným MAX koncákem v Y)

Funkce moveToReal dělá jednoduchou věc - posun v osách: moveToReal(x, y, z, e, feedrate). Když se v parametru některé z os použije konstanta IGNORE_COORDINATE, v této ose se nikam nepohne.

Takže jsem si to upravil:
Kód: Vybrat vše
Printer::moveToReal(Printer::xMin,Printer::yMin,20,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);

Vrátí XY do home, Z vyjede o 20mm nahoru. Po pokračování tisku vrátí osy do poslední pozice před přerušením a pokračuje v tisku. Je možné, že podle kvality koncáků se zahomovaním může do tisku zanést chyba, ale vyzkoušel jsem to už v noci, opakovaně v reálném tisku pauznout, vyměnit barvu filamentu a pak pokračovat a alespoň u mě to funguje naprosto spolehlivě.

Předpokládám, že Z+20mm bude mít taky snahu vyjet za hranici, pokud bude extruder u hranice tiskové výšky, ale pravděpodobnost, že se dostanu s tiskem tak vysoko a ještě budu potřebovat pauzovat tisk je tak malá, že to zatím neřeším :)
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod FBITuco » 28.07.2014 08:46

Tady se dá vkládat i kód? Jsem si nevšiml :-)¨

á, takže jsem měl pravdu... Byla v tom y chyba... Jestli to mají ošetřený se mi už nechtělo hledat, ale tak nějak jsem s tím počítal.

Postneš tady tu chybu a řešení na web repetiteru?

Otázka - má cenu při té pauze zvedat Z a hýbat s Y? Podle mě je to moc zbytečných pohybů... Proto jsem tam dal NULL souřadnici a zahomoval jenom X. Nějak nepočítám s tím, že by i v home X byla možnost zašpinit výtisk...

EDIT: Dan... Musíš jet do home, nic jinýho ti stejně nezbyde :-D.
  • 0

FBITuco
 
Příspěvky: 58
Registrován: 10.03.2014 14:15
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod Rebel » 28.07.2014 09:52

Asi si nepochopil uplne presne, jak jsem to myslel, ale taky jsem to blbe napsal :D

Slo mi jen o to, aby se uprostred tisknu znovu nenastavil home Y, ktery nemusi byt vzdy presne na stejne pozici, diky drobnym nepresnostem koncoveho spinace a jeho mechanismu, stykove plochy packy vs. nerovnost stycne plochy na dilu atd.........

Tudiz klidne odjet do home, ale zabezpecit, aby se znovu home nesetnul - receno polopaticky laicky :)
  • 0

Dan - Rebel ? ;) - http://rebelove.org - Nevyzkoušíš = nevíš - Rebel I-III, Rebel sCUBE, Anycubic i3 MEGA, Anycubic - Kossel Mini, MeCretor2-upravený, Anycubic Photon, RR1, RR400M ! Pro STL přílohy použij čudlík "UMÍSTIT DO PŘÍSPĚVKU" !
Rebel
 
Příspěvky: 3896
Images: 243
Registrován: 12.08.2013 11:44
Bydliště: HK.......není Hong Kong :D
Reputation: 108
Zasloužil bys asi medajli :) Nebo jsi admin :D

Re: Repetier fw - chyba sd file print pause

Příspěvekod romanm » 28.07.2014 10:33

Ta funkce home neresetuje, prostě jenom zajede do místa, kde leží 0 a zastaví se o koncák.
Ale pro klid duše si tam můžeš nastavit natvrdo třeba 10, je to v absolutních hodnotách, takže se ti zastaví před koncákem :)
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod Bobici » 28.07.2014 10:35

pekna prace, taky to zkusim :wink:
  • 0

Bobici
 
Příspěvky: 95
Registrován: 26.02.2014 11:49
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod Rebel » 28.07.2014 11:16

Nemyslim si, ze je to o klidu duse, ale spis o jistote :)
Svym zpusobem ale jakekoli funkcni doreseni pauzy samozrejme prinosem :)
  • 0

Dan - Rebel ? ;) - http://rebelove.org - Nevyzkoušíš = nevíš - Rebel I-III, Rebel sCUBE, Anycubic i3 MEGA, Anycubic - Kossel Mini, MeCretor2-upravený, Anycubic Photon, RR1, RR400M ! Pro STL přílohy použij čudlík "UMÍSTIT DO PŘÍSPĚVKU" !
Rebel
 
Příspěvky: 3896
Images: 243
Registrován: 12.08.2013 11:44
Bydliště: HK.......není Hong Kong :D
Reputation: 108
Zasloužil bys asi medajli :) Nebo jsi admin :D

Re: Repetier fw - chyba sd file print pause

Příspěvekod romanm » 28.07.2014 12:04

Tak co mě se týče, taky jsem byl zprvu dost skeptický. Ale na tisku reprap kostičky 20x20x5 mi to chodilo. Samozřejmě, že u tisku 3h budu zvažovat, jestli pauzu použiju. Ale spíš jde o to mít tu možnost v případě nutnosti.

Ještě se dívám, že se tam čeká na vyprázdnění bufferu a pak teprv pauza. Mě by se docela hodila okamžitá pauza, když potřebuju co nejrychleji vyměnit drát, když tisknu blbosti ve dvou barvách.
To ještě zkusím, co to udělá, když nepočkám na buffer a pauznu to hned. Ale řekl bych, že se data z bufferu ztratí.
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod FBITuco » 28.07.2014 12:56

Rebel píše:Asi si nepochopil uplne presne, jak jsem to myslel, ale taky jsem to blbe napsal :D


Ale jo, pochopil jsem to... Ona je asi pravda, že by se dalo jet třeba na 1cm od home pozice. Jak už tu bylo napsáno, ono to nejede na home, ale na nula :-). Takže teoreticky by na to spínač vůbec neměl vliv. Prakticky samozřejmě může dojít k posunu, protože spínač má absolutní přednost... Však si tam můžeš dát co chceš :-). Klidně do conf.h udělej makro, který si tam napíšeš. Pak budeš moct nastavit kam to má při pauze jezdit :-)
  • 0

FBITuco
 
Příspěvky: 58
Registrován: 10.03.2014 14:15
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod romanm » 28.07.2014 14:05

Jen tak letmo jsem proletěl zdrojový kód a v třídě Printer existuje vlastnost currentPosition, takže teoreticky by stačilo řádek v pauze opravit, tak aby odčítal současnou pozici a tím pádem pak Y nepřejede za MAX hranici.

Kód: Vybrat vše
Printer::moveToReal(Printer::xMin,Printer::yMin+Printer::yLength-Printer::currentPosition[Y_AXIS],IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::maxFeedrate[X_AXIS]);


Zkompilovat to jde, jen to teď nemám na čem vyzkoušet.
Ale nevidím smysl v tom, proč by měl stolek vyjet úplně dopředu, když pak bude s výtiskem zavazet. To se hodí po skončení tisku, ale u pauzy je podle mě rozumnější zajet na nulu (budu tedy rozlišovat tyto dva jemné, ale podstatné rozdíly - home vs nula :))
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Re: Repetier fw - chyba sd file print pause

Příspěvekod romanm » 28.07.2014 19:17

Tak ne, takhle snadné to asi nebude :)
Zkompilovat to jde, nahrát do arduina to jde, ale při pauze to v ose Y popojede jen neznatelně. Asi to není ta správná hodnota. Nevím jak si zobrazit tu hodnotu na displej nebo do logu v repetier-host, nejsem programátor :) tak na to prdím, stačí, že mi ta pauza nějak funguje.
  • 0

romanm
 
Příspěvky: 177
Registrován: 16.02.2014 16:17
Reputation: 0

Další

Zpět na OSTATNÍ PROBLEMATIKA HW/SW

Kdo je online

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