📄 xkcan_node.lst
字号:
466 3 //Generate a full frame from CAN
467 3 //flag_485_tx = 1;
468 3 }
469 3 else if ( csTemp == PDO2_485_CTRL_1 && flag_485_tx == 0)
470 3 {
471 3 //Generate a full frame from CAN
472 3 //flag_485_tx = 1;
473 3 }
474 3 else if ( csTemp == PDO2_485_CTRL_C && flag_485_tx == 0)
475 3 {
476 3 //Generate a full frame from CAN
477 3 //flag_485_tx = 1;
478 3 }
479 3 else if ( csTemp == PDO2_485_CTRL_C_1 && flag_485_tx == 0)
480 3 {
481 3 //Generate a full frame from CAN
482 3 //flag_485_tx = 1;
483 3 }
484 3 else
485 3 {
486 3 // ERROR Handling
487 3 }
488 3 */
489 3 }
C51 COMPILER V8.09 XKCAN_NODE 03/13/2008 06:00:59 PAGE 9
490 2 else if ( fcTemp == FC_SDO_TX )
491 2 {
492 3 if ( csTemp == SDO_CS_EXP_TIME )
493 3 {
494 4 CLOCK_Exp_Set( pReadRxCanFrame->dat[1], pReadRxCanFrame->dat[2], pReadRxCanFrame->dat[3]);
495 4 flag_timer_exp_set = 1;
496 4 }
497 3 else if ( csTemp == SDO_CS_EXP_START )
498 3 {
499 4 if (flag_timer_exp_set == 1)
500 4 EnterExpStatus(EXP_RUNNING);
501 4 }
502 3 else if ( csTemp == SDO_CS_EXP_STOP )
503 3 {
504 4 EnterExpStatus(EXP_STOPPED);
505 4 }
506 3 else if ( csTemp == SDO_CS_EXP_PAUSE )
507 3 {
508 4 EnterExpStatus(EXP_PAUSE);
509 4 }
510 3 else if ( csTemp == SDO_CS_EXP_RESET )
511 3 {
512 4 EnterExpStatus(EXP_INITIALISING);
513 4 }
514 3 else if ( csTemp == SDO_CS_EXP_RESUME )
515 3 {
516 4 EnterExpStatus(EXP_RUNNING);
517 4 }
518 3 else if ( csTemp == SDO_CS_EXP_END )
519 3 {
520 4 EnterExpStatus(EXP_END);
521 4 }
522 3 else
523 3 {
524 4 //TODO: Add your error handling code here
525 4 //ERROR: Recevied undefined NMT Module Control frame
526 4 }
527 3 }
528 2
529 2 else
530 2 {
531 3 //Error Handle
532 3 }
533 2 }
534 1
535 1 // Data received. After all dealings, switch the ping-pong buffer
536 1
537 1 pCanFrameTemp2 = pReadRxCanFrameTemp;
538 1 pReadRxCanFrameTemp = pReadRxCanFrame;
539 1 pReadRxCanFrame = pCanFrameTemp2;
540 1 }
541
542
543 void StatusMachine()
544 {
545 1 if (NMT_Status == STATUS_INITIALISING)
546 1 {
547 2 //STATUS_INITIALISING
548 2 EnterStatus (STATUS_RESET_APP); // automatically
549 2 }
550 1 else if (NMT_Status == STATUS_RESET_APP)
551 1 {
C51 COMPILER V8.09 XKCAN_NODE 03/13/2008 06:00:59 PAGE 10
552 2 //STATUS_RESET_APP
553 2 EnterStatus (STATUS_RESET_COMM); // automatically
554 2 }
555 1 else if (NMT_Status == STATUS_RESET_COMM)
556 1 {
557 2 //STATUS_RESET_COMM
558 2 EnterStatus (STATUS_PRE_OPERATIONAL); // automatically
559 2 }
560 1 else if (NMT_Status == STATUS_PRE_OPERATIONAL)
561 1 {
562 2 //STATUS_PRE_OPERATIONAL
563 2 //EnterStatus (STATUS_OPERATIONAL); // automatically
564 2 }
565 1 else if (NMT_Status == STATUS_OPERATIONAL)
566 1 {
567 2 // Check all instruments and other devices's status
568 2 UpdateRegStatus();
569 2
570 2 // Send Data to 485 bus
571 2 _485_SendData(stntype);
572 2 // Receive Data from UART, this might be 485 data
573 2 stntype = _485_ReceiveData();
574 2
575 2 //CRC Check
576 2 //if ( flag_485_rcv == 1 )
577 2 //{
578 2 // if ( _485_Tuoke_DH4_CRCCheck( pRx485Frame ) != 1 );
579 2 // flag_485_rcv = 0;
580 2 //}
581 2
582 2 // SEND 485 data to CAN
583 2 if (flag_485_rcv == 1 )
584 2 {
585 3 txCanFrameTemp.cobid = _GEN_D_COBID(FC_D_PDO2_RX, NID);
586 3 txCanFrameTemp.rtr = 0;
587 3 txCanFrameTemp.dat[0] = PDO2_485_READ;
588 3 txCanFrameTemp.dat[1] = stntype;
589 3
590 3 if (stntype == INSTR_TUOKE_DH4)
591 3 {
592 4 txCanFrameTemp.dlc = 5;
593 4 txCanFrameTemp.dat[2] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->stn;
594 4 txCanFrameTemp.dat[3] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->dat_L;
595 4 txCanFrameTemp.dat[4] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->dat_H;
596 4 }
597 3
598 3 CAN_Transmit( &txCanFrameTemp );
599 3 flag_485_rcv = 0;
600 3 }
601 2
602 2 if (EXP_Status == EXP_PRE_INIT)
603 2 {
604 3 EnterExpStatus(EXP_INITIALISING);
605 3 }
606 2 else if (EXP_Status == EXP_INITIALISING)
607 2 {
608 3 if (flag_timer_exp_set == 1)
609 3 EnterExpStatus(EXP_STANDBY);
610 3 }
611 2 else if (EXP_Status == EXP_STANDBY)
612 2 {
613 3 ;
C51 COMPILER V8.09 XKCAN_NODE 03/13/2008 06:00:59 PAGE 11
614 3 }
615 2 else if (EXP_Status == EXP_RUNNING)
616 2 {
617 3 if (flag_timer_exp_timeup == 1)
618 3 {
619 4 EnterExpStatus(EXP_END_REQUEST);
620 4 }
621 3 }
622 2 else if (EXP_Status == EXP_PAUSE)
623 2 {
624 3 ;
625 3 }
626 2 else if (EXP_Status == EXP_FAULT)
627 2 {
628 3 ;
629 3 }
630 2 else if (EXP_Status == EXP_STOPPED)
631 2 {
632 3 EnterExpStatus(EXP_END_REQUEST);
633 3 }
634 2 else if (EXP_Status == EXP_END_REQUEST)
635 2 {
636 3 ;
637 3 }
638 2 else if (EXP_Status == EXP_END)
639 2 {
640 3 ;
641 3 }
642 2 else if (EXP_Status == EXP_STATUS_ERROR)
643 2 {
644 3 ;
645 3 }
646 2 else
647 2 {
648 3 ;
649 3 }
650 2
651 2 }
652 1 else if (NMT_Status == STATUS_STOPPED)
653 1 {
654 2 //STATUS_STOPPED
655 2 }
656 1 else
657 1 {
658 2 // STATUS_DEFAULT
659 2 }
660 1
661 1 }
662
663 void UpdateRegStatus()
664 {
665 1 ubyte cTemp;
666 1
667 1 if ( timer_tick1 != timer_tick2 )
668 1 {
669 2 timer_tick2 = TIMER_Count();
670 2
671 2 cTemp = Status_Read();
672 2 if (cTemp == 0x55)
673 2 {
674 3 regStatus[1] = Status_Read();
675 3
C51 COMPILER V8.09 XKCAN_NODE 03/13/2008 06:00:59 PAGE 12
676 3 }
677 2 else
678 2 {
679 3 cTemp = Status_Read();
680 3 cTemp = Status_Read();
681 3 }
682 2 cTemp = Status_Read();
683 2 }
684 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1703 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 9
IDATA SIZE = 73 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -