📄 datainit.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 + -