Engee 文档

Engee系统对象

本文介绍了在*Engee*中使用系统对象的一般方法。 有关特定系统对象的信息,请联系 命令行Engee img 41 1 2 并在帮助模式? (点击 ? 要切换到模式),输入他的名字。

A*System object*是*Engee*建模环境的一个对象,可帮助对动态系统进行建模。 系统对象对于信号处理、通信、雷达和控制任务特别有用。 通过提供用于创建,配置和使用组件的简单工具,它们在Engee中创建动态系统时提供了模块化和便利性。

使用系统对象允许您使用面向对象编程(OOP)的原则对真实对象进行建模。 这确保了从工程概念到软件模型的平稳过渡,这使得根据经典编程方法更有效地组织对象的工作成为可能。

系统对象的创建和使用分为四个阶段:

so diagram 1

  1. 组件创建-在第一阶段,系统对象被初始化,它们表示系统的必要组件。 这些对象可以模拟信号发生器,发射器,接收器和其他设备。 例如,正在创建一个对象 波形 使用类 工程师。RectangularWaveform(),表示矩形脉冲发生器。 在这个阶段,为未来的组件创建空白,但仍然没有详细的配置。;

  2. 组件配置-创建对象后,对其进行配置,其中设置了确定组件行为的关键参数。 这可以包括脉冲重复率、信号强度、采样率和其他重要特性。;

  3. 将组件组装到一个系统中-在这个阶段,配置的组件被组合到一个单一的系统中,在这个系统中它们可以相互交互,创建一个数据流。 该组件允许您组织组件之间信号的传输和处理,反映系统运行期间将发生的物理过程。;

  4. 系统启动-完成组件组装后系统准备执行操作。 在此阶段,执行所有必要的计算和信号传输。


基于系统对象启动雷达系统的示例(有关详细信息,请参阅基于系统对象创建系统的阶段):

# 创建信号发生器(第一阶段)
waveform = EngeePhased.RectangularWaveform()

# 设置信号发生器(第二阶段)
waveform.PulseWidth = 100e-6;   # 脉冲持续时间,1微秒
waveform.PRF = 1e3;             # 脉冲重复率,1kHz
waveform.SampleRate = 1e6;      # 采样率,1MHz

# 创建和配置发射机(步骤1和2一起,替代选项)
transmitter = EngeePhased.Transmitter(
    PeakPower = 50,                  # 峰值功率,50瓦
    Gain = 40,                        # 增益,40分贝
);

# 创建和配置接收器(步骤1和步骤2一起,替代选项)
receiver = EngeePhased.ReceiverPreamp(
    SampleRate = 1e6,                # 采样率,1MHz
    NoiseFigure = 5,                 # 噪音声级,5分贝
    NoiseMethod = "Noise power",     # 设置噪声、功率的方法
    NoisePower = 50000,              # 噪音功率
);

# 所有以前的阶段形成第三点-组件组装成一个反映真实物理过程的系统。

# 系统启动(第4阶段)
signal = step!(waveform);               # 产生另一个脉冲
transmitted = transmitter(signal);      # 信号传输
received = receiver(transmitted);       # 接收具有附加噪声的信号

# (可选)绘制信号
plot(abs.(signal), title="发射信号", label = false) |> display
plot(abs.(received), title="接收信号", label = false)

当系统对象被调用时,数据处理、初始化和状态管理被执行,这简化了复杂动态系统的建模。 在此类系统中,输出数据不仅取决于当前输入值,还取决于系统的先前状态。 系统对象保留此先前状态,以便在下一阶段的计算中使用它。

基于系统对象创建系统的阶段

在*Engee*中使用系统对象包括几个主要步骤,这些步骤有助于将代码组织成逻辑结构,表示物理过程。 让我们来看一个创建简单TF单位置雷达系统的示例,它将显示系统对象是如何创建和使用的。

创建组件

第一步是创建将表示系统组件的基本对象。 组件是使用内置的Engee系统类创建的,这些类代表各种功能元素,如信号发生器、发射机和接收机。

