示例#1
0
        /// <summary>
        /// 计算发射机互调
        /// </summary>
        internal IMCompareResult TransmitterIM()
        {
            this.imResult = new IMCompareResult();
            int length = this.stationtransmitters.Length;

            for (int i = 0; i < length; i++)
            {
                //int start = this.BiSearchTransmitter(this.transmitters[i].TuningFreqFrom, 0, length - 1);
                //int end = this.BiSearchTransmitter(this.transmitters[i].TuningRangeTo, start, length - 1);
                int    start = 0;
                int    end   = length - 1;
                double freqA = 2 * this.stationtransmitters[i].Freq;
                for (int j = start; j <= end; j++)
                {
                    if (i == j || this.stationtransmitters[i].EquipID == this.stationtransmitters[j].EquipID)
                    {
                        continue;
                    }
                    double generateFreq = freqA - this.stationtransmitters[j].Freq;
                    foreach (Receiver receiver in this.stationreceivers)
                    {
                        if (receiver.EquipID == this.stationtransmitters[i].EquipID || receiver.EquipID == this.stationtransmitters[j].EquipID)
                        {
                            continue;
                        }
                        if (receiver.IsValidatingFreq(generateFreq))
                        {
                            double distancef1Toreceiver = DistanceCalculator.GetKmDistance(this.stationtransmitters[i].Coordinate, receiver.Coordinate);
                            //double attenuation = 0;
                            //按照垂直计算AC
                            //double vAttenuation = 37.5 * Math.Log10() + 40.3 * Math.Log10(f2.Freq) - 63.87;
                            //按照水平计算AC
                            double attenuation = 20 * Math.Log10(distancef1Toreceiver * 1000) + 21 * Math.Log10(this.stationtransmitters[j].Freq) - 23.9;

                            //f2在f1发信机输入端的功率;
                            //Pin’(B)=ERPB-AC+GA-Lta
                            //Pin’(B)为TXB在TXA发信机输入端的功率;
                            double powerB    = this.stationtransmitters[j].Erp - attenuation + this.stationtransmitters[i].AntGain - this.stationtransmitters[i].FeedLoss;
                            double deviation = Math.Round(Math.Abs(this.stationtransmitters[i].Freq - this.stationtransmitters[j].Freq), 4, MidpointRounding.AwayFromZero);
                            double refC      = 57 * Math.Log10(deviation + 1.5) - 9.6 - 9 * Math.Log10(deviation);
                            double lb        = GetTransLoss(this.stationtransmitters[i], distancef1Toreceiver);
                            //Pin’(B)+GA-LTA+GRX-LRX-Lb-C
                            double powerIn = powerB + this.stationtransmitters[i].AntGain - this.stationtransmitters[i].FeedLoss + receiver.AntGaindBi - receiver.FeedLoss - lb - refC;
                            if (receiver.IsValidatingSignal(powerIn))
                            {
                                //登记发射机互调
                                ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { this.stationtransmitters[i].ComparableFreq, this.stationtransmitters[j].ComparableFreq }, new int[] { 2, -1 });
                                item.DisturbedFreqs = new ComparableFreq[] { receiver.ComparableFreq };
                                this.imResult.RegisterIMItem(item);
                            }
                        }
                    }
                }
            }
            return(this.imResult);
        }
示例#2
0
        /// <summary>
        /// 登记三阶互调
        /// </summary>
        /// <param name="one">计算互调用发射机</param>
        /// <param name="other">另一个计算互调用发射机</param>
        private void RegisterThirdOrderIMItem(Transmitter one, Transmitter other)
        {
            double freqValue = one.Freq * 2 - other.Freq;

            if (freqValue > 0 && this.currentReceiver.IsValidatingFreq(freqValue))
            {
                double pinA      = PowerIn(one, this.currentReceiver);
                double pinB      = PowerIn(other, this.currentReceiver);
                double deviation = Math.Round((Math.Abs(one.Freq - this.currentReceiver.Freq) + Math.Abs(other.Freq - this.currentReceiver.Freq)) / 2, 4, MidpointRounding.AwayFromZero);
                double powerIn   = 2 * pinA + pinB + 10 - 60 * Math.Log10(deviation);
                if (this.currentReceiver.IsValidatingSignal(powerIn))
                {
                    ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { one.ComparableFreq, other.ComparableFreq }, new int[] { 2, -1 });
                    item.DisturbedFreqs = new ComparableFreq[] { this.currentReceiver.ComparableFreq };
                    this.imResult.RegisterIMItem(item);
                }
            }
        }
示例#3
0
        /// <summary>
        /// 登记三阶互调
        /// </summary>
        ///<param name="one">第一个发射机</param>
        ///<param name="two">第二个发射机</param>
        ///<param name="three">第三个发射机</param>
        private void RegisterThirdOrderIMItem(Transmitter one, Transmitter two, Transmitter three)
        {
            double freqValue = one.Freq + two.Freq - three.Freq;

            if (this.currentReceiver.IsValidatingFreq(freqValue))
            {
                double deviation = Math.Round((Math.Abs(one.Freq - this.currentReceiver.Freq) + Math.Abs(two.Freq - this.currentReceiver.Freq)) + Math.Abs(three.Freq - this.currentReceiver.Freq) / 3, 4, MidpointRounding.AwayFromZero);
                double pinA      = PowerIn(one, this.currentReceiver);
                double pinB      = PowerIn(two, this.currentReceiver);
                double pinC      = PowerIn(three, this.currentReceiver);
                double powerIn   = 2 * pinA + pinB + pinC - 81 * Math.Log10(deviation);
                if (this.currentReceiver.IsValidatingSignal(powerIn))
                {
                    ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { one.ComparableFreq, two.ComparableFreq, three.ComparableFreq }, new int[] { 1, 1, -1 });
                    item.DisturbedFreqs = new ComparableFreq[] { this.currentReceiver.ComparableFreq };
                    this.imResult.RegisterIMItem(item);
                }
            }
        }
