Например TDA7294

Форум РадиоКот • Просмотр темы - Состояние 3D принтера, как получить
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 02:45:53

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Состояние 3D принтера, как получить
СообщениеДобавлено: Вт окт 10, 2017 13:58:09 
Родился

Зарегистрирован: Вт апр 18, 2017 07:57:46
Сообщений: 6
Рейтинг сообщения: 0
Привет всем. Возникла проблема, необходимо контроkлировать текущее состояние 3д принтера, а именно: понять выполняет он сейчас перемещение по осям или находится в простое.
Например отправляю команду G0 X100 F50, то есть перемещаюсь по оси Х до координаты 100 мм с медленной скорость (50 мм/мин), необходимо привязать событие в ПО к моменту когда закончится перемещение в эту точку.
Есть ли какая-нибудь команда G-кода, возвращающая что-то типо состояние занят/свободен? или может кто-нибудь знает как по-другому программными средствами контроллировать?

Использую принтер с прошивкой Marlin.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Состояние 3D принтера, как получить
СообщениеДобавлено: Вт окт 10, 2017 20:31:06 
Мудрый кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 93
Зарегистрирован: Ср сен 07, 2011 21:40:30
Сообщений: 1797
Рейтинг сообщения: 0
http://reprap.org/wiki/G-code
Ищи


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Состояние 3D принтера, как получить
СообщениеДобавлено: Ср окт 11, 2017 13:58:18 
Родился

Зарегистрирован: Вт апр 18, 2017 07:57:46
Сообщений: 6
Рейтинг сообщения: 0
Flasher, спасибо за ссылку))

В общем один из способов контроля состояния перемещения я нашёл исходя из команды M114, на возврат от которой получаем текущие координаты и координаты в которые перемещение происходит. Путём их сравнения можно понять достиг требуемой точки или нет (то есть происходит движение или находится в простое).

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


public void GetDelayTest() //делает задержку потока пока принтер не вышел в заданную координату
{
string ReadedLine; //строка для чтения команд с порта
char[] delimiterChars = {':', ' ', ':', ' ',':', ' ', ':', ' ', ':', ' ', ':', ' ', ':', ' ',}; //разделители строки, подробнее на MSDN в описании метода Split

string[] words; //массив для полученных после операции Split

bool ReadPosition=false;
bool done=false;

string CurrentX="";
string NeedX="";

string CurrentY="";
string NeedY="";

string CurrentZ="";
string NeedZ="";

SendingCommand = "M114\r\n";


while (done==false)
{
PositionerPort.Write(SendingCommand);

while (ReadPosition==false)
{
ReadedLine =PositionerPort.ReadLine();
//Пример прочитанной строки : X:50.00 Y:0.00 Z:0.00 E:0.00 Count X: 17.00 Y:0.00 Z:0.00<LF>

words = ReadedLine.Split(delimiterChars);
if (words[0]=="X"Шутливо //это проверка является ли прочитанная строкой подходящей нам
{
ReadPosition =true; //заканчиваем чтение строк
CurrentX=words[11]; //считываем текущий Х
NeedX=words[1]; //считываем необхдимый Х

CurrentY=words[13];//считывыем текущий Y
NeedY=words[3]; //считываем необходимый Х

CurrentZ=words[15]; //считывыем текущий Z
NeedZ=words[5]; //считываем необходимый Х


}
else
{
Thread.Sleep(100); //задержка 100 мс, чтобы слишком часто порт не опрашивало
}

}

if (CurrentX==NeedX && CurrentY==NeedY && CurrentZ==NeedZ) //если текущая координата совпадает с ребуемой
{
done=true; //заканчиваем задержку
}
else
{
ReadPosition=false; //обратно начинаем читать строки
}


}

}

Опробовал, всё работает нормально. Хотя вижу сразу недостаток в том, что если от принтера придёт другая команда, то она будет прочитана и проигнорирована, пока не придёт ответ именно от команды M114. Решается данный недостаток более качественным парсингом приходящих команд.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Состояние 3D принтера, как получить
СообщениеДобавлено: Пн окт 23, 2017 07:11:05 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Ср апр 13, 2011 02:13:43
Сообщений: 851
Рейтинг сообщения: 0
Код:
if (words[0]=="X"Шутливо //это проверка является ли прочитанная строкой подходящей нам


Скобку не закрыл.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y