软件版本: STK 11.6/ MATALB R2018b
使用connect命令用MATLAB在STK中自动搭建LEO卫星星座系统,参考了https://zhuanlan.zhihu.com/p/68385977?utm_source=wechat_session
代码都是逐句尝试,进度超慢,而且使用connect命令来读取STK里的信息很麻烦,之后会尝试加上COM方法。

stkInit;
conid = stkOpen(stkDefaultHost);
% 设置场景大气模型(雨衰)
stkConnect(conid,'Environment','*','SetValue PropagationChannel.UseRainModel true');
stkConnect(conid,'Environment','*','SetValue PropagationChannel.RainModel ITU-R_P618-5');
stkConnect(conid,'Environment','*','SetValue PropagationChannel.RainModel.SurfaceTemperature 78.6 degC');
stkConnect(conid,'Environment','*','SetValue RainOutagePercent 0.03');
% 新建地面站
stkNewObj('/*','Facility','ChengDu');
stkConnect(conid,'SetPosition','*/Facility/ChengDu Geodetic', '30 104 0.0 MSL');
stkConnect(conid,'SetConstraint','*/Facility/ChengDu ElevationRate','Min 40');
stkNewObj('/*','Facility','Alaska');
stkConnect(conid,'SetPosition','*/Facility/Alaska Geodetic', '64.86 -147.85 0.0 MSL');
stkConnect(conid,'SetConstraint','*/Facility/Alaska ElevationRate','Min 40');
% 添加地面传感器并设置传感器参数
stkNewObj('*/Facility/ChengDu','Sensor','CHDU_Sen');
stkNewObj('*/Facility/Alaska','Sensor','Alaska_Sen');
stkConnect(conid,'Define','*/Facility/ChengDu/Sensor/CHDU_Sen','SimpleCone 20');
stkConnect(conid,'Define','*/Facility/Alaska/Sensor/Alaska_Sen','SimpleCone 20');
% 地面站发射机(Complex_Transmitter_Model/Phased_Array)
strSetTrans =[ 'SetValue Model Complex_Transmitter_Model'];
stkNewObj('*/Facility/ChengDu/Sensor/CHDU_Sen','Transmitter','ULXmtr_ChengDu');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu',strSetTrans);
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','SetValue Model.AntennaControl.Antenna Phased_Array');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','SetValue Model.Frequency 28.5 GHz');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','SetValue Model.Power 18.12 dBW');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','SetValue Model.UseFilter true');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','Setvalue Model.Filter.LowerBandwidthLimit -0.25 GHz');
stkConnect(conid,'Transmitter','*/Facility/ChengDu/Sensor/CHDU_Sen/Transmitter/ULXmtr_ChengDu','Setvalue Model.Filter.UpperBandwidthLimit 0.25 GHz');stkNewObj('*/Facility/Alaska/Sensor/Alaska_Sen','Transmitter','ULXmtr_Alaska');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska',strSetTrans);
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','SetValue Model.AntennaControl.Antenna Phased_Array');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','SetValue Model.Frequency 28.5 GHz');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','SetValue Model.Power 18.12 dBW');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','SetValue Model.UseFilter true');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','Setvalue Model.Filter.LowerBandwidthLimit -0.25 GHz');
stkConnect(conid,'Transmitter','*/Facility/Alaska/Sensor/Alaska_Sen/Transmitter/ULXmtr_Alaska','Setvalue Model.Filter.UpperBandwidthLimit 0.25 GHz');
% 新建卫星
% stkConnect(conid,'ImportTLEFile','*','"C:\Users\l\Documents\STK 11 (x64)\SpaceX_tle.tle" SSCNumber 44235 Autopropagate On');  % TLE文件导入
stkNewObj('/*','Satellite','SeedSat');
t_start=0; t_stop=24*3600; orbitEpoch=t_start; dt=60;
a=6928.137*1000;  e=0.0; i=53.0*pi/180;
w=0*pi/180; Raan=160*pi/180; M=0*pi/180;
stkSetPropClassical('*/Satellite/SeedSat','J4Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a,e,i,w,Raan,M);
% 添加卫星传感器并设置传感器参数
stkNewObj('*/Satellite/SeedSat','Sensor','Sen');
strSetSensor = 'Conical 0 44.85 AngularRes 360.0';
stkConnect(conid,'Define','*/Satellite/SeedSat/Sensor/Sen',strSetSensor);
% 卫星接收机(Complex_Receiver_Model/Phased_Array)
stkNewObj('/*/Satellite/SeedSat/Sensor/Sen','Receiver','ULRcvr');
stkConnect(conid,'Receiver','*/Satellite/SeedSat/Sensor/Sen/Receiver/ULRcvr','SetValue Model Complex_Receiver_Model');
stkConnect(conid,'Receiver','*/Satellite/SeedSat/Sensor/Sen/Receiver/ULRcvr','SetValue Model.AntennaControl.Antenna Phased_Array');
% 卫星数字转发器(Multibeam_Transmitter_Model/Phased_Array)
stkNewObj('*/Satellite/SeedSat/Sensor/Sen','Transmitter','DLXmtr');
stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','SetValue Model Multibeam_Transmitter_Model');
stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','SetValue Model.Frequency 13.5 GHz');
stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','SetValue Model.UseFilter true');
stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','Setvalue Model.Filter.LowerBandwidthLimit -0.125 GHz');
stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','Setvalue Model.Filter.UpperBandwidthLimit 0.125 GHz');
NumBeams = 2;   % 3 beams
for k = 0:NumBeamsstkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr','AddItem Model.AntennaSystem.AntennaBeams');
end
for k = 0:NumBeamsstrNumBeams = int2str(k);stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].Power 10 dBW']);stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].Frequency 13500000000 Hz']);stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.AzimuthAngle ' int2str(i*30) ' deg']);stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.ElevationAngle ' int2str(40+i*20) ' deg']);  % ElevationAngle的取值为-90°~90°stkConnect(conid,'Transmitter','*/Satellite/SeedSat/Sensor/Sen/Transmitter/DLXmtr',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.AboutBoresight Hold']);
end
% 用户接收机(MultiBeam)
stkNewObj('*','Place','User1');
stkConnect(conid,'SetPosition','*/Place/User1 Geodetic', '40 120 0.0 MSL');
stkNewObj('*/Place/User1','Sensor','user1_Sen');
stkNewObj('/*/Place/User1/Sensor/user1_Sen','Receiver','DLRcvr_User1');
stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1','SetValue Model Multibeam_Receiver_Model');
stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1','AddItem Model.AntennaSystem.AntennaBeams');
stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1','AddItem Model.AntennaSystem.AntennaBeams');    % 3 beams
for k = 0:NumBeamsstrNumBeams = int2str(k);stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].Frequency 13500000000 Hz']);stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.AzimuthAngle ' int2str(i*25) ' deg']);stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.ElevationAngle ' int2str(40+i*20) ' deg']);  % ElevationAngle的取值为-90°~90°stkConnect(conid,'Receiver','*/Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1',['Setvalue Model.AntennaSystem.AntennaBeams[' int2str(i) '].AntennaControl.Orientation.AboutBoresight Hold']);
end
% 生成walker星座
disp('生成walker星座');
nPlan = 5; %平面数
nPerPlan = 8;   % 每个平面卫星数
nRANNSpreed = 1;
% STK生成的卫星名称为strSeedSat_**##,**代表平面数,##代表平面内卫星数
strSeedSat = 'SeedSat';
nFormatPlan = 1;
nFormatPerPlan = 1;
strFormatPlan = ['%0' int2str(nFormatPlan) 'd'];
strFormatPerPlan = ['%0' int2str(nFormatPerPlan) 'd'];
% 创建星座,命名为MyConst
strWalkerSet = ['Delta ' int2str(nPlan) ' ' int2str(nPerPlan) ' ' int2str(nRANNSpreed) ' 360.0 Yes ConstellationName MyConst'];
stkConnect(conid,'Walker', ['*/Satellite/' strSeedSat],strWalkerSet);
stkConnect(conid,'New','/ */Constellation','Cons2');          % 卫星接收机组成星座Cons2
stkConnect(conid,'New','/ */Constellation','Cons3');          % 卫星发射机组成星座Cons3
stkConnect(conid,'New','/ */Constellation','SatSen_Cons');    % 卫星发射机组成星座SatSen_Cons
for i = 1:nPlanfor j = 1:nPerPlanstrStarName = [strSeedSat num2str(i,strFormatPlan) num2str(j,strFormatPerPlan)];strSatReceiveCommand = ['*/Constellation/Cons2 Add Satellite/' strStarName '/Sensor/Sen/Receiver/ULRcvr'];stkConnect(conid,'Chains',strSatReceiveCommand);strSatTransmitterCommand = ['*/Constellation/Cons3 Add Satellite/' strStarName '/Sensor/Sen/Transmitter/DLXmtr'];stkConnect(conid,'Chains',strSatTransmitterCommand);strSatSensorCommand = ['*/Constellation/SatSen_Cons Add Satellite/' strStarName '/Sensor/Sen'];stkConnect(conid,'Chains',strSatSensorCommand);end
end
stkConnect(conid,'Point','*/Facility/ChengDu/Sensor/CHDU_Sen','Targeted Tracking Constellation/Cons2');
stkConnect(conid,'Chains','*/Constellation/Cons4','Add Place/User1/Sensor/user1_Sen/Receiver/DLRcvr_User1');
stkClose(conid);