要查看配置组件的所有可用选项,请创建一个组件(执行代码)并在 可变窗口 variables article 2 1 将鼠标光标移动到相应的组件上:

so param menu 1


创建矩形脉冲发生器的示例:

waveform = EngeePhased.RectangularWaveform()

这里 工程师。[医]直肠状 —这是一个代表矩形脉冲发生器的类。 一个对象 波形 它将成为产生将通过系统传输的信号的基础。 在这个阶段,只创建对象本身,而不指定任何参数,以便以后可以配置它。 或者,您可以在同一时间创建和配置组件(有关更多信息,请参阅下文)。

配置组件

创建组件后,您需要设置它们的参数,以便它们满足模型的要求。 配置可以通过两种方式完成:创建对象时或通过在创建后更改属性。:

  1. 创建组件时的配置:

    waveform = EngeePhased.RectangularWaveform(
        PulseWidth = 100e-6,
        PRF = 1e3,
        SampleRate = 1e6,
    );
  2. 创建后通过对象属性进行配置:

    waveform = EngeePhased.RectangularWaveform()
    
    waveform.PulseWidth = 100e-6;
    waveform.PRF = 1e3;
    waveform.SampleRate = 1e6;

这里:

  • 脉冲星,脉冲星 -脉冲持续时间。 这里将其设置为1微秒。

  • PRF -脉冲重复频率,它决定了脉冲产生的频率。 安装于 1 千赫。

  • 取样器,取样器 -采样率,它决定了系统处理数据的速度。 它被设置为1MHz。

通过类推,配置用于组装系统所必需的其它部件。:

# 创建和配置发射器
transmitter = EngeePhased.Transmitter(
    PeakPower = 50,              # 峰值功率,50瓦
    Gain = 40                    # 增益,40分贝
);

# 创建和配置接收器
receiver = EngeePhased.ReceiverPreamp(
    SampleRate = 1e6,            # 采样率,1MHz
    NoiseFigure = 5,             # 噪音声级,5分贝
    NoiseMethod = "Noise power", # 设置噪声、功率的方法
    NoisePower = 50000           # 噪音功率
);

将组件组装到系统中

在此阶段,所有必要的组件都已创建和配置,但它们的交互尚未确定。 该系统的组装包括准备对象,这些对象将代表发送和接收信号的真实过程的元素,但它们之间的数据流尚未组织。

在上面的代码中,系统组件被创建和配置:信号发生器,发射器和接收器。 这些对象将成为进一步建模的基础,但目前它们仍然是孤立的—组件之间的真实交互和数据传输将在下一阶段实现。

# 创建和配置信号发生器
waveform = EngeePhased.RectangularWaveform()
waveform.PulseWidth = 100e-6    # 脉冲持续时间,1微秒
waveform.PRF = 1e3              # 脉冲重复率,1kHz
waveform.SampleRate = 1e6       # 采样率,1MHz

# 创建和配置发射器
transmitter = EngeePhased.Transmitter(
    PeakPower = 50,             # 峰值功率,50瓦
    Gain = 40                    # 增益,40分贝
)

# 创建和配置接收器
receiver = EngeePhased.ReceiverPreamp(
    SampleRate = 1e6,           # 采样率,1MHz
    NoiseFigure = 5,            # 噪音声级,5分贝
    NoiseMethod = "Noise power", # 设置噪声、功率的方法
    NoisePower = 50000           # 噪音功率
)

因此,在组装阶段,准备了创建将处理信号的系统所需的所有组件。

启动系统

现在所有组件都已创建和配置,可以通过组织它们之间的数据传输将它们组合到一个系统中。 在这个阶段,一个组件的输出成为另一个组件的输入,模拟了发送和接收信号的真实过程。:

signal = step!(waveform);
transmitted = transmitter(signal);
received = receiver(transmitted);