示例#4
0
        /// <summary>
        /// 计算发射机互调
        /// </summary>
        internal IMCompareResult CalcTransmitterIMInterference()
        {
            this.imResult = new IMCompareResult();
            int length = this.stationtransmitters.Length;

            for (int i = 0; i < this.equtransmitters.Length; i++)
            {
                int    start = 0;
                int    end   = length - 1;
                double freqA = 2 * this.equtransmitters[i].Freq;

                for (int j = start; j <= end; j++)
                {
                    if (i == j || this.stationtransmitters[i].EquipID == this.stationtransmitters[j].EquipID)
                    {
                        continue;
                    }
                    double generateFreq = freqA - this.stationtransmitters[j].Freq;
                    foreach (Receiver receiver in this.stationreceivers)
                    {
                        if (receiver.EquipID == this.stationtransmitters[i].EquipID || receiver.EquipID == this.stationtransmitters[j].EquipID)
                        {
                            continue;
                        }
                        if (receiver.IsValidatingFreq(generateFreq))
                        {
                            double powerIn = CalcPowerIn(this.equtransmitters[i], this.equtransmitters[j], receiver);
                            if (receiver.IsValidatingSignal(powerIn))
                            {
                                //登记发射机互调
                                ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { this.stationtransmitters[i].ComparableFreq, this.stationtransmitters[j].ComparableFreq }, new int[] { 2, -1 });
                                item.DisturbedFreqs = new ComparableFreq[] { receiver.ComparableFreq };
                                this.imResult.RegisterIMItem(item);
                            }
                        }
                    }
                }
            }
            return(this.imResult);



            //this.imResult = new IMCompareResult();
            //int calclength = this.calctransmitters.Length;
            //for (int i = 0; i < calclength; i++)
            //{
            //    #region 在设备中计算互调

            //    int equstart = 0;
            //    int equend = calclength - 1;

            //    double freqA = 2 * this.calctransmitters[i].Freq;

            //    for (int j = equstart; j <= equend; j++)
            //    {
            //        if (i == j || this.calctransmitters[i].EquipID == this.calctransmitters[j].EquipID)
            //        {
            //            continue;
            //        }

            //        double generateFreq = freqA - this.calctransmitters[j].Freq;
            //        foreach (Receiver receiver in this.calcreceivers)
            //        {
            //            if (receiver.EquipID == this.calctransmitters[i].EquipID || receiver.EquipID == this.calctransmitters[j].EquipID)
            //                continue;
            //            if (receiver.IsValidatingFreq(generateFreq))
            //            {
            //                double powerIn = CalcPowerIn(this.calctransmitters[i], this.calctransmitters[j], receiver);
            //                if (receiver.IsValidatingSignal(powerIn))
            //                {
            //                    //登记发射机互调 将计算频率存在IMFreqs中
            //                    ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { this.calctransmitters[i].ComparableFreq, this.calctransmitters[j].ComparableFreq }, new int[] { 2, -1 });
            //                    item.DisturbedFreqs = new ComparableFreq[] { receiver.ComparableFreq }; //将另一个干扰频率存在DisturbedFreqs中
            //                    this.imResult.RegisterIMItem(item);
            //                }
            //            }
            //        }
            //    }
            //    #endregion

            //    #region 在周围台站中计算互调

            //    int complength = this.comptransmitters.Length;
            //    int statstart = 0;
            //    int statend = complength - 1;
            //    for (int j = statstart; j <= statend; j++)
            //    {
            //        if (i == j || this.calctransmitters[i].EquipID == this.comptransmitters[j].EquipID)
            //        {
            //            continue;
            //        }
            //        double generateFreq = freqA - this.comptransmitters[j].Freq;
            //        foreach (Receiver receiver in this.compreceivers)
            //        {
            //            if (receiver.EquipID == this.calctransmitters[i].EquipID || receiver.EquipID == this.comptransmitters[j].EquipID)
            //                continue;
            //            if (receiver.IsValidatingFreq(generateFreq))
            //            {
            //                double powerIn = CalcPowerIn(this.calctransmitters[i], this.comptransmitters[j], receiver);
            //                if (receiver.IsValidatingSignal(powerIn))
            //                {
            //                    //登记发射机互调 将计算频率存在IMFreqs中
            //                    ThirdOrderIMItem item = new ThirdOrderIMItem(new ComparableFreq[] { this.calctransmitters[i].ComparableFreq, this.comptransmitters[j].ComparableFreq }, new int[] { 2, -1 });
            //                    item.DisturbedFreqs = new ComparableFreq[] { receiver.ComparableFreq }; //将另一个干扰频率存在DisturbedFreqs中
            //                    this.imResult.RegisterIMItem(item);
            //                }
            //            }
            //        }
            //    }

            //    #endregion

            //}
            //return this.imResult;
        }