И переместите эти команды после инициализации параметров осей, до командыAl4nse писал(а):// Активация серводрайверов S-ON
SetBit(48);
SetBit(50);
SetBit(52);
SetBit(54);
Al4nse писал(а):DefineCoordSystem(2,0,3,-1);
И переместите эти команды после инициализации параметров осей, до командыAl4nse писал(а):// Активация серводрайверов S-ON
SetBit(48);
SetBit(50);
SetBit(52);
SetBit(54);
Al4nse писал(а):DefineCoordSystem(2,0,3,-1);
If the problem only occurs when the system is initialized and without problem afterward then it may have to do with how you power and enable the Amplifiers.
I assume the commands below enable the Amplifiers?
SetBit(48);
SetBit(50);
SetBit(52);
SetBit(54);
It may take some time from when the Amplifiers are enabled until they are operational. If the Axes are enabled at the same time then the servo might ramp the output to a large value with no response trying to make a correction. When the Amplifiers finally become functional there will be a jump.
Try adding a delay after the Amplifiers are enabled before the Axes are enabled. For example code:
SetBit(48);
SetBit(50);
SetBit(52);
SetBit(54);
Delay_sec(1.0);
Что имеется в виду под выводами управления? Какие именно функции вы хотите подключить к пользовательским кнопка в KMotionCNC?zaxtone писал(а):Как назначить выводы управления драйверами Step/Dir к кнопкам на интерфейсе программы? Покажите на примере пару осей.
vadoni, судя по всему где-то не объявленная переменная в файле, он не компилируется у тебяvadoni писал(а):Привет!
Подскажите куда копать, нажимаю INIT выскакивает ошибка. До этого двигал осями при первой настройке Кфлопа+Каналог
KFLOP тут особо не причем. Если на шпинделе есть энкодер, то можно настроить KFLOP на поддержание скорости, но нужно понимать, что у Вас скорей всего VFD скалярный, а не векторный инвертор и он не может обеспечить большой крутящий момент на маленьких оборотах, в этом и есть основная проблема. Для начала посмотрите в инструкции на инвертор настройки "повышенный момент при низких оборотах".Bes писал(а):Товарищи подскажите как менять диапазоны оборотов шпинделя в нашем kmotion :wik: ? Станок сс2в05пмф4. На малых оборотах при фрезеровке стали захлёбывается (припуск не большой, даже детский :D ), обороты падают на глазах до полной остановки вращения инструмента.
Код: Выделить всё
#include "KMotionDef.h"
#include "MySpindleDefs.h"
int *css_mode = &persist.UserData[PC_COMM_CSS_MODE]; // Mode 1=Normal RPM mode. 2=CSS
// desired speed is passed from KMotionCNC in variable KMVAR
// save in user variable STATEVAR whether it was off, CW, or CCW (0,1,-1)
// save in user variable SPEEDVAR the last desired speed
main()
{
float speed = *(float *)&persist.UserData[SPEEDVAR]; // value stored is actually a float
float LastState = persist.UserData[STATEVAR]; // get last state
if (LastState==-1)
{
// if spindle was CCW now we want CW
// spin down
ClearBit(SPINDLECW_BIT);
ClearBit(SPINDLECCW_BIT);
Jog(SPINDLEAXIS,0);
}
// turn spindle on CW and ramp to new speed
DisableAxis(3);
DAC(7,0);
SetBit(SPINDLECW_BIT);
EnableAxis(3);
if (*css_mode != 2)
{
// spindle is already on, so ramp to new speed
if (USE_POS_NEG_VOLTAGE)
Jog(SPINDLEAXIS,speed * FACTOR * LastState);
else
Jog(SPINDLEAXIS,speed * FACTOR);
printf("Jogging Spindle %f counts/sec\n",speed * FACTOR);
}
persist.UserData[STATEVAR] = 1; // remember we are CW
}
Код: Выделить всё
#include "KMotionDef.h"
#include "MySpindleDefs.h"
int *css_mode = &persist.UserData[PC_COMM_CSS_MODE]; // Mode 1=Normal RPM mode. 2=CSS
// desired speed is passed from KMotionCNC in variable KMVAR
// save in user variable STATEVAR whether it was off, CW, or CCW (0,1,-1)
// save in user variable SPEEDVAR the last desired speed
main()
{
float speed = *(float *)&persist.UserData[SPEEDVAR]; // value stored is actually a float
float LastState = persist.UserData[STATEVAR]; // get last state
if (LastState==1)
{
// if spindle was CW now we want CCW
// spin down
ClearBit(SPINDLECW_BIT);
ClearBit(SPINDLECCW_BIT);
Jog(SPINDLEAXIS,0);
while (!CheckDone(SPINDLEAXIS)) ;
}
// turn spindle on CCW and ramp to new speed
SetBit(SPINDLECCW_BIT);
if (*css_mode != 2)
{
// spindle is already on, so ramp to new speed
if (USE_POS_NEG_VOLTAGE)
Jog(SPINDLEAXIS,speed * FACTOR * LastState);
else
Jog(SPINDLEAXIS,speed * FACTOR);
printf("Jogging Spindle %f counts/sec\n",speed * FACTOR);
}
persist.UserData[STATEVAR] = -1; // remember we are CCW
}
Вы хоть тему вначале прочитайте.Bes писал(а):Вроде нашёл скрипт вращения обратной стороны....