Перейти к основному содержанию

Устранение ошибок TMC

Технический контекст​

Драйверы TMC (Trinamic) сообщают о состоянии и ошибках через специальные регистры. Понимание этих регистров помогает быстро диагностировать проблемы:

  • Регистр IFCNT: Счетчик кадров связи, используется для проверки нормальной связи между основным контроллером и драйвером.
  • Регистр GSTAT: Регистр глобального состояния, содержит информацию о глобальном состоянии, такую как сброс, ошибки драйвера и т.д.
  • Регистр DRV_STATUS: Регистр состояния драйвера, предоставляет подробную информацию о рабочем состоянии драйвера, включая предупреждения о температуре, короткое замыкание, обрыв цепи и другие неисправности.

Когда Klipper сообщает об ошибке TMC, обычно отображаются конкретные значения регистров и флаги неисправности. Ошибка драйвера TMC означает, что микросхема драйвера обнаружила проблему и отключилась в целях самозащиты. Klipper переходит в состояние shutdown, обнаружив отключение драйвера.

Отключение питания

Перед проверкой перемычек, модулей драйверов, проводов двигателей, распиновки SPI/UART или клеммных колодок полностью выключите принтер и отключите его от источника питания. Запрещается подключать или отключать модули драйверов или провода шаговых двигателей под напряжением. Режим измерения сопротивления мультиметра можно использовать только при отключенном питании.

Нет связи с драйвером (Ошибка связи IFCNT)​

Сообщение об ошибке: Unable to read tmc uart 'stepper_x' register IFCNT или Unable to read tmc spi 'stepper_x' register IFCNT.

Loading...

Причина ошибки: Сбой связи между драйвером TMC (режим UART/SPI) и основным контроллером, что приводит к невозможности чтения значения регистра IFCNT. Обычно возникает из-за неустановленной перемычки UART, аномального питания платы драйвера или неправильной конфигурации выводов UART/SPI.

Методы решения:

  1. После отключения питания проверьте правильность установки перемычки UART для соответствующего драйвера.
  2. Убедитесь, что uart_pin (или spi_bus / spi_software_*_pin) в конфигурации TMC в printer.cfg соответствует фактическому подключению.
  3. Сначала проверьте состояние питания по светодиодному индикатору и направлению установки модуля драйвера. Если индикатор в норме, а модуль установлен правильно, но проблема остается, замените кабель на заведомо исправный или проведите перекрестную проверку (переставьте драйвер на другой порт). Электрические проверки оголенных клемм 24V следует доверить службе поддержки или квалифицированному специалисту.
  4. Если ошибка возникает сразу после первой прошивки Klipper, выключите принтер на несколько секунд (одновременно отключив USB и основное питание), затем снова включите, чтобы очистить остаточное состояние драйвера.
  5. После отключения питания попробуйте заменить плату драйвера или переключить порт драйвера для тестирования.
  6. При использовании драйверов не от FLY, проверьте определение контакта UART (у драйверов FLY контакт UART обычно является четвертым контактом слева сверху вниз).
Loading...

Для особых случаев, когда контакт UART приобретенного драйвера находится на пятом выводе, можно решить проблему с помощью следующих действий с перемычкой:

Loading...
  1. Проверьте соответствие uart_address аппаратной перемычке платы драйвера.
  2. Проверьте целостность кабеля данных, отсутствие разрывов или плохого контакта.

Перегрев драйвера (OvertempError / OvertempWarning)​

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... ot=1(OvertempError!) или otpw=1(OvertempWarning!).

Loading...

Причина ошибки: Температура микросхемы драйвера TMC превысила безопасный порог, сработала защита. Обратите внимание: это перегрев драйвера, а не двигателя!

  • OvertempWarning (otpw): Превышение порога предупреждения около 120°C, драйвер все еще может работать, но рекомендуется провести диагностику.
  • OvertempError (ot): Превышение порога отключения около 150°C, драйвер автоматически отключается.