MATLAB与STK互联搭建LEO卫星星座(connect方法)相关推荐

  1. MATLAB与STK互联47:卫星在轨寿命分析(lifetime)

    当我们设计卫星轨道时,轨道高度不能太低,以避免卫星快速的进入大气层烧毁.那怎么分析卫星在轨寿命呢,STK软件提供了寿命计算功能,本文就对这个功能进行介绍.先手动操作一遍,然后再利用MATLAB与STK ...

  2. MATLAB与STK互联42:创建星座(Walker星座)

    最近在做一个关于星座覆盖性分析的仿真工况,是用MATLAB与STK联合仿真实现.本来想讲整个覆盖性分析的仿真案例,但是感觉涉及到星座创建.覆盖性定义及分析模块,因此还是分两篇来讲解.本篇先讲星座创建的 ...

  3. MATLAB与STK互联10:卫星对象操作(2)—卫星轨道参数设置(方法1,通过轨道生成器设置实现)

    在新建卫星对象后,直接执行:sat.Propagate语句,会生成STK默认参数的卫星.默认参数为:倾角28.5°,轨道高度300km的圆轨道,动力学模型为二体模型. 我们在分析问题时,绝大多数情况下 ...

  4. MATLAB与STK互联13:卫星对象操作(4)—三维显示

    上篇博文介绍了STK中卫星对象的二维显示属性及设置,本篇介绍卫星对象的三维显示属性及设置.先上代码: uiap = actxserver('STK11.application'); root = ui ...

  5. MATLAB与STK互联12:卫星对象操作(3)—二维显示

    当建立好卫星对象时,就需要设置其在STK界面中的显示状态了.STK的场景显示分为二维显示和三维显示,本文首先介绍与卫星对象二维显示相关的设置. %代码如下 uiap = actxserver('STK ...

  6. MATLAB与STK互联21:卫星对象操作(12)—加约束条件的可见性问题分析(仰角、距离、视线角约束)

    继续探索加约束条件的可见性分析问题.上代码: uiap = actxserver('STK11.application'); root = uiap.Personality2; root.NewSce ...

  7. 基于Matlab使用地面雷达探测和跟踪LEO卫星星座仿真(附源码)

    目录 一.从 TLE 文件导入卫星星座 二.模拟合成检测和跟踪星座 2.1 对空间监视雷达进行建模 2.2 雷达处理链 2.3 定义跟踪器 2.4 运行模拟 三.总结 四.程序 此示例演示如何导入卫星 ...

  8. MATLAB与STK互联46:在场景中加入某个国家作为Area Target对象(GIS命令使用)

    在很多分析场景中,我们会插入某个国家国土区域作为分析对象.比如设计陆地资源遥感卫星时,分析对我国任意一点的重访时间,这时就需要插入我国的国土区域.在STK中,提供了插入某个国家的功能.当然如果你手上有 ...

  9. 关于Matlab与STK互联问题

    关于Matlab与STK互联问题 由于近期需要用到Matlab和STK进行联合仿真,因此在两个软件的互联上绕了很多弯路,最终成功实现了STK10与Matlab2012a(32位)之间的互联. 两个软件 ...

最新文章

  1. [Struts]Cannot find bean in any scope之一解
  2. 文档工具GitBook使用
  3. Shell 文本操作利器收集
  4. C#中的Infinity有个小坑
  5. 利用BADI ME_PROCESS_PO_CUST進行PO check
  6. java utf-8字符表_Java中的ASCII、Unicode和UTF-8字符编码集
  7. 为什么MaxCompute采用列式存储?列式存储和行式存储的主要区别在哪
  8. hibernate mysql 读写分离_SpringBoot集成Spring Data JPA及读写分离
  9. 月入10w+的offer,变成了整容、传销、网红届的韭菜
  10. 大数据技术是“地球的神经系统”
  11. 今日恐慌与贪婪指数为68 贪婪程度有所上升
  12. java给mongo数组添加_如何使用具有新值的java在mongodb中的现有集合中追加现有数组...
  13. 算法与数据结构1800题 树和二叉树
  14. 根服务器修改密钥,更改 SQL Server 实例的服务主密钥
  15. Python 下载百度文库
  16. 一文搞懂 RabbitMQ 延时队列(订单定时取消为例)
  17. 谈谈BGA芯片S3C2440的焊接
  18. 业务开发平台与SOA的统一论
  19. android微信右滑删除,Android实现微信侧滑删除当前页面
  20. 超声波传感器介绍及其使用(STM32)

热门文章

  1. Storage Access API 介绍
  2. 好书好人生--读书的步骤
  3. 【5.19】三、白盒测试方法—程序插桩法
  4. python基础语法笔记,这是我四进宫了,再学不进去我就自宫了!!!!
  5. 制作信函水晶报表注意事项
  6. sqlmap超详细讲解
  7. 爱丽丝梦游仙境---python云图
  8. $().click()和$().on(‘click‘,function(){})的区别
  9. java中每月等额与先息后本计算
  10. 面挂了腾讯、阿里巴巴、美团Android客户端,我有一份避坑指南分享给你!