MATLAB Connect Code Snippets
Introduction
The following code snippets demonstrate tasks that are commonly encountered when working with Connect using MATLAB.
How do I ...
Initialization
Area Target
Facility
Facility - Graphics
Line Target
Missile
Aircraft
Satellite
Sensor
Chains
Constellation
Communications
Antenna
Receiver
Transmitter
Coverage Definition
Figure Of Merit
Connect to Running instance of STK
[Connect]
uiApplication = actxGetRunningServer('STK13.application');
Get our IAgStkObjectRoot interface
[Connect]
root = uiApplication.Personality2;
Connect to the current scenario
[Connect]
scen = root.CurrentScenario;
Create an Area Target (on current scenario central body)
[Connect]
root.ExecuteCommand('New / */AreaTarget MyAreaTarget');
Define the area target boundary and position from a list of lat/long/alt
[Connect]
root.ExecuteCommand('SetBoundary */AreaTarget/MyAreaTarget Pattern LatLon 3 48.897 18.637 46.534 13.919 44.147 21.476');
List all points in an area target. Returns a white-space separated character vector
[Connect]
patternPoints = root.ExecuteCommand('GetBoundary */AreaTarget/MyAreaTarget');
Print out all the points.
[Connect]
%String is formatted as '48.897000 deg 18.637000 %deg', so need to report 1st and 3rd element, since MATLAB standard %delimiter is the whitespace,
for j = 1:patternPoints.Count - 1 LLAData = strread(patternPoints.Item(j), '%s'); fprintf(['Lat: ' LLAData{1} ' deg Lon: ' LLAData{3} ' deg \n\n']);
end
Define an elliptical area target
[Connect]
root.ExecuteCommand('SetUnits / km'); %Default Connect Units are meters root.ExecuteCommand('SetBoundary */AreaTarget/MyAreaTarget Ellipse 85.25 80.75 44');
Create a facility (on the current scenario central body)
[Connect]
root.ExecuteCommand('New / */Facility MyFacility');
Set the geodetic position of the facility
[Connect]
%Latitude, Longitude, Altitude root.ExecuteCommand('SetPosition */Facility/MyFacility Geodetic 41.9849 21.4039 0');
Set altitude to height of terrain
[Connect]
root.ExecuteCommand('SetPosition */Facility/MyFacility Geodetic 41.9849 21.4039 UseTerrain');
Set altitude to distance above the ground
[Connect]
root.ExecuteCommand('SetHeightAboveGround */Facility/MyFacility 0.05'); %Default Connect Units are meters
Set Azimuth Elevation Mask
[Connect]
root.ExecuteCommand('SetAzElMask */Facility/MyFacility Terrain');
Display the AzEl Mask in 2D/3D
[Connect]
root.ExecuteCommand('Graphics */Facility/MyFacility AzElMask Type Range Show On NumSteps 10 MinRange 0 MaxRange 100 Color cyan');
Create New LineTarget
[Connect]
root.ExecuteCommand('New / */LineTarget MyLineTarget');
Define LineTarget with 2 points
[Connect]
root.ExecuteCommand('SetLine */LineTarget/MyLineTarget LatLong 2 34.72 -118.34 30.83 -82.67');
Create New Missile
[Connect]
root.ExecuteCommand('New / */Missile MyMissile');
Define Missile with ballistic propagator
[Connect]
root.ExecuteCommand('SetUnits / km'); %Default Connect Units are meters root.ExecuteCommand('Missile */Missile/MyMissile Trajectory "UseAnalysisStartTime" 60.0 LnLatGeod 29 -81 0.0 ApogeeAlt 1200 ImLatGeod 27 -43 0.0');
Create New Aircraft
[Connect]
root.ExecuteCommand('New / */Aircraft MyAircraft');
Set Great Arc Propagator and Add Individual Waypoints to Aircraft
[Connect]
root.ExecuteCommand('SetUnits / km'); %Default Connect Units are meters root.ExecuteCommand('AddWaypoint */Aircraft/MyAircraft DetTimeAccFromVel 37.5378 14.2207 5 0.1'); root.ExecuteCommand('AddWaypoint */Aircraft/MyAircraft DetTimeAccFromVel 47.2602 30.5517 5 0.1'); %Set Great Arc Propagator and Add Individual Waypoints to Aircraft (from %list of points) % locations of interest (lat/lon/alt) waypoints = [37.5378 14.2207 5; 47.2602 30.5517 5]; %return the number of points [r, c] = size(waypoints);
Add each point to the aircraft
[Connect]
for i = 1:r root.ExecuteCommand(['AddWaypoint */Aircraft/MyAircraft DetTimeAccFromVel ' num2str(waypoints(i, 1)) ' ' num2str(waypoints(i, 2)) ' ' num2str(waypoints(i, 3)) ' 0.1']); end
Set the Attitude of the Aircraft
[Connect]
root.ExecuteCommand('SetAttitude */Aircraft/MyAircraft Profile AircraftCoordTurn 0.5');
Create a satellite (on the current scenario central body)
[Connect]
root.ExecuteCommand('New / */Satellite MySatellite');
Set satellite propagator to J4 and assign cartesian position
[Connect]
root.ExecuteCommand('SetUnits / km');%Default Connect Units are meters root.ExecuteCommand('SetState */Satellite/MySatellite Cartesian J4Perturbation "UseAnalysisStartTime" "UseAnalysisStopTime" 60 ICRF "UseAnalysisStartTime" 6678.14 0 0 0 6.78953 3.68641');
Set initial state of satellite and propagate
[Connect]
root.ExecuteCommand('SetUnits / km');%Default Connect Units are meters root.ExecuteCommand('SetState */Satellite/MySatellite Classical TwoBody "UseAnalysisStartTime" "UseAnalysisStopTime" 60 ICRF "UseAnalysisStartTime" 6678.14 0 28 180 0 180');
Set satellite propagator to SGP4 and propagate
[Connect]
root.ExecuteCommand('SetState */Satellite/MySatellite SGP4 "UseAnalysisStartTime" "UseAnalysisStopTime" 60 25544 TLESource Automatic Source AGIServer UseTLE All SwitchMethod Epoch'); %25544 is the International Space Station
Set satellite propagator to HPOP and set force model properties
[Connect]
root.ExecuteCommand('SetUnits / km');%Default Connect Units are meters root.ExecuteCommand('SetState */Satellite/MySatellite Cartesian HPOP "UseAnalysisStartTime" "UseAnalysisStopTime" 60 Fixed "UseAnalysisStartTime" 6406.92 -1787.59 -506.422 2.10185 6.48871 3.64041'); root.ExecuteCommand('HPOP */Satellite/MySatellite Force Gravity "<Install Dir> /STK 13 /STKData/CentralBodies/Earth/WGS84.grv" 21 21');
root.ExecuteCommand('HPOP */Satellite/MySatellite Drag On 0.01 0.01 "Jacchia 1960"'); root.ExecuteCommand('HPOP */Satellite/MySatellite Force SRP Off'); root.ExecuteCommand('HPOP */Satellite/MySatellite Integrator IntegMethod RKF78 StepControl RelativeError 1.0e-13 MinStepSize 0.1 MaxStepSize 30 InterpMethod LaGrange 7');
Set satellite propagator to SPICE and propagate
[Connect]
root.ExecuteCommand('SetState */Satellite/MySatellite SPICE File "<Install Dir> /STK 13 /STKData/Spice/planets.bsp" BodyID 4 TimePeriod UseScenarioInterval');
Export an ephemeris file to scenario folder
[Connect]
scenPath = root.ExecuteCommand('GetDirectory / Scenario').Item(0); root.ExecuteCommand(['ExportDataFile */Satellite/MySatellite Ephemeris "' scenPath '\MySatellite.e" Type STK CoordSys J2000 CentralBody Earth InterpBoundaries Include']); %The square bracket will tell MATLAB to evaluate the expression, where scenPath is the variable name for a string
Set satellite attitude basic spinning
[Connect]
root.ExecuteCommand('SetAttitude */Satellite/MySatellite Profile Spinning Inertial Axis 0 1 0 Body Axis 0 0 1 6 0 "UseAnalysisStartTime"');
Set satellite attitude external
[Connect]
root.ExecuteCommand('SetAttitude */Satellite/MySatellite File Filename "<Install Dir> /STK 13 /Data/Resources/stktraining/text/AttitudeTimeEulerAngles_Example.a"');
Set satellite attitude targeting
[Connect]
root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target On'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Clear'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Add AreaTarget/MyAreaTarget Times UseAccess On');
Set up target slewing
[Connect]
root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target On'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Clear'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Add AreaTarget/MyAreaTarget Times UseAccess On'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Slew Mode Constrained MaxSlewTime 20 SlewTimingBetweenTgts Optimal'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Slew Mode Constrained RateMagnitude 10 RateAxisX On RateAxisY On RateAxisZ On AccelMagnitude 10 AccelAxisX On AccelAxisY On AccelAxisZ On'); root.ExecuteCommand('SetAttitude */Satellite/MySatellite Target Slew Mode Constrained RateAxisX 5 RateAxisY 5 RateAxisZ 5 AccelAxisX 5 AccelAxisY 5 AccelAxisZ 5');
Set satellite model pointing
[Connect]
root.ExecuteCommand('VO */Satellite/MySatellite ModelPointing "Solar_PanelsNode" Target Sun');
Set satellite propagator to Astrogator and clear segments
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite SetProp');
Determine what segments are in the MCS currently
[Connect]
ASTGSegments = root.ExecuteCommand('Astrogator_RM */Satellite/MySatellite GetValue MainSequence.SegmentList');
Delete all the segments.
[Connect]
for j = 0:ASTGSegments.Count - 2 Segment = strread(ASTGSegments.Item(j), '%s'); root.ExecuteCommand(['Astrogator */Satellite/MySatellite DeleteSegment ' Segment{1}]);
end
Insert an Initial State Segment into the MCS and configure
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite InsertSegment - Initial_State');
root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Initial_State.ComponentName Inner_Orbit'); %change name of the segment root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Epoch 0 EpSec'); %set epoch root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.ElementType Osculating'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.PeriapsisRadSize 6700 km'); %default units are m root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.w 0'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.ecc 0'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.inc 0'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.RAAN 0'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Inner_Orbit.InitialState.Keplerian.TA 0');
Insert an Propagate Segment into the MCS and configure
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite InsertSegment - Propagate'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Propagate.ComponentName Transfer_Ellipse'); %change name of the segment root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Transfer_Ellipse.Propagator "Earth Point Mass"'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Transfer_Ellipse.StoppingConditions Duration'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Transfer_Ellipse.StoppingConditions.Duration.TripValue 7200 Sec'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Transfer_Ellipse.SegmentColor 16711680'); %set segment color to blue
Insert a Propagate State Segment into the MCS and Add/Remove Stopping Conditions
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite InsertSegment - Propagate'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Propagate.ComponentName Propagate2'); %change name of the segment root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Propagate2.StoppingConditions Apoapsis'); %overwrites any stopping conditions already there, unless specified
Insert a Target Sequence Segment into the MCS and configure
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite InsertSegment - Target_Sequence'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Target_Sequence.ComponentName Start_Transfer'); %change name of the segment root.ExecuteCommand('Astrogator */Satellite/MySatellite InsertSegment MainSequence.SegmentList.Start_Transfer.SegmentList.- Maneuver'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.SegmentList.Maneuver.ComponentName DV1'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.SegmentList.DV1.MnvrType Impulsive'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.SegmentList.DV1.AttitudeControl Thrust Vector'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.SegmentList.DV1.ThrustAxes "Satellite VNC(Earth)"'); root.ExecuteCommand('Astrogator */Satellite/MySatellite AddMCSSegmentControl MainSequence.SegmentList.Start_Transfer.SegmentList.DV1 ImpulsiveMnvr.Cartesian.X'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.SegmentList.DV1.Results "Radius Of Apoapsis"'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetMCSControlValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector DV1 ImpulsiveMnvr.Cartesian.X Active true'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetMCSControlValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector DV1 ImpulsiveMnvr.Cartesian.X MaxStep 0.3 m/sec'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetMCSConstraintValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector DV1 "Radius Of Apoapsis" Active true'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetMCSConstraintValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector DV1 "Radius Of Apoapsis" Desired 42238 km'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetMCSConstraintValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector DV1 "Radius Of Apoapsis" Tolerance 0.1 km'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.Profiles.Differential_Corrector.MaxIterations 50'); root.ExecuteCommand('Astrogator */Satellite/MySatellite SetValue MainSequence.SegmentList.Start_Transfer.Action Run active profiles'); root.ExecuteCommand('Astrogator */Satellite/MySatellite RunMCS');
Run the Astrogator MCS
[Connect]
root.ExecuteCommand('Astrogator */Satellite/MySatellite RunMCS');
Attach a Sensor Object to a Vehicle
[Connect]
root.ExecuteCommand('New / */Satellite/MySatellite/Sensor MySensor');
Set Sensor Properties
[Connect]
root.ExecuteCommand('Define */Satellite/MySatellite/Sensor/MySensor Rectangular 20 25'); root.ExecuteCommand('Point */Satellite/MySatellite/Sensor/MySensor Fixed AzEl 90 60 Rotate'); root.ExecuteCommand('Location */Satellite/MySatellite/Sensor/MySensor Fixed Cartesian -.0004 -.0004 -.0004'); %default units is meters
Set a Targeted Sensor
[Connect]
root.ExecuteCommand('New / */Satellite/MySatellite/Sensor MySensor');
Sensor Body Mask
[Connect]
root.ExecuteCommand('SetAzElMask */Satellite/MySatellite/Sensor/MySensor MaskFile "<Install Dir> /STK 13 /Data/Resources/stktraining/text/BodyMask_hga.bmsk"');
Sensor Persistence
[Connect]
root.ExecuteCommand('Graphics */Satellite/MySatellite/Sensor/MySensor Persist Time 7200 Forward On Fill On'); root.ExecuteCommand('Graphics */Satellite/MySatellite/Sensor/MySensor Fill On'); root.ExecuteCommand('Graphics */Satellite/MySatellite/Sensor/MySensor FillTranslucency 50');
Create a chain (on the current scenario central body)
[Connect]
root.ExecuteCommand('New / */Chain MyChain');
Define and compute a chain (basic)
[Connect]
root.ExecuteCommand('Chains */Chain/MyChain Add Facility/MyFacility'); root.ExecuteCommand('Chains */Chain/MyChain Add Satellite/MySatellite'); root.ExecuteCommand('Chains */Chain/MyChain Compute'); root.ExecuteCommand('Chains */Chain/MyChain Remove Facility/MyFacility'); root.ExecuteCommand('Chains */Chain/MyChain Remove Satellite/MySatellite');
Define and compute a chain (advance)
[Connect]
root.ExecuteCommand('Chains */Chain/MyChain ClearAccesses'); root.ExecuteCommand('Chains */Chain/MyChain Add Facility/MyFacility'); root.ExecuteCommand('Chains */Chain/MyChain Add Satellite/MySatellite'); root.ExecuteCommand('Chains */Chain/MyChain AutoRecompute Off'); root.ExecuteCommand('Chains */Chain/MyChain AdvComputeOptions UseLightTimeDelay Off'); root.ExecuteCommand('Chains */Chain/MyChain AdvComputeOptions TimeConvergence 0.001'); root.ExecuteCommand('Chains */Chain/MyChain SetComputeTime UseScenario'); root.ExecuteCommand('Chains */Chain/MyChain Compute');
Define a constellation
[Connect]
root.ExecuteCommand('New / */Constellation MyConstellation'); root.ExecuteCommand('Chains */Constellation/MyConstellation Add Satellite/MySatellite'); root.ExecuteCommand('Chains */Constellation/MyConstellation Add Facility/MyFacility');
Create a New Antenna Object
[Connect]
root.ExecuteCommand('New / */Satellite/MySatellite/Antenna MyAntenna');
Modify Antenna Model Type
[Connect]
root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Model Dipole'); root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Model.DesignFrequency 15000000000.0'); %Default unit is Hertz root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Model.Length 1.5'); %Default unit is meters root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Model.LengthToWavelengthRatio 45'); root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Model.Efficiency 0.85');
Modify Antenna Orientation and Position
[Connect]
root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation Azimuth Elevation'); root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.AzimuthAngle 0'); %Default unit is radians root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.ElevationAngle -1.57079632'); %Default unit is radians root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.AboutBoresight Rotate'); root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.XPositionOffset 0'); %Default unit is meters root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.YPositionOffset 1');%Default unit is meters root.ExecuteCommand('Antenna */Satellite/MySatellite/Antenna/MyAntenna SetValue Orientation.ZPositionOffset 0.25');%Default unit is meters
Modify Antenna Refraction
[Connect]
root.ExecuteCommand('Refraction */Satellite/MySatellite/Antenna/MyAntenna UseInAccess True'); root.ExecuteCommand('Refraction */Satellite/MySatellite/Antenna/MyAntenna Model "ITU-R P.834-4" RefractionCeiling 5000 AtmosphereAltitude 10000 KneeBendFactor 0.2');%Default unit is meters
Modify Antenna Graphics
[Connect]
root.ExecuteCommand('Graphics */Satellite/MySatellite/Antenna/MyAntenna Contours Gain On Off'); root.ExecuteCommand('Graphics */Satellite/MySatellite/Antenna/MyAntenna Levels StartStop -30 30 5'); root.ExecuteCommand('VO */Satellite/MySatellite/Antenna/MyAntenna Contours On'); root.ExecuteCommand('VO */Satellite/MySatellite/Antenna/MyAntenna Volumes On'); root.ExecuteCommand('VO */Satellite/MySatellite/Antenna/MyAntenna Volumes "Antenna Beam" GainScale 5');%Default unit is meters root.ExecuteCommand('VO */Satellite/MySatellite/Antenna/MyAntenna Volumes "Antenna Beam" GainOffset 15');%Default unit is dB
Create a New Receiver Object
[Connect]
root.ExecuteCommand('New / */Satellite/MySatellite/Receiver MyReceiver');
Modify Receiver Model Type
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model Complex_Receiver_Model'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.FrequencyAutoTracking False'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Frequency 11810000000.0');%Default unit is Hertz
Modify Orientation of the Receiver Antenna
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation Azimuth Elevation'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.AzimuthAngle 0.785398');%Default unit is radians root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.ElevationAngle 1.48353'); %Default unit is radians root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.AboutBoresight Rotate'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.XPositionOffset 0.5');%Default unit is meters root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.YPositionOffset 0.75'); %Default unit is meters root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Orientation.ZPositionOffset 1'); %Default unit is meters
Modify Receiver Demodulator Properties
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AutoSelectDemodulator false'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Demodulator 16PSK');
Modify Receiver Embedded Antenna
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.AntennaReferenceType Embed'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Antenna Hemispherical'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Antenna.Efficiency 0.85');
Modify Receiver Filter Properties
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.UseFilter True'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Filter Bessel'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Filter.LowerBandwidthLimit -20000000.0');%Default unit is Hertz root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Filter.UpperBandwidthLimit 20000000.0');%Default unit is Hertz root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.Filter.CutoffFrequency 10000000.0');%Default unit is Hertz
Modify Receiver Polarization Properties
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.UsePolarization True'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Polarization Linear'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Polarization.ReferenceAxis Z Axis'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.AntennaControl.Polarization.CrossPolLeakage 0.00000100');%Default unit is units
Modify Receiver System Noise Temperature
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.ComputeSystemNoiseTemp Constant'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.ConstantSystemNoiseTemp 280');
Receiver Additional Gain
[Connect]
root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver AddItem Model.PreReceiveGainsLosses.GainLossList'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.PreReceiveGainsLosses.GainLossList[0].Identifier UserLoss'); root.ExecuteCommand('Receiver */Satellite/MySatellite/Receiver/MyReceiver SetValue Model.PreReceiveGainsLosses.GainLossList[0].Gain -2 dB');
Create a New Transmitter Object
[Connect]
root.ExecuteCommand('New / */Satellite/MySatellite/Transmitter MyTransmitter');
Modify Transmitter Model Type
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model Complex_Transmitter_Model'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Frequency 14500000000.0');%Default unit is Hertz root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Power 316.228'); %Default unit is Watt root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.DataRate 15000000.0'); %Default unit is b/sec
Modify the Linked Antenna
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model Complex_Transmitter_Model'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.AntennaReferenceType Link'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.LinkedAntenna Antenna/MyAntenna');
Modify Transmitter Embedded Antenna
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.AntennaReferenceType Embed'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Antenna Isotropic'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Antenna.Efficiency 0.85');
Modify Transmitter Filter
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.UseFilter True'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Filter Butterworth'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Filter.LowerBandwidthLimit -20000000.0'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Filter.UpperBandwidthLimit 20000000.0'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Filter.CutoffFrequency 10000000.0');
Modify Transmitter Modulator Properties
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Modulator BPSK'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.Modulator.AutoScaleBandwidth True');
Modify Transmitter Orientation and Position
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation Azimuth Elevation'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.AzimuthAngle 0');%Default unit is radians root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.ElevationAngle -1.57079632');%Default unit is radians root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.AboutBoresight Rotate'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.XPositionOffset 0.0');%Default unit is meters root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.YPositionOffset 1');%Default unit is meters root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Orientation.ZPositionOffset 0.25');%Default unit is meters
Modify Transmitter Polarization Properties
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.UsePolarization True'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Polarization Linear'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Polarization.ReferenceAxis Y Axis'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.AntennaControl.Polarization.TiltAngle 0 rad');
Transmitter Additional Gain
[Connect]
root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter AddItem Model.PostTransmitGainsLosses.GainLossList'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.PostTransmitGainsLosses.GainLossList[0].Identifier Example Loss'); root.ExecuteCommand('Transmitter */Satellite/MySatellite/Transmitter/MyTransmitter SetValue Model.PostTransmitGainsLosses.GainLossList[0].Gain -5 dB');
Create a New CoverageDefinition (on the current scenario central body)
[Connect]
root.ExecuteCommand('New / */CoverageDefinition MyCoverageDefinition'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Grid AreaOfInterest Custom AreaTarget AreaTarget/MyAreaTarget'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Grid PointGranularity LatLon 5'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Asset Satellite/MySatellite Assign'); root.ExecuteCommand('Graphics */CoverageDefinition/MyCoverageDefinition Static Points Off');
Add Grid Constraint to Coverage
[Connect]
root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Grid GridConstraint Facility UsePointAltitudeType Facility/MyFacility UseActualObject');
Compute Coverage
[Connect]
root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Access Compute');
Set Advanced Settings for Coverage
[Connect]
root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Access DataRetention All AutoRecompute Off'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Access DataRetention All'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Access SaveMode Save');
Set the Coverage Interval to an object's availability Analysis interval
[Connect]
root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition Interval ""Satellite/MySatellite EphemerisTimeSpan.Start Time Instant" ""Satellite/MySatellite EphemerisTimeSpan.Stop Time Instant"');
Create a new Figure of Merit of type Access Duration
[Connect]
root.ExecuteCommand('New / */CoverageDefinition/MyCoverageDefinition/FigureOfMerit AccessDuration'); root.ExecuteCommand('Cov */CoverageDefinition/MyCoverageDefinition/FigureOfMerit/AccessDuration FOMDefine Definition AccessDuration Compute Maximum');
Configure the Contours of the FOM and define a color ramp
[Connect]
root.ExecuteCommand('Graphics */CoverageDefinition/MyCoverageDefinition/FigureOfMerit/AccessDuration FOMContours Static Show On'); root.ExecuteCommand('Graphics */CoverageDefinition/MyCoverageDefinition/FigureOfMerit/AccessDuration FOMContours Static StartStop 590 660 10 ColorRamp red blue Type Fill');