Методы решения:

  1. Уменьшите рабочий ток двигателя (run_current), рекомендуется сначала снизить на 20-30%.
  2. Если установлен ток удержания (hold_current), можно уменьшить его или полностью отключить.
  3. Проверьте, хорошо ли прилегает радиатор драйвера и достаточно ли термопасты.
  4. Установите вентилятор охлаждения драйвера, обеспечьте циркуляцию воздуха.
  5. Убедитесь, что значение токоизмерительного резистора (sense resistor) платы драйвера настроено правильно.
  6. Уменьшите stealthchop_threshold или переключитесь в режим spreadCycle.
  7. Проверьте, не замкнуто ли пространство установки драйвера, что может приводить к накоплению тепла. Избегайте длительной работы в условиях высокой температуры.

Ошибка короткого замыкания (ShortToGND / ShortToSupply)​

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) или s2ga=1(ShortToGND_A!).

Причина ошибки: Драйвер обнаружил чрезвычайно высокий ток. Возможные причины: ослабление или короткое замыкание проводов двигателя, повреждение изоляции обмотки двигателя, или перегрузка по току из-за неточного прогнозирования нагрузки в режиме stealthChop.

Методы решения:

  1. Сначала отключите питание. Проверьте, не ослаблены ли и не повреждены ли провода соответствующего двигателя. Измерьте сопротивление катушек двигателя мультиметром в режиме измерения сопротивления (нормальное значение около 1,5–3 Ом).
  2. После отключения питания проверьте надежность разъемов двигателя.
  3. При необходимости заземления корпуса двигателя используйте точку заземления, предоставленную производителем, или обратитесь в службу поддержки. Не изменяйте самостоятельно провод заземления питания или оголенные клеммы.
  4. Попробуйте отключить stealthChop для теста: SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadCycle VALUE=1
  5. Если после переключения ошибка исчезла, это проблема прогнозирования stealthChop; в противном случае, вероятно, реальное аппаратное короткое замыкание.

Ошибка обрыва цепи (OpenLoad)​

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... ola=1(OpenLoad_A!) или olb=1(OpenLoad_B!).

Причина ошибки: Драйвер обнаружил, что одна из фаз обмотки двигателя не образует эффективную нагрузку. Обычно это указывает на обрыв провода двигателя, ослабление разъема, неправильное подключение катушек, или ложное срабатывание при низком токе/в режиме stealthChop.

Методы решения:

  1. После отключения питания переподключите провода двигателя, убедитесь в надежности обжима клемм.
  2. Сначала отключите питание. Измерьте сопротивление катушек фаз A и B мультиметром. Значения должны быть близки и не должны указывать на обрыв.
  3. После отключения питания проверьте распиновку проводов двигателя, убедитесь, что два провода фазы A находятся в одной группе, а два провода фазы B — в другой.
  4. Временно отключите stealthChop: установите в конфигурации stealthchop_threshold: 0 и протестируйте.
  5. Увеличьте run_current для теста. Если ошибка появляется только при очень низком токе, это может быть ложное срабатывание.
  6. После отключения питания замените провода двигателя или сам двигатель для перекрестной проверки и определите, связана ли проблема с проводкой, двигателем или портом драйвера.

Комбинированная ошибка короткого замыкания и обрыва (Короткое замыкание фазы A, обрыв фазы B)​

Сообщение об ошибке: TMC 'extruder' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) csactual=31 ola=1(OpenLoad_A!) olb=1(OpenLoad_B!).

Причина ошибки: Биты диагностики неисправности драйвера TMC указывают на аппаратную проблему: s2vsa=1 указывает на короткое замыкание фазы A на питание, ola=1 — на обрыв фазы A, olb=1 — на обрыв фазы B, csactual=31 — возможно, слишком высокое значение установленного тока. Эти неисправности часто возникают вместе и указывают на серьезные аппаратные проблемы двигателя или драйвера.

