Zaczynając od firmware 3.0.0, Original Prusa Multi-Material Upgrade (MMU) posiada zestaw zmiennych wykonawczych zwanych rejestrami. Można ich używać do odczytywania lub zapisywania wartości w MMU za pomocą kodów G. Ten artykuł zawiera listę dostępnych rejestrów w aktualnym firmware.
Mogą to być różne kody błędów i informacje o stanie związane z MMU (np. błędy filamentu, błędy silnika, ostrzeżenia o temperaturze itp.), określone parametry (prędkość posuwu, przyspieszenie, prąd itp.) oraz różne komponenty (koło pasowe, wybierak, koło zębate itp.).
Poniższa tabela zawiera rejestry 8-bitowe (wartość pusta: 0xFFh 255) i 16-bitowe (wartość pusta: 0xFFFFh 65535). Puste wartości pokazują maksymalną wartość, jaką może pomieścić rejestr.
Istnieją trzy różne typy dostępu:
- Odczyt: rejestr może być tylko odczytywany.
- Zapis: rejestr może być odczytywany i zapisywany. Zapisana zmiana nie jest trwała (ma zastosowanie tylko do momentu zresetowania MMU).
- Zapis trwały: rejestr może być odczytywany i zapisywany. Zapisane wartości są przechowywane w pamięci EEPROM nawet po ponownym uruchomieniu MMU.
Kody G
Ogólnie rzecz biorąc, rejestry znajdują się w MMU. Jednym ze sposobów odczytu/zapisu do rejestrów są kody G. Te, które będą tutaj potrzebne to:
- M707: służy do odczytu wartości z określonych adresów (np. wersja, aktualne kody błędów, stan filamentu).
- M708: służy do zapisywania wartości pod określonymi adresami, umożliwiając zmianę różnych parametrów drukarki.
| Adres | Bit/Typ | Nazwa | Prawidłowe wartości | Domyślne | Opis | Odczyt / Zapis | Odczyt G-code | Zapis G-code | |
|---|---|---|---|---|---|---|---|---|---|
| 0x00h 00 | uint8 | project_major | 00h 0 | ffh 255 | Wersja Project Major | Tylko odczyt | M707 A0x00 | N/D | |
| 0x01h 01 | uint8 | project_minor | 00h 0 | ffh 255 | Wersja Project Minor | Tylko odczyt | M707 A0x01 | N/D | |
| 0x02h 02 | uint8 | project_revision | 00h 0 | ffh 255 | Rewizja Project | Tylko odczyt | M707 A0x02 | N/D | |
| 0x03h 03 | uint8 | project_build _number | 00h 0 | ffh 255 | Numer kompilacji Project | Tylko odczyt | M707 A0x03 | N/A | |
| 0x04h 04 | uint16 | MMU_errors | 0000h 0 | ffffh 65535 | Błędy MMU | Odczyt / zapis trwały | M707 A0x04 | M708 A0x04 Xnnnn | |
| 0x05h 05 | uint8 | Current_Progress_Code | ffh 255 | ffh 255 | Pusty | Tylko odczyt | M707 A0x05 | N/D | |
| 00h 0 | OK | ||||||||
| 01h 1 | EngagingIdler | ||||||||
| 02h 2 | DisengagingIdler | ||||||||
| 03h 3 | UnloadingToFinda | ||||||||
| 04h 4 | UnloadingToPulley | ||||||||
| 05h 5 | FeedingToFinda | ||||||||
| 06h 6 | FeedingToBondtech | ||||||||
| 07h 7 | FeedingToNozzle | ||||||||
| 08h 8 | AvoidingGrind | ||||||||
| 09h 9 | FinishingMoves | ||||||||
| 0ah 10 | ERRDisengagingIdler | ||||||||
| 0bh 11 | ERREngagingIdler | ||||||||
| 0ch 12 | ERRWaitingForUser | ||||||||
| 0dh 13 | ERRInternal | ||||||||
| 0eh 14 | ERRHelpingFilament | ||||||||
| 0fh 15 | ERRTMCFailed | ||||||||
| 10h 16 | UnloadingFilament | ||||||||
| 11h 17 | LoadingFilament | ||||||||
| 11h 18 | SelectingFilamentSlot | ||||||||
| 12h 19 | PreparingBlade | ||||||||
| 13h 20 | PushingFilament | ||||||||
| 14h 21 | PerformingCut | ||||||||
| 15h 22 | ReturningSelector | ||||||||
| 16h 23 | ParkingSelector | ||||||||
| 17h 24 | EjectingFilament | ||||||||
| 18h 25 | RetractingFromFinda | ||||||||
| 19h 26 | Homing | ||||||||
| 1ah 27 | MovingSelector | ||||||||
| 1bh 28 | FeedingToFSensor | ||||||||
| 0x06h 06 | uint16 | Current_Error_Code | 0000h 0 | ffffh 65535 | RUNNING | Tylko odczyt | M707 A0x06 | N/D | |
| 0001h 1 | OK | ||||||||
| 8001h 32769 | FSENSOR_DIDNT _SWITCH_ON | ||||||||
| 8002h 32770 | FINDA_DIDNT _SWITCH_OFF | ||||||||
| 8003h 32771 | FSENSOR_DIDNT _SWITCH_ON | ||||||||
| 8004h 32772 | FSENSOR_DIDNT _SWITCH_OFF | ||||||||
| 8005h 32773 | FILAMENT_ALREADY _LOADED | ||||||||
| 8006h 32774 | INVALID_TOOL | ||||||||
| 8007h 32775 | Homing_FAILED | ||||||||
| 8008h 32776 | FINDA_VS_EEPROM<br />_DISREPANCY | ||||||||
| 8009h 32777 | FSENSOR_TOO _EARLY | ||||||||
| 802bh 32811 | QUEUE_FULL | ||||||||
| 802ch 32812 | VERSION_MISMATCH | ||||||||
| 802dh 32813 | PROTOCOL_ERROR | ||||||||
| 802eh 32814 | MMU_NOT_RESPONDING | ||||||||
| 802fh 32815 | INTERNAL | ||||||||
| 8200h 33280 | TMC_IOIN_MISMATCH | ||||||||
| 8240h 33344 | TMC_IOIN_MISMATCH PULLEY | ||||||||
| 8280h 33408 | TMC_IOIN_MISMATCH SELECTOR | ||||||||
| 8300h 33536 | TMC_IOIN_MISMATCH IDLER | ||||||||
| 83C0h 33728 | TMC_IOIN_MISMATCH All 3 | ||||||||
| 8400h 33792 | TMC_RESET | ||||||||
| 8440h 33856 | TMC_RESET PULLEY | ||||||||
| 8480h 33920 | TMC_RESET SELECTOR | ||||||||
| 8500h 34048 | TMC_RESET IDLER | ||||||||
| 85C0h 34240 | TMC_RESET All 3 | ||||||||
| 8800h 34816 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP | ||||||||
| 8840h 34880 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP PULLEY | ||||||||
| 8880h 34944 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP SELECTOR | ||||||||
| 8900h 35072 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP IDLER | ||||||||
| 89C0h 35264 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP All 3 | ||||||||
| 9000h 36864 | TMC_SHORT_TO_GROUND | ||||||||
| 9040h 36928 | TMC_SHORT_TO_GROUND PULLEY | ||||||||
| 9080h 36992 | TMC_SHORT_TO_GROUND SELECTOR | ||||||||
| 9100h 37120 | TMC_SHORT_TO_GROUND IDLER | ||||||||
| 91C0h 37312 | TMC_SHORT_TO_GROUND All 3 | ||||||||
| A000h 40960 | TMC_OVER_TEMPERATURE _WARN | ||||||||
| A040h 41024 | TMC_OVER_TEMPERATURE _WARN PULLEY | ||||||||
| A080h 41088 | TMC_OVER_TEMPERATURE _WARN SELECTOR | ||||||||
| A100h 41216 | TMC_OVER_TEMPERATURE _WARN IDLER | ||||||||
| A1C0h 41408 | TMC_OVER_TEMPERATURE _WARN All 3 | ||||||||
| C000h 49152 | TMC_OVER_TEMPERATURE _ERROR | ||||||||
| C040h 49216 | TMC_OVER_TEMPERATURE _ERROR PULLEY | ||||||||
| C080h 49280 | TMC_OVER_TEMPERATURE _ERROR SELECTOR | ||||||||
| C100h 49408 | TMC_OVER_TEMPERATURE _ERROR IDLER | ||||||||
| C1C0h 49600 | TMC_OVER_TEMPERATURE _ERROR All 3 | ||||||||
| 0x07h 07 | uint8 | Filament_State | 00h 0 | ffh 255 | Stan filamentu | Odczyt / zapis | M707 A0x07 | M708 A0x07 Xnn | |
| 0x08h 08 | uint8 | FINDA_State | 00h 0 | ffh 255 | nie wywołana | Read only | M707 A0x08 | N/A | |
| 01h 1 | wywołana | ||||||||
| 0x09h 09 | uint8 | FSensor_State | 00h 0 | ffh 255 | nie wywołany | Odczyt / zapis | M707 A0x09 | M708 A0x09 Xnn | |
| 01h 1 | wywołany | ||||||||
| 0x0ah 10 | uint8 | Motor_Mode | 00h 0 | 00h 0 | normalny | Tylko odczyt | M707 A0x0a | N/D | |
| 01h 1 | stealth | ||||||||
| 0x0bh 11 | uint8 | extra_load_distance | 00h 0 | 1eh 30 | unit mm | Odczyt / zapis | M707 A0x0b | M708 A0x0b Xnn | |
| 0x0ch 12 | uint8 | FSensor_unload _check_dist. | 00h 0 | 28h 30 | jednostka mm | Odczyt / zapis | M707 A0x0c | M708 A0x0c Xnn | |
| 0x0dh 13 | uint16 | Pulley_unload _feedrate | 0000h 0 | 0078h 120 | jednostka mm/s | Odczyt / zapis | M707 A0x0d | M708 A0x0d Xnnnn | |
| 0x0eh 14 | uint16 | Pulley_acceleration | 0000h 0 | 320h 800.0 | jednostka mm/s² | Odczyt (zapis) | M707 A0x0e | (M708 A0x0e Xnnnn) | |
| 0x0fh 15 | uint16 | Selector_acceleration | 0000h 0 | 00c8h 200.0 | jednostka mm/s² | Odczyt (zapis) | M707 A0x0f | (M708 A0x0f Xnnnn) | |
| 0x10h 16 | uint16 | Idler_acceleration | 0000h 0 | 01f4h 500.0 | jednostka deg/s² | Odczyt (zapis) | M707 A0x10 | (M708 A0x10 Xnnnn) | |
| 0x11h 17 | uint16 | Pulley_load_feedrate | 0000h 0 | 0050h 80 | jednostka mm/s | Odczyt / zapis | M707 A0x11 | M708 A0x11 Xnnnn | |
| 0x12h 18 | uint16 | Selector_nominal _feedrate | 0000h 0 | 002dh 45 | jednostka mm/s | Odczyt / zapis | M707 A0x12 | M708 A0x12 Xnnnn | |
| 0x13h 19 | uint16 | Idler_nominal _feedrate | 0000h 0 | 012ch 300 | jednostka deg/s | Odczyt / zapis | M707 A0x13 | M708 A0x13 Xnnnn | |
| 0x14h 20 | uint16 | Pulley_slow_feedrate | 0000h 0 | 0014h 20 | jednostka mm/s | Odczyt / zapis | M707 A0x14 | M708 A0x14 Xnnnn | |
| 0x15h 21 | uint16 | Selector_homing _feedrate | 0000h 0 | 001eh 30 | jednostka mm/s | Odczyt (zapis) | M707 A0x15 | (M708 A0x15 Xnnnn) | |
| 0x16h 22 | uint16 | Idler_homing _feedrate | 0000h 0 | 0109h 265 | jednostka deg/s | Odczyt (zapis) | M707 A0x16 | (M708 A0x16 Xnnnn) | |
| 0x17h 23 | uint8 | Pulley_sg_thrs__R | 00h 0 | 08h 8 | Odczyt / zapis trwały | M707 A0x17 | M708 A0x17 Xnn | ||
| 0x18h 24 | uint8 | Selector_sg_thrs_R | 00h 0 | 03h 3 | Odczyt / zapis trwały | M707 A0x18 | M708 A0x18 Xnn | ||
| 0x19h 25 | uint8 | Idler_sg_thrs_R | 00h 0 | 06h 6 | Odczyt / zapis trwały | M707 A0x19 | M708 A0x19 Xnn | ||
| 0x1ah 26 | uint16 | Get Pulley position | 0000h 0 | ffffh 65535 | jednostka mm | Tylko odczyt | M707 A0x1a | N/D | |
| 0x1bh 27 | uint16 | Set/Get_Selector_slot | 0000h 0 | ffffh 65535 | jednostka pozycja filamentu [0-4/5] 5=parking | Odczyt / zapis | M707 A0x1b | M708 A0x1b Xn | |
| 0x1ch 28 | uint16 | Set/Get_Idler_slot | 0000h 0 | ffffh 65535 | jednostka pozycja filamentu [0-4/5] 5=rozłączony | Odczyt / zapis | M707 A0x1c | M708 A0x1c Xn | |
| 0x1dh 29 | uint8 | Set/Get Selector cut iRun current | 0 to 63 (aka 0-1024mA) | 31 (530mA) | Odczyt / zapis | M707 A0x1d | M708 A0x1d Xn | ||
| 0x1eh 30 | uint16 | Set/Get Pulley iRun current | 0-31 | 14h 20 | 20->350mA: zobacz TMC2130 konwersja prądu | Odczyt / zapis | M707 A0x1e | M708 A0x1e Xn | |
| 0x1fh 31 | uint16 | Set/Get Selector iRun current | 0-31 | 1fh 31 | 31->530mA: zobacz TMC2130 konwersja prądu | Odczyt / zapis | M707 A0x1f | M708 A0x1f Xn | |
| 0x20h 32 | uint16 | Set/Get Idler iRun current | 0-31 | 1fh 31 | 31->530mA: zobacz TMC2130 konwersja prądu | Odczyt / zapis | M707 A0x20 | M708 A0x20 Xn | |
| 0x21h 33 | uint16 | Reserved for internal use | 225 | N/D | N/D | N/D | N/D | ||
| 0x22h 34 | uint16 | Bowden length | 341-1000 | 168h 360 | unit mm | Odczyt / zapis trwały | M707 A0x22 | M708 A0x22 Xn | |
| 0x23h 35 | uint8 | Cut length | 0-255 | 8 | jednostka mm | / Zapis | M | M708 A0x23 | M | M708 A0x23 Xn |