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

📄 stecx000.c

📁 机械手的主程序
💻 C
📖 第 1 页 / 共 2 页
字号:
						}while((SysInf.Flag.bSvPrmAccess == ON) && (MainSysAlmC != SYSALM6));
						SysInf.Flag.bSvPrmReady = OFF;
						SVQueueCode(0x33);			/* Servo Parameter Ready */
						do{
							SVCom();
						}while((SysInf.Flag.bSvPrmReady == OFF) && (MainSysAlmC != SYSALM6));
					}
				}
			}
			MaxMinCalc();							/* 億僀儞僩愝掕斖埻嶼弌 */
			DispCheck();							/* 億僀儞僩乛嵟戝嵟彫巊梡僠僃僢僋 */

			SysInf.Flag.bSeqEnable = ON;
			SysInf.Flag.bSeqRun = ON;
		}

		SeqInit();								/* 僔乕働儞僗張棟弶婜壔 */

		if(SysInf.Flag.bAxisFlag == ON && MainSysAlmC == 0 && SysInf.Flag.bAxisAlarm == OFF){
			SvSw = 1;							/* 僒乕儃ON/OFF SW OFF -> ON */
			SVQueueCode(0x17);					/* 僒乕儃ON */
			SVCom();
			SysInf.Flag.bServoStop = OFF;		/* Servo Amp STOP OFF */
		}
	}

	while(SysInf.Flag.bDownloadMode == OFF && MainSysAlmC != 1){	/* 捠忢儊僀儞儖乕僾 */
//		if(SysInf.Flag.bLedMoniReq == OFF)
//			P1.DR.BIT.B5 ^= 1;					/* 儌僯僞俴俤俢侾揰柵 */

		SeqMain();								/* 僔乕働儞僗張棟 */

		E2WriteCheck();							/* EEPROM彂崬傒僠僃僢僋 */

		/* 僷儔儊乕僞帺摦峏怴僠僃僢僋 */
		if (SysInf.Flag.bUpdate == ON){
			if (!Timer[TMUPDATE])
				E2CondUpdate();
		}
		else if ((SysInf.Flag.bSeqRun == ON) && ((SysInf.Flag.bE2CondNo == ON) || (SysInf.Flag.bE2CondFlag == ON))){
			/* 抜庢姺斣崋丄抜庢姺巊梡僼儔僌峏怴 */
			if (E2SysWrite() == 0)
				SysInf.Flag.bE2CondNo = SysInf.Flag.bE2CondFlag = OFF;
//				E2CondCommRead((unsigned char *)&CondComm);
		}

		if (SysInf.Flag.bPndAlarm == ON)
			Alarm(PenSysAlmC);

		AlarmReset();

	}

	while(SysInf.Flag.bDownloadMode == ON || MainSysAlmC == 1){		/* 僟僂儞儘乕僪儌乕僪乮俢俬俹俽倂侾亅俉俷俶乯 */
		ComAns();
		if(SysInf.Flag.bFlashProg == OFF)		/* 儊僀儞俠俹倀撪憼俥亅俼俷俵彂崬帪埲奜 */
			PdCom();
	}

	while(1);
}

/*--------------------------------------------------------------------*
 * MODULE   : AlarmReset
 * ABSTRACT : System Alarm & Axis Alarm Reset
 * FUNCTION : 
 * NOTE     : 
 * RETURN   : void
 * CREATE   : 03.03 yoshi
 * UPDATE   : 2003.05.06 S.Izumi
 *--------------------------------------------------------------------*/
