//-------------------------------------------------------------------- // Demo Program(DEMO100.cpp) for i-8094 Motion Card //-------------------------------------------------------------------- //-------------------------- // v1.1 2005/6/20 //--------------------------- #include #include #include "8000.h" #include "I8092.h" BYTE cardNo; long x_value, y_value; //-------------------------------------------------------------------- void main () { //=================== I-8000 =================== //Set (slot0~slot7) = cardNO (1~8)ĄC BYTE slot; int Found = 0; for (slot = 0; slot < 8; slot++) { cardNo = slot + 1; if (i8092MF_REGISTRATION(cardNo, slot) == YES) { //Found Axis CardĄC i8092MF_RESET_CARD(cardNo); Found++; } } if (Found == 0) { //Not FoundĄC Print("I-8092 card not found ! \r\n"); return; } cardNo = 1; //i8092MF_INIT_CARD(cardNo); i8092MF_SET_PULSE_MODE(cardNo, AXIS_XY, 2); //i8094_IN3_LEVEL(cardNo,AXIS_XY, 1); i8092MF_SET_ALARM(cardNo, AXIS_XY, 1, 1); i8092MF_SET_ENCODER(cardNo, AXIS_XY, 0, 0, 0); i8092MF_SET_MAX_V(cardNo, AXIS_XY, 16000); //========================================================================== BYTE ret1 = 0; BYTE chkey; DWORD sv; //PPS DWORD v; //PPS DWORD a; //PPS/s i8092MF_SERVO_ON(cardNo, AXIS_XY); do { Print(" (0:Exit, 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, S:Stop Jog) \r\n"); Print("\n"); Print("----------------------LOGIC AND REAL POSITION COUNTER----------------------\n"); x_value = i8092MF_GET_LP(cardNo, AXIS_X); y_value = i8092MF_GET_LP(cardNo, AXIS_Y); Print("LOGIC POSITION: x=%10ld, y= %10ld \r\n", x_value, y_value); x_value = i8092MF_GET_EP(cardNo, AXIS_X); y_value = i8092MF_GET_EP(cardNo, AXIS_Y); Print("REAL POSITION: x=%10ld, y= %10ld \r\n", x_value, y_value); while (!Kbhit()); chkey=Getch(); Print("%s\r\n",&chkey); switch (chkey) { case '0': i8092MF_RESET_CARD(cardNo); Print("EXIT! \r\n"); return; //--------------------------------------------------------------- //--------------------------------------------------------------- case '3': sv=300;//PPSĄC v=30000;//PPSĄC a=500000;//PPS/sĄC int loop1; int loop2; float ratio; i8092MF_SET_MAX_V(cardNo, AXIS_XY,160000L); Print("RATIO_2D ratio ? \r\n"); Scanf("%f", &ratio); Print("ratio= %f \r\n",ratio); i8092MF_RATIO_INITIAL(cardNo, sv, v, a, ratio); for (loop2 = 0; loop2 < 5; loop2++) { for (loop1 = 0; loop1 < 5; loop1++) { i8092MF_RATIO_2D(cardNo, 0, 3600, 0); i8092MF_RATIO_2D(cardNo, 0, 3600, 1); } i8092MF_RATIO_2D(cardNo, 0, 7200, 0); i8092MF_RATIO_2D(cardNo, 0, 3600, 1); } i8092MF_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); i8092MF_FRNET_SA(cardNo, wSA, data); break; //--------------------------------------------------------------- case '5': WORD wRA; Print("FRnet wRA ? \r\n"); Scanf("%d", &wRA); long data1 = i8092MF_FRNET_RA(cardNo, wRA); Print("FRnet 16 bits data = %10ld \r\n", data1); break; //--------------------------------------------------------------- case '6': i8092MF_SET_LP(cardNo, AXIS_XY, 0); i8092MF_SET_EP(cardNo, AXIS_XY, 0); Print("RESET Encoder ! \r\n"); break; //--------------------------------------------------------------- case '7': i8092MF_STOP_SLOWLY(cardNo, AXIS_XY); Print("STOP! \r\n"); break; //--------------------------------------------------------------- case '8': i8092MF_CLEAR_ERROR(cardNo); Print("CLEAR ERROR ! \r\n"); break; //--------------------------------------------------------------- case 88: case 120: BYTE m_Axis=AXIS_X; i8092MF_SET_MAX_V(cardNo, m_Axis, 32000); i8092MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8092MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8092MF_SET_V(cardNo, m_Axis, 50000); i8092MF_EXD_MP(cardNo, AXIS_X, 100); i8092MF_EXD_DISABLE(cardNo, AXIS_Y); break; //--------------------------------------------------------------- case 89: case 121: m_Axis=AXIS_Y; i8092MF_SET_MAX_V(cardNo, m_Axis, 32000); i8092MF_NORMAL_SPEED(cardNo, m_Axis, 0); //set axis as Symmetrical T curve mode i8092MF_SET_A(cardNo, m_Axis, 50000); //set Acc =50000 PPS/S i8092MF_SET_V(cardNo, m_Axis, 100000); i8092MF_EXD_MP(cardNo, AXIS_Y, 100); i8092MF_EXD_DISABLE(cardNo, AXIS_X); break; //--------------------------------------------------------------- case 90: case 115: i8092MF_EXD_DISABLE(cardNo, AXIS_X); i8092MF_EXD_DISABLE(cardNo, AXIS_Y); break; //--------------------------------------------------------------- default: break; } } while (1); }