Traction_Cal_I.h 3.1 KB

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