void AlarmReset(void)
{
	if (_SMPALM == ON){							/* system alarm */
		switch (MainSysAlmC){
			case SYSALM4:						/* No.4 EEPROM R/W error */
				if (_SDKEY == 5){				/* pendant "Reset" key push */
					SysInf.Flag.bSysAlmReq = OFF;
					MainSysAlmC = 0;
					SysInf.Flag.bLedMoniReq = OFF;
					SysInf.Flag.bMainAlarm = OFF;
				}
				break;

			default:
				break;
		}
	}

	if (_SDTALMC <= 100){						/* Servo Alarm */
		if (_SMSVALM == OFF){
			SysInf.Flag.bLedMoniReq = OFF;
			_SDTALMC = 0;
		}
	}

	if (SysInf.Flag.bAxisAlarm == ON){			/* axis alarm */
		switch (_SDTALMC + 50){
			case AXISALM54:						/* No.104 point data Un-setup */
			case AXISALM57:						/* No.107 point setting range over */
				if (_SDKEY == 5){				/* pendant "Reset" key push */
					_SDTALMC = 0;
					SysInf.Flag.bAxisAlarm  = OFF;
					SysInf.Flag.bLedMoniReq = OFF;
					SysInf.Flag.bServoStopReq = OFF;
					SysInf.Flag.bServoStop = OFF;	/* Servo Amp STOP OFF */
				}
				break;

			case AXISALM56:						/* No.106 over-run limit on */
				if (_SDKEY == 5){				/* pendant "Reset" key push */
					_SDTALMC = 0;
					SysInf.Flag.bAxisAlarm  = OFF;
					SysInf.Flag.bLedMoniReq = OFF;
					SysInf.Flag.bServoStopReq = OFF;
					SysInf.Flag.bServoStop = OFF;	/* Servo Amp STOP OFF */
					SVQueueCode(0x00);			/* 傾儔乕儉儕僙僢僩柦椷憲怣 */
				}
				break;

			case AXISALM55:						/* No.105 eeprom dara broken */
				/* 弶婜壔憖嶌廔椆偱僋儕傾 */
				break;

			default:
				break;
		}
	}
}

/*--------------------------------------------------------------------*
 * MODULE   : Alarm
 * ABSTRACT : System & Axis Alarm
 * FUNCTION : 
 * NOTE     : 
 * RETURN   : void
 * CREATE   : 03.03 yoshi
 * UPDATE   : 
 *--------------------------------------------------------------------*/