数据传输过程的描述:

  1. 信号生成-对象 波形 产生矩形脉冲;

  2. 信号传输-对象 发射器 放大信号并发送。 参数 峰值功率 设置发射机的峰值功率,以及 增益 -收益;

  3. 信号接收-对象 接收器 接受信号并使用指定的参数添加噪声。 N.噪音,噪音 检测噪音水平, [医]噪音 表示正在使用功率噪声加法方法,并且 N.噪音,噪音 设置噪声功率。

该阶段完成了构建系统的过程,并允许您开始对信号的发送和接收进行建模,同时考虑到噪声和其他特性。

可视化(可选阶段)

或者,结果可以在系统启动后可视化。 该阶段有助于分析系统的行为以及通过噪声和放大后接收信号的质量。 在这个例子中,构建图表来评估发射和接收的信号。:

plot(abs.(signal), title="发射信号", label = false) |> display
plot(abs.(received), title="接收信号", label = false)

这里 腹肌。(信号)腹肌。(收到) 应用函数 腹肌 到阵列的每个元素得到信号的幅度。 功能 情节 绘制图形以直观地比较信号在通过发射器和接收器后的变化。

so graph 1

so graph 2

基于所提供的图表:

  • 上图示出了发射的矩形信号,其开始幅度为约 1 它很快下降到零。 这是对应于为发射器指定的方波参数的典型脉冲形信号。

  • 下图显示接收信号,其中包含噪声分量。 你可以看到,在信号的开始(最多约 250 有一个明显的振幅电平,然后它减少,变得更加嘈杂。 这对于接收信号来说是典型的,其中由于噪声和信号衰减的影响,其幅度减小并且基本信息变得不那么明显。

这些图表表明,基于系统对象的系统在雷达信号建模中成功地执行了其功能。 系统对象允许您在块级实现主要阶段—​生成、传输、接收和添加噪声—​而不必深入研究使用*Engee*库的块进行建模的细节。

系统对象的常用方法

*Engee*中的系统对象提供了许多常用方法,可简化其行为的管理和配置。 下面是他们每个人的描述。

步!

方法 步! 运行与系统对象关联的主逻辑或算法。 它用于根据对象的当前状态执行计算或数据处理。 例如,在雷达系统中,呼叫 步! 对于信号发生器,它开始产生下一个脉冲的过程。:

# 脉冲产生
signal = step!(waveform)

# 信号发送和接收
transmitted = step!(transmitter, signal)
received = step!(receiver, transmitted)

下面是方法 步! 依次启动每个组件:波形发生器,发射器和接收器,确保信号通过整个系统。 每一个挑战 步! 执行一次数据处理迭代。

释放!

配置和使用系统对象后,其某些属性可能会被阻止。 方法 释放! 允许您解锁对象并在需要重新配置其参数时更改其属性。 当需要对已经配置的对象进行更改时,这种方法很有用,例如,在不创建新对象的情况下更改发射机的功率或发电机的频率。 使用 释放! 释放对象以向其参数添加新值。 例如:

release!(waveform) # 允许更改信号发生器对象

waveform.SampleRate = 2e6       # 将采样频率更改为2MHz

release!(transmitter) # 允许更改发射器对象

transmitter.Gain = 45           # 增益变化45分贝

在本例中,方法 释放! 允许您对现有对象进行更改。 波形发射器 而不是重新创造它们。 如果系统参数需要调整到其他操作条件,这很有用。

设置!

方法 设置! 执行系统对象初始配置所需的一次性操作。 它为操作准备对象,例如,检查设置参数的正确性并分配必要的资源。

方法 设置! 它在第一次启动时自动调用。 步!,但可以手动调用它来提前检查对象的准备情况,并确保其设置正确。

此方法对于模型准备阶段很有用,当在开始主处理之前确保所有对象都已正确配置时很重要。 例如:

setup!(waveform)

默认方法是 设置! 无法对对象进行任何更改 波形 (从上面的例子)。 若要更改对象的属性,必须首先调用该方法 释放!. 否则,系统将发出警告。:

so warning 1

因此,您必须首先解锁对象以进行更改,然后调用 设置!:

release!(waveform)

setup!(waveform)

有用的连结