ACSysMG.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #ifndef OCC_PUBLIC_DEFINE_ACHEADER_FILE
  2. #define OCC_PUBLIC_DEFINE_ACHEADER_FILE
  3. #pragma once
  4. #include "ElecBaseDefine.h"
  5. #include "CalculEquation.h"
  6. #include "BaseElectricEqpmt.h"
  7. #include <vector>
  8. #include <map>
  9. using namespace std;
  10. class ACSysMG//此类的作用 电力仿真模型交流计算模块
  11. {
  12. public:
  13. ACSysMG(void);
  14. void UpdataTrainData(DCSysTrain *pTrain); //更新列车数据
  15. bool AddPQNodeData(CalNode& node); //增加PQ节点数据
  16. bool AddEqpmtData(EqpmtInfo* pEqpmt); //添加设备数据
  17. bool CreatePQNodeMatrix(); //创建PQ节点矩阵
  18. bool CreateYKBMatrix(); //创建雅可比矩阵
  19. bool CalYKBMatriX(); //计算雅可比矩阵
  20. double CalPQValue(); //计算PQ值
  21. void CalNodePowerRate(); //计算节点功率
  22. double CalPiValue(int i); //计算PI值
  23. double CalQiValue(int i); //计算QI值
  24. void CalResult(); //计算相关结果
  25. double GetOutV(int i); //得到输出电压
  26. void InitData(); //初始化数据
  27. void SetYBZ(double i,double z,double y,double s,double v); //设置YBZ
  28. bool RunCalValue(); //动态计算相关电力值
  29. void GetPQIPublishLine(std::vector<POWERVALUE>& PQIList); //获取有功无功电流发布数据
  30. void GetIPublishLine(std::vector<POWERVALUE>& PQIList); //获取电流发布数据
  31. void SetPQValueArr(DCNodePQValue PQValueArr[]); //设置PQ值数组
  32. void GetMLVPublish(std::vector<POWERVALUE>& PQIList); //获取母线发布电压值
  33. void SetEqpmentMap(ELEEQPMTMAP *ElectricEqpmtMap)
  34. {
  35. m_pElectricEqpmtMap=ElectricEqpmtMap;
  36. }
  37. protected:
  38. typedef std::map<int,EqpmtInfo*> EqpmtMap;
  39. RX **ACNodeMatrix; //交流节点
  40. double *E; //节点电压实部
  41. double *F; //节点电压虚部
  42. double *P; //有功功率
  43. double *Q; //无功功率
  44. CalculEquation m_EquationCalcul; //方程计算对像
  45. bool CalStatus; //计算标志位(状态)
  46. double Iac; //交流侧电流
  47. double Zac; //交流侧阻抗
  48. double Yac; //交流侧导纳
  49. double Sac; //交流侧容量
  50. double Vac; //交流侧电压
  51. DCNodePQValue* p_PQValueArr; //直流侧PQ节点数组
  52. //保存当前计算数值,防止析构时数值变化导致数组越界
  53. int m_nMaxSigleArrowTrainNums; //单方向最大列车数量
  54. int m_nAllPowerStationNums; //全线所有车站数量
  55. public:
  56. ~ACSysMG(void);
  57. std::vector<CalNode> m_PQNodes; //PQ节点
  58. EqpmtMap m_EqpmtInfoMap; //电力元件信息列表
  59. std::mutex m_CritilSecEqpmt; //锁
  60. ELEEQPMTMAP *m_pElectricEqpmtMap; //电力设备相关信息
  61. typedef map<int,Dc_PowerStation> DCSTATIONMAP; //直流电站表,Dc_PowerStation直流电站类
  62. DCSTATIONMAP m_PowerStationNodeMap; //直流电站
  63. };
  64. #endif