Ввод в эксплуатацию ЧПУ системы на основе контроллера Kflop.
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Спасибо! Но не поможет.
Это сервы. А у меня шаговики.
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Лимиты и хоумы на Z и Y настроил. Взял данные из листинга - Пост №10. Но там по одному мотору на ось. У меня 2 на ось. Есть специалисты по Хоуму подчиненных осей???? 
- mycnc
- Мастер
- Сообщения: 913
- Зарегистрирован: 03 июл 2011, 02:01
- Репутация: 623
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
С шаговиками там тоже можно, если что. Но для макрос и PLC ориентированы под контроллер и c kflop не помогут.Robston писал(а):Спасибо! Но не поможет.
Это сервы. А у меня шаговики.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
В этом листинге каждая команда имеет комментарий о ее назначении.Robston писал(а):Лимиты и хоумы на Z и Y настроил. Взял данные из листинга - Пост №10. Но там по одному мотору на ось. У меня 2 на ось. Есть специалисты по Хоуму подчиненных осей????
По аналогии разве тяжело сделать?
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Александр, Добрый день!ukr-sasha писал(а):В этом листинге каждая команда имеет комментарий о ее назначении.Robston писал(а):Лимиты и хоумы на Z и Y настроил. Взял данные из листинга - Пост №10. Но там по одному мотору на ось. У меня 2 на ось. Есть специалисты по Хоуму подчиненных осей????
По аналогии разве тяжело сделать?
Много получил полезной информации на разных форумах от Вас.
Очень помогают Ваши советы.
По хоуму на 2 мотора - алгоритм.
Код: Выделить всё
// поиск НОМЕ по X0 - X1 (подчиненные)
ch0->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси X, чтобы не блокировалась ось
ch4->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси B, чтобы не блокировалась ось
ch0->MasterAxis = -1; // Расподчинить обе оси
ch4->MasterAxis = -1;
Jog(0,-12000); // перемещение оси X в отрицательном направлении
Jog(4,-12000); // перемещение оси B в отрицательном направлении
//ЗДЕСЬ НЕ ЗНАЮ КАК создать конструкцию, что бы останавливалась та ось к у которой сработал датчик
//а вторая продолжала ехать до сработки ее датчика
while (ReadBit(38)) ; // ожидание срабатывания датчика по X- пин 38
Jog(0,0); // остановка оси X
Zero(0); // обнуление координаты оси X
MoveAtVel(0,819, 3000); // перемещение оси X с датчика в позицию 819 имп
while (!CheckDone(0)) ; // ожидание окончания движения оси X
Zero(0); // обнуление координаты оси X
while (ReadBit(41)) ; // ожидание срабатывания датчика по B- пин 41
Jog(4,0); // остановка оси B
Zero(4); // обнуление координаты оси B
MoveAtVel(4,819, 3000); // перемещение оси B с датчика в позицию 819 имп
while (!CheckDone(4)) ; // ожидание окончания движения оси B
Zero(4); // обнуление координаты оси B
ch0->MasterAxis = 0; // Активировать обе оси
ch4->MasterAxis = 0;
ch0->LimitSwitchOptions=0x103; // включение обработки концевого датчика на оси X, блокировать ось
ch4->LimitSwitchOptions=0x103; // включение обработки концевого датчика на оси B, блокировать ось
Последний раз редактировалось Robston 19 мар 2017, 18:44, всего редактировалось 1 раз.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Роберт. Опишите словами что вы хотите получить?
Чтобы по двум датчиками портал выравнивался?
Чтобы по двум датчиками портал выравнивался?
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Да. Именно это.ukr-sasha писал(а):Роберт. Опишите словами что вы хотите получить?
Чтобы по двум датчиками портал выравнивался?
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Я реализовывал такой алгоритм:
- ось едет до первого датчика, обнуляется
- снимается подчинение второго мотора
- второй мотор вращается до сработки второго датчика
- второй мотор вращается на величину смещения, которая состоит из двух слагаемых - расстояние между датчиками и величина деформации портала
- восстанавливается подчинение мотора
При таком алгоритме не нужно точно выставлять датчики.
- ось едет до первого датчика, обнуляется
- снимается подчинение второго мотора
- второй мотор вращается до сработки второго датчика
- второй мотор вращается на величину смещения, которая состоит из двух слагаемых - расстояние между датчиками и величина деформации портала
- восстанавливается подчинение мотора
При таком алгоритме не нужно точно выставлять датчики.
- mycnc
- Мастер
- Сообщения: 913
- Зарегистрирован: 03 июл 2011, 02:01
- Репутация: 623
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
У меня было так, но знающие люди сказали, что так плохо, крутя долго одним мотором можно попортить механику. А надо как-бы "проще".ukr-sasha писал(а):Я реализовывал такой алгоритм:
- ось едет до первого датчика, обнуляется
- снимается подчинение второго мотора
- второй мотор вращается до сработки второго датчика
- второй мотор вращается на величину смещения, которая состоит из двух слагаемых - расстояние между датчиками и величина деформации портала
- восстанавливается подчинение мотора
При таком алгоритме не нужно точно выставлять датчики.
- ось едет до обоих датчиков, снимается подчинение нужного мотора
- второй мотор вращается на величину смещения, которая состоит из двух слагаемых - расстояние между датчиками и величина деформации портала
- восстанавливается подчинение мотора
Это и показано на видео. Наверное, на kflope тоже должно получиться.
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Home 3 axis with Slave Axis X for KFlop
Большое спасибо, что не отказали в помощи!
Хотя, сухим остатком, пустые советы.
Я и сам могу придумать множество алгоритмов.
Я просил листинг.
Выкладываю полностью рабочий листинг хомления осей с подчиненными X для портального станка.
Портал движется по оси X двумя двигателями.
Концевики на каждой стороне оси запаралелены - X0-- и X0++ с одной стороны. X1(B)-- и X1(B)++ с другой стороны.
HomeX0=X0-- , HomeX1(B)=X1(B)--
Пришлось изучить основы C++
Большое спасибо, что не отказали в помощи!
Хотя, сухим остатком, пустые советы.
Я и сам могу придумать множество алгоритмов.
Я просил листинг.
Выкладываю полностью рабочий листинг хомления осей с подчиненными X для портального станка.
Портал движется по оси X двумя двигателями.
Концевики на каждой стороне оси запаралелены - X0-- и X0++ с одной стороны. X1(B)-- и X1(B)++ с другой стороны.
HomeX0=X0-- , HomeX1(B)=X1(B)--
Код: Выделить всё
#include "KMotionDef.h"
int DoPC(int cmd);
int DoPCInt(int cmd, int i);
#define GATH_OFF 0 // define the offset into the Gather buffer where strings are passed
main()
{
// поиск НОМЕ по Z
ch2->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Z, чтобы не блокировалась ось
Jog(2,6000); // перемещение оси Z в отрицательном направлении
while (ReadBit(40)) ; // ожидание срабатывания датчика по Z- пин 40
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
MoveAtVel(2,-819,6000); // перемещение оси Z с датчика в позицию 819 имп
while (!CheckDone(2)) ; // ожидание окончания движения оси Z
Jog(2,3000); // повторное перемещение оси Z в отрицательном направлении
while (ReadBit(40)) ; // ожидание срабатывания датчика по Z- пин 40
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
MoveAtVel(2,-819,3000); // перемещение оси Z с датчика в позицию 819 имп
while (!CheckDone(2)) ; // ожидание окончания движения оси Z
Zero(2); // обнуление координаты оси Z
ch2->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Z,
// поиск НОМЕ по Y
ch1->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Y, чтобы не блокировалась ось
Jog(1,-12000); // перемещение оси Y в отрицательном направлении
while (ReadBit(39)) ; // ожидание срабатывания датчика по Y- пин 139
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
MoveAtVel(1,819, 12000); // перемещение оси Y с датчика в позицию 819 имп
while (!CheckDone(1)) ; // ожидание окончания движения оси Y
Jog(1,-3000); // повторное перемещение оси Y в отрицательном направлении
while (ReadBit(39)) ; // ожидание срабатывания датчика по Y- пин 139
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
MoveAtVel(1,819, 3000); // перемещение оси Y с датчика в позицию 819 имп
while (!CheckDone(1)) ; // ожидание окончания движения оси Y
Zero(1); // обнуление координаты оси Y
ch1->LimitSwitchOptions=0x103; // включение обработки концевого датчика на оси Y,
// поиск НОМЕ по X0 - X1 (подчиненные)
int axis_x, axis_b; // Флаг остановки оси.
axis_x = 0;
axis_b = 0;
ch0->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси X, чтобы не блокировалась ось
ch4->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси B, чтобы не блокировалась ось
ch0->MasterAxis = -1; // Расподчинить обе оси
ch4->MasterAxis = -1;
// ReadBit(38) или ReadBit(38) == 1 --- Концевик не замкнут
// ReadBit(38) == 0 --- Концевик замкнут, конечное положение
if (ReadBit(38)) { // если концевик не замкнут, то
Jog(0,-1000); // перемещение оси X в отрицательном направлении
}
if (ReadBit(41)) { // если концевик не замкнут, то
Jog(4,-1000); // перемещение оси B в отрицательном направлениик
}
// Проверка цикла постусловием обязательна, т.к. необходимо один раз войти в цикл, чтобы остановить двигатели.
do {
if ((ReadBit(38)==0) && (axis_x == 0)){ /// 1 или 0
Jog(0,0.0); // остановка оси X
Zero(0); // обнуление координаты оси X
axis_x = 1; // Признак концевика
}
if ((ReadBit(41)==0) && (axis_b == 0)){
Jog(4,0.0); // остановка оси B
Zero(4); // обнуление координаты оси B
axis_b = 1; // Признак концевика
}
}
while ((ReadBit(38)) || (ReadBit(41)));
// Отъедут оба по очереди на 819 тактов = 1мм
MoveAtVel(0,819, 3000); // перемещение оси X с датчика в позицию 819 имп
while (!CheckDone(0)) ; // ожидание окончания движения оси X
Zero(0); // обнуление координаты оси X
// Второй
MoveAtVel(4,819, 3000); // перемещение оси B с датчика в позицию 819 имп
while (!CheckDone(4)) ; // ожидание окончания движения оси B
Zero(4);
ch0->LimitSwitchOptions=0x103; // включение обработки концевого датчика на оси X, блокировать ось
ch4->LimitSwitchOptions=0x103; // включение обработки концевого датчика на оси B, блокировать ось
ch0->MasterAxis = 0; // Активировать обе оси
ch4->MasterAxis = 0;
MDI("G92.1"); // очистка всех действующих оффсетов
}
//далее код обеспечивающий ввод команды в MDI
// put the MDI string (Manual Data Input - GCode) in the
// gather buffer and tell the App where it is
int MDI(char *s)
{
char *p=(char *)gather_buffer+GATH_OFF*sizeof(int);
int i;
do // copy to gather buffer w offset 0
{
*p++ = *s++;
}while (s[-1]);
// issue the command an wait till it is complete
// (or an error - such as busy)
return DoPCInt(PC_COMM_MDI,GATH_OFF);
}
// Put an integer as a parameter and pass the command to the App
int DoPCInt(int cmd, int i)
{
int result;
persist.UserData[PC_COMM_PERSIST+1] = i;
return DoPC(cmd);
}
// Pass a command to the PC and wait for it to handshake
// that it was received by either clearing the command
// or changing it to a negative error code
int DoPC(int cmd)
{
int result;
persist.UserData[PC_COMM_PERSIST]=cmd;
do
{
WaitNextTimeSlice();
}while (result=persist.UserData[PC_COMM_PERSIST]>0);
return result;
}-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Александр! Я сразу смекнул. Вы абсолютно правы! И я Вам очень благодарен. СПАСИБО. Нужно дать удочку, а не рыбу.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Зато теперь перед вами открываются большие возможности в наращивании функционала станка.
Принцип организации вы я вижу поняли.
Искренне рад, что у вас все получается.
Принцип организации вы я вижу поняли.
Искренне рад, что у вас все получается.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Вижу в вашем алгоритме потенциальную сложность. Надо будет очень точно выставлять датчики.
Поделитесь, как вы планируете это сделать.
Поделитесь, как вы планируете это сделать.
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Станочек у меня маленький на 4 оси. X*2 Y Z и Aukr-sasha писал(а):Вижу в вашем алгоритме потенциальную сложность. Надо будет очень точно выставлять датчики.
Поделитесь, как вы планируете это сделать.
Рабочее поле 550х350мм
Датчики индуктивные цилиндрические 8мм (Китай).
Поскольку прецизионных операций не выполняю, то выставил портал по диагоналям станка, а потом подогнал датчики на включение поворотом в резьбовых соединении. Вот, собственно, и все. Мне для хобби вполне хватает. Мерял штангелем неравномерность после выполнения программ. Разнос осей X не превышает 0,08 мм. Программа примерно на 11 мегабайт. 6 часов работы.
Раньше пользовался Mach3. Но до того достала непредсказуемость выше упомянутого софта, что решил попробовать KFlop.
Сейчас ОЧ доволен. Особенно возможностью програмирования различных "пряников" и тонкой настройки.
Последний раз редактировалось Robston 19 мар 2017, 21:51, всего редактировалось 1 раз.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Эти датчики очень неточные, и значительно зависят как от температуры, так и от скорости движения оси.
Делайте обнуление координаты не при наезде, а при последующем съезде с датчика на очень маленькой скорости, порядка 1-5 мм/мин.
Учитывая, что дистанция съезда небольшая, то времени это много не займет.
Делайте обнуление координаты не при наезде, а при последующем съезде с датчика на очень маленькой скорости, порядка 1-5 мм/мин.
Учитывая, что дистанция съезда небольшая, то времени это много не займет.
-
Robston
- Новичок
- Сообщения: 20
- Зарегистрирован: 04 апр 2016, 17:37
- Репутация: 7
- Настоящее имя: Роберт
- Откуда: Москва
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Благодарю Вас! Учту. Так и поступлю.ukr-sasha писал(а):Эти датчики очень неточные, и значительно зависят как от температуры, так и от скорости движения оси.
Делайте обнуление координаты не при наезде, а при последующем съезде с датчика на очень маленькой скорости, порядка 1-5 мм/мин.
Учитывая, что дистанция съезда небольшая, то времени это много не займет.
-
Александр_
- Мастер
- Сообщения: 1743
- Зарегистрирован: 24 дек 2013, 17:47
- Репутация: 122
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Кто-нибудь знает как поставить в кмоушн задержку отработки программы чтобы шпиндель успел раскрутиться? хорошо что тестовый проход делал - мог бы лучиться неприятный конфуз.
И вторая большая проблема - тормоза при одновременных перемещениях по программе в координатах XYZ. В плоскости XY прямые и кривые отрабатывает на ура - аж станок качает. Если кто делал клише для тиснения в арткаме и знает что такое процедура "подрезка углов" - то вот такого типа траектории. капец - скорость падает раз в 10-20. то есть выходит что планировщик вроде настроен а все равно какие-то запинки при перемещениях
И вторая большая проблема - тормоза при одновременных перемещениях по программе в координатах XYZ. В плоскости XY прямые и кривые отрабатывает на ура - аж станок качает. Если кто делал клише для тиснения в арткаме и знает что такое процедура "подрезка углов" - то вот такого типа траектории. капец - скорость падает раз в 10-20. то есть выходит что планировщик вроде настроен а все равно какие-то запинки при перемещениях
Заходите в гости: www.pandicon.net www.graver36.ru
-
Smouk
- Кандидат
- Сообщения: 76
- Зарегистрирован: 08 ноя 2016, 16:36
- Репутация: 32
- Настоящее имя: Алексей
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Сейчас включение шпинделя идет одним битом? Простой вариант - создайте программу, примерно такую:Александр_ писал(а):Кто-нибудь знает как поставить в кмоушн задержку отработки программы чтобы шпиндель успел раскрутиться? хорошо что тестовый проход делал - мог бы лучиться неприятный конфуз.
Код: Выделить всё
main ()
{
SetBit(ХХХ);
Delay_sec(N);
}В настройках установите выполнение и ожидание этой программы (Exec/wait) по M3, на вкладке "Tool Setup Screen" в KMotionCNC. Используйте поток, который не используется при работе с УП (обычно со 2 по 6, 7 - продолжает работу при E-stop).
Для экономии времени и надежности можно ждать набора оборотов до заданных с некоторой дельтой, но это если есть энкодер на шпинделе.
Скопируйте настройки осей, скорей всего по Z сильно зарезано ускорение и толчок - отсюда остальные оси обязаны ждать ее.Александр_ писал(а):И вторая большая проблема - тормоза при одновременных перемещениях по программе в координатах XYZ. В плоскости XY прямые и кривые отрабатывает на ура - аж станок качает. Если кто делал клише для тиснения в арткаме и знает что такое процедура "подрезка углов" - то вот такого типа траектории. капец - скорость падает раз в 10-20. то есть выходит что планировщик вроде настроен а все равно какие-то запинки при перемещениях
-
Александр_
- Мастер
- Сообщения: 1743
- Зарегистрирован: 24 дек 2013, 17:47
- Репутация: 122
- Контактная информация:
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
спасибо за ответ!
первую половину пока не понял - вчитаюсь еще раз.
а по оси Z - да, возможно. Она тяжелая и инерционная. Нужно свести все оси к одному знаменателю по ускорению и толчку или просто общую скорость обработки снизить?
первую половину пока не понял - вчитаюсь еще раз.
а по оси Z - да, возможно. Она тяжелая и инерционная. Нужно свести все оси к одному знаменателю по ускорению и толчку или просто общую скорость обработки снизить?
Заходите в гости: www.pandicon.net www.graver36.ru