Методы решения:

  1. Сначала отключите питание. Измерьте мультиметром сопротивление катушек фаз A и B шагового двигателя, они должны быть одинаковыми (обычно 1-2 Ом и значения должны быть близки).
  2. После отключения питания тщательно проверьте жгуты проводов шагового двигателя и разъемы на наличие ослабления, короткого замыкания или плохого контакта.
  3. Проверьте соответствие настройки тока драйвера TMC, слишком высокий ток может вызвать эти проблемы.
  4. Попробуйте отключить режим stealthChop для теста: установите в конфигурации stealthchop_threshold: 0.

Комбинированная ошибка короткого замыкания и обрыва (Короткое замыкание фазы B, обрыв фазы A)​

Сообщение об ошибке: TMC 'extruder' reports error: DRV_STATUS: ... s2vsb=1(ShortToSupply_B!) ola=1(OpenLoad_A!) cs_actual=25.

Loading...

Причина ошибки: Биты диагностики неисправности драйвера TMC указывают: s2vsb=1 — короткое замыкание фазы B на питание, ola=1 — обрыв фазы A, cs_actual=25 — значение установленного тока. Обычно вызывается: неправильным подключением двигателя (перепутаны или замкнуты фазы A/B), неисправностью самого двигателя (обрыв обмотки) или аппаратной проблемой платы драйвера.

Методы решения:

  1. Сначала отключите питание. Измерьте мультиметром сопротивление катушек фаз A и B шагового двигателя, они должны быть одинаковыми (в норме должны быть близки).
  2. После отключения питания убедитесь в правильности распиновки двигателя; обычно левая группа — фаза A, правая группа — фаза B.
  3. После отключения питания проверьте, все ли клеммные соединения надежны, нет ли ослабления или плохого контакта.
  4. Если возможно, после отключения питания подключите двигатель к другому заведомо исправному порту драйвера для тестирования.

Ошибка GSTAT драйвера TMC (пониженное напряжение/сброс)​

Сообщение об ошибке: TMC 'xxx' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!), а также последующее TMC 'xxx' reports error: GSTAT: 80000000 (также может быть 40000000 и другие показания, где установлен только старший бит).

Значение: GSTAT — это регистр глобального состояния драйвера TMC, определены только младшие 3 бита:

  • reset=1 (bit0): драйвер подвергался сбросу (например, автоматический сброс после подачи питания или отключения из-за пониженного напряжения).
  • drv_err=1 (bit1): внутренняя ошибка драйвера, обычно сопровождается конкретными флагами неисправности в DRV_STATUS.
  • uv_cp=1 (bit2): пониженное напряжение зарядового насоса, что указывает на пониженное напряжение или кратковременный перерыв питания двигателя на стороне драйвера (VM, обычно 24V), драйвер уже не может работать нормально.

Показания старших битов, такие как 80000000, 40000000, не являются новыми кодами неисправности, а представляют собой недопустимые данные, считанные по SPI после сброса драйвера из-за отключения питания. Возможность декодировать конкретные флаги reset, uv_cp и т.д. как раз свидетельствует о том, что SPI-связь本身 исправна, проблема в цепи питания драйвера, а не в связи; только когда показания каждого драйвера длительное время представляют собой бессмысленный набор символов (например, случайно изменяющиеся ffffffff), необходимо проверять подключение SPI (см. Ошибка SPI-связи).

