ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

LTspice奈奎斯特图实战:从原理到绘制,深入分析系统稳定性

LTspice奈奎斯特图实战:从原理到绘制,深入分析系统稳定性 1. 从频域到复平面为什么我们需要奈奎斯特图如果你和我一样长期在模拟电路设计、电源环路分析或者控制系统领域工作那么“稳定性”这个词一定是你设计生涯中挥之不去的核心命题。一个电路功能再强大性能再优越如果它在某些条件下会振荡、会自激那一切就都归零了。我们评估稳定性的工具有很多最经典的就是波特图Bode Plot它能直观地展示增益和相位随频率的变化。但今天我想和你深入聊聊另一个同样强大、甚至在某些场景下更具洞察力的工具——奈奎斯特图Nyquist Plot。奈奎斯特图简单来说就是把一个系统的开环频率响应通常表示为传递函数 H(jω)在复平面上画出来。横轴是实部Re纵轴是虚部Im频率 ω 作为隐变量从 0 变化到无穷大轨迹就在复平面上描绘出一条曲线。这条曲线之所以重要是因为它直接关联到著名的奈奎斯特稳定性判据Nyquist Stability Criterion。这个判据绕过了直接求解闭环系统特征方程的困难通过分析开环频率响应的奈奎斯特曲线环绕复平面上 (-1, j0) 这个“临界点”的情况就能判断闭环系统的稳定性。环绕的圈数、方向直接决定了闭环系统有多少个不稳定的极点。那么为什么在有了直观的波特图之后我们还需要奈奎斯特图呢这里有几个关键点。首先对于条件稳定系统波特图可能会“说谎”。一个系统可能在低频和高频时相位裕度都很大但在中频段相位急剧下降甚至超过 -180°然后又恢复。在波特图上你可能看到相位曲线穿过了 -180° 线但增益已经小于 0dB按照常规的增益/相位裕度判据你会误以为系统是稳定的。但实际上奈奎斯特曲线可能已经环绕了 (-1, j0) 点系统实际上是不稳定的。奈奎斯特图能一眼看穿这种“相位回绕”带来的陷阱。其次它提供了关于相对稳定性的更丰富信息。曲线距离 (-1, j0) 点的“最近距离”即幅值裕度和相位裕度的几何综合体现可以更直观地评估稳定性的“强壮”程度。最后在分析包含延时环节的系统时奈奎斯特图也更为方便。既然奈奎斯特图这么有用我们怎么得到它呢传统上你可能需要先用仿真软件如SPICE进行交流AC分析导出增益和相位数据然后用数学软件如MATLAB、Python with Matplotlib进行复数计算和绘图。这个过程繁琐且割裂。而今天我们要探讨的是如何利用一款强大、免费且被业界广泛使用的SPICE仿真软件——LTspice来一站式地完成从电路仿真到奈奎斯特图生成与分析的全过程。这对于快速迭代设计、直观理解电路稳定性特性具有极高的实践价值。2. LTspice的AC分析与数据导出构建奈奎斯特图的基石在LTspice中绘制奈奎斯特图其核心数据来源于标准的交流小信号分析.AC分析。因此正确设置AC分析是第一步也是确保后续数据可用的关键。2.1 搭建待测电路与设置激励源首先你需要搭建你的待分析电路。对于稳定性分析这通常是一个开环配置。以最常见的运算放大器环路增益分析为例常用的方法是“中断环路法”。你需要在反馈环路中插入一个大的电感例如1G亨来阻断直流通路但允许交流信号通过并插入一个大的电容例如1F来提供直流通路但阻断交流信号从而在某个点将环路打开。然后在断开处注入一个交流测试信号源。这个测试信号源就是AC分析的核心。在LTspice中你需要放置一个电压源或电流源取决于你的注入点并关键地设置其AC幅度。通常我们将其设置为1例如AC 1。这个“1”代表1V或1A的交流幅度它作为参考仿真输出的电压或电流值就直接代表了该点的增益传递函数。相位信息则由仿真结果中的相位角给出。注意这里的AC幅度设置如AC 1是用于小信号线性化分析的。它并不意味着实际施加一个1V的交流信号而是告诉仿真器在进行.AC分析时以此作为输入参考。实际仿真中电路工作点由直流偏置决定AC分析是在此工作点上的线性化扰动。2.2 配置.AC分析指令放置好“.ac”指令卡。点击菜单栏的“Simulate” - “Edit Simulation Cmd”选择“AC Analysis”标签页。这里有几个关键参数Type of Sweep: 选择扫描类型。Octave倍频程或Decade十倍频程是最常用的因为它们在对数频率轴上均匀分布点。Linear线性在分析宽频带时会导致低频点过疏、高频点过密通常不推荐用于稳定性分析。Number of points per octave/decade: 每倍频/十倍频的点数。这个值决定了曲线的分辨率。值太小如10曲线可能不够光滑错过关键细节值太大如1000仿真速度会变慢数据文件也会巨大。一个经验值是设置为50到100之间这能在精度和速度之间取得良好平衡。对于初步分析50足够当需要精细观察相位裕度或奈奎斯特曲线在 (-1, j0) 点附近的形状时可以提高到100或200。Start Frequency和Stop Frequency: 起始和终止频率。这个范围必须覆盖你关心的所有频段特别是增益穿越0dB单位增益的频率增益交界频率以及相位发生剧烈变化的频率。对于大多数运放和电源环路从1Hz甚至0.1Hz到10MHz或100MHz是一个合理的起始范围。你可以先进行一个宽频带扫描如1Hz to 100MHz然后根据结果缩小范围进行更精细的扫描。2.3 运行仿真与理解原始数据设置完成后运行仿真。LTspice会弹出波形查看器。通常我们会先添加增益dB和相位度的波形。例如如果你在输出节点V(out)和注入点V(inj)测量你可以输入表达式20*log10(V(out)/V(inj))来查看增益dB输入phase(V(out))-phase(V(inj))或更简单地直接右键点击V(out)/V(inj)的波形选择“View” - “Phase”来查看相位。此时你看到的是经典的波特图。你可以从中初步读出增益交界频率、相位裕度、增益裕度等信息。但我们的目标是奈奎斯特图所以我们需要的是复数形式的数据。实际上LTspice在内部计算并存储了每个频率点的复数电压/电流值。要获取这些数据我们需要将其导出。2.4 导出复数数据为奈奎斯特图准备原料LTspice波形查看器本身不直接支持绘制复平面图即实部-虚部图。因此我们需要将数据导出然后用其他工具处理或者利用LTspice的一些高级功能进行“内部”绘制后续章节会讲。导出数据是最通用、最灵活的方法。在波形查看器窗口确保你显示了感兴趣的电压或电流波形。例如显示V(out)/V(inj)。在波形图区域单击鼠标右键选择“File” - “Export data as text”。在弹出的对话框中你可以选择导出哪些数据。关键点在于不要只导出幅度和相位。为了得到奈奎斯特图所需的实部和虚部你需要确保导出的是复数数据。一个可靠的方法是在“Expression(s) to Export”框中直接输入你的复数表达式例如V(out)/V(inj)。或者在左侧“Select Steps”和“Select Waveforms”列表中找到对应的复数变量通常带有[Complex]标识。选择保存路径和文件名例如loop_gain_data.txt点击保存。用文本编辑器打开导出的文件你会看到类似如下的数据列Freq Re(V(out)/V(inj)) Im(V(out)/V(inj)) 1 0.999 -0.001 1.122 0.998 -0.002 ...这里Freq是频率Re(...)是传递函数的实部Im(...)是虚部。这三列数据就是绘制奈奎斯特图的直接原料。每一行对应一个频率点(实部 虚部)构成了复平面上的一个点所有点连起来就是奈奎斯特曲线。3. 在LTspice内部“间接”绘制奈奎斯特曲线虽然LTspice没有原生的“Nyquist Plot”按钮但利用其强大的波形运算和绘图能力我们可以巧妙地“模拟”出奈奎斯特图。这个方法不需要导出数据到外部软件可以在仿真后快速进行可视化检查非常适合快速迭代。其核心思路是将奈奎斯特曲线的实部X轴和虚部Y轴作为两个独立的波形绘制出来形成一幅参数曲线图其中参数就是频率ω。具体操作步骤如下运行标准的.AC分析按照第2章的方法正确设置并运行AC分析得到电路的频率响应。在波形查看器中绘制实部和虚部在波形查看器的空白处单击鼠标右键选择“Add Trace”。在弹出的对话框中你需要输入两个表达式来分别定义X轴和Y轴。但LTspice的“Add Trace”默认是绘制Y轴波形X轴是频率。为了绘制参数曲线我们需要一点技巧。首先添加第一个波形作为Y轴虚部。在表达式框内输入传递函数的虚部。例如如果你的开环传递函数是T(s) V(out)/V(inj)那么虚部表达式是imag(V(out)/V(inj))。点击“OK”此时会生成一幅以频率为X轴以传递函数虚部为Y轴的图。更改X轴变量绘制参数曲线现在我们需要把X轴从频率改为传递函数的实部。在波形查看器窗口的X轴坐标刻度区域双击会弹出“Axis Settings”对话框。在对话框底部有一个“Fourier axis”或“Quantity Plotted”的选项不同版本LTspice表述可能略有不同。取消勾选“Fourier”或类似选项。此时会出现一个“Plot Settings”选项卡或类似的区域。在这里你可以手动定义X轴表达式。在“X-Axis”或“Quantity Plotted”的表达式框中输入传递函数的实部表达式例如real(V(out)/V(inj))。点击“OK”应用更改。神奇的事情发生了原来的波形图消失了取而代之的是一幅新的图形其X轴是real(V(out)/V(inj))Y轴是imag(V(out)/V(inj))。这正是我们想要的奈奎斯特图曲线上的每一个点对应一个特定的频率但频率值没有直接显示在图上。添加频率标记与(-1, j0)点为了解读曲线我们需要知道关键频率点如增益交界频率、相位-180°的频率在曲线上的位置。你可以通过添加光标来实现。在波形图上按住Ctrl键并单击鼠标左键可以放置一个光标。移动光标波形查看器底部的状态栏会显示当前光标所在点的X、Y坐标即实部和虚部但不会显示频率。为了关联频率一个实用的技巧是同时打开两个波形查看窗口。一个窗口显示刚才制作的奈奎斯特图另一个窗口显示传统的波特图增益和相位 vs 频率。在波特图上移动光标找到关键频率点然后在奈奎斯特图上大致估计对应的位置。此外为了快速判断稳定性你需要在图上标出临界点(-1, j0)。LTspice没有直接添加参考点的方法但你可以通过添加一条简单的“曲线”来近似。右键点击图形选择“Add Trace”输入一个常数表达式比如-1但这只会添加一个Y轴常数线。更好的方法是利用其“绘制数据点”的功能但这需要预先准备数据。一个视觉辅助方法是调整X轴和Y轴的显示范围确保(-1, 0)点位于图形中心或显眼位置。你可以通过拖动图形或设置坐标轴范围来实现。实操心得这种方法生成的奈奎斯特图其坐标轴比例通常是自动缩放的可能不是1:1。一个圆可能看起来像椭圆这会影响你对曲线与(-1, j0)点距离的直观判断。为了获得准确的几何视角你需要手动设置X轴和Y轴具有相同的刻度范围。双击坐标轴在设置中手动输入相同的“Top”和“Bottom”对于Y轴、“Right”和“Left”对于X轴值例如从-2到2。这样图形就是等比例的一个单位距离在X和Y方向上是等长的方便评估稳定性裕度。4. 利用导出的数据在外部工具中绘制专业奈奎斯特图虽然LTspice内部方法快捷但在进行正式分析、报告或需要更精细控制时使用外部专业的数据处理和绘图工具是更好的选择。这里我以最常用的Python搭配Matplotlib和NumPy为例展示一个完整的工作流。这个方法也适用于MATLAB、Excel或其他科学计算软件。4.1 数据预处理与加载首先确保你从LTspice导出的文本文件格式规整。如前所述它应包含FreqRe(...)Im(...)三列以制表符或空格分隔。import numpy as np import matplotlib.pyplot as plt # 加载数据假设数据以制表符分隔没有表头 # 如果你的文件有表头如 Freq Re Im可以使用 skiprows1 data np.loadtxt(loop_gain_data.txt, delimiter\t) # 也可能是空格 freq data[:, 0] # 第一列频率 real_part data[:, 1] # 第二列实部 imag_part data[:, 2] # 第三列虚部 # 计算幅度和相位可选用于辅助分析 magnitude np.sqrt(real_part**2 imag_part**2) phase np.degrees(np.arctan2(imag_part, real_part)) # arctan2 返回弧度再转为度4.2 基础奈奎斯特图绘制使用Matplotlib的plot函数将实部作为X虚部作为Y。plt.figure(figsize(8, 8)) plt.plot(real_part, imag_part, b-, linewidth2, labelNyquist Curve) plt.scatter(real_part[0], imag_part[0], colorgreen, s100, zorder5, labelfStart (f{freq[0]:.2e} Hz)) plt.scatter(real_part[-1], imag_part[-1], colorred, s100, zorder5, labelfEnd (f{freq[-1]:.2e} Hz)) # 标记临界点 (-1, j0) plt.scatter(-1, 0, colorblack, s150, markerx, linewidths3, zorder10, labelCritical Point (-1, j0)) # 设置图形属性 plt.axhline(y0, colork, linestyle-, alpha0.3) # 实轴 plt.axvline(x0, colork, linestyle-, alpha0.3) # 虚轴 plt.grid(True, whichboth, linestyle--, alpha0.5) plt.xlabel(Real Part) plt.ylabel(Imaginary Part) plt.title(Nyquist Plot of Loop Gain) plt.axis(equal) # 关键确保X轴和Y轴比例相同图形不变形 plt.legend() plt.show()这段代码会生成一个标准的奈奎斯特图用绿点和红点分别标记曲线的起点低频和终点高频并用黑色“X”标出临界点(-1, j0)。plt.axis(equal)命令至关重要它保证了图形的纵横比一致使得距离的度量是准确的。4.3 添加频率标注与稳定性判据分析基础的曲线和临界点还不够我们需要知道曲线上关键频率点的位置。# 找到增益交界频率单位增益即 |T(jω)| 1 或 0dB附近的点 # 由于数据是离散的我们找幅度最接近1的点 idx_unit_gain np.argmin(np.abs(magnitude - 1.0)) f_unit_gain freq[idx_unit_gain] re_unit real_part[idx_unit_gain] im_unit imag_part[idx_unit_gain] # 找到相位为 -180° 附近的点用于计算增益裕度 idx_phase_180 np.argmin(np.abs(phase 180)) f_phase_180 freq[idx_phase_180] re_180 real_part[idx_phase_180] im_180 imag_part[idx_phase_180] # 在图上标注这些点 plt.figure(figsize(8, 8)) plt.plot(real_part, imag_part, b-, linewidth2) plt.scatter(-1, 0, colorblack, s150, markerx, linewidths3, zorder10, label(-1, j0)) plt.scatter(re_unit, im_unit, colororange, s120, zorder5) plt.annotate(ff{f_unit_gain:.2e} Hz\n(|T|1), xy(re_unit, im_unit), xytext(10, 10), textcoordsoffset points, colororange, fontweightbold) plt.scatter(re_180, im_180, colorpurple, s120, zorder5) plt.annotate(ff{f_phase_180:.2e} Hz\n(Phase-180°), xy(re_180, im_180), xytext(10, -15), textcoordsoffset points, colorpurple, fontweightbold) # 计算并显示相位裕度 (PM) 和增益裕度 (GM) # 相位裕度在增益交界频率处相位距离 -180° 的差值 PM phase[idx_unit_gain] 180 # 因为 phase 已经是度且负值 # 增益裕度在相位为 -180° 的频率处幅度的倒数以dB表示 GM_dB -20 * np.log10(magnitude[idx_phase_180]) if magnitude[idx_phase_180] 0 else np.inf # 将裕度信息以文本框形式显示在图上 textstr fPhase Margin: {PM:.1f}°\nGain Margin: {GM_dB:.1f} dB props dict(boxstyleround, facecolorwheat, alpha0.8) plt.text(0.05, 0.95, textstr, transformplt.gca().transAxes, fontsize10, verticalalignmenttop, bboxprops) plt.axhline(y0, colork, linestyle-, alpha0.3) plt.axvline(x0, colork, linestyle-, alpha0.3) plt.grid(True, whichboth, linestyle--, alpha0.5) plt.xlabel(Real Part) plt.ylabel(Imaginary Part) plt.title(Nyquist Plot with Key Frequency Points and Margins) plt.axis(equal) plt.legend() plt.show()现在你的奈奎斯特图不仅显示了曲线和临界点还清晰地标出了单位增益点和相位-180°点并直接计算和显示了相位裕度和增益裕度。这使得稳定性分析一目了然。4.4 处理多参数扫描.step数据LTspice的.step指令非常强大可以用于蒙特卡洛分析、参数扫描等。导出的数据会包含多组运行结果。处理这类数据需要额外步骤。假设你使用.step param Rload 1k 10k 1k扫描了负载电阻导出的文本文件会为每个Rload值生成一组数据列Freq,Re_1,Im_1,Re_2,Im_2, ...。在Python中你需要先识别数据的结构。# 加载所有数据 all_data np.loadtxt(stepped_data.txt, delimiter\t) # 假设第一列是频率之后每两列为一组实部虚部 freq_stepped all_data[:, 0] num_steps (all_data.shape[1] - 1) // 2 plt.figure(figsize(8, 8)) for i in range(num_steps): re_col all_data[:, 1 2*i] im_col all_data[:, 2 2*i] plt.plot(re_col, im_col, linewidth1.5, labelfStep {i1}) plt.scatter(-1, 0, colorblack, s150, markerx, linewidths3, zorder10) plt.axhline(y0, colork, linestyle-, alpha0.3) plt.axvline(x0, colork, linestyle-, alpha0.3) plt.grid(True, linestyle--, alpha0.5) plt.xlabel(Real Part) plt.ylabel(Imaginary Part) plt.title(Nyquist Plot with Parameter Step) plt.axis(equal) plt.legend() plt.show()这样你可以在同一张图上看到参数变化时奈奎斯特曲线的变化趋势直观评估参数对稳定性的影响。5. 实战案例分析一个带补偿的运算放大器环路让我们通过一个具体电路将上述流程串起来。假设我们有一个同相放大器电路使用一个通用运放在反馈网络中加入了电容以引入极点可能导致稳定性问题。电路搭建在LTspice中放置运放模型如UniversalOpamp2配置成增益为10的同相放大电路R11k, R29k。在R2上并联一个电容Ccomp例如100pF这会在反馈网络中引入一个极点。采用“中断环路法”在运放输出端与R1之间插入大电感Lbreak1GH和大电容Cbreak1F并在断开处注入AC 1的电压源Vtest。AC分析设置设置.ac dec 100 1 100Meg进行十倍频程扫描每十倍频100个点。内部绘图法快速检查仿真后在波形窗口添加V(out)/V(test)的波形。然后添加其虚部imag(V(out)/V(test))作为Y轴波形。接着双击X轴将X轴表达式改为实部real(V(out)/V(test))。调整坐标轴范围为等比例如X和Y都从-3到1观察曲线是否环绕(-1, j0)点。快速判断如果曲线从右侧实部0开始低频随着频率增加曲线是顺时针还是逆时针运动它是否包围了(-1,0)点在这个例子中由于补偿电容的存在曲线可能会向左弯曲靠近临界点。导出数据与外部分析导出V(out)/V(test)的复数数据。用Python脚本加载数据绘制带标注的奈奎斯特图。脚本会自动计算并显示相位裕度和增益裕度。你会发现由于100pF电容相位裕度可能较小例如45°增益裕度尚可。曲线可能非常接近(-1,0)点但未包围。参数迭代回到LTspice将Ccomp改为更小的值如10pF或更大的值如1nF重新运行仿真和绘图。观察奈奎斯特曲线的变化电容变小极点频率升高曲线向右移动远离(-1,0)点相位裕度增大电容变大曲线向左移动并可能包围(-1,0)点系统变得不稳定。通过奈奎斯特图你可以清晰地看到这种“包围”或“不包围”的几何关系比波特图更直观地理解条件稳定性。踩坑实录在一次电源模块的环路分析中波特图显示有超过60度的相位裕度看起来非常稳定。但负载瞬态测试时却出现了振荡。后来使用奈奎斯特图分析导出的数据发现曲线在极高频段仿真范围之外有一个小的“钩子”顺时针绕(-1,0)点了一圈。这是因为输出电容的ESL和PCB寄生电感在极高频率下产生了一个额外的谐振极点导致相位急剧下降。波特图因为扫描频率上限设置不够高漏掉了这个细节。而奈奎斯特图虽然也受数据范围限制但其曲线形态暗示了在无穷远处可能发生的行为根据奈奎斯特路径。这个教训是AC分析的频率上限必须设置得足够高要远超过你关心的主要带宽以捕捉所有可能影响稳定性的极点/零点。对于开关电源至少要到开关频率的10倍以上对于高速运放要到其单位增益带宽的10倍以上。6. 奈奎斯特图解读进阶与常见误区掌握了绘制方法正确解读图形才是最终目的。这里分享几个进阶解读要点和常见误区。6.1 曲线方向与频率增加方向在标准的奈奎斯特图中频率ω从0增加到∞。曲线起点的位置ω0和终点的位置ω→∞有特定含义。对于大多数最小相位系统开环无右半平面极点起点通常在正实轴上的某个点对应直流增益。随着频率增加曲线通常顺时针旋转。你需要确认你绘图时点的顺序是否与频率增加顺序一致。在Python中plt.plot()会按数组顺序连接点所以确保你的数据是从低频到高频排列的。6.2 如何数“环绕”圈数奈奎斯特稳定性判据的核心是开环传递函数 G(jω)H(jω) 的奈奎斯特曲线逆时针环绕 (-1, j0) 点的圈数 N等于闭环系统在右半平面的极点数 P开环不稳定极点与 Z闭环不稳定极点之差即 N P - Z。对于稳定的闭环系统要求 Z 0因此需要 N P。数圈数想象你站在(-1, j0)点看着曲线随着频率增加而移动。曲线逆时针绕你转一圈N就1顺时针绕一圈N就-1。确定PP是开环传递函数在右半平面RHP的极点数。对于绝大多数设计良好的放大器、电源环路开环系统本身是稳定的即P 0。在这种情况下稳定性判据简化为奈奎斯特曲线不能包围(-1, j0)点。只要曲线不包围该点闭环系统就是稳定的。“包围”的定义曲线不需要直接穿过(-1,0)点才叫包围。只要(-1,0)点位于曲线所围成的闭合区域内就算被包围。对于不闭合的曲线从实轴一点开始终于原点或实轴另一点需要补上从终点到起点、半径无穷大的圆弧来构成闭合曲线再判断。6.3 条件稳定性Conditional Stability的识别这是奈奎斯特图相比波特图最大的优势之一。条件稳定系统在波特图上增益曲线可能多次穿越0dB线相位曲线也可能多次穿越-180°线单纯看增益裕度和相位裕度会得出错误结论。但在奈奎斯特图上条件稳定表现为曲线多次穿过负实轴Re轴并且在(-1,0)点附近形成一个或多个“环”。如果这个环包含了(-1,0)点但在整体上曲线从起点到终点对(-1,0)点的净环绕圈数为0对于P0的系统那么系统仍然是稳定的但这种稳定性对增益变化非常敏感。一旦增益因温度、老化等原因发生变化曲线就可能移动并包围(-1,0)点导致不稳定。奈奎斯特图能清晰地揭示这种脆弱性。6.4 与波特图裕度的关联增益裕度Gain Margin, GM在奈奎斯特图上找到曲线与负实轴Im0, Re0的交点。设该交点坐标为a, 0其中a为负实数。则增益裕度 GM -20*log10(|a|) dB。因为当开环增益为|a|时相位为-180°此时若|a|1即|a|的绝对值1a -1则闭环不稳定。GM就是衡量|a|距离1有多远。相位裕度Phase Margin, PM在奈奎斯特图上找到曲线与单位圆|G(jω)|1的交点。该交点与原点连线的角度就是该频率下的相位角φ。相位裕度 PM φ - (-180°) φ 180°。在图上就是从该交点到(-1,0)点所张的圆心角。6.5 常见误区与验证误区一曲线穿过(-1,0)点就等于不稳定。不完全对。如果曲线恰好穿过(-1,0)点意味着在某个频率下开环增益为1且相位为-180°系统处于临界振荡状态。在实际中由于元件容差这通常被视为不稳定。误区二只看曲线是否“接近”(-1,0)点。接近度确实反映了相对稳定性但稳定性的严格判据是“包围”而不是“距离”。一个曲线可能离(-1,0)点很远但如果它以一种奇怪的方式比如在无穷远处包围了该点系统仍然不稳定。因此必须考虑完整的奈奎斯特路径。验证对于复杂的曲线判断是否包围有时比较困难。一个实用的方法是从(-1,0)点向任意方向比如向右画一条射线。数一数这条射线与奈奎斯特曲线的净交点数量从上方穿过减从下方穿过。对于P0的系统如果净交点数为0则稳定否则不稳定。这等价于计算环绕数。最后再分享一个我个人常用的技巧在利用Python绘制奈奎斯特图后我通常会用虚线叠加画出单位圆。这能非常直观地看到曲线与单位圆的交点用于求相位裕度以及曲线整体在单位圆内外的分布情况。# 在绘图代码中添加单位圆 theta np.linspace(0, 2*np.pi, 100) x_circle np.cos(theta) y_circle np.sin(theta) plt.plot(x_circle, y_circle, r--, alpha0.5, linewidth1, labelUnit Circle (|T|1))将这条命令添加到你的绘图代码中红色的虚线单位圆会与奈奎斯特曲线叠加显示相位裕度对应的点就是曲线与这个圆的交点一目了然。
返回列表