⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multipid.asm

📁 在单片机上实现对工业现场的多模态PID控制源代码,方面大家参考
💻 ASM
字号:
相关常数在外部存储器的存储位置
KD:0100H~0102H;  TS:0103H~0105H;  TD:0106H~0108H;  KP:0109H~010BH;
TI:010CH~010EH;  XN:010FH~0111H;  X(N-1):0112H~0114H;  X(N-2):0115H~0117H;
EN:0118H~011AH;  DYN:011BH~011DH;  E(N-1):0124H~0126H;  EM:0127H~0129H;  UN:012AH~012CH;  U(N-1):012DH~012FH;KI:0130H~0132H;  AA;0133H~0135H;  BB;0136H~0138H;  DU:0139H~013BH;
KN:013CH~013EH

TJ1:ABS(e)>=a*ABS(em); TJ11:e*e'>=0;
GS1:U=Kp*e+U(n-1),deltaU=Ki*Ts*(e(n)-e(n-1));
TJ2:a*ABS(em)>=b*ABS(em)且e*e'<0;
GS2:U=Kn*e+Un;
TJ3:b*ABS(em)>ABS(e).0.02且e*e'<0
GS3:Un=U(n-1)+deltaU;
TJ4:ABS(e)<0.02
GS4:PIDINC




TJ1:MOV    DPTR,#0127H        ;Em---->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    MOV    DPTR,#0133H        ;AA---->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    LCALL  RTR
    MOV    DPTR,#0118H        ;En----->R2R3R4
    LCALL  MVDP0
    LCALL  FCMP
    JBC    F0,TJ11
    LCALL  GS1
TJ11:MOV    DPTR,#0118H        ;En----->R2R3R4
     LCALL  MVDP0
     MOV    DPTR,#0124H        ;E(n-1)--->R5R6R7
     LCALL  MVDP1
     LCALL  FSUB
     MOV    DPTR,#0103H        ;TS----->R5R6R7
     LCALL  MVDP1
     LCALL  FDIV
     MOV    DPTR,#0118H         ;En----->R5R6R7
     LCALL  MVDP1
     LCALL  FMUL
     MOV    R5,#00H
     MOV    R6,#00H
     MOV    R7,#00H
     LCALL  FCMP
     JBC    F0,TJ2
     LCALL  GS1
GS1:MOV    DPTR,#0109H           ;Kp----->R2R3R4
    LCALL  MVDP0
    MOV    DPTR,#0118H           ;En----->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    MOV    DPTR,#012DH           ;U(n-1)---->R5R6R7
    LCALL  MVDP1
    LCALL  FADD
    MOV    DPTR,#012AH            ;Un送到指定外存
    LCALL  RMVDP0
    MOV    DPTR,#0118H            ;En----->R2R3R4
    LCALL  MVDP0
    MOV    DPTR,#0124H            ;E(n-1)--->R5R6R7
    LCALL  MVDP1
    LCALL  FSUB
    MOV    DPTR,#0103H            ;TS----->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    MOV    DPTR,#0130H            ;Ki----->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    MOV    DPTR,#0139H            ;deltaU---->外存
    LCALL  RMVDP0
    LCALL  TJ4
TJ2:MOV    DPTR,#0127H            ;Em---->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    MOV    DPTR,#0133H            ;系数A---->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    LCALL  RTR
    MOV    DPTR,#0118H            ;En----->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    LCALL  FCMP
    JNB    F0,TJ21
    LCALL  TJ3
TJ21:MOV    DPTR,#0127H           ;Em---->R2R3R4
     LCALL  MVDP0
     LCALL  FABS
     MOV    DPTR,#0136H            ;系数B---->R5R6R7
     LCALL  MVDP1
     LCALL  FMUL
     LCALL  RTR
     MOV    DPTR,#0118H            ;En----->R2R3R4
     LCALL  MVDP0
     LCALL  FABS
     LCALL  FCMP
     JNB    F0,TJ3
TJ22:MOV    DPTR,#0118H            ;En----->R2R3R4
     LCALL  MVDP0
     MOV    DPTR,#0124H            ;E(n-1)--->R5R6R7
     LCALL  MVDP1
     LCALL  FSUB
     MVO    DPTR,#0103H            ;TS---->R5R6R7
     LCALL  MVDP1
     LCALL  FDIV
     MOV    DPTR,#0118H            ;E(n-1)--->R5R6R7
     LCALL  MVDP1
     LCALL  FMUL
     MOV    R5,#00H
     MOV    R6,#00H
     MOV    R7,#00H
     LCALL  FCMP
     JNB    F0,GS2
     LCALL  TJ3
GS2:MOV    DPTR,#0118H            ;En----->R2R3R4
    LCALL  MVDP0
    MOV    DPTR,#013CH            ;Kn----->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    MOV    DPTR,#012DH             ;U(N-1)----->R5R6R7
    LCALL  MVDP1
    LCALL  FADD
    MOV    DPTR,#012AH             ;Un----->外存
    LCALL  RMVDP0
    LCALL  TJ4
TJ3:MOV    DPTR,#0127H             ;Em---->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    MOV    DPTR,#0136H             ;系数B---->R5R6R7
    LCALL  MVDP1
    LCALL  FMUL
    LCALL  RTR
    MOV    DPTR,#0118H             ;En----->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    LCALL  FCMP
    JNB    F0,TJ31
    LCALL  TJ1
TJ31:MOV    R2,#45H               ;0.02---->R2R3R4
     MOV    R3,#0A3H
     MOV    R4,#0D7H
     MOV    DPTR,#0118H            ;En----->R5R6R7
     LCALL  MVDP1
     LCALL  FABS
     LCALL  FCMP
     JNB    F0,TJ1
TJ32:MOV    DPTR,#0118H             ;En----->R2R3R4
     LCALL  MVDP0
     MOV    DPTR,#0124H             ;E(n-1)--->R5R6R7
     LCALL  MVDP1
     LCALL  FSUB
     MOV    DPTR,#0103H             ;TS----->R5R6R7
     LCALL  MVDP1
     LCALL  FMUL
     MOV    DPTR,#0118H            ;En----->R5R6R7
     LCALL  MVDP1
     LCALL  FMUL
     MOV    R5,#00H
     MOV    R6,#00H
     MOV    R7,#00H
     LCALL  FCMP
     JNB    F0,GS3
     LCALL  TJ1
GS3:MOV    DPTR,#012DH            ;U(N-1)----->R2R3R4
    LCALL  MVDP0
    MOV    DPTR,#0139H             ;deltaU---->R5R6R7
    LCALL  MVDP1
    LCALL  FADD
    MOV    DPTR,#012AH             ;Un----->外存
    LCALL  RMVDP0
    LCALL  TJ4
TJ4:MOV    DPTR,#0118H             ;En----->R2R3R4
    LCALL  MVDP0
    LCALL  FABS
    MOV    R2,#45H                 ;0.02---->R2R3R4
    MOV    R3,#0A3H
    MOV    R4,#0D7H
    LCALL  FCMP
    JNB    F0,PIDINC
    LCALL  TJ1

    MOV    DPTR,#0118H             ;En---->E(n-1)
    MOVX   A,@DPTR
    MOV    PDTR,#0124H
    MOVX   @DPTR,A
    MOV    DPTR,#0119H
    MOVX   A,@DPTR
    MOV    PDTR,#0125H
    MOVX   @DPTR,A
    MOV    DPTR,#011AH
    MOVX   A,@DPTR
    MOV    PDTR,#0126H
    MOVX   @DPTR,A
    END

    





	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -