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

📄 ge15.asm

📁 同步发电机同步电动机软启动电子开关通用的晶砸管控制程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		
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 + -