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

📄 datainit.c

📁 一整套电梯控制器源程序
💻 C
字号:
#include "global.h"

void data_init(void)
{
	xdata uchar j=0;
	//取得用户参数存储过标记
	GetUserParamSaveOverFlg();

//	mE_InputData.mDianTi[0].TongXun.bZhiShi=m_save_over_flg;
	if(m_save_over_flg==0){	//未存储
		orgdata_init();
	}else if(m_save_over_flg==0x01){	//存储过
		restore_user_param();
//2004.06.22 added by LHM 
		//外呼数据
		for(j=0; j<ARRAY_BYTENUM; j++){
			switch(j){
				case 0:	mE_InputData.mWaiHu.bShang[j]=0;	   mE_InputData.mWaiHu.bXia[j]=0;	break;
				case 1:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				case 2:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				case 3:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				case 4:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				case 5:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				case 6:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
				default: break;
			}
		}
		//输出数据
		orgdata_init_output();
//END
		//中间数据初始化
		InitData();
	}
} 

//原始数据初始化
void orgdata_init(void)
{
	//总体数据初始化
	orgdata_init_total();		

	//输入数据初始化
	orgdata_init_input();

	//输出数据初始化
    orgdata_init_output();

	//中间数据初始化
	InitData();

}

//总体数据初始化
void orgdata_init_total(void)
{
	//总体数据初始化
	mL_Data.cLNum=LNum_MAX;										//最大楼层数
//2004.05.13 LHM (暂时为4路CAN)
//	mL_Data.cENum=ENum_MAX;										//最大群控电梯数
	mL_Data.cENum=4;							
//end			//最大群控电梯数
	mL_Data.nTKYanChiTime=300;							//静态停靠延迟时间(秒)
	mL_Data.mSysTime.mYearMonDat.cYear=0x04;			//系统时间
	mL_Data.mSysTime.mYearMonDat.cMonth=0x01;		//系统时间
	mL_Data.mSysTime.mYearMonDat.cDate=0x01;			//系统时间
	mL_Data.mSysTime.mYearMonDat.cWeek=0x01;			//系统时间(暂时未使用)
	mL_Data.mSysTime.mHourMinSec.cHour=0;			//系统时间
	mL_Data.mSysTime.mHourMinSec.cMinute=0;		//系统时间
	mL_Data.mSysTime.mHourMinSec.cSecond=0;		//系统时间(暂时未使用)

	mL_Data.ZaoGF.lStartTime.cHour=0x08;				//早高峰
	mL_Data.ZaoGF.lStartTime.cMinute=0;
	mL_Data.ZaoGF.lStartTime.cSecond=0;
	mL_Data.ZaoGF.lEndTime.cHour=0x09;					
	mL_Data.ZaoGF.lEndTime.cMinute=0x30;
	mL_Data.ZaoGF.lEndTime.cSecond=0;

	mL_Data.WuGF.lStartTime.cHour=0x11;				//午高峰
	mL_Data.WuGF.lStartTime.cMinute=0x30;
	mL_Data.WuGF.lStartTime.cSecond=0;
	mL_Data.WuGF.lEndTime.cHour=0x13;
	mL_Data.WuGF.lEndTime.cMinute=0x30;
	mL_Data.WuGF.lEndTime.cSecond=0;

	mL_Data.WanGF.lStartTime.cHour=0x17;				//晚高峰
	mL_Data.WanGF.lStartTime.cMinute=0;				
	mL_Data.WanGF.lStartTime.cSecond=0;				
	mL_Data.WanGF.lEndTime.cHour=0x19;					
	mL_Data.WanGF.lEndTime.cMinute=0;				
	mL_Data.WanGF.lEndTime.cSecond=0;	
}

