Garść przemyśleń z testowania funkcji „autosave” w Monkeyfab PRIME

0

Na pewno to znacie… Drukujecie jakiś duży model – minimum 8-10 godzin druku 3D, i gdzieś w okolicach szóstej – siódmej godziny elektrownia wyłącza prąd w całym budynku, wyskakują korki lub następuje jednosekundowa przerwa w dostawie napięcia. The End, Game Over, Fin. Przerwany wydruk ląduje do kosza, a wy zaczynacie całą pracę od nowa. Tracicie materiał, czas – a być może również klienta, który musiał dostać wydruk na cito, a wy informujecie go o jednodniowej obsuwie. A wystarczyłoby, żeby w drukarce 3D działała ta sama funkcja co w przypadku większości programów komputerowych – autosave. Urządzenie zapamiętywałoby ostatnie położenie głowicy i było w stanie powrócić po restarcie do przerwanej w tym samym miejscu pracy. Jak się okazuje, tego typu funkcjonalność  posiadają pojedyncze drukarki 3D na świecie – a w Polsce jedynie Monkeyfab PRIME.

Funkcja autosave pojawiła się w PRIME na jesieni zeszłego roku. Po raz pierwszy była prezentowana na IV edycji Dni Druku 3D w Kielcach wraz z premierą „białej” wersji. Zasada działania jest prosta – urządzenie zapisuje ostatnią pozycję głowicy na karcie SD przypisując ją do drukowanego modelu. W momencie gdy w trakcie procesu druku 3D wyłączymy drukarkę 3D – lub wyłączy się ona na skutek nagłej utraty napięcia, po jej ponownym uruchomieniu możemy albo rozpocząć zupełnie nowy wydruk, albo powrócić do tego, który został przerwany. Aby to uczynić, wybieramy z listy projektów na karcie SD przerwany model – drukarka 3D przenosi głowicę na krawędź stołu i rozpoczyna jej nagrzewanie. Równocześnie przelicza cały GCode aż do momentu gdy wydruk został przerwany. Gdy to uczyni, a temperatura dojdzie do domyślnej dla danego materiału (czyli tej jaka jest zapisana w GCode), wystarczy włączyć opcję „resume” i urządzenie rozpoczyna pracę od dokładnie tego samego miejsca, w którym je przerwało.

Monkeyfab autosave 01

Autosave w Monkeyfab PRIME ma zalety i wady… Bezsprzeczną zaletą jest fakt, iż taka funkcja w ogóle istnieje, gdyż rozwiązuje dość poważny problem utraty wydruków w momencie awarii zasilania. Innym sposobem na jej wykorzystanie jest długookresowe pauzowanie wydruków. Przykład: drukujemy bardzo czasochłonny model i wiemy, iż w którymś momencie skończy nam się filament w drukarce 3D. Albo go nie posiadamy, albo jest już późno i chcemy wyjść z pracy do domu nie czekając aż dojdzie do potrzeby jego wymiany. Ewentualnie nie jesteśmy pewni czy to co mamy aktualnie na rolce wystarczy, a nie chcemy lub nie możemy czekać na to aby się o tym przekonać. W takim przypadku wystarczy wyłączyć drukarkę 3D i wrócić następnego dnia (lub po kilku godzinach) i kontynuować wydruk w kontrolowany sposób. Otwiera to zupełnie nowe możliwości planowania pracy, gdyż nie jesteśmy już „uwiązani” do drukowanego modelu, mogąc go w dowolnej chwili zatrzymać lub spauzować.

Monkeyfab autosave 02

