?? k1_diag.lst
字號:
302 1 TxdData.DataLen = 0x04;
C51 COMPILER V7.20 K1_DIAG 08/04/2007 17:20:18 PAGE 6
303 1 TxdData.DataBuf[0] = 0x55;
304 1 TxdData.DataBuf[1] = 0x55;
305 1 TxdData.DataBuf[2] = SVCSetData;
306 1 TxdData.DataBuf[3] = 0x0F;
307 1 TxdData.CheckByte = TxdHeader0 + CMD_SetOutput +0x00;
308 1
309 1
310 1 if(SendCMDPackage(100,CMD_SetOutput,10)){
311 2 SVCReadData = ReadAdc();
312 2 if(SVCReadData > SVCSetData){
313 3 InData = SVCReadData - SVCSetData;
314 3 }else{
315 3 InData = SVCSetData - SVCReadData;
316 3 }
317 2
318 2 GUI_DispStringAt("設置值-測量值-偏差",StatusDispPosX+16,StatusDispPosY);
319 2 DispVolt(SVCSetData,StatusDispPosX,StatusDispPosY+2);
320 2 DispVolt(SVCReadData,StatusDispPosX+3*Chinese_XSIZE+Char_XSIZE,StatusDispPosY+2);
321 2 DispVolt(InData,StatusDispPosX+6*Chinese_XSIZE+2*Char_XSIZE,StatusDispPosY+2);
322 2
323 2 if(InData > 0x03){//如果誤差較大
324 3 //GUI_DispStringAt("模擬主軸電壓誤差值偏大!",TitleDispPosX,TitleDispPosY);
325 3 GUI_DispStringAt("<--",StatusDispPosX+6*Chinese_XSIZE+8*Char_XSIZE,StatusDispPosY+2);
326 3 return Err_unPass;
327 3 }else{
328 3 //GUI_DispStringAt(" ",TitleDispPosX,TitleDispPosY);
329 3 GUI_DispStringAt(" ",StatusDispPosX+6*Chinese_XSIZE+8*Char_XSIZE,StatusDispPosY+2);
330 3 return Err_Pass;
331 3 }
332 2
333 2 }else{
334 2 GUI_DispStringAt("Timeout! ",StatusDispPosX,StatusDispPosY);
335 2 GUI_Delay(1000);
336 2 return Err_Timeout;
337 2 }
338 1 }
339
340 //SVC測試步進值
341 #define SVCStep 0x0A
342
343
344 /*
345 *****************************************************************************
346 * K1_SVCTest - 測試K1的模擬電壓
347 * DESCRIPTION: -
348 * 測試如果發現偏差大于一定的值那么認為有錯
349 * Input:
350 * Output:*SysErrMap 出錯記錄
351 * Returns: Err_Pass Err_unPass Err_Timeout 測試通過/未通過/超時
352 *
353 *****************************************************************************
354 */
355 U8 K1_SVCTest(struct _SysErrDiff *SysErrMap)
356 {
357 1 U16 U16Count;
358 1 U8 TimeoutCount;
359 1 U8 unPassCount;
360 1 U8 ReturnCode;
361 1 GUI_DispStringAtBar("-檢測模擬主軸-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
362 1 for(U16Count = 0; U16Count < 0x100; U16Count += SVCStep){
363 2
364 2 ProgBar(TitleDispPosY+2, 32, 128+32,(U8)U16Count,0xFF);
C51 COMPILER V7.20 K1_DIAG 08/04/2007 17:20:18 PAGE 7
365 2 ReturnCode = CheckSVCOutput(U16Count);
366 2 if(ReturnCode == Err_Timeout){//檢查是否超時
367 3 TimeoutCount++;
368 3 if(TimeoutCount > MAXTimeoutCount){//超時次數太多了
369 4 GUI_Clear();
370 4 GUI_DispStringAt("超時次數太多!",StatusDispPosX,StatusDispPosY);
371 4 GUI_Delay(3000);
372 4 return Err_Timeout;
373 4 }
374 3 }
375 2 if(ReturnCode == Err_unPass){
376 3 unPassCount++;
377 3 if(unPassCount > 3){
378 4 SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_SVC;
379 4 return Err_unPass;
380 4 }
381 3 }
382 2 }
383 1 return Err_Pass;
384 1 }
385
386
387
388 /*
389 *****************************************************************************
390 * K1_CheckRs232Pin_DCD - 測試K1串口的DCD輸出信號
391 * DESCRIPTION: -
392 * 發送命令給K1后,K1會在一段時間內輸出DCD DSR的方波診斷器檢測該方波
393 * Input:
394 * Output:*SysErrMap 出錯記錄
395 * Returns: Err_Pass Err_unPass Err_Timeout 測試通過/未通過/超時
396 *
397 *****************************************************************************
398 */
399 U8 K1_CheckRs232Pin_DCD(struct _SysErrDiff *SysErrMap)
400 {
401 1 U16 Timeout;
402 1 U8 InData;
403 1 U8 Retry;
404 1
405 1 Bool FailFlag;
406 1 Bool BitIsOne;
407 1 U8 Trig;
408 1
409 1 GUI_DispStringAtBar("-Rs232 DCD-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
410 1 ProgBar(TitleDispPosY+2, 32, 128+32,20,100);
411 1
412 1 FailFlag = false;
413 1
414 1 TxdData.CMD = CMD_SetOutput;
415 1 TxdData.DataLen = 0x04;
416 1 TxdData.DataBuf[0] = 0x55;
417 1 TxdData.DataBuf[1] = 0x55;
418 1 TxdData.DataBuf[2] = 0x55;
419 1 TxdData.DataBuf[3] = 0x8F;
420 1 TxdData.CheckByte = TxdHeader0 + CMD_SetOutput +0x00;
421 1 Trig = 0;
422 1 Retry = 4;
423 1 ProgBar(TitleDispPosY+2, 32, 128+32,40,100);
424 1 // if(SetK1OutPut()){
425 1 do{
426 2 StartTXD();
C51 COMPILER V7.20 K1_DIAG 08/04/2007 17:20:18 PAGE 8
427 2 Timeout = TimeoutInitData;
428 2 do{
429 3 if(TxdData.State == Txd_Empty){//發送完畢
430 4 break;
431 4 }
432 3 GUI_Delay(1);
433 3 Timeout--;
434 3 }while(Timeout);
435 2
436 2 InData = XBYTE[IN3_Port_Addr];
437 2 if((InData&BIT_DCD)== 0){//讀出狀態
438 3 BitIsOne = false;
439 3 }else{
440 3 BitIsOne = true;
441 3 }
442 2
443 2 Timeout = 10000;
444 2 do{
445 3 InData = XBYTE[IN3_Port_Addr];
446 3 if(((InData&BIT_DCD)== 0)&&(BitIsOne == true)){//-----|________
447 4 Trig ++;
448 4 ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
449 4 if(Trig > 2){
450 5 Retry = 1;
451 5 }
452 4 break;
453 4 }else if(((InData&BIT_DCD)== BIT_DCD)&&(BitIsOne == false)){//________|---------
454 4 Trig ++;
455 4 ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
456 4 if(Trig > 2){
457 5 Retry = 1;
458 5 }
459 4 break;
460 4 }
461 3 Delay_50us(1);
462 3 LED1 ^= 0x01;
463 3 Timeout--;
464 3 }while(Timeout);
465 2 LED0 ^= 0x01;
466 2
467 2 Retry--;
468 2 if(Retry == 0){
469 3 break;
470 3 }
471 2
472 2 }while(Retry);
473 1
474 1 GUI_GotoXY(StatusDispPosX,StatusDispPosY);
475 1
476 1 if(Trig > 2){
477 2 GUI_DispString("DCD");
478 2 GUI_DispString(" OK");
479 2 GUI_Delay(1000);
480 2 return Err_Pass;
481 2 }else{
482 2 // if(Timeout){
483 2 SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_DCD;
484 2 GUI_GotoXY(StatusDispPosX,StatusDispPosY);
485 2 GUI_DispString("DCD");
486 2 GUI_DispString(" Err!");
487 2 GUI_Delay(2000);
488 2 return Err_unPass;
C51 COMPILER V7.20 K1_DIAG 08/04/2007 17:20:18 PAGE 9
489 2 // }else{
490 2 // GUI_DispStringAt("Timeout ",StatusDispPosX,StatusDispPosY);
491 2 // GUI_Delay(2000);
492 2 // return Err_Timeout;
493 2 // }
494 2 }
495 1
496 1 // }else{
497 1 // GUI_DispStringAt("Timeout ",StatusDispPosX,StatusDispPosY);
498 1 // GUI_Delay(2000);
499 1 // return Err_Timeout;
500 1 // }
501 1
502 1 }
503
504 /*
505 *****************************************************************************
506 * K1_CheckRs232Pin_DSR - K1串口DSR輸出信號測試
507 * DESCRIPTION: -
508 *
509 * Input:
510 * Output:*SysErrMap 出錯記錄
511 * Returns: Err_Pass Err_unPass Err_Timeout 測試通過/未通過/超時
512 *
513 *****************************************************************************
514 */
515 U8 K1_CheckRs232Pin_DSR(struct _SysErrDiff *SysErrMap)
516 {
517 1 U16 Timeout;
518 1 U8 InData;
519 1 U8 Retry;
520 1
521 1 Bool FailFlag;
522 1 Bool BitIsOne;
523 1 U8 Trig;
524 1
525 1 GUI_DispStringAtBar("-Rs232 DSR-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
526 1 ProgBar(TitleDispPosY+2, 32, 128+32,20,100);
527 1
528 1
529 1 FailFlag = false;
530 1
531 1 TxdData.CMD = CMD_SetOutput;
532 1 TxdData.DataLen = 0x04;
533 1 TxdData.DataBuf[0] = 0x55;
534 1 TxdData.DataBuf[1] = 0x55;
535 1 TxdData.DataBuf[2] = 0x55;
536 1 TxdData.DataBuf[3] = 0x4F;
537 1 TxdData.CheckByte = TxdHeader0 + CMD_SetOutput +0x00;
538 1
539 1 Trig = 0;
540 1 Retry = 4;
541 1 ProgBar(TitleDispPosY+2, 32, 128+32,40,100);
542 1
543 1 // if(SetK1OutPut()){
544 1 do{
545 2 StartTXD();
546 2 Timeout = TimeoutInitData;
547 2 do{
548 3 if(TxdData.State == Txd_Empty){//發送完畢
549 4 break;
550 4 }
C51 COMPILER V7.20 K1_DIAG 08/04/2007 17:20:18 PAGE 10
551 3 GUI_Delay(1);
552 3 Timeout--;
553 3 }while(Timeout);
554 2
555 2 InData = XBYTE[IN3_Port_Addr];
556 2 if((InData&BIT_DSR)== 0){//讀出狀態
557 3 BitIsOne = false;
558 3 }else{
559 3 BitIsOne = true;
560 3 }
561 2
562 2 Timeout = 10000;
563 2 do{
564 3 InData = XBYTE[IN3_Port_Addr];
565 3 if(((InData&BIT_DSR)== 0)&&(BitIsOne == true)){//-----|________
566 4 Trig ++;
567 4 ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
568 4 if(Trig > 2){
569 5 Retry = 1;
570 5 }
571 4 break;
572 4 }else if(((InData&BIT_DSR)== BIT_DSR)&&(BitIsOne == false)){//________|---------
573 4 Trig ++;
574 4 ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
575 4 if(Trig > 2){
576 5 Retry = 1;
577 5 }
578 4 break;
579 4 }
580 3 Delay_50us(1);
581 3 LED1 ^= 0x01;
582 3 Timeout--;
583 3 }while(Timeout);
584 2 LED0 ^= 0x01;
585 2
586 2 Retry--;
587 2 if(Retry == 0){
588 3 break;
589 3 }
590 2
591 2 }while(Retry);
592 1
593 1 GUI_GotoXY(StatusDispPosX,StatusDispPosY);
594 1 ProgBar(TitleDispPosY+2, 32, 128+32,90,100);
595 1 if(Trig > 2){
596 2 GUI_DispString("DSR");
597 2 GUI_DispString(" OK");
598 2 GUI_Delay(1000);
599 2 return Err_Pass;
600 2 }else{
601 2 if(Timeout){
602 3 SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_DSR;
603 3 GUI_GotoXY(StatusDispPosX,StatusDispPosY);
604 3 GUI_DispString("DSR");
605 3 GUI_DispString(" Err! @A");
606 3 GUI_Delay(3000);
607 3 return Err_unPass;
608 3 }else{//檢查是否收到命令
609 3 GUI_Delay(400);
610 3 if((RxdData.State == Rxd_CheckByteOk)&&(RxdData.ACK == CMD_SetOutput)){//如果收到了命令卻
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -