//-------------------------------------------------------------------- // Demo Program(DEMO100.cpp) for i-8094 Motion Card //-------------------------------------------------------------------- //-------------------------- // v1.1 2005/6/20 //--------------------------- #include #include #include "8000.h" #include "I8094.h" BYTE cardNo; long x_value, y_value, z_value, u_value; //-------------------------------------------------------------------- void main () { //=================== I-8000 =================== //Set (slot0~slot7) = cardNO (1~8)ĄC BYTE slot; slot = 0; cardNo = 1; i8094MF_REGISTRATION(cardNo, slot); i8094MF_INIT_CARD(cardNo); i8094MF_SET_PULSE_MODE(cardNo, AXIS_XYZU, 2); i8094_IN3_LEVEL(cardNo,AXIS_XYZU, 1); i8094MF_SET_ALARM(cardNo, AXIS_XYZU, 1, 1); i8094MF_SET_ENCODER(cardNo, AXIS_XYZU, 0, 0, 0); i8094MF_SET_MAX_V(cardNo, AXIS_XYZU, 16000); //========================================================================== BYTE ret1 = 0; BYTE chkey; DWORD sv; //PPS DWORD v; //PPS DWORD a; //PPS/s i8094MF_SERVO_ON(cardNo, AXIS_XYZU); do { Print(" (0:Exit, 1:HELIX_3D_1, 2:HELIX_3D_2, 3:RATIO, 4:FRnet output, 5:FRnet input) \r\n"); Print(" (6:Reset Encoder, 7:Stop, 8:Clear Error) \r\n"); Print(" (X:Jog X, Y:Jog Y, Z:Jog Z, U:Jog U, S:Stop Jog) \r\n"); Print("\n"); Print("----------------------LOGIC AND REAL POSITION COUNTER----------------------\n"); x_value = i8094MF_GET_LP(cardNo, AXIS_X); y_value = i8094MF_GET_LP(cardNo, AXIS_Y); z_value = i8094MF_GET_LP(cardNo, AXIS_Z); u_value = i8094MF_GET_LP(cardNo, AXIS_U); Print("LOGIC POSITION: x=%10ld, y= %10ld, z= %10ld, u=%10ld \r\n", x_value, y_value, z_value, u_value); x_value = i8094MF_GET_EP(cardNo, AXIS_X); y_value = i8094MF_GET_EP(cardNo, AXIS_Y); z_value = i8094MF_GET_EP(cardNo, AXIS_Z); u_value = i8094MF_GET_EP(cardNo, AXIS_U); Print("REAL POSITION: x=%10ld, y= %10ld, z= %10ld, u=%10ld \r\n", x_value, y_value, z_value, u_value); while (!Kbhit()); chkey=Getch(); Print("%s\r\n",&chkey); switch (chkey) { case '0': i8094MF_RESET_CARD(cardNo); Print("EXIT! \r\n"); return; //--------------------------------------------------------------- case '1': v=50000;//PPSĄC i8094MF_SET_MAX_V(cardNo, AXIS_XYZU,160000L); ret1=i8094MF_HELIX_3D(cardNo, AXIS_Y, AXIS_Z, AXIS_X, 1, v, 0, 1000, 5, -2000); Delay(1000); Print("HELIX_3D_1 ! \r\n"); Print("ret1= %d \r\n",ret1); break; //--------------------------------------------------------------- case '2': v=100000;//PPSĄC i8094MF_SET_MAX_V(cardNo, AXIS_XYZU,1600000L); ret1=i8094MF_HELIX_3D(cardNo, AXIS_Y, AXIS_Z, AXIS_U, 1, v, 0, 25000, 10, 3600); Delay(2000); Print("HELIX_3D_2 ! \r\n"); Print("ret1= %d \r\n",ret1); break; //--------------------------------------------------------------- case '3': sv=300;//PPSĄC v=30000;//PPSĄC a=500000;//PPS/sĄC int loop1; int loop2; float ratio; i8094MF_SET_MAX_V(cardNo, AXIS_XYZU,160000L); Print("RATIO_2D ratio ? \r\n"); Scanf("%f", &ratio); Print("ratio= %f \r\n",ratio); i8094MF_RATIO_INITIAL(cardNo,AXIS_U, AXIS_X, sv, v, a, ratio); for (loop2 = 0; loop2 < 5; loop2++) { for (loop1 = 0; loop1 < 5; loop1++) { i8094MF_RATIO_2D(cardNo, 0, 3600, 0); i8094MF_RATIO_2D(cardNo, 0, 3600, 1); } i8094MF_RATIO_2D(cardNo, 0, 7200, 0); i8094MF_RATIO_2D(cardNo, 0, 3600, 1); } i8094MF_RATIO_2D(cardNo, 1, 7200, 1); Delay(3000); Print("RATIO_2D OK ! \r\n"); break; //--------------------------------------------------------------- case '4': WORD wSA; WORD data; Print("FRnet wSA ? \r\n"); Scanf("%d", &wSA); Print("FRnet 16 bits data ? \r\n"); Scanf("%d", &data); i8094MF_FRNET_SA(cardNo, wSA, data); break; //--------------------------------------------------------------- case '5': WORD wRA; Print("FRnet wRA ? \r\n"); Scanf("%d", &wRA); long data1 = i8094MF_FRNET_RA(cardNo, wRA); Print("FRnet 16 bits data = %10ld \r\n", data1); break; //--------------------------------------------------------------- case '6': i8094MF_SET_LP(cardNo, AXIS_XYZU, 0); i8094MF_SET_EP(cardNo, AXIS_XYZU, 0); Print("RESET Encoder ! \r\n"); break; //--------------------------------------------------------------- case '7': i8094MF_STOP_SLOWLY(cardNo, AXIS_XYZU); Print("STOP! \r\n"); break; //--------------------------------------------------------------- case '8': i8094MF_CLEAR_STOP(cardNo); Print("CLEAR ERROR ! \r\n"); break; //--------------------------------------------------------------- case 88: case 120: BYTE m_Axis=AXIS_X; i8094MF_SET_MAX_V(cardNo, m_Axis, 32000); i8094MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8094MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8094MF_SET_V(cardNo, m_Axis, 50000); i8094MF_EXD_MP(cardNo, AXIS_X, 100); i8094MF_EXD_DISABLE(cardNo, AXIS_Y); i8094MF_EXD_DISABLE(cardNo, AXIS_Z); i8094MF_EXD_DISABLE(cardNo, AXIS_U); break; //--------------------------------------------------------------- case 89: case 121: m_Axis=AXIS_Y; i8094MF_SET_MAX_V(cardNo, m_Axis, 32000); i8094MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8094MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8094MF_SET_V(cardNo, m_Axis, 100000); i8094MF_EXD_MP(cardNo, AXIS_Y, 100); i8094MF_EXD_DISABLE(cardNo, AXIS_X); i8094MF_EXD_DISABLE(cardNo, AXIS_Z); i8094MF_EXD_DISABLE(cardNo, AXIS_U); break; //--------------------------------------------------------------- case 90: case 122: m_Axis=AXIS_Z; i8094MF_SET_MAX_V(cardNo, m_Axis, 32000); i8094MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8094MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8094MF_SET_V(cardNo, m_Axis, 10000); i8094MF_EXD_MP(cardNo, AXIS_Z, 100); i8094MF_EXD_DISABLE(cardNo, AXIS_X); i8094MF_EXD_DISABLE(cardNo, AXIS_Y); i8094MF_EXD_DISABLE(cardNo, AXIS_U); break; //--------------------------------------------------------------- case 85: case 117: m_Axis=AXIS_U; i8094MF_SET_MAX_V(cardNo, m_Axis, 32000); i8094MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8094MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8094MF_SET_V(cardNo, m_Axis, 10000); i8094MF_EXD_MP(cardNo, AXIS_U, 5); i8094MF_EXD_DISABLE(cardNo, AXIS_X); i8094MF_EXD_DISABLE(cardNo, AXIS_Y); i8094MF_EXD_DISABLE(cardNo, AXIS_Z); break; //--------------------------------------------------------------- case 83: case 115: i8094MF_EXD_DISABLE(cardNo, AXIS_X); i8094MF_EXD_DISABLE(cardNo, AXIS_Y); i8094MF_EXD_DISABLE(cardNo, AXIS_Z); i8094MF_EXD_DISABLE(cardNo, AXIS_U); break; //--------------------------------------------------------------- default: break; } } while (1); }