📜  控制系统-反馈(1)

📅  最后修改于: 2023-12-03 15:39:50.569000             🧑  作者: Mango

控制系统-反馈

控制系统中的反馈是指将系统的当前状态与期望状态进行比较,并根据差异对系统参数进行自动调整的过程。在计算机程序设计中,控制系统反馈主要应用于自适应控制、机器人控制、传感器控制等领域。

反馈调节

反馈调节即根据待调节信号和反馈信号来调整系统的输出信号,以使其尽可能地满足系统的性能要求。反馈调节的基本思想是通过测量输出信号与期望信号之间的误差,然后将误差信号反馈到系统的输入端,从而实现系统的自动调节。

下面是一个简单的例子,用来说明反馈调节的过程:

target = 80   # 期望值
kp = 0.5      # 比例常数
ki = 0.1      # 积分常数
kd = 0.2      # 微分常数

error = 0     # 误差初始化
last_error = 0

while True:
    # measurement
    measurement = get_measurement()
    error = target - measurement
    
    # PID calculation
    p_term = kp * error
    i_term = ki * (error + last_error)
    d_term = kd * (error - last_error)
    output = p_term + i_term + d_term
    
    # actuation
    set_point(output)
    
    # update errors
    last_error = error

在这个例子中,PID是一种常见的反馈调节控制算法,kp、ki、kd分别是PID算法的比例、积分、微分常数。程序通过不断地测量系统的输出值,与期望值进行比较,并根据误差信号计算 PID 控制量,然后将 PID 控制量反馈到系统输入端,实现对目标值的快速调节。

反馈控制

反馈控制是一种控制系统,它使用传感器、执行器和计算机程序作为基本组件,将系统输出与期望输出进行比较,并根据误差信号自动调整控制参数。该系统具有很强的鲁棒性,可以处理包括气压、湿度、温度、光强等在内的多种输入和输出信号。

反馈控制的实际应用非常广泛,例如飞行航空、工业自动化、化学过程控制、汽车控制等领域。

以下是一个简单的反馈控制系统实现的代码片段:

set_point = 50  # 目标值
error_history = []  # 误差历史记录

while True:
    # measurement
    measurement = get_measurement()
    error = set_point - measurement
    
    # control logic
    if error > 0:
        actuator.set(-1)  # 如果误差大于零,执行“退火”操作
    elif error < 0:
        actuator.set(1)   # 如果误差小于零,执行“加热”操作
    else:
        actuator.set(0)   # 如果误差等于零,不做出任何操作
    
    # record history
    error_history.append(error)
    
    # check termination condition
    if len(error_history) > 10 and all(map(lambda x: x == 0, error_history[-10:])):
        break  # 如果连续10个误差都为零,退出循环

在这个例子中,系统会不断地测量输出值与期望值之间的误差,并根据误差大小执行相应的反馈操作,以使误差减少。程序通过记录误差历史值并检查是否连续 10 次误差值为零来判断反馈控制系统是否已经收敛,如果已经收敛,则退出循环。