使用Python的tkinter和matplotlib模块在GUI界面中绘制PID交互曲线,用以观察各参数对PID控制的影响

本文介绍了如何使用Python的tkinter和matplotlib库创建一个GUI界面,通过该界面可以直观地观察PID控制器的Kp、Ki、Kd参数对控制效果的影响。通过自定义PID模块和交互式绘图,用户可以动态调整参数并即时查看曲线变化。
摘要由CSDN通过智能技术生成

使用Python的tkinter和matplotlib模块在GUI界面中绘制PID交互曲线,用以观察各参数对PID控制的影响

最近学PID控制,想要直观的观察PID各部分参数对PID控制的影响,就用Python写了一个界面,总的来说并不复杂,如下:

pid_GUI.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:makang
# Description: 绘制PID交互曲线,可以观察到Kp,Ki,Kd各参数对PID控制的影响

import tkinter as tk
import PID
import matplotlib as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np

# 绘图函数
def drawPic():
    global r, g, b

    # 清空图像,以使得前后两次绘制的图像不会重叠
    # drawPic.f.clf()
    drawPic.a = drawPic.f.add_subplot(111)
    drawPic.a.grid(color='k', linestyle='-.')
    TestPID(Kp, Ki, Kd)

    # 每次绘图改变线条颜色用以区别----第一种方法
    # drawPic.a.plot(PositionalXaxis, PositionalYaxis, color=(r, g, b) )  # 绘制图形
    # r -= 0.15; g-=0.15; b-=0.15
    # if r < 0: r=0
    # if g < 0: g=0
    # if b < 0: b=0

    # 每次绘图改变线条颜色用以区别----第二种方法
    color = ['b', 'r', 'y', 'g', 'grey', 'coral', 'darkgreen', 'c', 'cyan', 'steelblue']
    drawPic.a.plot(PositionalXaxis, PositionalYaxis, color=color[np.random.randint(len(color))] )  # 绘制图形
    drawPic.canvas.draw()
    #每次绘图完毕清空x,y
    PositionalXaxis.clear()
    PositionalYaxis.clear()


# 测试PID程序
def TestPID(P, I, D):
    global PositionalXaxis, PositionalYaxis, fig_num
    PositionalPid = PID.PositionalPID(P, I, D)
    for i in range(1, 500):
        # 位置式
        PositionalPid.SetStepSignal(100.2)
        PositionalPid.SetInertiaTime(3, 0.1)
        PositionalYaxis.append(PositionalPid.SystemOutput)
        PositionalXaxis.append(i)

#   改变Kp
def Kp_enlarge():
    global Kp, Ki, Kd
    Kp += 0.2
    var_kp.set('%.2f'%Kp)
    drawPic()
    return Kp
def Kp_reduce():
    global Kp
    Kp -= 0.2
    if Kp<=0:
        Kp=0
    var_kp.set('%.2f'%Kp)
    drawPic()
    return Kp

#   改变Ki
def Ki_enlarge():
    global Ki
    Ki += 0.2
    var_ki.set('
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值