void orgdata_init_input(void)
{
	xdata uchar i,j;
	
	//电梯数据
	for(i=0; i<ENum_MAX; i++){
		mE_InputData.mDianTi[i].bZhunBeiHao=0;					//准备好
		mE_InputData.mDianTi[i].bDanOrQun=0;					//单梯/群控
		mE_InputData.mDianTi[i].bZhunBeiHao=0;					//准备好
		mE_InputData.mDianTi[i].bDanOrQun=0;					//单梯/群控
		mE_InputData.mDianTi[i].cDangQianCeng=9;				//当前层
		mE_InputData.mDianTi[i].bDongOrJing=0;					//运动/静止
		mE_InputData.mDianTi[i].FangXiang.bShang=0;			    //运动方向
		mE_InputData.mDianTi[i].FangXiang.bXia=0;				//运动方向
		mE_InputData.mDianTi[i].Men.bKaiMenDaoWei=0;			//开门到位
		mE_InputData.mDianTi[i].Men.bGuanMenDaoWei=1;		    //关门到位
		mE_InputData.mDianTi[i].Men.bKaiMenAnNiu=0;				//开门按钮
		mE_InputData.mDianTi[i].Men.bGuanMenZhong=0;			//关门中
		mE_InputData.mDianTi[i].Men.bMenGuZhang=0;				//门故障
		mE_InputData.mDianTi[i].ChengZai.bKongZai=1;			//空载
		mE_InputData.mDianTi[i].ChengZai.bQingZai=0;			//轻载
		mE_InputData.mDianTi[i].ChengZai.bZhongZai=0;			//重载
		mE_InputData.mDianTi[i].ChengZai.bManZai=0;				//满载
		mE_InputData.mDianTi[i].ChengZai.bChaoZai=0;			//超载
		mE_InputData.mDianTi[i].TeBie.bJianXiu=0;				//检修
		mE_InputData.mDianTi[i].TeBie.bSiJi=0;					//司机
		mE_InputData.mDianTi[i].TeBie.bZhiShi=0;				//直驶
		mE_InputData.mDianTi[i].TeBie.bBaoLiu=0;				//保留
		mE_InputData.mDianTi[i].TeBie.bSuoTi=0;					//锁梯
		mE_InputData.mDianTi[i].TeBie.bXiaoFang=0;				//消防
		mE_InputData.mDianTi[i].TeBie.bJiTing=0;                //急停
		mE_InputData.mDianTi[i].TeBie.bGuZhang=0;				//故障
		mE_InputData.mDianTi[i].TeBie.bJingGao=0;				//警告
//		mE_InputData.mDianTi[i].bNeiXuan[ARRAY_BYTENUM];	    //内选数据
		for(j=0; j<ARRAY_BYTENUM; j++){
			mE_InputData.mDianTi[i].bNeiXuan[j]=0x00;
		}
		mE_InputData.mDianTi[i].cPortNo=0;						//控制器端口号
		mE_InputData.mDianTi[i].cChengZhong=0;					//承重值
		mE_InputData.mDianTi[i].cZaoGFCeng=9;					//高峰停靠层(早)
		mE_InputData.mDianTi[i].cWuGFCeng=9;					//高峰停靠层(午)
		mE_InputData.mDianTi[i].cWanGFCeng=9;				    //高峰停靠层(晚)
		mE_InputData.mDianTi[i].cJuDiCengShu=0;					//起始层距地面楼层数
		mE_InputData.mDianTi[i].cXueXiCengShu=2;				//学习楼层数
		mE_InputData.mDianTi[i].cYouXianJi=i+1;					//优先级
		mE_InputData.mDianTi[i].cQuXianShu=8;					//曲线数
//		mE_InputData.mDianTi[i].nTiSu[QuXianShu_Max];		    //梯速
		for(j=0; j<QuXianShu_Max; j++){
			switch(j){
				case 0:	mE_InputData.mDianTi[i].nTiSu[j]=20;	break;
				case 1:	mE_InputData.mDianTi[i].nTiSu[j]=25;	break;
				case 2:	mE_InputData.mDianTi[i].nTiSu[j]=30;	break;
				case 3:	mE_InputData.mDianTi[i].nTiSu[j]=35;	break;
				case 4:	mE_InputData.mDianTi[i].nTiSu[j]=40;	break;
				case 5:	mE_InputData.mDianTi[i].nTiSu[j]=45;	break;
				case 6:	mE_InputData.mDianTi[i].nTiSu[j]=50;	break;
				case 7:	mE_InputData.mDianTi[i].nTiSu[j]=55;	break;
				default: break;
			}
		}
		mE_InputData.mDianTi[i].nJiaSuDu=300;					//额定加速度(取值范围:200-1000 单位:mm/s2)
		mE_InputData.mDianTi[i].nZhuanSu=1450;						//电机转速(取值范围:1400-1500	单位:转/分)
		mE_InputData.mDianTi[i].cPinLv=50;							//电机频率(取值范围:30-60		单位:Hz)
		mE_InputData.mDianTi[i].cEDingTiSu=16;						//额定梯速(取值范围:5-30		单位:分米/秒)
		mE_InputData.mDianTi[i].cYunXingTiSu=16;					//运行梯速(取值范围:5-30		单位:分米/秒)
		mE_InputData.mDianTi[i].lBMQMaiChongShu=600;				//编码器脉冲数
		mE_InputData.mDianTi[i].lDGCMaiChongShu=23200;				//等高层脉冲数
		mE_InputData.mDianTi[i].bQunKong=1;						//群控选中
		mE_InputData.mDianTi[i].cMinFenPei=2;						//分配最小楼层数
		mE_InputData.mDianTi[i].cMinCancelFenPei=3;				//取消分配最小楼层数
		mE_InputData.mDianTi[i].cZuiDiCeng=9;					//可到最底层(注意工厂数据不要超过10,静态停靠时分配牵连)
		mE_InputData.mDianTi[i].cZuiGaoCeng=10;					//可到最高层
//		mE_InputData.mDianTi[i].cChaoShiTime[MenChaoShi_Num];//门超时时间
		for(j=0; j<MenChaoShi_Num; j++){
			switch(j){
				case 0:	mE_InputData.mDianTi[i].cChaoShiTime[j]=5;	break;
				case 1:	mE_InputData.mDianTi[i].cChaoShiTime[j]=10;	break;
				case 2:	mE_InputData.mDianTi[i].cChaoShiTime[j]=15;	break;
				case 3:	mE_InputData.mDianTi[i].cChaoShiTime[j]=20;	break;
				case 4:	mE_InputData.mDianTi[i].cChaoShiTime[j]=90;	break;
				default: break;
			}
		}
		mE_InputData.mDianTi[i].TongXun.bCanChuShiOK=0;		    //Can初始化OK
		mE_InputData.mDianTi[i].TongXun.bZhiShi=0;				//通讯指示
		mE_InputData.mDianTi[i].MenTime.cKaiMenTime=7;			//开门时间(秒)
		mE_InputData.mDianTi[i].MenTime.cGuanMenTime=7;		    //关门时间(秒)
		mE_InputData.mDianTi[i].MenTime.cGMYanChiTime=3;		//自动关门延迟时间(秒)
//		mE_InputData.mDianTi[i].bNeiXuanKeTing[ARRAY_BYTENUM];	//内选可停
		for(j=0; j<ARRAY_BYTENUM; j++){
			switch(j){
				case 0:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 1:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 2:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 3:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 4:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 5:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				case 6:	mE_InputData.mDianTi[i].bNeiXuanKeTing[j]=0xFF;	break;
				default: break;
			}
		}
//		mE_InputData.mDianTi[i].bShangHuKeTing[ARRAY_BYTENUM];	//上呼可停
		for(j=0; j<ARRAY_BYTENUM; j++){
			switch(j){
				case 0:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 1:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 2:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 3:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 4:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 5:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				case 6:	mE_InputData.mDianTi[i].bShangHuKeTing[j]=0xFF;	break;
				default: break;
			}
		}
//		mE_InputData.mDianTi[i].bXiaHuKeTing[ARRAY_BYTENUM];		//下呼可停
		for(j=0; j<ARRAY_BYTENUM; j++){
			switch(j){
				case 0:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 1:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 2:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 3:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 4:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 5:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				case 6:	mE_InputData.mDianTi[i].bXiaHuKeTing[j]=0xFF;	break;
				default: break;
			}
		}
//2004.05.19 added by LHM 
		mE_InputData.mDianTi[i].bLingSuXinHao=0;
		mE_InputData.mDianTi[i].bBenCengKaiMen=0;
//end
	}
	
	//外呼数据
	for(j=0; j<ARRAY_BYTENUM; j++){
		switch(j){
			case 0:	mE_InputData.mWaiHu.bShang[j]=0;	   mE_InputData.mWaiHu.bXia[j]=0;	break;
			case 1:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
			case 2:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
			case 3:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
			case 4:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
			case 5:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
			case 6:	mE_InputData.mWaiHu.bShang[j]=0x00;	mE_InputData.mWaiHu.bXia[j]=0x00;	break;
/*			case 0:	mE_InputData.mWaiHu.bShang[j]=0;	   mE_InputData.mWaiHu.bXia[j]=0;	break;
			case 1:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;
			case 2:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;
			case 3:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;
			case 4:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;
			case 5:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;
			case 6:	mE_InputData.mWaiHu.bShang[j]=0xFF;	mE_InputData.mWaiHu.bXia[j]=0xFF;	break;*/
			default: break;
		}
	}
	

}