Частые причины:

  • Плохой контакт в цепи питания 24V: ненадёжная опрессовка клемм питания, слишком тонкий провод, плохой контакт держателя предохранителя, ослабление клемм распределения VM внутри платы.
  • Недостаточная нагрузочная способность источника питания или просадка при нагрузке: ток максимален в момент одновременного включения нескольких двигателей (например, при выполнении G28 одновременно запитываются несколько двигателей оси Z), это наиболее вероятный момент для срабатывания защиты от пониженного напряжения; даже если мощность источника питания кажется достаточной (например, 600W/24V), следует в первую очередь проверять клеммы и кабельную цепь.
  • Короткое замыкание фазных проводов двигателя или повреждение проводов двигателя: короткое замыкание мгновенно снижает VM, что приводит к одновременному сообщению о пониженном напряжении несколькими драйверами в одной цепи питания.
  • Когда несколько драйверов в одной цепи VM (например, z/z1/z2/z3) почти одновременно сообщают об ошибке GSTAT, можно в основном исключить повреждение отдельного драйвера и следует сосредоточить проверку на общей цепи питания.

Способы решения:

Работы при отключённом питании

Перед проверкой клемм питания, кабельной цепи, предохранителя или проводов двигателя полностью выключите принтер и отключите питание. Не подключайте и не отключайте кабельные цепи и не прикасайтесь к клеммам под напряжением.

  1. После отключения питания проверьте входные клеммы 24V от PSU к материнской плате: убедитесь в надёжности опрессовки, отсутствии ослабления, отсутствии почернения или следов обгорания; для материнских плат с несколькими входами убедитесь, что подключён каждый вход.
  2. После отключения питания проверьте, соответствует ли сечение кабельной цепи 24V требованиям по току, проверьте надёжность контакта держателя предохранителя (при наличии) и правильность номинала предохранителя.
  3. После отключения питания проверьте мультиметром в режиме сопротивления/прозвонки провода двигателя и двигатель: убедитесь в отсутствии повреждения изоляции проводов двигателя, отсутствии межфазного короткого замыкания, нормальном и близком сопротивлении двух групп обмоток A/B (ориентировочное значение около 1~3Ω, при реальном измерении возможна погрешность, основным критерием является совпадение показаний двух групп).
  4. Рассчитайте нагрузочную способность источника питания: суммируйте общую мощность одновременно работающих двигателей, нагревателей, стола подогрева и оставьте запас; если мощности достаточно, но проблема повторяется, сосредоточьтесь на проверке клемм и кабельной цепи согласно шагам 1, 2.
  5. При наличии условий для измерения низкого напряжения можно после повторного включения измерить напряжение на входных клеммах 24V материнской платы и наблюдать, не происходит ли заметная просадка напряжения при одновременном включении нескольких двигателей (например, при выполнении G28) (ориентировочное значение: должно стабильно держаться вблизи 24V, при реальном измерении возможна погрешность, основным критерием является тенденция изменения). При измерении не допускайте короткого замыкания щупами соседних выводов во избежание вторичного короткого замыкания.
  6. Перекрёстная проверка: после отключения питания переключите двигатель оси, сообщающей об ошибке, на другой порт драйвера или замените готовую кабельную цепь двигателя для проверки, чтобы отличить проблему кабельной цепи/двигателя от проблемы цепи питания.
  7. Для дальнейшей электрической проверки оголённых клемм и проблем с самим источником питания обратитесь в сервисную службу или к специалистам, не разбирайте источник питания самостоятельно.

Справочная информация по конфигурации:

Для машин с несколькими двигателями Z следует задать отдельный run_current для каждого драйвера оси Z, умеренное снижение тока может уменьшить мгновенную просадку напряжения при одновременном включении (значения необходимо корректировать в соответствии с фактическим состоянием машины, это не заменяет проверку цепи питания):

[tmc5160 stepper_z]
run_current: 1.2

[tmc5160 stepper_z1]
run_current: 1.2

Во время диагностики можно использовать DUMP_TMC STEPPER=xxx для чтения полных регистров драйвера и подтверждения состояния GSTAT и DRV_STATUS в реальном времени.

Связанные подразделы: диагностика при наличии только флага сброса см. Сброс драйвера (Reset), защита от пониженного напряжения в DRV_STATUS см. Защита от пониженного напряжения (Undervoltage).

Защита от пониженного напряжения (Undervoltage)​

