Beispiel #1
0
 /// <summary>
 /// 从参数指定的天线加载信息,选择行加载,保留当前对象已有的合法数据
 /// </summary>
 /// <param name="ant">要加载的参考天线信息</param>
 public void FillFrom(Antenna ant)
 {
     if (!angle.DataInitialized)
     {
         this.angle.CopyFrom(ant.angle);
     }
     if (!this.antHeight.DataInitialized)
     {
         this.antHeight.CopyFrom(ant.antHeight);
     }
     if (!this.azimuth.DataInitialized)
     {
         this.azimuth.CopyFrom(ant.azimuth);
     }
     if (!this.feedLength.DataInitialized)
     {
         this.feedLength.CopyFrom(ant.feedLength);
     }
     if (!this.feedLoss.DataInitialized)
     {
         this.feedLoss.CopyFrom(ant.feedLoss);
     }
     if (!this.gain.DataInitialized)
     {
         this.gain.CopyFrom(ant.gain);
     }
     if (this.polar == EMCPolarisationEnum.None)
     {
         this.polar = ant.polar;
     }
 }
Beispiel #2
0
 /// <summary>
 /// 从参数指定的天线加载信息,覆盖当前对象的数据
 /// </summary>
 /// <param name="ant">要加载的参考天线信息</param>
 public void CopyFrom(Antenna ant)
 {
     this.angle.CopyFrom(ant.angle);
     this.antHeight.CopyFrom(ant.antHeight);
     this.azimuth.CopyFrom(ant.azimuth);
     this.feedLength.CopyFrom(ant.feedLength);
     this.feedLoss.CopyFrom(ant.feedLoss);
     this.gain.CopyFrom(ant.gain);
     this.polar = ant.polar;
 }
Beispiel #3
0
        /// <summary>
        /// 获取当前发射机到目标天线的隔离衰减
        /// </summary>
        /// <param name="antenna">目标天线</param>
        /// <param name="mDistance">距离目标天线距离</param>
        /// <returns>隔离衰减</returns>
        public double Get‎IsolationAttenuationToAntenna(Antenna antenna, double mDistance)
        {
            double attenuation = 0;

            if (this.Antenna.Polar == EMCPolarisationEnum.V && antenna.Polar == EMCPolarisationEnum.V)
            {
                //按照垂直计算AC
                attenuation = 37.5 * Math.Log10(Math.Abs(antenna.AntHeight.MValue - this.transmitterParams.Antenna.AntHeight.MValue)) + 40.3 * Math.Log10(this.Freq) - 63.87;
            }
            else
            {
                //按照水平计算AC
                attenuation = 20 * Math.Log10(mDistance) + 21 * Math.Log10(this.Freq) - 23.9;
            }
            return(attenuation);
        }
Beispiel #4
0
        ///// <summary>
        ///// 该发射机到参数发射机的垂直防止隔离衰减
        ///// </summary>
        ///// <param name="disturbedTransmitter">被干扰发射机</param>
        ///// <returns></returns>
        //public double GetVerticalAc(Transmitter disturbedTransmitter)
        //{
        //    double diff = Math.Abs(this.transmitterParams.Antenna.AntHeight.m_Value - disturbedTransmitter.transmitterParams.Antenna.AntHeight.m_Value);
        //    if (diff < 0.0001)
        //    {
        //        diff = 0.0001;
        //    }
        //    return 37.5 * Math.Log10(diff) + 40.3 * Math.Log10(this.Freq) - 63.87;
        //}

        //public double GetHorizontalAC(Transmitter disturbedTransmitter,EMCLengthValue distance)
        //{
        //    double diff = 0.1;
        //    if (distance!=null && distance.m_Value>0.1)
        //    {
        //        diff = distance.m_Value;
        //    }
        //    return 20 * Math.Log10(diff) + 21 * Math.Log10(this.Freq) - 23.9;
        //}

        /// <summary>
        /// 获取发射机到目标天线的隔离衰减
        /// </summary>
        /// <param name="destAnt">天线位置</param>
        /// <param name="distance">到目标天线距离</param>
        /// <returns>发射机到目标天线的隔离衰减</returns>
        public double GetAc(Antenna destAnt, EMCLengthValue distance)
        {
            if (this.transmitterParams.Antenna.Polar == EMCPolarisationEnum.V && destAnt.Polar == EMCPolarisationEnum.V)
            {
                double diff = Math.Abs(this.transmitterParams.Antenna.AntHeight.MValue - destAnt.AntHeight.MValue);
                if (diff < 0.0001)
                {
                    diff = 0.0001;
                }
                return(37.5 * Math.Log10(diff) + 40.3 * Math.Log10(this.Freq) - 63.87);
            }
            else
            {
                double diff = 0.1;
                if (distance != null && distance.MValue > 0.1)
                {
                    diff = distance.MValue;
                }
                return(20 * Math.Log10(diff) + 21 * Math.Log10(this.Freq) - 23.9);
            }
        }
Beispiel #5
0
 /// <summary>
 /// 默认构造函数
 /// </summary>
 public ReceiverParams()
 {
     receiverParamsID = Guid.NewGuid().ToString();
     ant             = new Antenna();
     ant.AntennaKind = AntennaKindEnum.Receive;
 }
Beispiel #6
0
 /// <summary>
 /// 默认构造函数
 /// </summary>
 public TransmitterParams()
 {
     transmitterParamsID = Guid.NewGuid().ToString();
     ant             = new Antenna();
     ant.AntennaKind = AntennaKindEnum.Send;
 }