在之前的文章里面已经介绍了如何创建发射机和接收机之间的Access,原则上在可见性范围内的卫星均可以计算其Access。
这篇文章介绍在已经建立了Access的情况下如何读取场景中的Access以及对其进行计算。
一、Access的获取
access_list = scenario2.GetExistingAccesses() #获取所有的Access
for access_path in tqdm(access_list):
# access_path:('Satellite/Sat0_0/Transmitter/Transmitter_Sat0_0','Satellite/Sat0_1/Receiver/Reciver_Sat0_1',True)
# access_path[0]:发射机地址
# access_path[1]:接收机地址
Transmitter_name = access_path[0].split('/')[-1]
Reciver_name = access_path[1].split('/')[-1]
access = scenario2.GetAccessBetweenObjectsByPath(access_path[0], access_path[1])
Transmitter_name = access_path[0].split('/')[-1]
Reciver_name = access_path[1].split('/')[-1]
access = scenario2.GetAccessBetweenObjectsByPath(access_path[0], access_path[1])
scenario2为IAgScenario类物体。与获取场景中的卫星等实体物体不同,Access的为虚拟物体,只能从场景的根目录下获取。
获取的为一个列表,列表的每一项为一个格式如('Satellite/Sat0_0/Transmitter/Transmitter_Sat0_0','Satellite/Sat0_1/Receiver/Reciver_Sat0_1',True)的元组,第0项为发射机的地址,第1项为接收机的地址。第2项中的Bool项我不太清楚是什么。
最后一句话的意思是从场景中获取讲个物体的Access。
二、计算每个Access的链路质量
首先将STK的时间格式设置为EpSec格式,才可以获得与STK中相似的格式。Epsec格式的时间为从场景开始计时为0秒,以秒计数。
之前使用的UTCG格式为方便人们阅读的日期格式,但是计算中并不方便,且使用UTCG格式计算Access时会导致结果中只有一项StopTime处的数据,显然这是我们不希望看到的。
接下来计算链路质量:
access = scenario2.GetAccessBetweenObjectsByPath(access_path[0], access_path[1])
Times, Link_Name, BER, EbNo, Prop_Loss, Xmtr_Gain, EIRP, Range, Xmtr_Power, Rcvd_Frequency, g_over_T, Bandwidth, Free_Space_Loss, Propagation_Delay, Propagation_Distance, Rcvd_Iso_Power = Compute_access(
access=access)
# print(Times, Link_Name, BER, EbNo, Xmtr_Gain, EIRP, Prop_Loss)
df = pd.DataFrame(
[Times, Link_Name, BER, EbNo, Prop_Loss, Xmtr_Gain, EIRP, Range, Xmtr_Power, Rcvd_Frequency,
g_over_T, Bandwidth, Free_Space_Loss, Propagation_Delay, Propagation_Distance, Rcvd_Iso_Power])
df = df.T
df.to_csv('./access_data/' + Transmitter_name + '_to_' + Reciver_name + '.csv',
header=['Times', 'Link_Name', 'BER', 'EbNo', 'Prop_Loss', 'Xmtr_Gain', 'EIRP', 'Range', 'Xmtr_Power',
'Rcvd_Frequency', 'g_over_T', 'Bandwidth', 'Free_Space_Loss', 'Propagation_Delay',
'Propagation_Distance', 'Rcvd_Iso_Power'], index=False)
计算的函数在之前的文章中给出过,这里不再赘述。
得到了链路性能指标后进行存储即可。
附:通信链路指标Name描述CommSystemAccess
Time时间√√
Xmtr Name发射机的名字√
Rcvr Name接收机的名字√
Link To ID链路分析中的发射机ID√
Multibeam Antenna Beam-ID链路分析中多光束发射机内光束的ID√
Xmtr Power在天线输入处测得的发射机的射频功率输出。√√
Xmtr Gain发射机的天线增益取决于所选的天线类型。对于简单发射机,由于简单发射机被建模为各向同性辐射体,因此为0 dB。√√
EIRP链路方向上的有效各向同性辐射功率。它指的是卫星或地面站在某个指定方向上的辐射功率。理想状态下等于功放的发射功率乘以天线的增益√√
Xmtr Azimuth - Phi发射机方位角(Phi)是发射机主体+ x轴与链接矢量的x-y投影之间的角度。√
Xmtr Elevation - Theta发射机仰角(Theta)是发射机天线视轴矢量与链路矢量之间的角度。√
Multibeam Rcvr Antenna Beam-ID多波束天线波束ID是指链路分析中使用的多波束接收机内波束的ID。√
Rcvd. Frequency接收机频率,可以设置为自动跟踪√√
Freq. Doppler Shift频率多普勒频移是发射频率和接收频率之间的频率偏移。对于自动跟踪的接收器,该值为零。√√
Rcvd. Iso. Power接收的各向同性功率。它等于所有信道损耗以及应用的带宽重叠的EIRP。√√
Carrier Power at Rcvr Input接收机输入端的载波功率为添加接收机天线增益后的功率。√√
Flux Density发射机的功率越过垂直于波传播方向的单位面积。√√
Rcvr Gain接收机增益√√