#include "KMotionDef.h"
//GoldCNC5 Installation.
// Defines axis 0, 1, 2, 3, 4, 5, 6 as needed.
int main()
{
//FPGA(STEP_PULSE_LENGTH_ADD)=32 + 0x40 + 0x80; // set the pulse time to ~ 2us, mux to JP4 and JP6, and pulse the Step High
FPGA(STEP_PULSE_LENGTH_ADD)=32 + 0x80;
ch0->InputMode=ENCODER_MODE; //X Axis
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=320000; //1920 RPM Max Rapid Travel Settings
ch0->Accel=8000000; //Rapid Travel Settings
ch0->Jerk=4e+006; //Rapid Travel Settings
ch0->P=5;
ch0->I=0.03;
ch0->D=500;
ch0->FFAccel=0;
ch0->FFVel=0;
ch0->MaxI=200;
ch0->MaxErr=20000;
ch0->MaxOutput=2000;
ch0->DeadBandGain=1;
ch0->DeadBandRange=0;
ch0->InputChan0=0;
ch0->InputChan1=0;
ch0->OutputChan0=0; //Output Channel
ch0->OutputChan1=0;
ch0->MasterAxis=-1;
ch0->LimitSwitchOptions=0x100;
ch0->LimitSwitchNegBit=0;
ch0->LimitSwitchPosBit=0;
ch0->SoftLimitPos=1e+030;
ch0->SoftLimitNeg=-1e+030;
ch0->InputGain0=1;
ch0->InputGain1=1;
ch0->InputOffset0=0;
ch0->InputOffset1=0;
ch0->OutputGain=1;
ch0->OutputOffset=0;
ch0->SlaveGain=1;
ch0->BacklashMode=BACKLASH_OFF;
ch0->BacklashAmount=0;
ch0->BacklashRate=0;
ch0->invDistPerCycle=20480;
ch0->Lead=0;
ch0->MaxFollowingError=1000000000;
ch0->StepperAmplitude=20;
ch0->iir[0].B0=1;
ch0->iir[0].B1=0;
ch0->iir[0].B2=0;
ch0->iir[0].A1=0;
ch0->iir[0].A2=0;
ch0->iir[1].B0=1;
ch0->iir[1].B1=0;
ch0->iir[1].B2=0;
ch0->iir[1].A1=0;
ch0->iir[1].A2=0;
ch0->iir[2].B0=0.000769;
ch0->iir[2].B1=0.001538;
ch0->iir[2].B2=0.000769;
ch0->iir[2].A1=1.92081;
ch0->iir[2].A2=-0.923885;
//EnableAxisDest(0,0)
ch1->InputMode=ENCODER_MODE; //Y Axis
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=320000; //1920 RPM Max Rapid Travel Settings
ch1->Accel=8000000; //Rapid Travel Settings
ch1->Jerk=4e+006; //Rapid Travel Settings
ch1->P=5;
ch1->I=0.03;
ch1->D=500;
ch1->FFAccel=0;
ch1->FFVel=0;
ch1->MaxI=200;
ch1->MaxErr=1e+006;
ch1->MaxOutput=2000;
ch1->DeadBandGain=1;
ch1->DeadBandRange=0;
ch1->InputChan0=1;
ch1->InputChan1=0;
ch1->OutputChan0=1; //Output Channel
ch1->OutputChan1=0;
ch1->MasterAxis=-1;
ch1->LimitSwitchOptions=0x100;
ch1->LimitSwitchNegBit=0;
ch1->LimitSwitchPosBit=0;
ch1->SoftLimitPos=1e+030;
ch1->SoftLimitNeg=-1e+030;
ch1->InputGain0=1;
ch1->InputGain1=1;
ch1->InputOffset0=0;
ch1->InputOffset1=0;
ch1->OutputGain=1;
ch1->OutputOffset=0;
ch1->SlaveGain=1;
ch1->BacklashMode=BACKLASH_OFF;
ch1->BacklashAmount=0;
ch1->BacklashRate=0;
ch1->invDistPerCycle=20480;
ch1->Lead=0;
ch1->MaxFollowingError=1000000000;
ch1->StepperAmplitude=20;
ch1->iir[0].B0=1;
ch1->iir[0].B1=0;
ch1->iir[0].B2=0;
ch1->iir[0].A1=0;
ch1->iir[0].A2=0;
ch1->iir[1].B0=1;
ch1->iir[1].B1=0;
ch1->iir[1].B2=0;
ch1->iir[1].A1=0;
ch1->iir[1].A2=0;
ch1->iir[2].B0=0.000769;
ch1->iir[2].B1=0.001538;
ch1->iir[2].B2=0.000769;
ch1->iir[2].A1=1.92081;
ch1->iir[2].A2=-0.923885;
//EnableAxisDest(1,0);
ch2->InputMode=ENCODER_MODE; //Z Axis
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=320000; //1920 RPM Max Rapid Travel Settings
ch2->Accel=8000000; //Rapid Travel Settings
ch2->Jerk=4e+006; //Rapid Travel Settings
ch2->P=5;
ch2->I=0.03;
ch2->D=500;
ch2->FFAccel=0;
ch2->FFVel=0;
ch2->MaxI=200;
ch2->MaxErr=1e+006;
ch2->MaxOutput=2000;
ch2->DeadBandGain=1;
ch2->DeadBandRange=0;
ch2->InputChan0=2;
ch2->InputChan1=0;
ch2->OutputChan0=2; //Output Channel
ch2->OutputChan1=0;
ch2->MasterAxis=-1;
ch2->LimitSwitchOptions=0x100;
ch2->LimitSwitchNegBit=0;
ch2->LimitSwitchPosBit=0;
ch2->SoftLimitPos=1e+030;
ch2->SoftLimitNeg=-1e+030;
ch2->InputGain0=1;
ch2->InputGain1=1;
ch2->InputOffset0=0;
ch2->InputOffset1=0;
ch2->OutputGain=1;
ch2->OutputOffset=0;
ch2->SlaveGain=1;
ch2->BacklashMode=BACKLASH_OFF;
ch2->BacklashAmount=0;
ch2->BacklashRate=0;
ch2->invDistPerCycle=20480;
ch2->Lead=0;
ch2->MaxFollowingError=1000000000;
ch2->StepperAmplitude=20;
ch2->iir[0].B0=1;
ch2->iir[0].B1=0;
ch2->iir[0].B2=0;
ch2->iir[0].A1=0;
ch2->iir[0].A2=0;
ch2->iir[1].B0=1;
ch2->iir[1].B1=0;
ch2->iir[1].B2=0;
ch2->iir[1].A1=0;
ch2->iir[1].A2=0;
ch2->iir[2].B0=0.000769;
ch2->iir[2].B1=0.001538;
ch2->iir[2].B2=0.000769;
ch2->iir[2].A1=1.92081;
ch2->iir[2].A2=-0.923885;
//EnableAxisDest(2,0);
ch3->InputMode=ENCODER_MODE; //A Axis 4TH AXIS LATHE
ch3->OutputMode=DAC_SERVO_MODE;
ch3->Vel=320000; //1920 RPM Max Rapid Travel Settings
ch3->Accel=8000000; //Rapid Travel Settings
ch3->Jerk=4e+006; //Rapid Travel Settings
ch3->P=5;
ch3->I=0.03;
ch3->D=500;
ch3->FFAccel=0;
ch3->FFVel=0;
ch3->MaxI=200;
ch3->MaxErr=1e+006;
ch3->MaxOutput=2000;
ch3->DeadBandGain=1;
ch3->DeadBandRange=0;
ch3->InputChan0=3;
ch3->InputChan1=0;
ch3->OutputChan0=6; //Output Channel
ch3->OutputChan1=0;
ch3->MasterAxis=-1;
ch3->LimitSwitchOptions=0x100;
ch3->LimitSwitchNegBit=0;
ch3->LimitSwitchPosBit=0;
ch3->SoftLimitPos=1e+030;
ch3->SoftLimitNeg=-1e+030;
ch3->InputGain0=1;
ch3->InputGain1=1;
ch3->InputOffset0=0;
ch3->InputOffset1=0;
ch3->OutputGain=1;
ch3->OutputOffset=0;
ch3->SlaveGain=1;
ch3->BacklashMode=BACKLASH_OFF;
ch3->BacklashAmount=0;
ch3->BacklashRate=0;
ch3->invDistPerCycle=214000;
ch3->Lead=0;
ch3->MaxFollowingError=1000000000;
ch3->StepperAmplitude=20;
ch3->iir[0].B0=1;
ch3->iir[0].B1=0;
ch3->iir[0].B2=0;
ch3->iir[0].A1=0;
ch3->iir[0].A2=0;
ch3->iir[1].B0=1;
ch3->iir[1].B1=0;
ch3->iir[1].B2=0;
ch3->iir[1].A1=0;
ch3->iir[1].A2=0;
ch3->iir[2].B0=0.000769;
ch3->iir[2].B1=0.001538;
ch3->iir[2].B2=0.000769;
ch3->iir[2].A1=1.92081;
ch3->iir[2].A2=-0.923885;
//EnableAxisDest(3,0);
ch4->InputMode=NO_INPUT_MODE;
ch4->OutputMode=STEP_DIR_MODE;
ch4->Vel=6700; //Step Drive set to 400. 800 per tool change.
ch4->Accel=5000;
ch4->Jerk=40000;
ch4->P=0.000000;
ch4->I=0.010000;
ch4->D=0.000000;
ch4->FFAccel=0.000000;
ch4->FFVel=0.000000;
ch4->MaxI=200.000000;
ch4->MaxErr=1000000.000000;
ch4->MaxOutput=200.000000;
ch4->DeadBandGain=1.000000;
ch4->DeadBandRange=0.000000;
ch4->InputChan0=0;
ch4->InputChan1=0;
ch4->OutputChan0=6;
ch4->OutputChan1=0;
ch4->LimitSwitchOptions=0x100;
ch4->LimitSwitchNegBit=0;
ch4->LimitSwitchPosBit=0;
ch4->InputGain0=1.000000;
ch4->InputGain1=1.000000;
ch4->InputOffset0=0.000000;
ch4->InputOffset1=0.000000;
ch4->invDistPerCycle=1.0;
ch4->Lead=0.000000;
ch4->MaxFollowingError=1000000000.000000;
ch4->StepperAmplitude=20.000000;
ch4->iir[0].B0=1.000000;
ch4->iir[0].B1=0.000000;
ch4->iir[0].B2=0.000000;
ch4->iir[0].A1=0.000000;
ch4->iir[0].A2=0.000000;
ch4->iir[1].B0=1.000000;
ch4->iir[1].B1=0.000000;
ch4->iir[1].B2=0.000000;
ch4->iir[1].A1=0.000000;
ch4->iir[1].A2=0.000000;
ch4->iir[2].B0=0.000769;
ch4->iir[2].B1=0.001538;
ch4->iir[2].B2=0.000769;
ch4->iir[2].A1=1.920810;
ch4->iir[2].A2=-0.923885;
EnableAxisDest(4,1); //Enable the Axis.
ch5->InputMode=ENCODER_MODE; //C Axis
ch5->OutputMode=DAC_SERVO_MODE;
ch5->Vel=4000;
ch5->Accel=400000;
ch5->Jerk=4e+006;
ch5->P=0;
ch5->I=0.01;
ch5->D=0;
ch5->FFAccel=0;
ch5->FFVel=0;
ch5->MaxI=200;
ch5->MaxErr=1e+006;
ch5->MaxOutput=200;
ch5->DeadBandGain=1;
ch5->DeadBandRange=0;
ch5->InputChan0=4;
ch5->InputChan1=0;
ch5->OutputChan0=3;
ch5->OutputChan1=0;
ch5->MasterAxis=-1;
ch5->LimitSwitchOptions=0x100;
ch5->LimitSwitchNegBit=0;
ch5->LimitSwitchPosBit=0;
ch5->InputGain0=1;
ch5->InputGain1=1;
ch5->InputOffset0=0;
ch5->InputOffset1=0;
ch5->OutputGain=1;
ch5->OutputOffset=0;
ch5->SlaveGain=1;
ch5->BacklashMode=BACKLASH_OFF;
ch5->BacklashAmount=0;
ch5->BacklashRate=0;
ch5->invDistPerCycle=800;
ch5->Lead=0;
ch5->MaxFollowingError=1000000000;
ch5->StepperAmplitude=20;
ch5->iir[0].B0=1;
ch5->iir[0].B1=0;
ch5->iir[0].B2=0;
ch5->iir[0].A1=0;
ch5->iir[0].A2=0;
ch5->iir[1].B0=1;
ch5->iir[1].B1=0;
ch5->iir[1].B2=0;
ch5->iir[1].A1=0;
ch5->iir[1].A2=0;
ch5->iir[2].B0=0.000769;
ch5->iir[2].B1=0.001538;
ch5->iir[2].B2=0.000769;
ch5->iir[2].A1=1.92081;
ch5->iir[2].A2=-0.923885;
ch6->InputMode=ENCODER_MODE;
ch6->OutputMode=DAC_SERVO_MODE;
ch6->Vel=40000;
ch6->Accel=400000;
ch6->Jerk=4e+006;
ch6->P=0;
ch6->I=0;
ch6->D=0;
ch6->FFAccel=10000;
ch6->FFVel=2047;
ch6->MaxI=2047;
ch6->MaxErr=200;
ch6->MaxOutput=2047;
ch6->DeadBandGain=1;
ch6->DeadBandRange=0;
ch6->InputChan0=5;
ch6->InputChan1=1;
ch6->OutputChan0=4; //Output Channel
ch6->OutputChan1=1;
ch6->MasterAxis=-1;
ch6->LimitSwitchOptions=0x100;
ch6->LimitSwitchNegBit=0;
ch6->LimitSwitchPosBit=0;
ch6->SoftLimitPos=1e+009;
ch6->SoftLimitNeg=-1e+009;
ch6->InputGain0=1;
ch6->InputGain1=1;
ch6->InputOffset0=0;
ch6->InputOffset1=0;
ch6->OutputGain=-1; //Changed
ch6->OutputOffset=0;
ch6->SlaveGain=1;
ch6->BacklashMode=BACKLASH_OFF;
ch6->BacklashAmount=0;
ch6->BacklashRate=0;
ch6->invDistPerCycle=1;
ch6->Lead=0;
ch6->MaxFollowingError=10000000;
ch6->StepperAmplitude=250;
ch6->iir[0].B0=1;
ch6->iir[0].B1=0;
ch6->iir[0].B2=0;
ch6->iir[0].A1=0;
ch6->iir[0].A2=0;
ch6->iir[1].B0=1;
ch6->iir[1].B1=0;
ch6->iir[1].B2=0;
ch6->iir[1].A1=0;
ch6->iir[1].A2=0;
ch6->iir[2].B0=1;
ch6->iir[2].B1=0;
ch6->iir[2].B2=0;
ch6->iir[2].A1=0;
ch6->iir[2].A2=0;
//EnableAxisDest(6,1);
DefineCoordSystem6(0,1,2,3,-1,5); //Router With Lathe.
//Add IO Board
InitAux();
AddKonnect_Aux0(0,&VirtualBits,VirtualBitsEx);
AddKonnect_Aux0(1,VirtualBitsEx+1,VirtualBitsEx+2) ;
AddKonnect_Aux0(2,VirtualBitsEx+3,VirtualBitsEx+4) ;
//AddKonnect(0,&VirtualBits,VirtualBitsEx);
//AddKonnect(1,VirtualBitsEx+1,VirtualBitsEx+2);
//AddKonnect(2,VirtualBitsEx+3,VirtualBitsEx+4);
VirtualBits=0;
VirtualBitsEx[0]=0;
VirtualBitsEx[1]=0;
VirtualBitsEx[3]=0;
//Board 0 has Output Bits mapped to 48 - 63 and Input Bits Mapped to 1024-1055
//Board 1 has Output Bits mapped to 1056-1071 and Input Bits Mapped to 1088-1119
//Board 2 has Output Bits mapped to 1120-1135 and Input Bits Mapped to 1152-1183
//Flash LED.
SetBit(47);
Delay_sec(1);
ClearBit(47);
Delay_sec(1);
SetBit(47);
Delay_sec(1);
ClearBit(47);
Delay_sec(1);
SetBit(47);
Delay_sec(1);
ClearBit(47);
return 0;
}