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

📄 common.h

📁 一整套电梯控制器源程序
💻 H
字号:

#ifndef EXTERN
#define EXTERN extern
#endif

#define uchar	unsigned char 
#define uint	unsigned int
#define ulong	unsigned long 
#define schar	signed char 
#define sint	signed int
#define slong	signed long 

#define LNum_MAX_OVERGROUND		48
#define LNum_MAX_UNDERGROUND	8
#define LNum_MAX		(LNum_MAX_OVERGROUND+LNum_MAX_UNDERGROUND) //最大楼层数(地上最大48层,地下最大8层)
#define ENum_MAX		8		//最大群控电梯数(该宏关系到串口通讯程序的变量地址,慎重修改)
#define ARRAY_BYTENUM	7		//"内选数据""内选可停""上呼可停""下呼可停"数组所占字节数
#define QuXianShu_Max	8		//最大曲线数
#define MenChaoShi_Num	5		//门超时判定数量

//--------------------------  输入数据结构 start ------------------------// 

struct tag_E_FangXiang{		//运动方向
	uchar bShang;				//上
	uchar bXia;					//下
};
#define E_FangXiang struct tag_E_FangXiang

struct tag_E_Men{			//门状态
	uchar bKaiMenDaoWei;		//开门到位
	uchar bGuanMenDaoWei;		//关门到位
	uchar bKaiMenAnNiu;			//开门按钮
	uchar bGuanMenZhong;		//关门中
	uchar bMenGuZhang;			//门故障
};
#define E_Men struct tag_E_Men

struct tag_E_ChengZai{		//承载状态
	uchar bKongZai;				//空载
	uchar bQingZai;				//轻载
	uchar bZhongZai;			//重载
	uchar bManZai;				//满载
	uchar bChaoZai;				//超载
};
#define E_ChengZai struct tag_E_ChengZai

struct tag_E_TeBie{			//特别状态
	uchar bJianXiu;				//检修
	uchar bSiJi;				//司机
	uchar bZhiShi;				//直驶
	uchar bBaoLiu;				//保留
	uchar bSuoTi;				//锁梯
	uchar bXiaoFang;			//消防
	uchar bJiTing;              //急停
	uchar bGuZhang;				//故障
	uchar bJingGao;				//警告
};
#define E_TeBie struct tag_E_TeBie

struct tag_E_TongXun{	//通讯状态
	uchar bCanChuShiOK;		//Can初始化OK
	uchar bZhiShi;			//通讯指示
};
#define E_TongXun struct tag_E_TongXun


struct tag_E_MenTime{		//门时间
	uchar	cKaiMenTime;		//开门时间
	uchar   cGuanMenTime;		//关门时间
	uchar	cGMYanChiTime;		//自动关门延迟时间
};
#define E_MenTime struct tag_E_MenTime

struct tag_E_DianTi{	//电梯数据
	//来源于Can的输入数据
	uchar	bZhunBeiHao;					//准备好
	uchar	bDanOrQun;						//单梯/群控
	uchar	cDangQianCeng;					//当前层
	uchar    bDongOrJing;					//运动/静止
	E_FangXiang		FangXiang;				//运动方向
	E_Men			Men;					//门状态
	E_ChengZai		ChengZai;				//承载状态
	E_TeBie			TeBie;					//特别状态
	uchar			bNeiXuan[ARRAY_BYTENUM];//内选数据
	//来源于群控器的输入数据
	uchar	cPortNo;						//控制器端口号
	uchar   cChengZhong;					//承重值
	uchar	cZaoGFCeng;						//高峰停靠层(早)
	uchar	cWuGFCeng;						//高峰停靠层(午)
	uchar	cWanGFCeng;						//高峰停靠层(晚)
	signed char cJuDiCengShu;				//起始层距地面楼层数
	uchar	cXueXiCengShu;					//学习楼层数
	uchar	cYouXianJi;						//优先级
	uchar	cQuXianShu;						//曲线数
	uint	nTiSu[QuXianShu_Max];			//各曲线匀速段梯速
	uint	nJiaSuDu;						//额定加速度
	uint	nZhuanSu;						//电机转速(取值范围:1400-1500	单位:转/分)
	uchar	cPinLv;							//电机频率(取值范围:30-60		单位:Hz)
	uchar	cEDingTiSu;						//额定梯速(取值范围:5-30		单位:分米/秒)
	uchar	cYunXingTiSu;					//运行梯速(取值范围:5-30		单位:分米/秒)
	ulong	lBMQMaiChongShu;				//编码器脉冲数
	ulong	lDGCMaiChongShu;				//等高层脉冲数
	uchar		bQunKong;					//群控选中
	uchar		cMinFenPei;					//分配最小楼层数
	uchar		cMinCancelFenPei;			//取消分配最小楼层数
	uchar		cZuiDiCeng;					//可到最底层
	uchar		cZuiGaoCeng;				//可到最高层
	uchar		cChaoShiTime[MenChaoShi_Num];//门超时时间
	E_TongXun		TongXun;				//通讯状态
	E_MenTime	MenTime;					//门时间
	uchar		bNeiXuanKeTing[ARRAY_BYTENUM];	//内选可停
	uchar		bShangHuKeTing[ARRAY_BYTENUM];	//上呼可停
	uchar		bXiaHuKeTing[ARRAY_BYTENUM];		//下呼可停
//2004.05.19 added by LHM (为解决撤销外呼追加)
	uchar       bLingSuXinHao;					//零速信号
    uchar       bBenCengKaiMen;					//本层开门
//end
};
#define E_DianTi struct tag_E_DianTi