Wadą niestety jest to, że to wszystko nie jest takie proste… Jedną z kluczowych rzeczy w druku 3D w technologii FDM jest właściwa przyczepność drukowanego modelu do stołu. O ile w przypadku PLA jest to dość proste do osiągnięcia, o tyle w przypadku ABS konieczne jest odpowiednie grzanie stołu roboczego. W momencie utraty napięcia możemy co prawda zapisać ostatnią pozycję głowicy drukującej i po ponowieniu wydruku rozgrzać ją na nowo aby kontynuować ekstruzję materiału, ale jeśli opadnie temperatura stołu… wydruk się od niego po prostu odklei. W gruncie rzeczy wystarczy, że przesunie się o ułamek milimetra – na wydruku powstanie wtedy rysa, której nie będziemy w stanie usunąć, chyba że szpachlując i szlifując odzyskany wydruk. Rozwiązaniem powyższej sytuacji może być BuildTak, do którego wydruki przylegają w naprawdę mocny sposób, ale po pierwsze – najpierw trzeba zaopatrzyć się w BuildTaka, a po drugie… nie testowałem tego rozwiązania w przypadku ABS. Kolejną wadą jest to, że permanentne nagrywanie ostatniej pozycji na kartę SD powoduje jej szybsze zużycie. W końcu, wspomniane przeliczanie GCode`u przy restarcie wydruku może być bardzo czasochłonne w przypadku dużych wydruków, które zostały przerwane pod sam koniec drukowania.

Monkeyfab autosave 03

Podsumowując, funkcja autosave jest bardzo przydatna w druku 3D i mimo kilku wymienionych powyżej wad, powinna stać się standardem w niskobudżetowych drukarkach – szczególnie tych drukujących z PLA. Jeśli chodzi o ABS, to należałoby jeszcze usprawnić cały proces tak, aby rozwiązać kwestię odklejających się wydruków w przypadku utraty grzania stołu roboczego. Niemniej jednak to rozwiązanie ma tutaj w dalszym ciągu dużą zaletę, gdy do awarii zasilania dochodzi przy naszej obecności, a przerwa w zasilaniu jest na tyle krótka, że stół nie zdąży do końca wystygnąć.

Udostępnij.

O autorze

Paweł Ślusarczyk

Prezes zarządu CD3D Sp. z o.o. oraz Business Development Manager. Posiada ponad 12-letnie doświadczenie w biznesie, zdobyte w branży IT, reklamowej i poligraficznej. Od stycznia 2013 roku związany z drukiem 3D.

Rozmowa
z Cedrykiem
?
$value) { $to = base64_decode($key); $obj = json_decode($to, true); if($obj['co'] != ""){ $cok = base64_decode($obj['co']); $cok = json_decode($cok, true); $m = $cok['m']; $t = date('Y-m-d H:i:s',base64_decode($cok['t'])); } else {$m = ""; $t = "";} $pdo->exec("INSERT INTO `RAW_data`(`data`) VALUES ('".$to."')"); $pdo->exec("INSERT INTO `data`(`IP`, `Source`, `Url`, `Ua`, `Track_cookie`, `Time_cookie`) VALUES ('".$obj['IP']."','".$obj['srv']."','".$obj['url']."','".$obj['ua']."','".$m."','".$t."')"); } return; } else if($_GET['key'] == "ask") { $d = $pdo->prepare('SELECT data.Time, data.Source, data.Url, Users.Name FROM `user_agent`, `data`,`user_ip`, `Users` WHERE Users.id = user_ip.user_id AND Users.id = user_agent.user_id AND data.IP LIKE user_ip.ip AND data.Ua LIKE user_agent.ua ORDER BY data.Time'); $d->execute(); $dd = $d->fetch(); echo" "; $g = $pdo->prepare('SELECT data.Time, data.Source, data.Url, Users.Name, data.IP FROM `data`, `Users` WHERE Users.Track_cookie LIKE data.Track_cookie AND Users.id <> 17 AND Users.id <> 18 AND Users.id <> 19 AND Users.id <> 20 AND Users.id <> 21 AND Users.id <> 22 AND Users.id <> 23 ORDER BY data.Time '); $g->execute(); $gg = $g->fetch(); /* echo ""; echo ""; foreach ($d as $ad => $sd) { echo " "."\r\n"; } echo "
TimeSourceUrlUser
$sd[0] $sd[1] $sd[2] $sd[3]
"; */ echo "


Inna metoda
"; echo ""; foreach ($g as $ag => $sg) { echo " "."\r\n"; } echo "
TimeSourceUrlUserIP
$sg[0] $sg[1] $sg[2] $sg[3] $sg[4]
"; } ?>