Обеспечение безопасной работы принтера на RepRap Firmware 3.4.
Про пожаробезопасность нагревательных приборов, к числу которых относится принтер, кто только не писал. Мое мнение – любой принтер должен быть обеспечен системой автоматического отключения при аварийных ситуациях. Для этого используются разнообразные устройства, которые позволяют отключить питание 220В принтера. Устройства могут быть как самосборные, так и заводского исполнения (Lerdge, BTT, MKS). Принцип действия у всех одинаков - по пропаданию управляющего сигнала от платы (PS_On). Мой выбор - PWC MKS – просто, функционально, не дорого.
Но разговор не о железе, а о софте. Все, что будет сказано, относится к RRF 3.4. Более ранние версии могут отличаться (например, именами файлов-макросов), в новых версиях однозначно будут изменения. Об этом говорится в комментариях релиза. Первый эшелон обороны это - обработка неисправностей нагревателя. Команда M570. При возникновении неисправности нагревателя создается событие, за обработку которого отвечает макрос-файл heater-fault.g. Если этот файл обнаружен в /sys, то событие будет обработано именно так, как там написано, без предварительной постановки печати на паузу. Т.е. если файл пустой, то печать продолжится, с отключенным нагревом, т.к. нагреватель вылетит в ошибку. Если heater-fault.g. не обнаружен, то печать приостанавливается и пользователь получает уведомление. В настоящее время RRF не пытается отключить питание всей машины, если пользователь не реагирует на уведомление о неисправности нагревателя. Разработчики обещают что-нибудь придумать в релизе RRF3.5 Второй эшелон обороны – это конфигурация нагревателя командой M143 с параметрами "A", "C" и "P". Параметр "P" - включает мониторинг наступления определенного события, описанного параметрами "A", "C". Возможно установить мониторинг до трех событий на один нагреватель - P0(по умолчанию), P1 и P2 Параметр "A" управляет тем, что будет сделано при наступлении события. Возможны 3 варианта - A0 (по умолчанию) - генерировать обработку неисправностей нагревателя. См. выше про "heater-fault.g" - A1 - постоянно отключить нагреватель (Switch off permanently) - A2 - временно отключить нагреватель (Switch off temporarily) - A3 - отключить принтер. Я не пользовался A1 и A2 и не скажу точно, как они работают. Параметр "C" условие формирования события - C0 (по умолчанию) - превышение температуры (Temperature too high) - C1 - температура слишком низкая (Temperature too low) - C-1 - запрет функции монитора (Monitor is disabled) Что такое "температура слишком низкая" для меня не понятно. Ниже какого значения? Возможно параметр "S" (Maximum permitted temperature) можно использовать не только максимум, но и как минимум. Не проверял. Теперь как все это можно и нужно использовать, особенно при наличии модуля автоотключения. В config.g делаем настройку нагревателя следующим образом.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>M80 C"pson" ; Указываем какой пин используется для автоотключения и выставляем его в «1»
M950 H1 C"e0heat" T1;создаем нагреватель сопла на порту "e0heat", связанный с датчиком 1 M143 H1 P0 S280 ;при превышении температуры 280 град сформировать ошибку нагревателя M143 H1 P1 S300 A3 ;при превышении температуры 300 град дать команду на отключение принтера M570 H1 ; включаем обработка неисправностей нагревателя>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> В heater-fault.g>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; heater_fault.g
; called by heater fault var msg_str = "Heater "^{param.D}^" fault!" ;сторка сообщения M291 P{var.msg_str} S1 T0 ; вывод сообщения M0 ; прекращаем печать M106 S0 ; отключение обдува модели M568 A0 ; отключение нагрева M140 S-273.1 ; отключение стола M140 S0 - это не отключение. G91 ; относительное перемешение G1 H2 Z1 F7200 ; принудительно увеличиваем Z G28 XY ; парковка по X and Y M18 X Y E0 ; отключаем все движки, кроме Z>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Здесь просто пример, как можно сделать. Можно все, что после "M0", перенести в "stop.g", тогда весь этот завершающий код можно не писать в слайсере. Так же просто "M0". Тут большое поле для творчества. Можно, например, клавишу энкодера или подсветку экрана 12864 с Neopixel делать красной.В видео используются настройки
M143 H1 P0 S104 ; или S106 для разных сценариев отработки
M143 H1 P1 S110 A3
При S104 инерционности отключенного нагревателя не хватает для закидывание температуры за критическое значение в 110 градусов и принтер не отключается. При S106 – инерционности достаточно, чтобы сработала защита по второму пределу температуры.
Из замеченных особенностей: ошибка нагревателя стола и хотэнда "0" (Tool0) передается в heater-fault.g с одним и тем же значением параметра param.D = 0. Если вообще передается. Этот же ноль пишется в сообщениях, которые генерит сама система при отсутствии нагрева, или сильном отклонении температуры от заданного
Проверить в двухэкструдерном варианте у меня нет возможности. В принципе строки
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
var msg_str = "Heater "^{param.D}^" fault!" ;сторка сообщения
M291 P{var.msg_str} S1 T0 ; вывод сообщения
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
можно заменить на
M291 P"Heater fault!" S1 T0 ; вывод сообщения
но вдруг починят.
Рассказать про возможные варианты третьего эшелона обороны (для параноиков)? 😊
- В board.txt диагностический сигнал leds.diagnostic привязать к одному из выводов материнской платы и повесить на него электронный таймер, способный определять отсутствие импульсов как при нижнем, так и при верхнем уровне сигнала. Выход таймера поставить последовательно с сигналом PS_On от платы.
- Установить термопредохранитель в нагревательный блок, подключить последовательно сигналом PS_On от платы. Для PWC MKS можно использовать предохранители многоразового срабатывания (термореле).
- Если денег куры не клюют, то можно сделать цепь безопасности на базе сертифицированных на уровень полноты безопасности (УПБ - SIL) устройствах, например PhoenixContact PSR-M-B2-SDI8-SDO4-DO4-SC. Но тогда и датчик температуры, и нормирующий преобразователь должны быть сертифицированы на УПБ, иначе – это не по правилам функциональной безопасности.
PS. Почему PWC MKS – просто, функционально? Потому что позволяет сделать вот так (блок видео почему-то больше не вcтавляется): https://youtube.com/shorts/wOAIImrZh9o?feature=share
Еще больше интересных статей
Дистанционное управление питанием 3D-принтера. Настройка Klipper и BTT Relay
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
DIY miniMMU (глава 2)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
За прошедшее время б...
Сопла и сопли
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сколько раз этот вопрос поднимался. Сколько тем...
Комментарии и вопросы
Молодцы!
В качестве рабочей лошадки в х...
Купить нельзя ) но можно взять...
Здравствуйте! Подскажите, с по...
Добрый день! Есть ender3...
Возникла вот такая проблема. П...
У кого есть ender 3 v3 se вы п...