using IStation.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.EtaCalculation.SHYS.Station
{
///
/// 所有泵 且都有独立的流量计 , 有 出口压力计, 有开机状态测点 , 有进口压力
///
public class EtaAnalyCalculator4金海泵站 : EtaAnalyCalculator泵站4都是独立流量计_有运行状态, IEtaStationAnalyCalculator
{
///
///
///
///
///
///
public override bool Calculate(EtaStationAnalyContextItem context, out string error_info)
{
if (context == null)
{
error_info = "上下文参数为空";
return false ;
}
this._threshold_flow = 50;//如果此泵开了, 防止零点飘流, 判断流量计值是否正常
this._stationID = context.ID;
//初始化机泵
if (!InitialPumpList(context, out error_info))
{
return false;
}
//核心分析
var stat8x = base.CalculateCore(context, out error_info);
if(stat8x == false )
{
return false;
}
//添加子管路分析结果
//三条管路 480(南汇1) 123 489 南汇2号管 456 501 川沙管 (78910)
var _sub_pipe_id = new long[] { 480, 489, 501 };//子管路ID
return AddSubPipeAnaList(_sub_pipe_id);
}
#region 初始化机泵
///
///
///
///
///
///
protected override bool InitialPumpList(Model.EtaStationAnalyContextItem context, out string error_info)
{
var monitor_id_pump_flow_array = new long[] { 628, 639, 650, 661, 672, 683, 694, 705, 716, 727 };// 流量计
var monitor_id_run_status_array = new long[] { 624, 635, 646, 657, 668, 679, 690, 701, 712, 723 };//运行状态
var monitor_id_inlet_press_array = new long[] { 625, 636, 647, 658, 669, 680, 691, 702, 713, 724 };//进口压力计
var monitor_id_outlet_press_array = new long[] { 626, 637, 648, 659, 670, 681, 692, 703, 714, 725 };//出口压力
var monitor_id_motor_power_array = new long[] { 633, 644, 655, 666, 677, 688, 699, 710, 721, 730 };//瞬间功率
var monitor_id_motor_frequence_array = new long[] { 629, 640, 651, 662, 673, 684, 695, 706, 717, 0 };//最后一台是工频泵
var monitor_id_motor_zhuansu_array = new long[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };//转速
var is液位代替进口压力 = false;
//初始化机泵
this._machineCount = 10;
var machine_id_array = new long[] { 199, 202, 208, 211, 214, 217, 220, 223, 226, 229 };
this._allMachineList = InitialPumpMachineList(
context,
machine_id_array,//机泵ID
monitor_id_run_status_array,//运行状态
monitor_id_pump_flow_array,// 流量计
is液位代替进口压力,
monitor_id_inlet_press_array,//进口压力计
monitor_id_outlet_press_array,//出口压力
monitor_id_motor_power_array,//瞬间功率
monitor_id_motor_frequence_array,//频率
monitor_id_motor_zhuansu_array,//转速
null,//电流
out error_info);
if (_allMachineList == null)
{
IStation.LogHelper.Error(error_info);
return false ;
}
error_info = null;
return true;
}
#endregion
#region 子管路分析结果
private bool AddSubPipeAnaList(long[] _sub_pipe_id)
{
this._pipeAnaResultList = new List();
EtaMultiRealRecordPure result_pipe_1 = new EtaMultiRealRecordPure();//一号管 分析结果
result_pipe_1.ObjectType = IStation.ObjectType.PipeLine ;
result_pipe_1.ObjectID = _sub_pipe_id[0];
result_pipe_1.InitialRunList(this._machineCount);//用泵站总数量
result_pipe_1.AnalyStatus = Model.Eta.eAnalyStatus.Normal ;
BuildConnectResult(null, result_pipe_1,
new List() {
this._allMachineList[0],
this._allMachineList[1],
this._allMachineList[2] });
this._pipeAnaResultList.Add(result_pipe_1);
EtaMultiRealRecordPure result_pipe_2 = new EtaMultiRealRecordPure();//2号管 分析结果
result_pipe_2.ObjectType = IStation.ObjectType.PipeLine;
result_pipe_2.ObjectID = _sub_pipe_id[1];
result_pipe_2.InitialRunList(this._machineCount);//用泵站总数量
result_pipe_2.AnalyStatus = Model.Eta.eAnalyStatus.Normal;
BuildConnectResult(null, result_pipe_2, new List() { this._allMachineList[3], this._allMachineList[4], this._allMachineList[5] });
this._pipeAnaResultList.Add(result_pipe_2);
EtaMultiRealRecordPure result_pipe_3 = new EtaMultiRealRecordPure();//一号管 分析结果
result_pipe_3.ObjectType = IStation.ObjectType.PipeLine;
result_pipe_3.ObjectID = _sub_pipe_id[2];
result_pipe_3.InitialRunList(this._machineCount);//用泵站总数量
result_pipe_3.AnalyStatus = Model.Eta.eAnalyStatus.Normal;
BuildConnectResult(null, result_pipe_3, new List() { this._allMachineList[6], this._allMachineList[7], this._allMachineList[8], this._allMachineList[9] });
this._pipeAnaResultList.Add(result_pipe_3);
return true ;
}
#endregion
}
}