# 3. 离散系统
# 采样时间
Sysblock 模块可分为以下两类:
- 连续 —— 每当 Sysblock 求解器进行时间步长计算时都会执行的模块。
- 离散 —— 在固定周期性间隔执行的模块。 离散模块输出离散信号。离散信号仅在创建它的模块执行时才被修改。 离散模块执行的固定时间间隔称为该模块的采样时间。
采样时间是控制离散模块特性的最重要参数之一。
- 采样时间 = 0 —— 连续模块执行(每次时间步长)
- 采样时间 > 0 —— 离散模块执行(仅在示例时间)
- 采样时间 = -1 —— 采样时间从与其相连的模块继承而来
模型示例可参考
。
# 定义离散状态系统
离散状态系统的输出会受其当前值和先前值的影响,同时也会受到系统输入和时间的影响。 用户可以将离散状态系统的动态以差分方程的形式来表示。离散状态系统的数学表示主要由状态更新方程和输出方程两组方程构成。
- 状态更新方程:
- 输出方程:
- 模拟时间:
其中:
—— 离散时间增量 —— 采样时间 —— 仿真时间 —— 离散状态 —— 输入 —— 输出
# 建立差分方程
离散模型库中包含一些模块,它们能帮助用户构建离散状态的系统。离散状态系统的通用构建模块是 UnitDelay (单位延迟)模块。 离散状态系统的变化可以用差分方程的形式进行数学表达,例如:
要对这个差分方程进行建模,需要一种机制,在第
由于 UnitDelay 模块包含一个离散状态,因此必须指定一些初始条件,作为块在第一个时间步的输出。使用 UnitDelay 模块的初始条件块参数即可实现。
差分方程需使离散状态的当前样本位于方程的左侧,而其他所有项则写在右侧。
在 Sysblock 中对一组差分方程进行建模:
- 确定所需的单元延迟模块的数量。在此情况下,需要两个:
首先对 UnitDelay 模块进行处理,为其输入和输出信号标注恰当的标签。
逐个构建每个差分方程的右侧部分。如果需要的话,将单位延迟块输出端返回的信号作为源连接到其输入端。

设定采样时间并指定初始条件。

上述所描述的方法是一种通用的程序,适用于线性系统和非线性系统。
# 示例:PI 控制器
在采用线控节气门的汽车中,微控制器会确定正确的节气门板位置。如果驾驶员需要突然加速并踩下加速踏板,踏板上的传感器会将驾驶员对踏板的压力传递给微控制器。微控制器进行计算并将正确的节气门位置信息传递给电机,电机则会移动节气门板。
对这一节气门板的电子控制能够提高燃油经济性和减少排放,因为它始终能保持最佳的节气门状态,这是人类驾驶员无法做到的。此外,它还能实现更高级的功能,比如牵引力控制,在这种情况下,节气门位置可能会被调整以防止车轮在路面上打滑。
在电子节气门控制模式中,比例积分(PI)控制器是节气门板位置控制器。PI 控制器根据期望的节气门板位置与实际节气门板位置之间的误差来修改控制输出。
# 用方程对系统建模
基于此方程使用离散 PI 控制器作为电子节气门控制器:
其中:
并且满足约束条件:
采用向后欧拉方法(一种数值积分近似法)来求解这个积分器方程。因此,积分器方程从
# 构建框图
要构建该系统的框图模型可参考
。打开 Syslab 软件,双击启动 Sysplorer。

在 Sysplorer 界面找到文件 > 新建 Sysblock 模型 > Sysblock 模型,然后弹出新建控制器模型窗口后,用户需要自定义命名和存储位置。

在模型库是搜索拖出一个 FromWorkspace、Saturation、UnitDelay、Output 模块,两个 Sum 模块,三个 Gain 模块,并如图所示将信号连接。

如图所示,将对应模块和信号线进行自定义命名:“proportionalGain”、“integralGain”、“yp”、“yUnitDelay”、“yi”、“yiPrev”。

提示
可以使用其他模块来实现 PI 控制器:
- 离散 PID 控制器模块(位于“离散”库中)
- 离散时间积分器模块(位于“离散”库中)
离散时间积分器模块的实现方式在
模型中有示例。# 定义参数
在 Syslab 界面打开 主页 > 新建 > 新建 Julia 脚本。

输入:
t = [0, 1, 1, 10] u = [0, 0, 1, 1] e = hcat(t, u) Kp = 0.3 Ki = 2 Ts = 0.01单击运行,数据将会保存在工作区。

返回 Sysplorer 界面,在建模页面单击数据管理器,跳出模型数据管理器窗口,单击同步 Syslab 工作区按钮
,更新基础工作区数据后关闭窗口。
双击 FromWorkspace 模块,将数据设置为“e”,单击确定。

双击 proportionalGain 模块,在增益栏中输入“Kp”,下方会出现已经定义好的变量,单击该变量名称,最后单击确定。同理将另外两个增益模块定义为变量“Ki”和“Ts”。


双击 saturation 模块,将上限设置为 1,下限设置为 -1,单击确定;双击 unitDelay 模块中设置初始条件为 0,采样时间设置为变量 Ts ,单击确定。

# 运行仿真
在主页单击仿真设置,将步长设置为 0.001,终止时间设置为 10,单击确定并保存到模型。

单击仿真,仿真结束后会自动跳出结果查看器窗口,在仿真浏览器一栏勾选要查看的结果。

# 创建离散传递函数模型
对于线性离散状态系统,用户可以应用一种称为 Z 变换的转换方法,将系统的时域表示转换为频域表示。对于 PI 控制器,其方程为:
| 时域表达式 | z域传递函数 |
|---|---|
现在系统的方程已转换为传递函数形式,可以直接在 Sysblock 中使用离散传递函数块来实现此传递函数。用户须指定传递函数分子多项式和分母多项式的适当系数。
离散传递函数模型可参考
。
# 对多速率系统进行建模
离散时间系统可以以多种速率运行。这种系统被称为多速率系统。当模型中的离散模块以两个或更多不同的周期进行采样时,就存在这种多速率系统,例如:
在该模型中,PI 控制器算法之前有一个低通滤波器,它能消除输入信号中的噪声。滤波器和控制器以不同的速率运行,因为滤波器将在数字信号处理器(DSP)上运行,而控制算法将在微控制器上运行。