📄 ge15.asm
字号:
EXTINT: RET
SFTIMER0: PUSH AX ;Re_fresh LCD1, LCD2 and LCD3
STM00: LDB AL,AD_LOW
JBS AL,3,STM00 ;判断A/D转换完毕了?
LDB AD_CMD,#08H ;;现在启动A/D
DJNZ RFCNT,STM03 ;;闪烁计数器RFCNT=3次
LDB RFCNT,#3
JBC FLAG3,5,STM01 ;刷新第一片数码管标志
ANDB FLAG3,#11011111B ;清第一片数码管标志
ORB FLAG3,#01000000B ;置第二片数码管标志
STB LCD1,LS373C2[0] ;Re_new LCD1 display
ANDB LS373C1V,#11111000B
ORB LS373C1V,#00000011B
STB LS373C1V,LS373C1[0]
BR STM03
STM01: JBC FLAG3,6,SFTM02
ANDB FLAG3,#10111111B ;Re_fresh LCD2
ORB FLAG3,#10000000B
STB LCD2,LS373C2[0]
ANDB LS373C1V,#11111000B
ORB LS373C1V,#00000101B
STB LS373C1V,LS373C1[0]
BR STM03
SFTM02: ANDB FLAG3,#01111111B ;Re_fresh LCD3
ORB FLAG3,#00100000B ;置第一片标志
STB LCD3,LS373C2[0]
ANDB LS373C1V,#11111000B
ORB LS373C1V,#00000110B
STB LS373C1V,LS373C1[0]
STM03: PUSH BX
PUSH CX
POP CX
POP BX
POP AX
RET
SOFTINT: PUSHF
PUSH IOS1F ;Retimer
LDB IOS1F,IOS1 ;;读状态寄存器1
SOFTTM0: JBC IOS1F,0,SOFTTM1
LDB HSO_CMD,#38H ;;软件定时器0 可中断引脚输出高电平
ADD HSO_TIME,T1,#500 ;1ms interrupt
SOFTTM1: JBC IOS1F,1,SOFTTM2
LDB HSO_CMD,#39H ;;软件定时器1
ADD HSO_TIME,T1,#5000 ;10ms interrupt
SOFTTM2: JBC IOS1F,2,SOFTTM4 ;;软件定时器2到时?
JBC FLAG2,2,SOFTTM8 ;;软件定时器可继续定时
PUSH AX
SUB AX,SFTIME3,T1
LDB HSO_CMD,#3AH ;;软件定时器2
ADD HSO_TIME,T1,AX
POP AX
SOFTTM8: ADD SFTIME3,SFTIME2 ;3.3MS
INCB T6CNT
SOFTTM3: LDB INT_MK,#04H ;;HSI数据输入有效
EI
CALL SFTIMER2
BR SOFTTM5
SOFTTM4: LDB INT_MK,#04H
EI
SOFTTM5: JBC IOS1F,1,SOFTTM6
CALL SFTIMER1
SOFTTM6: JBC IOS1F,0,SOFTTM7
CALL SFTIMER0
SOFTTM7: POP IOS1F
POPF
RET
SFTIMER2: PUSH AX
PUSH BX
PUSH CX
PUSH DX
CMPB T6CNT,#5
JNE STM2_1
ANDB FLAG2,#11111011B ;;软件定时器2不可以用
STM2_1: JBS FLAG6,0,STM2_1C ;;判断FMK有无分闸
ADD SFTIME4,SFTIME2
LJMP STM2_10
STM2_1C: JBC FLAG4,5,STM2_1D
JBC FLAG1,2,STM2_2
JBC STOPCNT1,7,STM2_1A
LD BX,#(P_RAM+28*2) ;P28
LD BX,[BX]
MULUB ALFA,BL,#20 ;ALFA=160.0 Degree(P28 limited),
;here ALFA with a point
MULUB PULSET,BL,#28 ;T=P28*55.6/2=4448 uS
DI
LDB HSO_CMD,THY_NUM_UP
ADD HSO_TIME,T1,PULSET
EI
STM2_1D: LJMP STM2_10
STM2_1E: JBC FLAG4,1,STM2_1F
STM2_1H: INC CVPICNT
CMP CVPICNT,P40V[0]
JNH STM2_1G
CLR CVPICNT
CALL PID ;VPI1吊调用PID调节
LJMP STM2_6A
STM2_1G: LD BX,ALFA
LJMP STM2_6A
STM2_1F: JBS FLAG4,2,STM2_1J ;If FLAG4.3=1 (Manual mode) CPU runs
LJMP STM2_2D ; at constant current mode
STM2_1J: ORB FLAG4,#00010000B
LJMP STM2_2B
STM2_1A: DI
LDB HSO_CMD,THY_NUM_UP
ADD HSO_TIME,SFTIME4,PULSET
EI
ADD SFTIME4,SFTIME2
STM2_2: JBC FLAG5,3,STM2_2A
MULU BX,GFCMCOV,#703 ;When P29=1, ALFA decised by GFCM
DIVU BX,#100 ;YK=GFCM*703; (0--512)~(0--3600)
LD CX,#3600 ;here K=703=3600*100/(512*100)
SUB BX,CX,BX
LJMP STM2_6A
STM2_2A: JBC FLAG1,3,STM2_2C
LD BX,ENHANCE
LJMP STM2_3
STM2_2C: JBC FLAG4,0,STM2_1E
STM2_2D: ANDB FLAG4,#11101111B
JBC FLAG5,2,STM2_2B
ANDB FLAG5,#11111011B
CLR EK_1
CLR EK_12
STM2_2B: LD BX,GFCMCOV ;Constant current mode
JBS FLAG2,0,STM2_3
CALL SLOPE
STM2_3: SUB BX,FFCM
STM2_4: LD AX,P22V[0] ;P22
CMP AX,0
JNE STM2_5
LD AX,P21V[0] ;P21, Ki
CALL P_LOOP ;调用PI电流调节
LJMP STM2_6A
STM2_5: JBC FLAG6,3,STM2_5A
JBC FLAG6,2,STM2_5B
CALL PI_C ;调用
STM2_5B: CALL PIT_LOOP
LJMP STM2_6A
STM2_5A: LD 0C8H,BX
EXT 0C8H
CALL INTF4 ;FLOAT(EK)
PUSH 0C8H
PUSH 0CAH
LD 0C8H,AX ;(AX)=P22
CLR 0CAH ;
CALL INTF4 ;
ST 0C8H,0CCH ;
ST 0CAH,0CEH ;
LD 0C8H,#85H ;Set delta T=3.3 mS, (33)
LD 0CAH,#400H ;96,6,26
CALL FDIV4 ;Delta_T/TAU
LD 0CCH,#80H ;Float expression of 1
LD 0CEH,0
CALL FADD4 ;(1+DELTA_T/TAU)
POP 0CEH
POP 0CCH
PUSH 0CCH
PUSH 0CEH
CALL FMUL4 ;(1+DELTA_T/TAU)*FLOAT(EK)
LD 0CCH,EK_1
LD 0CEH,EK_12
POP EK_12
POP EK_1
;~~~~
CALL FSUB4 ;(1+DELTA_T/TAU)*FLOAT(EK)-EK_1
PUSH 0C8H
PUSH 0CAH
LD 0C8H,P21V[0] ;P21 Ki
CLR 0CAH
CALL INTF4
LD 0CCH,#86H ;-100
LD 0CEH,#0C800H
CALL FDIV4 ;-Ki/100
POP 0CEH
POP 0CCH
CALL FMUL4 ;KP[(1+DELTA_T/TAU)*FLOAT(EK)-EK_1]
LD 0CCH,YK_1
LD 0CEH,YK_12
CALL FADD4 ;KP[(1+DELTA_T/TAU)*FLOAT(EK)-EK_1]+YK_1
ST 0C8H,YK_1
ST 0CAH,YK_12
CALL FINT4
LD BX,0C8H
STM2_6A: CMP BX,P28V[0] ;BETA Limit
JLT STM2_6
LD BX,P28V[0]
ST BX,0C8H
CLR 0CAH
CALL INTF4
LD YK_1,0C8H
LD YK_12,0CAH
STM2_6: CMP BX,P27V[0] ;ALFA Limit
JGE STM2_8
LD BX,P27V[0]
ST BX,0C8H
CLR 0CAH
CALL INTF4
LD YK_1,0C8H
LD YK_12,0CAH
STM2_8: ANDB FLAG3,#11111110B
CMP BX,P30V[0]
JH STM2_9
ORB FLAG3,#1
JBS FLAG6,5,STM2_8A
JBC FLAG6,6,STM2_9
STM2_8A: LD BX,P30V[0]
LJMP STM2_9A
STM2_9: JBC FLAG9,0,STM2_9A ;1.1过流
JBS FLAG1,3,STM2_9A ;强励标志
CMP BX,LMTOVCUR11[0]
JH STM2_9A
LD BX,LMTOVCUR11[0]
STM2_9A: ST BX,ALFA
MULU BX,#139 ;1 degree=55.6 uS=27.8 T1
DIVU BX,#100 ;0.1 degree=5.56 uS=278*T1/100
ST BX,PULSET
STM2_10: INCB THY_NUM_UP
CMPB THY_NUM_UP,#36H
JNE STM2_12
LDB THY_NUM_UP,#30H
STM2_12: POP DX
POP CX
POP BX
POP AX
RET
PID: JBS FLAG5,2,PID3 ;电压环计数器为1
ORB FLAG5,#00000100B
CLR EN_1
CLR EN_2
PID3: SUB EN,STR_VM,GFCMCOV
PID5: SUB 0C8H,EN,EN_1
MUL 0C8H,P36V[0]
DIV 0C8H,#100
EXT 0C8H ; ;扩展
CALL INTF4 ;FLOAT[Delta_E(n)*KP]
LD BX,GFCMCOV
CLR CX
DIVU BX,#3
CMP STR_VM,BX
JH PID6
LD BX,0C8H
LD CX,0CAH
LD 0C8H,P27V[0]
CLR 0CAH
CALL INTF4
LD YK_1,0C8H
LD YK_12,0CAH
ST BX,0C8H
ST CX,0CAH
PID6: LD BX,GFCMCOV
CLR CX
DIVU BX,#5
LD CX,EN
JBC CHR,7,PID7
NEG CX
PID7: CMP CX,BX
JH PID9
PUSH 0C8H
PUSH 0CAH
LD 0C8H,P37V[0] ;P37V
MUL 0C8H,EN ;KI*E(n)
CALL INTF4
LD 0CCH,#86H ;Float expression of 100
LD 0CEH,#4800H
CALL FDIV4 ;KI*E(n)/100
POP 0CEH
POP 0CCH
CALL FADD4 ;KP*E(n)+KI*E(n)/100
PUSH 0C8H ;******
PUSH 0CAH
ADD 0C8H,EN,EN_2
LD 0CAH,EN_1
SHL 0CAH,#1
SUB 0C8H,0CAH ;E(n)-2E(n-1)+E(n-2)
MUL 0C8H,P38V[0] ;KD*[E(n)-2E(n-1)+E(n-2)]
DIV 0C8H,#100
EXT 0C8H
CALL INTF4
POP 0CEH ;******
POP 0CCH
CALL FADD4
PID9: LD 0CCH,YK_1
LD 0CEH,YK_12
CALL FADD4
ST 0C8H,YK_1
ST 0CAH,YK_12
CALL FINT4
LD BX,0C8H
ST EN_1,EN_2
ST EN,EN_1
RET
P_LOOP: NOP ;LD AX,P21V[0] ;P21, Ki
MUL BX,AX ;Delta Yk=Ki*Ek=Ki*(GFCM-FFCM)
DIV BX,#100
LD CX,P28V[0]
SUB BX,CX,BX
ST BX,0C8H
CLR 0CAH
CALL INTF4
LD YK_1,0C8H
LD YK_12,0CAH
RET ;LJMP STM2_6A
PIT_LOOP: LD 0C8H,BX
EXT 0C8H
CALL INTF4 ;FLOAT(EK)
PUSH 0C8H
PUSH 0CAH ;Hold E(K)
LD 0CCH,TM
LD 00CEH,TM_2
CALL FMUL4 ;TM*E(K)
PUSH 0C8H
PUSH 0CAH
LD 0CCH,YK_2
LD 0CEH,YK_22
LD 0C8H,TP
LD 0CAH,TP_2
CALL FMUL4 ;TP*Y(K-2)
POP 0CEH
POP 0CCH
CALL FADD4 ;TM*E(K)+TP*Y(K-2)
LD 0CCH,0C8H
LD 0CEH,0CAH
LD 0C8H,EK_1
LD 0CAH,EK_12
POP EK_12
POP EK_1 ;Store E(K-1)
CALL FSUB4 ;E(K-1)-[TM*E(K)+TP*Y(K-2)]
PUSH 0C8H
PUSH 0CAH
LD 0CCH,YK_1
LD 0CEH,YK_12
LD YK_2,YK_1
LD YK_22,YK_12
LD 0C8H,COEF2
LD 0CAH,COEF2_2
CALL FMUL4 ;COEF2*Y(K-1)
POP 0CEH
POP 0CCH
CALL FADD4 ;E(K-1)-[TM*E(K)+TP*Y(K-2)]+COEF2*Y(K-1)
LD 0CCH,COEF1
LD 0CEH,COEF1_2
CALL FDIV4 ;{E(K-1)-[TM*E(K)+TP*Y(K-2)]+COEF2*Y(K-1)}/COEF1
ST 0C8H,YK_1
ST 0CAH,YK_12
CALL FINT4
LD BX,0C8H
RET ;LJMP STM2_6A
PI_C: ANDB FLAG6,#11111011B
LD 0C8H,P21V[0]
CLR 0CAH
CALL INTF4
LD 0CCH,0C8H
LD 0CEH,0CAH
LD 0C8H,#86H ;Float expression of 100
LD 0CAH,#4800H
CALL FDIV4 ;KP=1/P21=100/P21V
ST 0C8H,KP
ST 0CAH,KP_2
LD 0C8H,P22V[0]
CLR 0CAH
CALL INTF4
LD 0CCH,0C8H
LD 0CEH,0CAH
LD 0C8H,#85H ;Float expression of 33
LD 0CAH,#400H
CALL FDIV4 ;DeltaT/P22=33/P22V
LD 0CCH,#80H ;Float expression of 1
LD 0CEH,0
CALL FADD4 ;TM=1+DeltaT/P22
ST 0C8H,TM
ST 0CAH,TM_2
LD 0C8H,P24V[0]
CLR 0CAH
CALL INTF4
LD 0CCH,#85H ;Float expression of 33
LD 0CEH,#400H
CALL FDIV4 ;TP=P24/DeltaT=P24V/33
ST 0C8H,TP
ST 0CAH,TP_2
LD 0CCH,TM
LD 0CEH,TM_2
CALL FMUL4 ;TP*TM
LD 0CCH,KP
LD 0CEH,KP_2
CALL FADD4 ;COEF1=KP+TP*TM
ST 0C8H,COEF1
ST 0CAH,COEF1_2
LD 0CCH,TP
LD 0CEH,TP_2
CALL FADD4 ;COEF2=COEF1+TP
ST 0C8H,COEF2
ST 0CAH,COEF2_2
RET
KC12: PUSH AX
PUSH BX
PUSH CX
LD AX,#1023 ;KC1=(P12V/100)*1000*819/(1023-P31V)
SUB AX,P31V[0] ;Here: *1000 means KC1 with 3 points 空载励磁限制
LD BX,P12V[0] ;调差率选择
MULU BX,#8190
DIVU BX,AX
ST BX,KC1[0]
MULU BX,P31V[0] ;KC2=819-KC1*P31V
DIVU BX,#1000 ;Because of KC1 with 3 points
LD AX,#819
SUB BX,AX,BX
ST BX,KC2[0]
POP CX
POP BX
POP AX
RET
COVGFCM: LD BX,GFCM ;励磁电流设定值显示
ST BX,P01V[0]
JBC FLAG4,6,COV0 ;0用电位器,1用参数(数字方式)
LD BX,P20V[0] ;数字给定值
COV0: JBC FLAG2,3,COV1 ;油合开关并网瞬间?
ANDB FLAG2,#11110111B ;清油合开关并网瞬间
CMP BX,GFCMTV[0]
JH COV2
ORB FLAG2,#00001000B ;置;油合开关并网瞬间
LD BX,GFCMTV[0]
LJMP COV2
COV1: JBC FLAG2,4,COV2 ;油合开关解列瞬间?
ANDB FLAG2,#11101111B ;清油合开关解列瞬间
CMP BX,P31V[0] ;空载励磁限制 以装置额定电力P47的百分比表示
JNH COV2
ORB FLAG2,#00010000B ;置;油合开关解列瞬间
LD BX,P31V[0]
COV2: JBS FLAG4,0,COV3 ;是恒流励磁?
JBS FLAG4,1,COV5 ;是 恒压?
; JBS FLAG4,2,COV5
COV3: JBC FLAG5,5,COV4 ;有装置和电机定子额定电压时为1 ......恒流励磁................
MULU BX,P48V[0] ;同步发电机额定励磁电流值
DIVU BX,P49V[0] ;励磁装置额定励磁电流值
COV4: SHR BX,#1
ST BX,GFCMCOV
JBC FLAG4,4,COV4B ;恒流方式时功率因素自动跟踪?
JBC FLAG7,6,COV4B ;电压给定上限(油开关合)
ADD BX,GDADD ;?????????????????????????
JBC BHR,7,COV4D ;最高位伪0?
CLR BX
COV4D: CMP BX,GFCMTV[0]
JNH COV4C
ANDB FLAG2,#11110111B ;清油合开关并网瞬间
COV4C: CMP BX,P44V[0] ;电流下限百分比(并网后和选用功率因素后有效)
JH COV4A
LD BX,P44V[0]
ST BX,GFCMCOV
RET
COV4A: CMP BX,P45V[0] ;电流上限百分比(并网后和选用功率因素后有效)
JNH COV4B
LD BX,P45V[0]
COV4B: ST BX,GFCMCOV
RET
COV5: JBC FLAG7,6,COV7 ;电压给定上限(油开关合
MULU BX,KC1[0] ;Yv=KC1*GFCM+KC2
DIVU BX,#1000
ADD BX,KC2
JBC FLAG5,6,COV6 ;有装置和电机定子额定电压时为1
MULU BX,P47V[0] ;励磁装置额定电压值
DIVU BX,P46V[0] ;同步发电机定子额定电压:以PT付边电压表示
COV6: ST BX,GFCMCOV
RET
COV7: MULU BX,#819
DIVU BX,P31V[0] ;空载励磁限制
JBC FLAG5,6,COV8
MULU BX,P47V[0]
DIVU BX,P46V[0]
COV8: ST BX,GFCMCOV
RET
SIV: CLR EK_1 ;Set initial values
CLR EK_12
CLR EN_1
CLR EN_2
LD YK_2,#8BH ;YK_2=2460 i.e=123 degree
LD YK_22,#19C0H
LD YK_1,#8BH ;YK_1=2460 i.e=123 degree
LD YK_12,#19C0H
LD ALFA,#2460 ;Set ALFA0=123 degree
LD PULSET,#3419 ;=123 degree*55.6/2
CALL KC12
RET
SLOPESET: ANDB FLAG2,#11111110B ;清加斜坡函数计算
LD AX,P26V[0] ;给定斜坡函数0~5.0 =0时不加
CMP AX,0
JNE SL_SET1
ORB FLAG2,#00000001B
SL_SET1: RET
SLOPE: INC DELTAN ;BX=0.5GFCM*DELTAN/P26V+0.5GFCM
; LD BX,GFCMCOV ;98,11
SHR BX,#1
MULU BX,DELTAN
DIVU BX,P26V[0]
LD CX,GFCMCOV
SHR CX,#1
ADD BX,CX
CMP BX,GFCMCOV
JNH SLOPE1
ORB FLAG2,#00000001B
CLR DELTAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -