|
@@ -58,21 +58,20 @@ namespace Tps_LQ_Transmitter.models
|
|
|
PowerPara.ControlDelay = 10;
|
|
|
}
|
|
|
SA.Write("仪器复位"); SA.Query("OPC");
|
|
|
- SA.Write("SPAN", PowerPara.SPAN); SA.Query("OPC");
|
|
|
- SA.Write("RBW", PowerPara.RBW); SA.Query("OPC");
|
|
|
- SA.Write("VBW", PowerPara.VBW); SA.Query("OPC");
|
|
|
SA.Write("REF", PowerPara.REF); SA.Query("OPC");
|
|
|
-
|
|
|
- SA.Write("SingleOrCont", "0"); SA.Query("OPC");
|
|
|
SA.Write("MARK打开", "1"); SA.Query("OPC");
|
|
|
- if(SA.Query("IDN") == "N9030A")
|
|
|
- {
|
|
|
- SA.Write("MARK打开", "2"); SA.Query("OPC");
|
|
|
- SA.Write("DELT打开", "2"); SA.Query("OPC");
|
|
|
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+ //if (SA.Query("IDN").Contains("N9030"))
|
|
|
+ //{
|
|
|
+ // SA.Write("MARK打开", "2"); SA.Query("OPC");
|
|
|
+ // SA.Write("DELT打开", "2"); SA.Query("OPC");
|
|
|
+
|
|
|
+ //}
|
|
|
|
|
|
|
|
|
+
|
|
|
if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
|
|
|
{
|
|
|
PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
|
|
@@ -82,7 +81,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
|
|
|
}
|
|
|
|
|
|
- double CenterFreq;
|
|
|
+ double CenterFreq,Freq;
|
|
|
Data.PhaseNoise = new double[PowerPara.FrequencyNumber, PowerPara.PNosieOffsetFreq.Length];
|
|
|
|
|
|
for (int point = 0;; point++)
|
|
@@ -94,10 +93,10 @@ namespace Tps_LQ_Transmitter.models
|
|
|
break;
|
|
|
}
|
|
|
// 控制
|
|
|
- SerialClient.DUT_Transmitter_Ctrol(PowerPara.ComPort, Convert.ToByte(point + 1));
|
|
|
+ // SerialClient.DUT_Transmitter_Ctrol(PowerPara.ComPort, Convert.ToByte(point + 1));
|
|
|
Thread.Sleep(PowerPara.ControlDelay);//单位ms
|
|
|
|
|
|
- if (SA.Query("IDN") == "N9030A")//N9030A型号频谱仪
|
|
|
+ if (SA.Query("IDN").Contains("N9030"))//N9030A型号频谱仪
|
|
|
{
|
|
|
SA.Write("相位噪声测试模式");
|
|
|
SA.Query("OPC");
|
|
@@ -113,9 +112,17 @@ namespace Tps_LQ_Transmitter.models
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+
|
|
|
+ SA.Write("SPAN", "0.1"); SA.Query("OPC");
|
|
|
+ SA.Write("RBWAUTO"); SA.Query("OPC");
|
|
|
+ SA.Write("VBWAUTO"); SA.Query("OPC");
|
|
|
SA.Write("CENTER", CenterFreq.ToString()); SA.Query("OPC");
|
|
|
- SA.Write("PEAK", "1"); SA.Query("OPC");
|
|
|
- SA.Write("相位噪声测试模式", "2"); SA.Query("OPC");
|
|
|
+ SA.Write("SingleOrCont", "0"); SA.Query("OPC");
|
|
|
+ PsaPeakValue_Tracedata(SA, out y_value, out x_value, true);
|
|
|
+ SA.Write("CENTER",( x_value/1000000).ToString()); SA.Query("OPC");
|
|
|
+
|
|
|
+ SA.Write("RBW", PowerPara.RBW); SA.Query("OPC");
|
|
|
+ SA.Write("VBW", PowerPara.VBW); SA.Query("OPC");
|
|
|
|
|
|
}
|
|
|
|
|
@@ -123,15 +130,25 @@ namespace Tps_LQ_Transmitter.models
|
|
|
double PhaseNoiseMaxOffsetVal = 0;
|
|
|
for ( int offset_num = 0; offset_num < PowerPara.PNosieOffsetFreq.Length; offset_num++)
|
|
|
{
|
|
|
- if (SA.Query("IDN") == "N9030A")//N9030A型号频谱仪
|
|
|
+ if (SA.Query("IDN").Contains("N9030"))//N9030A型号频谱仪
|
|
|
{
|
|
|
SA.Write("设置Mark频率Hz", "1", PowerPara.PNosieOffsetFreq[offset_num].ToString()); SA.Query("OPC");
|
|
|
double temp = Math.Round(double.Parse(SA.Query("读Mark相位噪声值", "1")), 2);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- SA.Write("设置DELT频率", "2", PowerPara.PNosieOffsetFreq[offset_num].ToString()); SA.Query("OPC");
|
|
|
+
|
|
|
+ SA.Write("SPAN",( PowerPara.PNosieOffsetFreq[offset_num]/1000*5).ToString()); SA.Query("OPC");
|
|
|
+
|
|
|
+ SA.Write("SingleOrCont", "0"); SA.Query("OPC");
|
|
|
+ SA.Write("单次扫描"); SA.Query("OPC");
|
|
|
+ SA.Write("PEAK", "1"); SA.Query("OPC");
|
|
|
+ SA.Write("相位噪声测试模式", "1"); SA.Query("OPC");
|
|
|
+
|
|
|
+
|
|
|
+ SA.Write("设置DELT频率", "1", PowerPara.PNosieOffsetFreq[offset_num].ToString()); SA.Query("OPC");
|
|
|
Data.PhaseNoise[point, offset_num] = Math.Round(double.Parse(SA.Query("读相位噪声", "1")), 2);
|
|
|
+
|
|
|
|
|
|
}
|
|
|
PhaseNoiseOffsetVal[offset_num] = Data.PhaseNoise[point, offset_num];
|
|
@@ -144,27 +161,28 @@ namespace Tps_LQ_Transmitter.models
|
|
|
{
|
|
|
PhaseNoiseMaxOffsetVal = PhaseNoiseOffsetVal[0];
|
|
|
}
|
|
|
-
|
|
|
+ PhaseNoisePrint.Test_name = parameters.Channel + "-相位噪声(dBc/Hz)-" + CenterFreq.ToString() + "MHz";
|
|
|
PhaseNoisePrint.Upper = PowerPara.PhaseNoiseUpper;
|
|
|
PhaseNoisePrint.TestVal = PhaseNoiseMaxOffsetVal;
|
|
|
if (PhaseNoisePrint.TestVal <= PhaseNoisePrint.Upper)
|
|
|
{
|
|
|
- PhaseNoisePrint.Result = true;
|
|
|
+ PhaseNoisePrint.Result = "是";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- PhaseNoisePrint.Result = false;
|
|
|
- }
|
|
|
- if (parameters.Channel == "通道1")
|
|
|
- {
|
|
|
- //tps.SetTestTableCellValue(point, 15, PhaseNoisePrint.Result, PhaseNoisePrint.TestVal);
|
|
|
- }
|
|
|
- else if (parameters.Channel == "通道2")
|
|
|
- {
|
|
|
- //tps.SetTestTableCellValue(point + 15, 15, PhaseNoisePrint.Result, PhaseNoisePrint.TestVal);
|
|
|
+ PhaseNoisePrint.Result = "否";
|
|
|
}
|
|
|
+ tps.TestTableAddCell(PhaseNoisePrint.Test_name, "/", PhaseNoisePrint.Upper.ToString() ,PhaseNoisePrint.TestVal.ToString(), PhaseNoisePrint.Result);
|
|
|
+ //if (parameters.Channel == "通道1")
|
|
|
+ //{
|
|
|
+ // //tps.SetTestTableCellValue(point, 15, PhaseNoisePrint.Result, PhaseNoisePrint.TestVal);
|
|
|
+ //}
|
|
|
+ //else if (parameters.Channel == "通道2")
|
|
|
+ //{
|
|
|
+ // //tps.SetTestTableCellValue(point + 15, 15, PhaseNoisePrint.Result, PhaseNoisePrint.TestVal);
|
|
|
+ //}
|
|
|
}
|
|
|
- SA.Write("设置MARK为常规", "2"); SA.Query("OPC");
|
|
|
+
|
|
|
SA.Write("关闭所有MARK"); SA.Query("OPC");
|
|
|
return true;
|
|
|
}
|
|
@@ -176,6 +194,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
Y_Maxvalue = 0;
|
|
|
|
|
|
psa.Write("单次扫描");
|
|
|
+
|
|
|
psa.Query("OPC");
|
|
|
string tracedata = psa.Query("读曲线");
|
|
|
string[] tracedatas = tracedata.Split(',');
|
|
@@ -184,7 +203,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
{
|
|
|
tracedata_double[i] = double.Parse(tracedatas[i]);
|
|
|
}
|
|
|
- Y_Maxvalue = Math.Round(tracedata_double.Max(), 3);
|
|
|
+ Y_Maxvalue = tracedata_double.Max();
|
|
|
if (IsReturnX)
|
|
|
{
|
|
|
int x = Array.IndexOf(tracedata_double, Y_Maxvalue);
|
|
@@ -193,6 +212,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
double counts = double.Parse(psa.Query("测试点数读取"));
|
|
|
X_Maxvalue = startfreq + (stopfreq - startfreq) * x / (counts - 1);
|
|
|
}
|
|
|
+ Y_Maxvalue = Math.Round(Y_Maxvalue, 3);
|
|
|
}
|
|
|
public class ConfigParameter
|
|
|
{
|
|
@@ -259,31 +279,31 @@ namespace Tps_LQ_Transmitter.models
|
|
|
public double[,] PhaseNoise { set; get; }
|
|
|
|
|
|
}
|
|
|
- public class DataType
|
|
|
- {
|
|
|
+ //public class DataType
|
|
|
+ //{
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 测试名称
|
|
|
- /// </summary>
|
|
|
- public string Test_name { set; get; }
|
|
|
- /// <summary>
|
|
|
- /// 指标下限
|
|
|
- /// </summary>
|
|
|
- public double Lower { set; get; }
|
|
|
- /// <summary>
|
|
|
- /// 指标上限
|
|
|
- /// </summary>
|
|
|
- public double Upper { set; get; }
|
|
|
- /// <summary>
|
|
|
- /// 测试值
|
|
|
- /// </summary>
|
|
|
- public double TestVal { set; get; }
|
|
|
- /// <summary>
|
|
|
- /// 判断结果
|
|
|
- /// </summary>
|
|
|
- public bool Result { set; get; }
|
|
|
+ // /// <summary>
|
|
|
+ // /// 测试名称
|
|
|
+ // /// </summary>
|
|
|
+ // public string Test_name { set; get; }
|
|
|
+ // /// <summary>
|
|
|
+ // /// 指标下限
|
|
|
+ // /// </summary>
|
|
|
+ // public double Lower { set; get; }
|
|
|
+ // /// <summary>
|
|
|
+ // /// 指标上限
|
|
|
+ // /// </summary>
|
|
|
+ // public double Upper { set; get; }
|
|
|
+ // /// <summary>
|
|
|
+ // /// 测试值
|
|
|
+ // /// </summary>
|
|
|
+ // public double TestVal { set; get; }
|
|
|
+ // /// <summary>
|
|
|
+ // /// 判断结果
|
|
|
+ // /// </summary>
|
|
|
+ // public bool Result { set; get; }
|
|
|
|
|
|
|
|
|
- }
|
|
|
+ //}
|
|
|
}
|
|
|
}
|