void Alarm(unsigned short code)
{
	unsigned char	cpu_stop = 0;

	switch(code){
		case SYSALM1:							/* ALM_No.1 sum check of motion-parameter inside main-cpu */
			{
				unsigned short	i, j;
				unsigned short	sum;			/* 寁嶼俽倀俵抣 */
				unsigned short	Sum_ServoP;		/* 撪憼俥亅俼俷俵偵彂偒崬傑傟偰偄傞俽倀俵 */
				unsigned char	*p = (unsigned char *)MachineDef;

				for (j = 0; j < 4; j++) {
					sum = 0;					/* 寁嶼俽倀俵抣弶婜壔 */
					for (i = 0; i < (sizeof(MachineDef[j]) - 2); i++, p++) {	/* 婡夿僷儔儊乕僞椞堟亅俀僶僀僩暘乮俽倀俵椞堟偼彍偔乯 */
						sum += *p;				/* 俽倀俵寁嶼 */
					}
					Sum_ServoP = (*p++ << 8) + (*p++);			/* 撪憼俥亅俼俷俵偵彂偒崬傑傟偰偄傞俽倀俵撉傒弌偟乮俀僶僀僩乯 */
					if (sum != Sum_ServoP) {
						MainSysAlmC = SYSALM1;	/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
						SysInf.Flag.bSysAlmReq    = ON;
						SysInf.Flag.bLedMoniReq   = ON;
						SysInf.Flag.bServoStopReq = ON;
						cpu_stop = ON;
					}
				}
			}
			break;
		case SYSALM2:							/* ALM_No.2 ladder oder error */
				MainSysAlmC = SYSALM2;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSeqEnable    = OFF;
				SysInf.Flag.bSysAlmReq    = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq   = ON;
				SysInf.Flag.bServoStopReq = ON;
			break;

		case SYSALM3:							/* pendant P.C.B FROM sum error */
				MainSysAlmC = SYSALM3;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq  = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq = ON;
			break;

		case SYSALM4:							/* EEPROM R/W error */
				MainSysAlmC = SYSALM4;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq  = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq = ON;
				Mem_DPERR = SeqData.B.SMI[39 / 16].b.b7 = ON;  /* 抜庢姺read error "DPERR" */
			break;

		case SYSALM5:							/* communication error 1 main&pendant */
				MainSysAlmC = SYSALM5;			/* sys.alarm code set */
				SysInf.Flag.bSysAlmReq  = ON;	/* sys.alarm flag set */
				SysInf.Flag.bServoStopReq = ON;
				SysInf.Flag.bServoStop  = ON;	/* Servo Amp STOP ON */
				SysInf.Flag.bLedMoniReq = ON;
			break;

		case SYSALM6:							/* communication error 2 main&servoamp */
				MainSysAlmC = SYSALM6;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq    = ON;	/* sys.alarm flag set */
				SysInf.Flag.bServoStopReq = ON;
				SysInf.Flag.bLedMoniReq   = ON;
				SCI2.SCR.BIT.TE = 0;			/* SCI2 憲怣摦嶌嬛巭 */
				SCI2.SCR.BIT.RE = 0;			/* 庴怣嫋壜 */
			break;

		case SYSALM7:							/* moment blackout error */
				MainSysAlmC = SYSALM7;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq    = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq   = ON;
				SysInf.Flag.bServoStopReq = ON;
			break;

		case SYSALM8:
				MainSysAlmC = SYSALM8;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq   = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq  = ON;
			break;

		case SYSALM9:							// 2004.09.28 Added by Sun
				MainSysAlmC = SYSALM9;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq   = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq  = ON;
			break;

		case SYSALM10:							/* */
				MainSysAlmC = SYSALM10;			/* 僔僗僥儉傾儔乕儉僐乕僪愝掕 */
				SysInf.Flag.bSysAlmReq   = ON;	/* sys.alarm flag set */
				SysInf.Flag.bLedMoniReq  = ON;
			break;

		case AXISALM51:
		case AXISALM52:
		case AXISALM53:
		case AXISALM55:
				SysInf.Flag.bAxisAlarm  = ON;
				SysInf.Flag.bLedMoniReq = ON;
				SysInf.Flag.bServoStop = ON;	/* Servo Amp STOP ON */
				SvSw = 0;						/* 僒乕儃ON/OFF SW ON -> OFF */
				SVQueueCode(0x17);				/* 僒乕儃OFF */
				SVCom();
				_SDTALMC = code - 50;
			break;

		case AXISALM54:
		case AXISALM56:
		case AXISALM57:
				SysInf.Flag.bAxisAlarm  = ON;
				SysInf.Flag.bLedMoniReq = ON;
				SysInf.TRUN = 0;
				SysInf.Flag.bMoveReq = OFF;
				SysInf.Flag.bServoStopReq = ON;
				CurPoint = 0;
				DirectivePulse = 0;
				_SDTALMC = code - 50;
			break;

		default:
			if (code >= 51 && code <= 150)		/* Servo Alarm Code */
			{
				SysInf.Flag.bAxisAlarm  = ON;
				SysInf.Flag.bLedMoniReq = ON;
				SysInf.Flag.bServoStop = ON;	/* Servo Amp STOP ON */
//				SvSw = 0;						/* 僒乕儃ON/OFF SW ON -> OFF */
//				SVQueueCode(0x17);				/* 僒乕儃OFF */
//				SVCom();
				_SDTALMC = code - 50;
			}
			break;
	}

	if(SysInf.Flag.bServoStopReq == ON){
		SysInf.Flag.bServoStop = ON;			/* Servo Amp STOP ON */
		SVQueueCode(0x14);						/* 尭懍掆巭 */
	}

	if(SysInf.Flag.bSysAlmReq == ON){			/* system alarm flag set reuest */
		SysInf.Flag.bMainAlarm = ON;			/* sys.alarm flag set */
	}

	if(cpu_stop == 0){
		//	set_imask_ccr(1);
		//	set_imask_exr(7);
		//	sleep();
	}
}

⌨️ 快捷键说明

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