Прошивка Marlin 2.0.9.1 для X5SA: Ошибка компиляции MM_PER_ARC_SEGMENT

У меня есть принтер Tronxy X5SA, на который я хочу установить последнюю версию прошивки Marlin v2.0.9.1.

Я беру пример конфигурации на GitHub для принтера X5SA и изменяю строки в configuration.h, как рекомендовано в руководстве (см. Этот URL-адрес).

В коде Visual Studio при компиляции я получаю следующую ошибку :

Marlin\src\gcode\motion\G2_G3.cpp: In function 'void plan_arc(const xyze_pos_t&, const ab_float_t&, bool, uint8_t)':
Marlin\src\gcode\motion\G2_G3.cpp:154:7: error: 'MM_PER_ARC_SEGMENT' was not declared in this scope
       MM_PER_ARC_SEGMENT
       ^~~~~~~~~~~~~~~~~~
Marlin\src\gcode\motion\G2_G3.cpp:154:7: note: suggested alternative: 'MAX_ARC_SEGMENT_MM'
       ^~~~~~~~~~~~~~~~~~
       MAX_ARC_SEGMENT_MM
Compiling .pio\build\chitu_f103\src\src\gcode\sd\M20.cpp.o
*** [.pio\build\chitu_f103\src\src\gcode\motion\G2_G3.cpp.o] Error 1
========================================================================================= [FAILED] Took 71.95 seconds ========================================================================================= 

Environment    Status    Duration
-------------  --------  ------------
chitu_f103     FAILED    00:01:11.945
==================================================================================== 1 failed, 0 succeeded in 00:01:11.945 ==================================================================================== 
PS D:\TRONXY\Marlin-2.0.9.1\Marlin-2.0.9.1> echo "done" >C:\Users\myUser\AppData\Local\Temp\ipc
PS D:\TRONXY\Marlin-2.0.9.1\Marlin-2.0.9.1> 

Вот код в G2_G3.cpp на линии 154, но мне нужна помощь, чтобы понять, почему это неправильно и как исправить...

 // Начать с номинальной длины сегмента
  float seg_length = (
    #ifdef ARC_SEGMENTS_PER_R
      constrain(MM_PER_ARC_SEGMENT * radius, MM_PER_ARC_SEGMENT, ARC_SEGMENTS_PER_R)
    #elif ARC_SEGMENTS_PER_SEC
      _MAX(scaled_fr_mm_s * RECIPROCAL(ARC_SEGMENTS_PER_SEC), MM_PER_ARC_SEGMENT)
    #else
      MM_PER_ARC_SEGMENT // LINE 154 HERE!!
    #endif
  );
  // Разделить общее количество поездок на номинальную длину сегмента
  uint16_t segments = FLOOR(mm_of_travel / seg_length);
  NOLESS(segments, min_segments);         // По крайней мере, некоторые сегменты
  seg_length = mm_of_travel / segments;

Я попытался успешно скомпилировать версию исправления ошибок, но, к сожалению, версия исправления ошибок не работает должным образом с моим принтером (я не могу заставить стол подняться к зонду. Я открыл еще одно сообщение о проблеме с исправлением версии).

, 👍1


1 ответ


Лучший ответ:

1

Компилятор не может видеть определение MM_PER_ARC_SEGMENT. Найдите файл, в котором он объявлен, и убедитесь, что этот файл включен в команду компиляции как include (#include) или путь или что-то еще.

Если посмотреть текущую Конфигурацию_adv.h в репозитории Marlin Github, определение находится в Строке 2033 в разделе в строках 2028-2041

//
// G2/G3 Arc Support
//
#define ARC_SUPPORT                 // Отключите эту функцию, чтобы сохранить ~3226 байт
#if ENABLED(ARC_SUPPORT)
  #define MM_PER_ARC_SEGMENT      1 // (мм) Длину (или минимальную длину) каждого сегмента дуги
  //#define ARC_SEGMENTS_PER_R    1 // Максимальная длина сегмента, MM_PER = Мин
  #define MIN_ARC_SEGMENTS       24 // Минимальное количество сегментов в полном круге
  //#define ARC_SEGMENTS_PER_SEC 50 // Используйте скорость подачи для выбора длины сегмента (с минимальным значением MM_PER_ARC_SEGMENT)
  #define N_ARC_CORRECTION       25 // Количество интерполированных сегментов между исправлениями
  //#define ARC_P_CIRCLES           // Включить параметр 'P' для указания полных окружностей
  //#define CNC_WORKSPACE_PLANES    // Разрешить G2/G3 работать в плоскостях XY, ZX или YZ
  //#define SF_ARC_FIX              // Включить только при использовании Скейнфорджа с процедурой скругления "Точка дуги" 
#endif

Убедитесь, что у вас включена поддержка ARC_SUPPORT - нет комментария в следующей строке (2031):

#define ARC_SUPPORT 

,