void orgdata_init_output(void)
{
/*
	uchar	bShang[ARRAY_BYTENUM];							//上呼
	uchar	bXia[ARRAY_BYTENUM];								//下呼
*/

	xdata uchar i,j;
	//输出数据
	for(i=0; i<ENum_MAX; i++){
		for(j=0; j<ARRAY_BYTENUM; j++){
			mE_OutputData.mXiangYing[i].bShang[j]=0;
			mE_OutputData.mXiangYing[i].bXia[j]=0;
			mE_OutputData.mDeng[i].bShang[j]=0;
			mE_OutputData.mDeng[i].bXia[j]=0;
		}
	}

}

//取得用户参数存储过标记
void GetUserParamSaveOverFlg()
{
	uint data i;  
	uchar xdata *data p;                                                       
	uchar xdata *data s; 
	uchar xdata count=2;
                                                                                            
	if(m_save_over_flg==0){	       //存储过标志

		EA=0;
		p=0xc000;                   //用户参数Flash首地址
		s=0x14A2;					    //用户参数Ram首地址
		for(i=0;i<count;i++){       //恢复1Byte数据
			*(s+i)=*(p+i); 
		} 
		EA=1; 
 	   if(m_save_over_flg==0xFF)
			m_save_over_flg=0;
		else if(m_save_over_flg==0x01)
			m_save_over_flg=0x01;
	}  
}

//向Flash中设置用户参数存储过标记
void SetUserParamSaveOverFlg()
{
   uint xdata i;
   uchar xdata *s=0x14A2;
   uchar xdata count=1;
 	m_save_over_flg=1;	  		//用户参数存储过标志


	erase(0xc000);
	for(i=0;i<count;i++)
		writef((0xc000+i),*(s+i));     

}

⌨️ 快捷键说明

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