struct tag_E_WaiHu{		//外呼状态
	uchar	bShang[ARRAY_BYTENUM];						//上呼
	uchar	bXia[ARRAY_BYTENUM];						//下呼
};
#define E_WaiHu struct tag_E_WaiHu

struct tag_E_InputData{	//输入数据
	E_DianTi	mDianTi[ENum_MAX];			
	E_WaiHu		mWaiHu;			
};
#define E_InputData struct tag_E_InputData
//--------------------------  输入数据结构 end   ------------------------//

//--------------------------  输出数据结构 start ------------------------// 
struct tag_E_XiangYing{	//外呼响应状态
	uchar	bShang[ARRAY_BYTENUM];							//上呼
	uchar	bXia[ARRAY_BYTENUM];								//下呼
};
#define E_XiangYing struct tag_E_XiangYing
struct tag_E_Deng{	//外呼响应状态
	uchar	bShang[ARRAY_BYTENUM];							//上呼
	uchar	bXia[ARRAY_BYTENUM];								//下呼
};
#define E_Deng struct tag_E_Deng

struct tag_E_OutputData{//输出数据
	E_XiangYing mXiangYing[ENum_MAX];	
	E_Deng		mDeng[ENum_MAX];
};
#define E_OutputData struct tag_E_OutputData
//--------------------------  输出数据结构 end   ------------------------// 

//--------------------------  楼及其他总体数据 start --------------------// 
struct tag_L_YearMonDat{
	uchar cYear;
	uchar cMonth;
	uchar cDate;
	uchar cWeek;
};
#define L_YearMonDat struct tag_L_YearMonDat

struct tag_L_HourMin{
	uchar cHour;
	uchar cMinute;
	uchar cSecond;
};
#define L_HourMin struct tag_L_HourMin

struct tag_L_SysTime{
	L_YearMonDat mYearMonDat;
	L_HourMin	 mHourMinSec;
};
#define L_SysTime struct tag_L_SysTime

struct tag_L_GaoFeng{	//高峰信息
	L_HourMin lStartTime;						//高峰开始时间
	L_HourMin lEndTime;							//高峰结束时间
};
#define L_GaoFeng struct tag_L_GaoFeng

#define L_GaoFeng struct tag_L_GaoFeng

struct tag_L_Data{		//楼及其他总体数据
	uchar cLNum;						//最大楼层数
	uchar cENum;						//最大群控电梯数
	uint  nTKYanChiTime;				//静态停靠延迟时间
	L_SysTime   mSysTime;			//系统时间
	L_GaoFeng	ZaoGF;				//早高峰
	L_GaoFeng	WuGF;					//午高峰
	L_GaoFeng	WanGF;				//晚高峰
//	uchar		cJTTingkaoCeng[ENum_MAX];	//静态停靠层
};
#define L_Data struct tag_L_Data
//--------------------------  楼及其他总体数据 end   --------------------// 

struct tag_Temp_Timer{
	long	lJingTaiTimer;				//静态计时
	long	lChaoShiTimer[ENum_MAX];	//电梯门超时计时
};
#define TIMER struct tag_Temp_Timer

struct tag_PtrALLData{		//所有数据
	L_Data			*pL_Data;
	E_InputData		*pE_InputData;
	E_OutputData	*pE_OutputData;
	TIMER			*pTimer;
};
#define PtrALLData struct tag_PtrALLData


//Variable Defination 
EXTERN xdata L_Data			mL_Data;
EXTERN xdata E_InputData	mE_InputData;
EXTERN xdata E_OutputData	mE_OutputData;
EXTERN xdata TIMER			m_Timer;

//xdata L_Data			mL_Data;
//xdata E_InputData		mE_InputData;
//Function Refrence
void Set0Data(uchar *pData, uchar cMOD);
uchar GetArrayData(uchar *pData, uchar cIdx);
void  SetArrayData(uchar *pData, uchar cIdx, uchar cVal);
void  SetArrayData_INTERRUPT(uchar *pData, uchar cIdx, uchar cVal);

⌨️ 快捷键说明

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