📄 subprog.lst
字号:
523 {
524 1 unsigned int DaOffset;
525 1 DaOffset = 0;
526 1 if(MeasureUAdjust > SetupU + UZero*2)
527 1 {//电压大于设定值
528 2 if (MeasureUAdjust-SetupU > 50*UZero)
529 2 {
530 3 DaOffset = (MeasureUAdjust-SetupU)/2;
531 3 }
532 2 else if (MeasureUAdjust-SetupU > 25*UZero)
533 2 {
534 3 DaOffset = (MeasureUAdjust-SetupU)/4;
535 3 }
536 2 else
537 2 {
538 3 DaOffset = 1;//小偏差 微调
539 3 }
540 2 if(DaOffset > 20)
541 2 {
542 3 DaOffset = 20;
543 3 }
544 2 if(RealTimeDA > DaOffset)
545 2 {
546 3 RealTimeDA -= DaOffset;
547 3 }
548 2 else
549 2 {
550 3 RealTimeDA = 0;
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 10
551 3 }
552 2 }
553 1 else if(MeasureUAdjust < SetupU-UZero*2)
554 1 {//电压小于设定值
555 2 if (MeasureI < SetupI-IZero)
556 2 {//电流
557 3 if (SetupU - MeasureUAdjust > 50*UZero)
558 3 {
559 4 DaOffset = (SetupU - MeasureUAdjust)/2;
560 4 }
561 3 else if(SetupU - MeasureUAdjust > 25*UZero)
562 3 {
563 4 DaOffset = (SetupU-MeasureUAdjust)/4;
564 4 }
565 3 else
566 3 {
567 4 DaOffset = 1;
568 4 }
569 3 }
570 2 if(DaOffset > 10)
571 2 {
572 3 DaOffset = 10;
573 3 }
574 2 RealTimeDA+=DaOffset;
575 2 }
576 1 if(RealTimeDA > SetupIDA)
577 1 {
578 2 RealTimeDA = SetupIDA;
579 2 }
580 1 SetupDA(RealTimeDA + DAb);
581 1 }
582 /*********************************************************************************************************
583 ** 函数名称: void RunToStop()
584 ** 功能描述: 由运行状态转为停止状态
585 ** 输 入:
586 ** 输 出:
587 ** 全局变量:
588 ** 调用模块:
589 **
590 ** 作 者: 刘宝贵
591 ** 日 期: 2006年4月8日
592 **-------------------------------------------------------------------------------------------------------
593 ** 修改人:
594 ** 日 期:
595 **-------------------------------------------------------------------------------------------------------
596 *********************************************************************************************************/
597 void RunToStop()
598 {
599 1 ChangeStateFlag = 1;
600 1 while(WriteOutDA>10)
601 1 {
602 2 if(WriteOutDA>600)
603 2 {
604 3 WriteOutDA = WriteOutDA-100;
605 3 }
606 2 else
607 2 {
608 3 WriteOutDA = WriteOutDA-10;
609 3 }
610 2 SetupDA(WriteOutDA);
611 2 os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
612 2 }
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 11
613 1 SetupDA(0);
614 1 os_wait(K_TMO,2000/OS_MSEL_PER_TICKS,0);
615 1 os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
616 1 JDQ_FMC = JDQ_ON;
617 1 os_wait(K_TMO,2000/OS_MSEL_PER_TICKS,0);
618 1 os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
619 1 JDQ_CHARGE = JDQ_OFF;
620 1 JDQ_DISCHARGE = JDQ_OFF;
621 1 os_wait(K_TMO,10/OS_MSEL_PER_TICKS,0);
622 1 ChangeStateFlag = 0;
623 1 }
624 /*********************************************************************************************************
625 ** 函数名称: void Stop()
626 ** 功能描述: 停止状态
627 ** 输 入:
628 ** 输 出:
629 ** 全局变量:
630 ** 调用模块:
631 **
632 ** 作 者: 刘宝贵
633 ** 日 期: 2006年6月28日
634 **-------------------------------------------------------------------------------------------------------
635 ** 修改人:
636 ** 日 期:
637 **-------------------------------------------------------------------------------------------------------
638 *********************************************************************************************************/
639 void Stop()
640 {
641 1 SetupDA(0);
642 1 JDQ_FMC = JDQ_ON;
643 1 JDQ_CHARGE = JDQ_OFF;
644 1 JDQ_DISCHARGE = JDQ_OFF;
645 1 }
646 /*********************************************************************************************************
647 ** 函数名称: void StopToCharge()
648 ** 功能描述: 由停止状态转为充电状态
649 ** 输 入:
650 ** 输 出:
651 ** 全局变量:
652 ** 调用模块:
653 **
654 ** 作 者: 刘宝贵
655 ** 日 期: 2006年4月8日
656 **-------------------------------------------------------------------------------------------------------
657 ** 修改人:
658 ** 日 期:
659 **-------------------------------------------------------------------------------------------------------
660 *********************************************************************************************************/
661 void StopToCharge()
662 {
663 1 unsigned char i;
664 1 unsigned long temp32;
665 1 ChangeStateFlag = 1;
666 1 SetupDA(0);
667 1 os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
668 1 os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
669 1 if(SetupCurrentDirection == 0)//正常方向
670 1 {
671 2 JDQ_CHARGE = JDQ_ON;
672 2 JDQ_DISCHARGE = JDQ_OFF;
673 2 }
674 1 else //逆向充电
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 12
675 1 {
676 2 JDQ_CHARGE = JDQ_OFF;
677 2 JDQ_DISCHARGE = JDQ_ON;
678 2 }
679 1 os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
680 1 JDQ_FMC = JDQ_OFF;
681 1 os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
682 1 temp32 = SetupI;
683 1 temp32*=DAk;
684 1 temp32/=10000;
685 1 SetupIDA = (unsigned int)temp32;
686 1 RealTimeDA = SetupIDA;
687 1 for(i = 0;i<100;i++)
688 1 {
689 2 if(State!=RUN)
690 2 {
691 3 break;
692 3 }
693 2 SetupDA(((RealTimeDA + DAb)/100)*i);
694 2 os_wait(K_TMO,50/OS_MSEL_PER_TICKS,0);
695 2 }
696 1 if(State==RUN)
697 1 {
698 2 SetupDA(SetupIDA + DAb);
699 2 }
700 1 ChangeStateFlag = 0;
701 1 }
702 /*********************************************************************************************************
703 ** 函数名称: void StopToDisCharge()
704 ** 功能描述: 由停止状态转为放电状态
705 ** 输 入:
706 ** 输 出:
707 ** 全局变量:
708 ** 调用模块:
709 **
710 ** 作 者: 刘宝贵
711 ** 日 期: 2006年4月8日
712 **-------------------------------------------------------------------------------------------------------
713 ** 修改人:
714 ** 日 期:
715 **-------------------------------------------------------------------------------------------------------
716 *********************************************************************************************************/
717 void StopToDisCharge()
718 {
719 1 unsigned long temp32;
720 1 ChangeStateFlag = 1;
721 1 SetupDA(0);
722 1 os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
723 1 os_wait(K_TMO,1500/OS_MSEL_PER_TICKS,0);
724 1 if(SetupCurrentDirection == 0)//正常方向
725 1 {
726 2 JDQ_CHARGE = JDQ_OFF;
727 2 JDQ_DISCHARGE = JDQ_ON;
728 2 }
729 1 else //逆向充电
730 1 {
731 2 JDQ_CHARGE = JDQ_ON;
732 2 JDQ_DISCHARGE = JDQ_OFF;
733 2 }
734 1 os_wait(K_TMO,1000/OS_MSEL_PER_TICKS,0);
735 1 JDQ_FMC = JDQ_OFF;
736 1 os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 13
737 1 temp32 = SetupI;
738 1 temp32*=DAk;
739 1 temp32/=10000;
740 1 SetupIDA = (unsigned int)temp32;
741 1 RealTimeDA = 0;
742 1 // RealTimeDA = SetupIDA;
743 1 while(MeasureI < SetupI/20 || RealTimeDA < DAb+150 )
744 1 {
745 2 if(State!=RUN)
746 2 {
747 3 break;
748 3 }
749 2 RealTimeDA+=1;
750 2 SetupDA(RealTimeDA);
751 2 os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
752 2 if(RealTimeDA>1000)
753 2 {
754 3 State = STOP;
755 3 }
756 2 }
757 1 while(RealTimeDA < (SetupIDA+DAb)-10)
758 1 {
759 2 if(State!=RUN)
760 2 {
761 3 break;
762 3 }
763 2 RealTimeDA+=10;
764 2 SetupDA(RealTimeDA);
765 2 os_wait(K_TMO,200/OS_MSEL_PER_TICKS,0);
766 2 }
767 1 if(State==RUN)
768 1 {
769 2 RealTimeDA = SetupIDA + DAb;
770 2 SetupDA(RealTimeDA);
771 2 }
772 1 ChangeStateFlag = 0;
773 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2853 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 37
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -