BlockWerk 文档
📊

Signal Generator

Sources

SignalGenerator 方块是一个功能多样的周期信号发生器,可产生多种类型的时变波形,用于系统仿真与动态测试。该方块能够生成正弦波、余弦波、方波、锯齿波和三角波。在控制工程与信号处理应用中,它是构建激励信号、动态参考输入以及周期性干扰源的基础方块。

该方块作为虚拟函数信号发生器运行,仅根据当前仿真时间与设定参数直接计算输出值。

在 BlockWerk 中仿真

浏览器即开即用的交互式仿真环境 — 无需安装,由 WebAssembly 强力驱动。

在 BlockWerk 中仿真 →

数学模型

信号发生器支持多种波形,均基于统一的基础相位角 θ\theta 和归一化周期位置 nn:

θ(t)=2πft+ϕn(t)=(θ(t)2π) mod 1(归一化周期位置, 0≤n<1)\begin{aligned} \theta(t) &= 2\pi f t + \phi \\ n(t) &= \left( \frac{\theta(t)}{2\pi} \right) \bmod 1 \quad \text{(归一化周期位置, } 0 \le n < 1 \text{)} \end{aligned}

输出信号 y(t)y(t) 取决于所选的波形类型 signalType:

y(t)=offset+{Asin⁡(θ(t)),SineAcos⁡(θ(t)),CosineA⋅sgn(dutyCycle−n(t)),SquareA(2n(t)−1),SawtoothA(1−4∣n(t)−0.5∣),Triangley(t) = \text{offset} + \begin{cases} A \sin(\theta(t)), & \text{Sine} \\ A \cos(\theta(t)), & \text{Cosine} \\ A \cdot \text{sgn}(\text{dutyCycle} - n(t)), & \text{Square} \\ A (2n(t) - 1), & \text{Sawtooth} \\ A (1 - 4|n(t) - 0.5|), & \text{Triangle} \end{cases}

其中:

  • y(t)y(t) 为当前时刻 tt 的输出信号
  • AA 为信号峰值幅值(amplitude)
  • ff 为信号频率,单位为赫兹(frequency)
  • ϕ\phi 为初始相位(phase)
  • offset\text{offset} 为直流偏置(DC Offset)

输入与输出

Direction ID Label 类型 Status
→ In trigger Trigger number Optional
← Out out Signal number Output

参数

参数 Label 类型 默认值 描述
signalType Signal Type select sine Type of periodic signal to generate
amplitude Amplitude number 1 Peak amplitude of the signal
frequency Frequency number 1 Signal frequency in Hertz
offset Offset number 0 DC offset added to the signal
phase Phase number 0 Initial phase offset in degrees
dutyCycle Duty Cycle number 0.5 Duty cycle for square wave (0-1)

使用示例

频率响应测试

向连续传递函数输入 10 Hz 正弦信号,以观察系统的增益放大与相位滞后:

SignalGenerator (signalType: "sine", frequency: 10) → TransferFunction → Scope

PWM 脉冲调制信号

生成 10 Hz、占空比为 30% 的方波调制信号:

SignalGenerator (signalType: "square", frequency: 10, dutyCycle: 0.3) → Controller

说明与最佳实践

  • 奈奎斯特采样准则: 在设置较高信号频率时,仿真采样率(fs=1/Δtf_s = 1/\Delta t)必须远大于信号频率(fs≥10⋅ff_s \ge 10 \cdot f),以防止波形出现混叠和失真。
  • 无状态实时计算: 信号纯粹由时间变量 tt 计算得到,无内部历史状态,开销极低。
  • WASM 优化: 核心计算采用 WebAssembly 原生编译,满足高频信号实时发生需求。

相关模块