Сообщение об ошибке: TMC 'stepper_x' reports error: DRV_STATUS: ... uv_cp=1(Undervoltage!).

Причина ошибки: Драйвер обнаружил событие пониженного напряжения питания. Обычно вызывается неисправностью источника питания, ослаблением соединений или недостаточной мощностью источника питания.

Методы решения:

  1. После полного отключения питания проверьте внешний вид проводов питания, разъемов питания материнской платы и клемм на наличие ослабления, потемнения или обгорания.
  2. Убедитесь, что спецификации источника питания соответствуют общей потребляемой мощности драйверов и нагревателей.
  3. Проведите замену на заведомо исправный блок питания или жгут проводов для проверки.
  4. Электрические проверки оголенных клемм 24V следует доверить службе поддержки или квалифицированному специалисту, не пытайтесь выполнять их самостоятельно.

Ошибка связи SPI (DRV_STATUS: ffffffff)​

Сообщение об ошибке: Unable to write tmc spi 'stepper_x' register ..., TMC reports error: DRV_STATUS: ffffffff ... или READRSP@RDSEL2: 00000000 ....

Причина ошибки: Невозможность связи с драйвером TMC в режиме SPI (tmc2130/tmc5160/tmc2660). Обычно это связано с ошибкой подключения SPI, наличием не сконфигурированного устройства на шине SPI или сбросом/неисправностью самого драйвера TMC.

Методы решения:

  1. После отключения питания проверьте правильность порядка подключения SPI (MOSI, MISO, SCK, CS).
  2. Если шина SPI используется совместно несколькими устройствами, убедитесь, что каждое устройство полностью сконфигурировано в Klipper.
  3. После отключения питания оставьте на материнской плате только один драйвер для отдельного тестирования, чтобы исключить взаимные помехи на общей шине.
  4. Убедитесь, что питание драйвера в норме. При необходимости выключите питание на несколько секунд, затем снова включите.
  5. Если ошибка сопровождается reset=1, uv_cp=1 или случайными ffffffff, в первую очередь проверьте питание и контакт драйвера.

Отдельное тестирование драйвера: Для изолированной проверки работоспособности драйвера обратитесь к разделу Тестирование периферии и драйверов для получения метода отдельного тестирования SPI-драйвера.

Ошибка конфигурации цепочки TMC SPI​

Сообщение об ошибке: TMC SPI chain must have same length, TMC SPI chain can not have duplicate position.

Причина ошибки: При использовании нескольких драйверов TMC в режиме последовательной цепочки SPI, значения chain_position, chain_length или конфигурация выбора кристалла (CS) для разных драйверов несовместимы, что мешает Klipper определить положение каждого драйвера в цепочке SPI.

Методы решения:

  1. Если материнская плата не имеет конструкции последовательной цепочки SPI, не добавляйте произвольно параметры chain_position и chain_length.
  2. Сравните с шаблоном конфигурации производителя материнской платы или платы драйвера и убедитесь, что chain_length для каждого драйвера TMC полностью совпадает.
  3. Убедитесь, что chain_position для каждого драйвера уникален и не повторяется.
  4. Если используется обычная структура шины SPI с несколькими сигналами выбора кристалла (CS), следует отдельно настраивать cs_pin для каждого драйвера, а не использовать формат записи цепочки SPI.
  5. После сохранения выполните RESTART, затем проверьте связь с каждым драйвером по отдельности с помощью DUMP_TMC STEPPER=<stepper>.

Timeout on wait for 'tmcuart_response'​

Сообщение об ошибке: Timeout on wait for 'tmcuart_response' response, в логе может также присутствовать Unable to read tmc uart 'stepper_x' register DRV_STATUS.

