Например TDA7294

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



Текущее время: Пт дек 15, 2017 17:11:29



Часовой пояс: UTC + 3 часа [ Летнее время ]


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



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

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

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


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

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


Вернуться наверх
 Профиль  
 
JLCPCB Prototype, Бесплатная доставка первого заказа + $2 на прототип ПП!

Крупнейший производитель печатных плат в Китае, 290,000+ заказчиков, 8,000+ он-лайн заказов в день.

Цена за 10 плат: $2 за 2-х слойную, $15 за 4-х слойную, $74 за 6-ти слойную.

LCSC Parts: Экономия до 50%, большой выбор компонентов в наличии, отправка заказа в день оплаты.

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

Зарегистрирован: Вт апр 18, 2017 08: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. Решается данный недостаток более качественным парсингом приходящих команд.


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Состояние 3D принтера, как получить
СообщениеДобавлено: Пн окт 23, 2017 08:11:05 
Потрогал лапой паяльник
Аватар пользователя

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


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


Вернуться наверх
 Профиль  
 

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



Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

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


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