Страница 23 из 70

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 12 окт 2015, 15:54
ukr-sasha
Александр_ писал(а): тогда при размыкании цифрового выхода ток пропадет во всей цепи и все оси остановятся. так?
У меня так и сделано. Работает.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 12 окт 2015, 16:11
AlexNikov
Александр_ писал(а):
AlexNikov писал(а):Завершение выполнения g-кода обычно сопровождается командой М5 или М30, повесьте на них активацию кого-либо пина в KMotionCNC.
зачем? вопос был по мотивам поста №5 этой темы.
там показан пример для одной оси. если там цифровой выход замыкает перемычку для активации оси то логично по-моему, последовательно все оси подключить - по аналогии с сигналом ALM. тогда при размыкании цифрового выхода ток пропадет во всей цепи и все оси остановятся. так?
Ответ был дан для Fishman, и по конкретному вопросу - как выдать сигнал с к-флоп после окончания работы ж-кода.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 12 окт 2015, 16:13
fishman
AlexNikov писал(а):
Александр_ писал(а):
AlexNikov писал(а):Завершение выполнения g-кода обычно сопровождается командой М5 или М30, повесьте на них активацию кого-либо пина в KMotionCNC.
зачем? вопос был по мотивам поста №5 этой темы.
там показан пример для одной оси. если там цифровой выход замыкает перемычку для активации оси то логично по-моему, последовательно все оси подключить - по аналогии с сигналом ALM. тогда при размыкании цифрового выхода ток пропадет во всей цепи и все оси остановятся. так?
Ответ был дан для Fishman, и по конкретному вопросу - как выдать сигнал с к-флоп после окончания работы ж-кода.
Спасибо! Будем пробовать

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 13 окт 2015, 15:11
Александр_
попытался сегодня настроить сигнал ServoOn и как обычно, с первого раза не получилось :-(
Отключил через СигмаВин "Servo is always ON", собрал цепочку из четырех сервопаков, последовательно выводя сигнал S-ON с каждого. Дальше как и нужно было, завел в Каналог и вставил кусочек кода в файл инициализации. При нажатии кнопки INIT KmotionCNC не ругается, но оси не оживают. Сами провода точно спаял правильно - вынул из Каналога 2 провода - на нихВольта как и нужно. Замкнул их между собой - оси включаются. То есть не срабатывает именно перемычка на Каналоге. Может, какая-то орфографическая неточность в С-файле? Прикрепил его.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 13 окт 2015, 15:25
AlexNikov
Александр_ писал(а):попытался сегодня настроить сигнал ServoOn и как обычно, с первого раза не получилось :-(
Отключил через СигмаВин "Servo is always ON", собрал цепочку из четырех сервопаков, последовательно выводя сигнал S-ON с каждого. Дальше как и нужно было, завел в Каналог и вставил кусочек кода в файл инициализации. При нажатии кнопки INIT KmotionCNC не ругается, но оси не оживают. Сами провода точно спаял правильно - вынул из Каналога 2 провода - на нихВольта как и нужно. Замкнул их между собой - оси включаются. То есть не срабатывает именно перемычка на Каналоге. Может, какая-то орфографическая неточность в С-файле? Прикрепил его.
(ch0->Enable && ch1->Enable && ch2->Enable) мб тут ошибка? Какой бит включает оси, 144? К каким пинам к-аналога подключена активация осей?

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 13 окт 2015, 15:33
Александр_
подключал все как в примере в первых постах этой темы. 144 бит

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 13 окт 2015, 15:34
AlexNikov
Александр_ писал(а):подключал все как в примере в первых постах этой темы. 144 бит
ну так у вас вроде каналы на привода не ch0-ch2 а ch4-ch7

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 13 окт 2015, 16:20
Александр_
а, и правда, может именно из-за этого. спасибо! подправлю

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 15 окт 2015, 21:43
Александр_
ukr-sasha писал(а):У меня так и сделано. Работает.
как правильно завести сигналы ALARM в кфлоп/каналог? цепочкой из ALARM-ов сервопаков шунтировать цепь S-on? Или завести эту цепочку в свободный цифровой выход и как-то настроить чтобы при выпадении ошибки каналог отключал S-ON?

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 12:09
Александр_
не получается ли некоторого противоречия в описании к каналогу?
на сайте кфлопа есть заметка про подключение аналоговых сервоусилителей Advanced Motion к каналогу. на схеме видно, что в сервоусилитель заводится дифференциальный выход энкодера и они же через сервоусилитель идут в каналог замыкая цепочку ОС. С другой стороны, просмотрел по каталогу Advanced Motion сервоусилители с энкодером - на всех что нашел вход энкодера типа "открытый коллектор", а значит и энкодер должен быть такой же.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 14:07
Serg
Входы не бывают "открытый коллектор", такими бывают только выходы.
Выход может быть и "открытый коллектор" и дифференциальный одновременно.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 18:24
rz90
Всем привет, нужна помощь! Пытаюсь разобраться с управлением автосмены инструмента. Отредактировал файл, но он еще далек от верного варианта, на недостающие скобочки можно пока не обращать внимания, номера пинов тоже не принципиальны.
У станка следующий алгоритм работы
https://youtu.be/zi93cBBHXRM

Код: Выделить всё

#include "KMotionDef.h"

// T O O L   C H A N G E R   S E Q U E N C E
//
// define state that the tool changer may be in
enum {T_IDLE,T_WORKING};

#define TOOL_VAR 20        	// Tool changer desired new tool Var
#define TOOL_STATE_VAR 19  	// Tool changer state is saved globally in this Var
#define LAST_TOOL_VAR 18   	// Tool changer Last tool position is saved globally in this Var
#define ZHOME 0             // Absolute Position of Z Axis Home
#define ZTOOLPOS ******     // Absolute Position of Z Axis For Top Of Tool Slot

int *ChangerState 	= &persist.UserData[TOOL_STATE_VAR];
int *Tool     		= &persist.UserData[TOOL_VAR];
int *LastTool 		= &persist.UserData[LAST_TOOL_VAR];

double ToolTime;

// Returns Current Tool Number
int CurrentTool(void){
    int ToolNum = 0;
}
    if (ReadBit(140)){       
    return ToolNum;
}

// Moves Magazine To Specified Slot
void MoveMagazine(int tool){
	
    int delta = tool - CurrentTool();   // how far to move
    if (delta>10)  delta-=20;            // optimize direction
    if (delta<-10) delta+=20;
	printf("Moving Magazine %d Slots\n", delta);
    StepMagazine(delta);
    return;
}

// Moves Magazine By Specified Number Of Slots
void StepMagazine(int delta){

    if (!ReadBit(???) && (Pos(2) < -100)) ????????????????
}
    {
        printf("Error Spindle In Invalid Position\n");
        *ChangerState = T_IDLE;  // go idle

    } else {

        int i = 0;
        int dir;
        if (delta > 0){
            SetBit(148);
	While(ReadBit(141);
	if (ReadBit(141)){
	ClearBit(148);	
        {    
	dir = 1;
        } else {
            SetBit(149);
	While(ReadBit(141);
	if (ReadBit(141)){
	ClearBit(149);	
        { 
            dir = -1;
        }
        while (delta != i){
            while(ReadBit(140)){
                WaitNextTimeSlice();
            }
            while(!ReadBit(140)){
                WaitNextTimeSlice();
            }
            i += dir;
        }
        ClearBit(149);
        ClearBit(148);
        return;
    }
}

main()
{
    
	{
		/// T O O L  C H A N G E R  S T A R T
		
		if (*ChangerState == T_IDLE)
		{
			*ChangerState = T_WORKING;
			
			// Spindle stop
			Move(3,0);		// move a-axis to 0
				
			// Move Z Axis To TOOL Position
			Move(2, ZTOOLPOS);
			while (!CheckDone(2)) ;
				if (!chan[2].Enable) return 1;
			
			// Wait For Z Axis To Stop Moving
				while (!CheckDone(2)) ;
					if (!chan[2].Enable) return 1;

			if (*LastTool==0)
			{
				printf("Error Magazine Position Never Defined\n");
				*ChangerState = T_IDLE;  // go idle
				return;
			}
			else if (*Tool > 20 || *Tool < 1)
			{
				printf("Invalid Tool Number %d\n",*Tool);
				*ChangerState = T_IDLE;  // go idle
				return;
			}
			else if (*Tool == *LastTool)
			{
				printf("Requested Tool (#%d) Already In Position\n",*Tool);
				*ChangerState = T_IDLE;  // go idle
				return;
			}
			else
			{

				// Move Magazine To Last Tool Position If Not Already There
				if (CurrentTool() != *LastTool){
					MoveMagazine(*LastTool);
				}					

		                                             
				// Move Magazine into position of tool slot
				SetBit(144);
				While(ReadBit(136);
				if (ReadBit(136)){
					ClearBit(144);
				}

				// Unclamp Tool Освободить инструмент
				SetBit(145);
				While(ReadBit(137);
				if (ReadBit(137)){
					ClearBit(145);
				}
				printf("tool Unclamped\n");
			
				//Up Z-Axis
				MoveRel(2,150);		// 150 mm
				
				// Wait For Z Axis To Stop Moving
				while (!CheckDone(2)) ;
					if (!chan[2].Enable) return 1;

			
				// Move Magazine To Desired Tool Position
				MoveMagazine(*Tool);

				// Check If Current Tool Is Desired Tool
				if (CurrentTool() == *Tool)
				{
					printf("Tool Clamp\n");

					Move(2, ZTOOLPOS);
					while (!CheckDone(2)) ;
						if (!chan[2].Enable) return 1;

					// Clamp Tool
					SetBit(146);
					While(ReadBit(138);
					if (ReadBit(138)){
					ClearBit(146);
					
				} else {
				
					printf("Wrong Tool Slot - %d/n", CurrentTool());
					return;
					
				}

				// Move Magazine into home position
				SetBit(147);
				While(ReadBit(139);
				if (ReadBit(139)){
					ClearBit(147);
				
				// Move Z Axis To Home Position
				Move(2, ZHOME);
				while (!CheckDone(2)) ;
					if (!chan[2].Enable) return 1;
							
				printf("Tool Change Complete\n");
				*LastTool = *Tool;  // remember where we are
				*ChangerState = T_IDLE;
			}
		}
	}
}

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 18:28
Александр_
UAVpilot писал(а):Входы не бывают "открытый коллектор", такими бывают только выходы.
Выход может быть и "открытый коллектор" и дифференциальный одновременно.
а как это понять по энкодеру?
вот есть он в продаже: выходы А, А-, В,В-,Z, Z-, напряжение 5 вольт. можно его подключить туда где требуется на вход только А и В сигналы?

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 18:33
Дмитро
Александр_ писал(а):можно его подключить туда где требуется на вход только А и В сигналы?
Подключаете только A, B, Z(если требуется).

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 20:10
Александр_
так и я о том же, но тут мне присоветовали:

"Дифференциальый выход нельзя напрямую подключать к TTL входу. Нужен преобразователь из дифференциального в однополярный сигнал TTL уровня. Хотя усилитель, может иметь как дифференциальный, так и TTL вход.

Дело не столько в инвертированном сигнале дифпары. Дело в уровнях. По дифпаре сигнал передается потенциалом +-12, или +-24В. А выход типа открытый коллектор при срабатывании тика энкодера, открывает ключ, ко коллектору которого присоединена линия передачи сигнала к усилителю. Фактически открытый коллектор, при срабатывании тика энкодера коротит сигнальный провод линии на землю. А когда нет тика отключает сигнальную линию от земли. Принцип передачи сигнала разный в дифпаре - изменяемый потенциал, открытый коллектор - изменение сопротивления на конце сигнальной линии. Прямое подключение вряд ли заработает. Да и усилитель не поймет, что у него на входе творится. В худшем случае, что-то сгорит. Хотя разъемы разны типов энкодеров, вряд ли совпадут."

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 20:17
Дмитро
Александр_ писал(а): В худшем случае, что-то сгорит
Ничего не сгорит, у меня маховички напрямую подключены к kflop, на трех станках, горелым не пахнет. :)

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 18 окт 2015, 21:48
Александр_
так если взять энкодер с дифференциальным выходом А, А-, В, В-, Z, Z-, завести половину этих сигналов в сервоусилитель то как на выходе он отдаст снова 4 сигнала чтобы в каналог завести?

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 19 окт 2015, 01:19
Serg
А- - это инвертированный А.
Александр_ писал(а):как на выходе он отдаст снова 4 сигнала
Прямые сигналы проинвертирует и получит недостающие.
Дифф. сигнал используется только в длинных проводах, чтобы помехи/наводки не могли испортить передаваемый сигнал, внутри обрабатывающей электроники сигнал обычный.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 24 окт 2015, 22:40
Vitalik
Подскажите пожалуйста, у меня при настройке пид для оси зет ошибка позиционирования получается не меньше 20 импульсов. Энкодер 17 бит, но программно задано 2048 импульсов на оборот. В пересчете на мм эта ошибка выходит в 0.0163мм (ШВП с шагом 5мм, редукция 1 к 3). При обработке рельефа на пластике вылазят разные ступеньки, после поднятия оси до плоскости безопасности и опускания . Такое выходит как раз из-за ошибки? (Надеюсь понятно объяснил)

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Добавлено: 24 окт 2015, 22:45
aftaev
Vitalik писал(а):При обработке рельефа на пластике вылазят разные ступеньки
Покажи рельеф или нарисуй его в Paint
Если обрабатывать шарик при 0,02мм будут ступеньки.