Распространенные причины:

  • Плохая пайка, обрыв или плохой контакт в проводке UART TMC, особенно внутренний разрыв проводов в кабель-канале после многократных изгибов.
  • Неправильная конфигурация uart_pin или неправильная установка перемычки UART на материнской плате.
  • Недостаточное питание драйвера или колебания напряжения, вызывающие сброс микросхемы TMC в момент связи.
  • Конфликт адресов или перегрузка шины при использовании одним UART-интерфейсом нескольких драйверов.
  • Занятость пина UART материнской платы другими функциями (например, Bluetooth, отладочный последовательный порт).

Методы решения:

Отключение питания

Перед проверкой платы драйвера, проводки UART или перемычек полностью выключите принтер и отключите его от источника питания.

  1. После отключения питания проверьте надежность подключения UART для драйвера, на который указывает ошибка, наличие явных изгибов, повреждений или плохой пайки проводов.
  2. Убедитесь, что uart_pin соответствует фактическому подключению к материнской плате, и проверьте, установлена ли перемычка UART на материнской плате правильно.
  3. Если несколько драйверов используют одну шину UART, убедитесь, что uart_address каждого драйвера не повторяется.
  4. Проверьте нормальность питания драйвера, особенно модулей преобразования 12/24V и предохранителей.
  5. Попробуйте поменять местами драйвер, на который указывает ошибка, с драйвером соседней оси, чтобы определить, проблема в драйвере или в гнезде/жгуте проводов материнской платы.
  6. Если ошибка появляется только во время печати, а в простое все нормально, проверьте, не натягивается ли жгут проводов во время движения.

Связь с ошибкой IFCNT: Timeout on wait for 'tmcuart_response' и Unable to read tmc uart register IFCNT по сути одинаковы, оба указывают на тайм-аут связи UART. Первая чаще возникает во время печати, вторая — на этапе начальной инициализации. Методы устранения совпадают, подробнее см. Ошибка связи IFCNT.

Тайм-аут ожидания 'tmcuart_response'​

Сообщение об ошибке: Timeout on wait for 'tmcuart_response' response, в журнале может сопровождаться Unable to read tmc uart 'stepper_x' register DRV_STATUS.

Частые причины:

  • Непропай, обрыв или плохой контакт проводки TMC UART, особенно внутренний обрыв проводов в кабеле-канале после многократных изгибов.
  • Неправильная конфигурация uart_pin или неправильно установленная перемычка UART на материнской плате.
  • Недостаточное питание драйвера или колебания напряжения, приводящие к сбросу чипа TMC в момент связи.
  • Конфликт адресов или перегрузка шины при использовании несколькими драйверами одной шины UART.
  • Занятость выводов UART материнской платы другими функциями (например, Bluetooth, отладка через последовательный порт).

Способы решения:

Отключите питание

Перед проверкой платы драйвера, проводки UART или перемычек полностью выключите принтер и отключите питание.

  1. После отключения питания проверьте надёжность подключения проводки UART драйвера, выдающего ошибку, а также наличие явных изгибов, повреждений или непропая проводов.
  2. Убедитесь, что uart_pin соответствует фактическому подключению на материнской плате, и проверьте правильность установки перемычки UART на плате.
  3. Если несколько драйверов используют одну шину UART, убедитесь, что uart_address каждого драйвера не повторяется.
  4. Проверьте исправность питания драйверов, особенно модуля преобразования 12В/24В и предохранителей.
  5. Попробуйте поменять местами драйвер, выдающий ошибку, и драйвер соседней оси, чтобы определить, связана ли проблема с драйвером или с разъёмом/жгутом проводов материнской платы.
  6. Если ошибка возникает только во время печати и отсутствует в режиме простоя, проверьте, не натягивается ли жгут проводов при движении.

Связь с ошибкой IFCNT: Timeout on wait for 'tmcuart_response' и Unable to read tmc uart register IFCNT по сути одинаковы — обе являются тайм-аутом связи UART. Первая чаще возникает во время печати, вторая — на этапе инициализации при запуске. Методы диагностики одинаковы, подробнее см. Сбой связи IFCNT.

Loading...