#pragma once #define MAXACCA 0.6 #define LOWBRAKEA 0.1 #define COMMONBRAKEA 0.4 #define FASTBRAKEA 0.7 #define ENERGYBRAKEA 0.8 const short QY = 1; //牵引 const short DX = 2; //惰行 const short CYZD = 3; //常用制动 const short TCZD = 4; //停车制动 8为假牵引、缓解制动指令 const short BCZD = 5; //保持制动 const short KSZD = 6; //快速制动 const short JJZD = 7; //紧急制动 const short GJS = 8; //高加速 struct TDateIn { BOOL SigSetV; //是否设定速度 double SetV; //设定的速度(单位km/h) short JW; //设定的级位(380A sifang) short TrainJW; //380A型车牵引级位(380A sifang) double dDistance ; //车头所在的位移 double dInitPos ; //偏移距离 short MetV; //网压 short gk; //工况 short SD,TractionSD; //唐山牵引级位 //司控器手柄位置(控制量参考值) 按0~100整数计算(计算过程中折换成百分比) 快速制动取125(只针对摩擦制动,对电制动应该无效) BOOL SDType; //牵引制动手柄是否分开0:一个 1:分开 UINT uiPassengerNum; //乘客人数 UCHAR ucModeB2andN1; //低位到高位:0-停放制动,1-停放缓解,2-保持制动 for 气路 UCHAR ucDirectionControlPos; //主手柄位置 long lValidMotionAxle; //电机模块有效状态 从低位起每4位表示一节动车;0表示电机不工作;1表示工作 long lInvalidBrakeAxle,lInvalidBrakeAxle1; //070716 制动模块失效状态 从低位起每2位表示一节车;0表示B14未隔离or正常;1表示隔离or故障 UCHAR ucOperationMode; //当前模式 ATO SM RM TCC CM shutdown standby等 bool bEBreak; //电制动有效标志(逻辑提供) double GetTrainParkBrakeAxletreePressure[10][10]; //闸瓦压力 double GetTrainBrakePipePressure; //列车制动管压力 double sSpeedSetPos; //恒速:速度设定 BOOL SetHS; //恒速设定信号 BOOL PZDSIG; //平直道信号 short A_jw; //380B唐山车制动减速度级位 bool JJZDDZ; //紧急制动电阻制动和空气制动混合有效标志 BOOL FZZD; //辅助制动有效标志 double FZFtot; //辅助制动力 double NXZDFtot; //耐雪制动 BOOL NXZD; //耐雪制动有效标志(0:无效,1:有效) double BrakePower; //实际空气制动力 double dSetSpeed; //设定速度 double dRouteLength; //进路长度 double dTrainPosOff; //固定偏移 }; class CTraction_Cal_I { public: CTraction_Cal_I() {} virtual ~CTraction_Cal_I() {} public: TDateIn m_TInData; //牵引计算所需数据 double m_DeltaT; double Btot; double Ftot; double Wq; double BrakePower; double GK; double A,V,Vkmh,dDistance; //加速度(m/s^2)、时速(m/s)、时速(km/h)、运行距离(m) double VPos1,VPos2; public: virtual void RunTractionCalculation() = 0; virtual double GetAcc(short gk,short TractionJW,short BrakeJW) = 0; virtual double see(short gk,double v0,double vt0,double td) = 0; virtual void Calculate(double dDeltaT,TDateIn g_TInData) = 0; }; typedef void* (*FunCreateInstance)(); typedef void (*FunReleaseInstance)( LPVOID pInstance ); typedef void (*FunInitModule)(); typedef void (*FunReleaseModule)();