ElecBaseDefine.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  1. //众多变量不知道是什么意思
  2. #ifndef ElectricKernelCalculate_BaseDefine_FILE
  3. #define ElectricKernelCalculate_BaseDefine_FILE
  4. #include <vector>
  5. #include <map>
  6. #include "PublicEqpmtID.h"
  7. #include <algorithm>
  8. using namespace std;
  9. //#define Max_SigleArrowTrain_Nums 100 //单方向列车运行的数量
  10. //#define Max_SigleArrowTrain_Nums 152 //单方向列车运行的数量
  11. #define Max_Cal_Times 500 //最大计算周期
  12. // #define EF_Calculate_Offsize 0.001 //计算时间偏移差
  13. #define EF_Calculate_Offsize 0.001 //计算时间偏移差 20150123 hcz restore
  14. #define Voltage_Calculate_Offsize 10 //电压的误差值
  15. #define PowerNode_PH_Category 0 //PH节点类型 //平衡节点:主所母线节点 xyx注释
  16. #define PowerNode_PQ_Category 1 //PQ //牵混所及降压所:只接动力变压器的35kV母线节点(过渡节点) xyx注释
  17. #define PowerNode_PV_Category 2 //PV
  18. #define PowerNode_PQD_Category 3 //PQD //牵混所:接牵引变和动力变的35kV母线节点 xyx注释
  19. #define PowerNode_PQL_Category 4 //PQL 400v母线节点 //牵混及降压所:接动力负荷的400V母线节点 xyx注释
  20. #define PowerSource_R 0.0145 // 电源内阻
  21. #define UP_TRAIN_UPDATE 9000 //更新上行列车
  22. #define Train_Weight 204480 //车重
  23. #define Voltage_Point_Train_UP 1 //列车上行节点电压
  24. #define Voltage_Point_Train_Down 2 //列车下行节点电压
  25. #define Voltage_Point_Station_UP 3 //车站上行节点电压
  26. #define Voltage_Point_Station_Down 4 //车站下行节点电压
  27. #define Voltage_Point_Station_UpRailway 5 //轨道上行节点电压
  28. #define Voltage_Point_Station_DownRailway 6 //轨道下行节点电压
  29. #define Voltage_Point_Head_UP 7 //上行头节点电压
  30. #define Voltage_Point_Head_Down 8 //下行头节点电压
  31. #define Voltage_Point_Tail_UP 9 //上行尾节点电压
  32. #define Voltage_Point_Tail_Down 10 //下行尾节点电压
  33. #define Voltage_Point_Train 0 //列车节点电压
  34. #define Voltage_Point_Station 1 //车站节点电压
  35. #define PowerLine_R_Rate 0.00028 //电阻率
  36. #define TRAIN_DIR_DOWN 1 //下行
  37. #define TRAIN_DIR_UP 2 //上行
  38. #define TRAIN_DIR_HEAD 6 //头方向
  39. #define TRAIN_DIR_TAIL 9 //尾方向
  40. #define OCC_TRAIN_POWERBOW_STATUS_ON 20001 //受电弓状态 合
  41. #define OCC_TRAIN_POWERBOW_STATUS_OFF 20002 //受电弓状态 分
  42. #define Iterate_Calculate_Times 500 //迭代次数
  43. #define Eqpmt_Category_Powerline_Source 0 //交流侧电源支路线路 xyx新增
  44. #define Eqpmt_Category_Powerline 1 //线设备 //35kV交流侧环网进出线
  45. #define Eqpmt_Category_Powerline_Transformer_35To400 2 //交流侧35kV-400V动力变馈线 xyx新增
  46. #define Eqpmt_Category_Powerline_Transformer_35ToDC 3 //交流侧35kV-直流侧整流变馈线 xyx新增
  47. #define Eqpmt_Category_Powerline_BusTie 4 //交流侧母联支路线路 xyx新增
  48. #define Eqpmt_Category_Powerline_load 5 //交流侧负荷支路线路 xyx新增
  49. #define Power_Breaker_Reject_Oper 11001 //断路器拒动
  50. #define Power_Breaker_Protect_Run 11002 //断路器保护运行
  51. #define NetMsg_Update_EqpmtData 12000 //网络消息更新设备信息
  52. #define Power_OutLine_I 11005 //输出电流
  53. #define Power_InLine_I 11006 //输入电流
  54. #define Power_Line_I 11000 //电线电流
  55. #define Power_Line_PQI 11001 //接触网功率
  56. #define Power_Line_TNV 11002 //
  57. #define Power_Line_PQR 11003 ///
  58. #define Power_Line_PQV 11004 //?
  59. #define POWERVALUE_DATATYPE_V 500 //电压
  60. #define POWERVALUE_DATATYPE_I 504 //电流
  61. #define Dc_NodeKind_RectierToTouchNet 101 //节点类型:整流器到接触网
  62. #define Dc_NodeKind_RectierToRailWay 102 //节点类型:整流器到轨道
  63. #define Dc_NodeKind_RailWay 103 //节点类型:轨道
  64. #define Dc_NodeKind_UpTrain 104 //节点类型:上行列车节点
  65. #define Dc_NodeKind_DownTrain 105 //节点类型:下行列车节点
  66. #define Dc_NodeKind_UPHead 106 //节点类型:上行头节点
  67. #define Dc_NodeKind_DownHead 107 //节点类型:下行头节点
  68. #define Dc_NodeKind_UPTail 108 //节点类型:上行尾节点
  69. #define Dc_NodeKind_DownTail 109 //节点类型:下行尾节点
  70. #define DC_FristWorkScope_V 1593 //第一工区电压(整流器工作区间)
  71. #define DC_FristWorkScope_I 3414*2 //第一工区电流
  72. #define DC_FristWorkScope_R 0.03126/2 //第一工区电阻
  73. #define DC_SecondWorkScope_V 1640
  74. #define DC_SecondWorkScope_I 6063*2
  75. #define DC_SecondWorkScope_R 0.0455/2
  76. #define DC_ThirdWorkScope_V 1733
  77. #define DC_ThirdWorkScope_I 13029*2
  78. #define DC_ThirdWorkScope_R 0.0604/2
  79. #define DC_FourthWorkScope_V 1270
  80. #define DC_FourthWorkScope_I 18424*2
  81. #define DC_FourthWorkScope_R 0.1037/2
  82. #define DC_FifthWorkScope_V 3276
  83. #define DC_FifthWorkScope_I 20764*2
  84. #define DC_FifthWorkScope_R 0.1568/2
  85. #define DC_SixthWorkScope_V 1706
  86. #define DC_SixthWorkScope_I 20764*2
  87. #define DC_SixthWorkScope_R 0.0811/2
  88. const double OCC_POWER_Sacbase = 100000000; //视载功率(基准值)VA //交流侧基准容量Sac:100MVA
  89. const double OCC_POWER_Vacbase = 35000; //电压V //交流侧基准电压器Vac:35kV
  90. const double OCC_POWER_R_RATE = 0.00017; //电阻Ω/m //交流输电线路单位电阻0.17Ω/km
  91. const double OCC_POWER_X_RATE = 0.00038; //电抗Ω/m //交流输电线路单位电抗0.38Ω/km
  92. struct RX //电抗相关信息
  93. {
  94. double R; //阻抗的实部
  95. double X; //阻抗的虚部
  96. };
  97. struct SubLine //子线类,
  98. {
  99. string breakerid; //断路器ID
  100. string tranformid; //变压器ID
  101. double P; //功率的实部
  102. double BaseP; //功率(实)基准值
  103. double Q; //功率的虚部
  104. double BaseQ; //无功功率的标准值
  105. double I; //电流
  106. int type; //类型
  107. };
  108. struct CalNode //计算节点类
  109. {
  110. CalNode()
  111. {
  112. AddConsumeR = 0;
  113. AddConsumeX = 0;
  114. OutputI = 0;
  115. OutputV = 0;
  116. InputI = 0;
  117. Status = 1;
  118. m_IniE=0;
  119. m_IniF=0;
  120. }
  121. int ID; //节点ID //用于计算的母线节点编号ID,数据来源:Table_PowerCalNode xyx注释,以下同理
  122. string BgkID; //回流线ID //对应的母线节点图元编号ID
  123. int Category; //类型 //母线节点类型
  124. int Position; //位置 //母线所处位置:I段、II段
  125. int Index; //索引 //表中的母线节点索引ID
  126. string strName; //名称 //母线名称
  127. int StationID; //车站ID //母线所属车站ID
  128. double Pis; //节点i注入有功功率 //母线电源注入有功
  129. double Qis; //节点i注入无功功率 //母线电源注入无功
  130. double ConsumePowerR; //R消耗功率实部 //母线负荷消耗有功 标幺值
  131. double AddConsumeR; //增加消耗电阻实部 //母线注入有功代数和=Pis-ConsumePowerR
  132. double ConsumePowerX; //X消耗功率的虚部 //母线负荷消耗无功 标幺值
  133. double AddConsumeX; //增加消耗电阻虚部 //母线注入无功代数和=Qis-ConsumePowerX
  134. double InputV; //输入电压
  135. double OutputV; //输出电压
  136. double InputI; //输入电流
  137. double OutputI; //输出电流
  138. double E; //系统修正变量
  139. double F; //系统修正变量
  140. double m_IniE; //初始E //母线节点初始电压实部
  141. double m_IniF; //初始F //母线节点初始电压虚部
  142. string inputlineid; //输入线ID
  143. string outputlineid; //输出线ID
  144. std::vector<int> m_Relations; //关系列表 //与节点关联的支路,数据来源:Table_NodeRelation
  145. std::vector<SubLine> m_SubLines; //子线列表 //与节点关联的馈线支路,数据来源:Table_NodeRelationLine,注:新版计算暂时未用
  146. int Status; //节点状态 //节点带电状态
  147. std::vector<string> m_RelationsSwitch; //与节点关联的开关图元ID 数据来源:Table_LineSwitch中的SwitchID xyx新增
  148. };
  149. typedef struct tgPowerValue //相关电力值 //计算结果
  150. {
  151. tgPowerValue()
  152. {
  153. InputI=0;
  154. OutputI=0;
  155. P=0;
  156. Q=0;
  157. V=0;
  158. }
  159. int StationID; //车站ID
  160. int ID; //系统ID
  161. int Parm; //参数
  162. int Position; //位置
  163. string EqpmtID; //设备ID
  164. string SubLineID; //子线ID
  165. string MLineID; //母线ID
  166. double InputI; //设备状态 //输入电流 xyx注释
  167. string InputLineID; //输入线ID
  168. double OutputI; //输出电流
  169. string OutLineID; //输出线ID
  170. double P; //有功功率
  171. double Q; //无功功率
  172. double V; //电压
  173. }POWERVALUE,*LPPOWERVALUE;
  174. class EqpmtInfo //设备信息
  175. {
  176. public:
  177. EqpmtInfo(void){};
  178. ~EqpmtInfo(void){};
  179. int GetID(){return ID;}
  180. string GetStrID(){return strID;}
  181. int GetCateGory(){ return Category;}
  182. void SetEqpmtInfo(int id,int category,int status,string name)
  183. {
  184. ID =id;
  185. Category =category;
  186. Status=status;
  187. strID = name;
  188. }
  189. void SetStatus(int status) //设置线路状态
  190. {
  191. Status=status;
  192. }
  193. int GetStatus() //获取线路状态
  194. {
  195. return Status;
  196. }
  197. protected:
  198. int ID; //设备ID //线路计算编号:Table_PowerLine中的 “ID”
  199. int Category; //设备类型 //线路类型:Table_PowerLine中的 “Category”
  200. int Status; //设备状态 //线路初始状态:Table_PowerLine中的 “Status”
  201. string strID; //设备名称ID //线路名称:Table_PowerLine中的 “StrID”
  202. private:
  203. };
  204. class PowerLine : public EqpmtInfo //电线类
  205. {
  206. public:
  207. PowerLine(void)
  208. {
  209. TransformID=-1;
  210. };
  211. ~PowerLine(void){};
  212. double GetLineI()
  213. {
  214. return I;
  215. }
  216. void SetLenght(double lenght)
  217. {
  218. Lenght =lenght;
  219. }
  220. double GetCosumePower()
  221. {
  222. return CosumePower;
  223. }
  224. void SetTransformID(int id)
  225. {
  226. TransformID = id;
  227. }
  228. int GetTransformID()
  229. {
  230. return TransformID;
  231. }
  232. void SetIValue(double i)
  233. {
  234. I=i;
  235. }
  236. void SetRXB(double r,double x,double b)
  237. {
  238. R =r;
  239. X=x;
  240. B=b;
  241. }
  242. void SetLineID(int linel,int liner)
  243. {
  244. LlineID = linel;
  245. RlineID = liner;
  246. }
  247. void SetBgkLineID(int id)
  248. {
  249. BgkLineID = id;
  250. }
  251. int GetLlineID()
  252. {
  253. return LlineID;
  254. }
  255. int GetRlineID()
  256. {
  257. return RlineID;
  258. }
  259. int GetBgkLineID()
  260. {
  261. return BgkLineID;
  262. }
  263. double GetLenght()
  264. {
  265. return Lenght;
  266. }
  267. //xyx新增 begin 设置支路对应图元ID
  268. void SetBranchGraphUnitID(string EqpmntID)
  269. {
  270. BranchGraphUnitID = EqpmntID;
  271. }
  272. double GetR(){return R;}
  273. double GetX(){return X;}
  274. double GetB(){return B;}
  275. void AddSwitchID(string strID) //添加线路关联开关编号 added by zhangjiahua
  276. {
  277. vector <string>::iterator iterID;
  278. iterID=find(m_vecSwitchStrID.begin(),m_vecSwitchStrID.end(),strID);
  279. if (iterID==m_vecSwitchStrID.end())
  280. {
  281. m_vecSwitchStrID.push_back(strID);
  282. }
  283. }
  284. //void SetLineStatus(int status) //added by zhangjiahua
  285. //{
  286. // m_LineStatus=status;
  287. //}
  288. //int GetLineStatus() //added by zhangjiahua
  289. //{
  290. // return m_LineStatus;
  291. //}
  292. public:
  293. double CosumePower; //消耗功率
  294. double Lenght; //电线长度
  295. double R; //电阻实部
  296. double X; //电阻虚部
  297. double B; //节点导纳矩阵元素虚部(王大论文:P27)
  298. double I; //电流
  299. int LlineID; //左线ID //支路ij连接的i侧节点,对于变压器支路:i侧为1侧(即高压侧) xyx注释
  300. int RlineID; //右线ID //支路ij连接的j侧节点,对于变压器支路:j侧为k侧(即低压侧) xyx注释
  301. int TransformID; //变压器ID
  302. int BgkLineID; //回流线ID
  303. string BranchGraphUnitID; //支路对应的图元ID xyx新增
  304. vector<string> m_vecSwitchStrID; //支路上的关联开关图元编号(含断路器、隔离开关) added by zhangjiahua
  305. //int m_LineStatus; //线路状态 0断开 1连接
  306. private:
  307. };
  308. class Transform : public EqpmtInfo //变压器
  309. {
  310. public:
  311. Transform(void){};
  312. ~Transform(void){};
  313. void SetHead(int head)
  314. {
  315. Head =head;
  316. }
  317. int GetHead()
  318. {
  319. return Head;
  320. }
  321. void SetRate(double rate)
  322. {
  323. Rate = rate;
  324. }
  325. double GetRate()
  326. {
  327. return Rate;
  328. }
  329. void SetRelationLine(int line)
  330. {
  331. RelationLine = line;
  332. }
  333. void SetName(string name)
  334. {
  335. strName =name;
  336. }
  337. void SetID(int id)
  338. {
  339. ID =id;
  340. }
  341. protected:
  342. int Head; //变压器头节点
  343. double Rate; //变比
  344. int RelationLine; //关系线
  345. string strName; //变压器名称
  346. };
  347. struct TrainRuningData //列车运行数据,其中定义了与列车运行相关的数据
  348. {
  349. int ID; //列车ID
  350. int Kind; //列车类型
  351. double DistanceL; //左边长度
  352. double DistanceR; //右边长度
  353. double PowerRate; //功率
  354. double PowerI; //电流
  355. int LineR; //线电阻
  356. double PointVoltage; //电压
  357. };
  358. struct DCNodePQValue //直流PQ节点值
  359. {
  360. DCNodePQValue()
  361. {
  362. memset(this,0,sizeof(DCNodePQValue));
  363. }
  364. double P_QYSum[24]; //有功功率和
  365. double Q_QYSum[24]; //无功功率和
  366. double P_HKSum[24]; //副站有功功率
  367. double Q_HKSum[24]; //副站无功功率
  368. double P_QY; //?有功功率(主站)
  369. double Q_QY; //?无功功率
  370. double P_HK; //副站有功功率
  371. double Q_HK; //副站无功功率
  372. int StationID; //车站ID
  373. };
  374. struct LineNodeData //线节点数据
  375. {
  376. int ID; //线ID
  377. int Kind; //类型
  378. string TouchNetID; //接触网ID
  379. double excursion; //偏移(长度)
  380. };
  381. struct TrackLineData //轨道线路
  382. {
  383. int LineID; //轨道线ID
  384. int Index; //索引
  385. int NextLineID; //下一个轨道线ID
  386. double Lenght; //长度
  387. };
  388. struct TouchNet_ShortCut_Info //接触网短路信息
  389. {
  390. string touchnetid; //接触网ID
  391. int errorid; //故障ID
  392. };
  393. struct TouchNet_SpanNetApplyPower_Info //接触网_跨网信息类 //接触网越区供电
  394. {
  395. int stationid; //车站ID
  396. int nodeid; //节点ID
  397. int errorid; //故障ID
  398. int arrow; //列车运行方向
  399. };
  400. struct Track_Section //轨道区段
  401. {
  402. int Index; //索引
  403. int TrackID; //轨道区段ID
  404. double StartPos; //起始位置
  405. double EndPos; //结束位置
  406. };
  407. typedef map<int,Track_Section> TRACKSECMAP; //轨道区段信息列表
  408. struct TouchNet_Track_Relation //接触网与轨道的关系
  409. {
  410. string TouchNetID; //接触网ID
  411. TRACKSECMAP TrackSecsMap; //轨道区段列表
  412. };
  413. typedef map<string,TouchNet_Track_Relation> TOUCHNETRELAMAP; //接触网轨道区段关系列表
  414. struct DCStationUpNode //上行车站节点
  415. {
  416. double RUpPre; //R代表电阻
  417. double RDownPre;
  418. double RUpNext;
  419. double RDownNext;
  420. double PointVoltage;
  421. double PowerRate;
  422. double PowerI;
  423. };
  424. struct DCStationDownNode //下行车站节点
  425. {
  426. double RUpRail; //上行尾节点电阻
  427. double RDownRail; //下行
  428. double RSource; //
  429. double PointVoltage; //电压
  430. double PowerRate; //电阻
  431. double PowerI; //电流
  432. };
  433. struct DCStationRailwayNode //轨道节点
  434. {
  435. double RFedLine; //馈线电阻
  436. double RPreRail; //前一尾节点电阻
  437. double RNextRail; //下一尾节点电阻
  438. double YPreRail; //前一尾节点导纳
  439. double YNextRail; //下一尾节点导纳
  440. double PointVoltage; //节点电压
  441. double PowerRate; //电阻
  442. double PowerI; //电流
  443. };
  444. struct DCHeadTailNode //头尾节点
  445. {
  446. double RUpLine; //上行线电阻
  447. double RDown; //下行线电阻
  448. double YDown; //下行线导纳
  449. double PointVoltage; //电压
  450. double PowerRate; //功率
  451. double PowerI; //电流
  452. };
  453. struct StationInfo //车站信息,其中定义了列车运行的相关参数
  454. {
  455. int ID; //车站ID
  456. string Name; //车站名称
  457. double UpPreLineLen; //上行前一接触网段的长度 up代表上行,down代表下行
  458. double DownPreLineLen; //下行前一接接触网段的长度
  459. double UpNextLineLen; //上行下一接触网段的长度
  460. double DownNextLineLen; //下行下一段接触网的长度
  461. double UpRailwayLen; //上行轨道长度
  462. double DownRailwayLen; //下行轨道长度
  463. int NextStationID; //下一个车站ID
  464. int PreStationID; //前一个车站ID
  465. double RInner; //内阻
  466. DCStationUpNode UpSourceNode; //上行车站节点
  467. DCStationDownNode DownSourceNode; //下行车站节点
  468. DCStationRailwayNode PreRailNode; //前一轨道节点
  469. DCStationRailwayNode NextRailNode; //下一轨道节点
  470. };
  471. class Dc_PowerStation //电站类
  472. {
  473. public:
  474. Dc_PowerStation(){};
  475. virtual ~Dc_PowerStation(){};
  476. void SetID(int id)
  477. {
  478. m_ID = id;
  479. }
  480. void SetName(string strName)
  481. {
  482. m_strName = strName;
  483. }
  484. void SetContactNetLineLen(double lineuppre,double linedownpre,double linedownnext,double lineupnext)//4条直流馈线长度
  485. {
  486. m_UpPreLineLen = lineuppre;
  487. m_DownPreLineLen = linedownpre;
  488. m_UpNextLineLen = lineupnext;
  489. m_DownNextLineLen = linedownnext;
  490. }
  491. void SetFeedBackLineLen(double Upline,double Downline)//2条负极回流线长度
  492. {
  493. m_UpFeedBackLineLen = Upline;
  494. m_DownFeedBackLineLen = Downline;
  495. }
  496. void SetNearStation(int prestation, int nextstation)//左、右相邻牵混所编号
  497. {
  498. m_PreStationID = prestation;
  499. m_NextStationID = nextstation;
  500. }
  501. void SetRectierToTouchNetNodeID(int id)//正极母线节点
  502. {
  503. YN_RectierToTouchNetID = id;
  504. }
  505. void SetRectierToRailwayNodeID(int id)//负极母线节点
  506. {
  507. YN_RectierToRailwayID = id;
  508. }
  509. void SetUpRailwayNodeID(int id)//上行轨道节点编号
  510. {
  511. YN_UpRailwayID = id;
  512. }
  513. void SetDownRailwayNodeID(int id)//下行轨道节点编号
  514. {
  515. YN_DownRailwayID = id;
  516. }
  517. void SetUpTouchNetID(string id)//上行接触网节点编号
  518. {
  519. m_UpTouchNetID = id;
  520. }
  521. void SetDownTouchNetID(string id) //下行接触网节点编号
  522. {
  523. m_DownTouchNetID = id;
  524. }
  525. void SetWorkArea(int workarea)//工作区间
  526. {
  527. m_WorkArea = workarea;
  528. if (m_WorkArea>6)
  529. {
  530. m_WorkArea=6;
  531. }
  532. if (m_WorkArea<1)
  533. {
  534. m_WorkArea = 1;
  535. }
  536. switch (m_WorkArea)
  537. {
  538. case 1:
  539. {
  540. m_WorkArea_V = DC_FristWorkScope_V;
  541. m_WorkArea_I = DC_FristWorkScope_I;
  542. m_WorkArea_R = DC_FristWorkScope_R;
  543. }
  544. break;
  545. case 2:
  546. {
  547. m_WorkArea_V = DC_SecondWorkScope_V;
  548. m_WorkArea_I = DC_SecondWorkScope_I;
  549. m_WorkArea_R = DC_SecondWorkScope_R;
  550. }
  551. break;
  552. case 3:
  553. {
  554. m_WorkArea_V = DC_ThirdWorkScope_V;
  555. m_WorkArea_I = DC_ThirdWorkScope_I;
  556. m_WorkArea_R = DC_ThirdWorkScope_R;
  557. }
  558. break;
  559. case 4:
  560. {
  561. m_WorkArea_V = DC_FourthWorkScope_V;
  562. m_WorkArea_I = DC_FourthWorkScope_I;
  563. m_WorkArea_R = DC_FourthWorkScope_R;
  564. }
  565. break;
  566. case 5:
  567. {
  568. m_WorkArea_V = DC_FifthWorkScope_V;
  569. m_WorkArea_I = DC_FifthWorkScope_I;
  570. m_WorkArea_R = DC_FifthWorkScope_R;
  571. }
  572. break;
  573. case 6:
  574. {
  575. m_WorkArea_V = DC_SixthWorkScope_V;
  576. m_WorkArea_I = DC_SixthWorkScope_I;
  577. m_WorkArea_R = DC_SixthWorkScope_R;
  578. }
  579. break;
  580. }
  581. }
  582. //xyx新增begin
  583. void SetNoWorkArea(bool power)//整流机组退出时的参数设置
  584. {
  585. if (!power)
  586. {
  587. m_WorkArea_V = 0.0;
  588. m_WorkArea_I = 0.0;
  589. m_WorkArea_R = 0.0;
  590. }
  591. }
  592. //xyx新增end
  593. ////xyx测试begin 测试直流侧整流机组的短路情况
  594. //void SetFualtWorkArea()//整流机组短路时的参数设置
  595. //{
  596. // m_WorkArea_V = 12;
  597. // m_WorkArea_I = 642000;
  598. // m_WorkArea_R = 0.0008625;
  599. //}
  600. ////xyx测试end
  601. int GetID()
  602. {
  603. return m_ID;
  604. }
  605. int GetPreStationID()
  606. {
  607. return m_PreStationID;
  608. }
  609. int GetNextStationID()
  610. {
  611. return m_NextStationID;
  612. }
  613. string GetUpTouchNetID()
  614. {
  615. return m_UpTouchNetID;
  616. }
  617. string GetDownTouchNetID()
  618. {
  619. return m_DownTouchNetID;
  620. }
  621. int GetRectierToTouchNetNodeID()
  622. {
  623. return YN_RectierToTouchNetID;
  624. }
  625. int GetRectierToRailwayNodeID()
  626. {
  627. return YN_RectierToRailwayID;
  628. }
  629. int GetUpRailwayNodeID()
  630. {
  631. return YN_UpRailwayID;
  632. }
  633. int GetDownRailwayNodeID()
  634. {
  635. return YN_DownRailwayID;
  636. }
  637. double GetInnerR()
  638. {
  639. return m_WorkArea_R;
  640. }
  641. int GetWorkArea()
  642. {
  643. return m_WorkArea;
  644. }
  645. double GetWorkAreaV()
  646. {
  647. return m_WorkArea_V;
  648. }
  649. double GetWorkAreaI()
  650. {
  651. return m_WorkArea_I;
  652. }
  653. double GetPWorkAreaI()
  654. {
  655. switch (m_WorkArea)
  656. {
  657. case 1:
  658. {
  659. return 0;
  660. }
  661. break;
  662. case 2:
  663. {
  664. return DC_FristWorkScope_I;
  665. }
  666. break;
  667. case 3:
  668. {
  669. return DC_SecondWorkScope_I;
  670. }
  671. break;
  672. case 4:
  673. {
  674. return DC_ThirdWorkScope_I;
  675. }
  676. break;
  677. case 5:
  678. {
  679. return DC_FourthWorkScope_I;
  680. }
  681. break;
  682. case 6:
  683. {
  684. return DC_FifthWorkScope_I;
  685. }
  686. break;
  687. }
  688. return -1;
  689. }
  690. double GetUpFeedBackLineLen()
  691. {
  692. return m_UpFeedBackLineLen;
  693. }
  694. double GetDownFeedBackLen()
  695. {
  696. return m_DownFeedBackLineLen;
  697. }
  698. double GetInnerI()
  699. {
  700. return m_WorkArea_V/m_WorkArea_R;
  701. }
  702. double GetUpPreLineLen()
  703. {
  704. return m_UpPreLineLen;
  705. }
  706. double GetDownPreLineLen()
  707. {
  708. return m_DownPreLineLen;
  709. }
  710. double GetUpNextLineLen()
  711. {
  712. return m_DownNextLineLen;
  713. }
  714. double GetDownNextLineLen()
  715. {
  716. return m_DownNextLineLen;
  717. }
  718. //added by zhangjiahua begin
  719. void SetOverZoneUpSwitchID(string id)
  720. {
  721. m_OverZoneUpSwitchID=id;
  722. }
  723. string GetOverZoneUpSwitchID()
  724. {
  725. return m_OverZoneUpSwitchID;
  726. }
  727. void SetOverZoneDownSwitchID(string id)
  728. {
  729. m_OverZoneDownSwitchID=id;
  730. }
  731. string GetOverZoneDownSwitchID()
  732. {
  733. return m_OverZoneDownSwitchID;
  734. }
  735. //added by zhangjiahua end
  736. //xyx新增 begin
  737. //(1)上行前一直流馈线断路器图元ID
  738. void SetFeedUpPreBreakerID(string id)
  739. {
  740. m_FeedUpPreBreakerID=id;
  741. }
  742. string GetFeedUpPreBreakerID()
  743. {
  744. return m_FeedUpPreBreakerID;
  745. }
  746. //(2)上行后一直流馈线断路器图元ID
  747. void SetFeedUpNextBreakerID(string id)
  748. {
  749. m_FeedUpNextBreakerID=id;
  750. }
  751. string GetFeedUpNextBreakerID()
  752. {
  753. return m_FeedUpNextBreakerID;
  754. }
  755. //(3)下行前一直流馈线断路器图元ID
  756. void SetFeedDownPreBreakerID(string id)
  757. {
  758. m_FeedDownPreBreakerID=id;
  759. }
  760. string GetFeedDownPreBreakerID()
  761. {
  762. return m_FeedDownPreBreakerID;
  763. }
  764. //(4)下行后一直流馈线断路器图元ID
  765. void SetFeedDownNextBreakerID(string id)
  766. {
  767. m_FeedDownNextBreakerID=id;
  768. }
  769. string GetFeedDownNextBreakerID()
  770. {
  771. return m_FeedDownNextBreakerID;
  772. }
  773. //(5)直流正极母线节点图元ID
  774. void SetRectierToTouchNetUnitID(string id)
  775. {
  776. m_RectierToTouchNetUnitID=id;
  777. }
  778. string GetRectierToTouchNetUnitID()
  779. {
  780. return m_RectierToTouchNetUnitID;
  781. }
  782. //(6)直流负极母线节点图元ID
  783. void SetRectierToRailwayUnitID(string id)
  784. {
  785. m_RectierToRailwayUnitID=id;
  786. }
  787. string GetRectierToRailwayUnitID()
  788. {
  789. return m_RectierToRailwayUnitID;
  790. }
  791. //(7)直流进线开关I图元ID
  792. void SetFirstDCInputBreakerUnitID(string id)
  793. {
  794. m_FirstDCInputBreakerUnitID=id;
  795. }
  796. string GetFirstDCInputBreakerUnitID()
  797. {
  798. return m_FirstDCInputBreakerUnitID;
  799. }
  800. //(8)直流进线开关II图元ID
  801. void SetSecondDCInputBreakerUnitID(string id)
  802. {
  803. m_SecondDCInputBreakerUnitID=id;
  804. }
  805. string GetSecondDCInputBreakerUnitID()
  806. {
  807. return m_SecondDCInputBreakerUnitID;
  808. }
  809. //(9)设置带电状态
  810. void SetStatus(int status)
  811. {
  812. m_Status = status;
  813. }
  814. //xyx新增 begin
  815. protected:
  816. int m_ID; //车站ID
  817. string m_strName; //车站名称
  818. double m_UpPreLineLen; //上行前一车站长度 //上行前一直流馈线长度 xyx注释
  819. double m_DownPreLineLen; //下行前一车站长度 //下行前一直流馈线长度 xyx注释
  820. double m_UpNextLineLen; //上行下一车站长度 //上行后一直流馈线长度 xyx注释
  821. double m_DownNextLineLen; //下行下一车站长度 //下行后一直流馈线长度 xyx注释
  822. double m_UpFeedBackLineLen; //上行馈线长度 //上行回流线长度 xyx注释
  823. double m_DownFeedBackLineLen; //下行馈线长度 //下行回流线长度 xyx注释
  824. //added by zhangjiahua
  825. string m_OverZoneUpSwitchID; //上行越区隔离开关图元ID
  826. string m_OverZoneDownSwitchID; //下行越区隔离开关图元ID
  827. //xyx新增 begin
  828. string m_FeedUpPreBreakerID; //上行前一直流馈线断路器图元ID
  829. string m_FeedUpNextBreakerID; //上行后一直流馈线断路器图元ID
  830. string m_FeedDownPreBreakerID; //下行前一直流馈线断路器图元ID
  831. string m_FeedDownNextBreakerID; //下行后一直流馈线断路器图元ID
  832. string m_RectierToTouchNetUnitID; //直流正极母线节点图元ID
  833. string m_RectierToRailwayUnitID; //直流负极母线节点图元ID
  834. string m_FirstDCInputBreakerUnitID; //直流进线开关I图元ID
  835. string m_SecondDCInputBreakerUnitID; //直流进线开关II图元ID
  836. int m_Status; //节点带电状态
  837. //xyx新增 end
  838. int m_NextStationID; //下一车站ID
  839. int m_PreStationID; //前一车站ID
  840. int m_WorkArea;//工作区间
  841. double m_WorkArea_V;//区间电压
  842. double m_WorkArea_I;//区间电流
  843. double m_WorkArea_R;//区间电阻
  844. string m_UpTouchNetID; //上行接触网ID
  845. string m_DownTouchNetID; //下行接触网ID
  846. int YN_RectierToTouchNetID; //整流器到接触网ID
  847. int YN_RectierToRailwayID; //整流器到轨道ID
  848. int YN_UpRailwayID; //上行轨道节点ID
  849. int YN_DownRailwayID; //下行轨道节点ID
  850. };
  851. struct RailwayLineInfo
  852. {
  853. int lineSectionID; //轨道区段ID
  854. double length; //轨道区段长度
  855. int arrow; //轨道区段方向
  856. int nextMSectionID; //下一主段的编号
  857. int nextPSectionID; //下一副段的编号
  858. int preMSectionID; //前一主段编号
  859. int prePSectionID;
  860. int NextPowerStationID; //下一车站ID
  861. int PrePowerStationID; //前一车站ID
  862. };
  863. class DCSysTrain // 列车类
  864. {
  865. public:
  866. DCSysTrain(){};
  867. virtual ~DCSysTrain(){};
  868. double GetResistance(double speed)//功率计算
  869. {
  870. return (2.089+0.0394*speed+0.000675*speed*speed)*9.81;
  871. };
  872. public:
  873. int ID; //列车ID
  874. double Speed; //列车速度
  875. double weight; //列车重量
  876. int arrow; //列车方向
  877. int LineSectionID; //轨道区段ID
  878. double excursion; //长度
  879. int stationID; //车站ID
  880. double acceleration; //加速度
  881. double PowerRate; //功率
  882. int status; //列车状态
  883. int powerbowstatus; //受电弓状态
  884. };
  885. #endif