news 2026/4/16 16:26:39

【自动控制入门1B】从零搭建混合控制系统:基于抗积分饱和PID的输入限制直线运动物体位置控制仿真程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【自动控制入门1B】从零搭建混合控制系统:基于抗积分饱和PID的输入限制直线运动物体位置控制仿真程序

目录

  • 引言
  • python 仿真程序
    • 完整程序

引言

本文分享【自动控制入门1A】从零搭建混合控制系统:基于抗积分饱和PID的输入限制直线运动物体位置控制文章里仿真使用的程序,包括从零搭建的python仿真程序和用于对比的matlab/simulink仿真模型,其中python程序仅用到常用数据处理库和绘图库,控制系统的核心逻辑均为从零实现。编程不难,贵在逻辑梳理。

python 仿真程序

程序主要包括被控对象类、控制器类、传感器类、参数设置、仿真循环、控制性能计算、仿真结果绘图等几个模块,均有详细注释。


被控对象类:可以设置初始状态、微分方程函数ode_plant(self,state0=[0,0,0,0])包含分别考虑空气阻力重力的四种情况,可以根据需要取消注释对应微分方程的代码,共可以观察四种系统的特性(包括线性系统非线性系统
控制器类:可以设置更新频率、设置输入限制和抗积分饱和、修改控制器系数、改进控制器结构(修改内部逻辑和接口即可)等
传感器类:可以设置采样频率噪声等干扰
执行器类:可以根据需要添加,在接在控制器和被控对象之间模拟执行器动态


程序中设有打开输入限幅、实验数据打印到控制台、实验数据导出到txt开关,可以根据需要打开。如需实验记录导出到xlsx实验数据导出到xlsx功能,可以参考
【自动控制入门2B】从零搭建全连续控制系统:基于抗积分饱和PID的输入限制直线运动物体位置控制仿真程序。

完整程序

本文使用python=3.10环境,需要提前安装如下第三方库
pip install numpy、matplotlib
之后如下完整代码可直接运行

frommatplotlibimportpyplotaspltimportnumpyasnpimporttime# 2025.11.30 Sun# 运动模型采用考虑重力mg和拉力F、空气阻力f的垂直方向运动# 系统状态更新采用RK4方法近似连续系统仿真classVir:def__init__(self,state0=[0,0],para=None,dt=0.001)->None:self.m=para['m']# 质量self.k=para['k']# 空气阻力系数self.dt=dt# 时间步长# 初始状态,以向上和向右为正方向self.s=state0[0]# 初始竖直方向位置self.v=state0[1]# 初始竖直方向速度defode(self,state0=[0,0],u=0):# 状态变量初值s,v=state0[0],state0[1]# 微分方程组ds=vifv>=0:air_resist=-self.k*v**2elifv<0:air_resist=self.k*v**2else:air_resist=0# 考虑重力和空气阻力dv=(u-9.8*self.m+air_resist)/self.m# 不考虑重力,只考虑空气阻力# dv = (u + air_resist) / self.m# 不考虑空气阻力,只考虑重力# dv = (u - 9.8 * self.m) / self.m# 重力和空气阻力都不考虑# dv = u / self.mreturnnp.array([ds,dv]).reshape((2,1))defupdate(self,u=0):# RK4 方法更新状态state=np.array([self.s,self.v],dtype=float).reshape((2,1))k1=self.ode(list(state.flatten()),u)state1=state+k1*self.dt/2k2=self.ode(list(state1.flatten()),u)state2=state+k2*self.dt/2k3=self.ode(list(state2.flatten()),u)state3=state+k3*self.dt k4=self.ode(list(state3.flatten()),u)d_state=(k1+2*k2+2*k3+k4)/6state+=d_state*self.dt# state 和 d_state 是 (4,1) 的 numpy 数组,直接取标量 floatself.s=float(state[0,0])self.v=float(state[1,0])returnstateclassControllerPID:def__init__(self,kp=6,ki=0,kd=0,dt=0.1)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:38:27

终极s4cmd使用指南:让你的S3操作速度提升100倍!

终极s4cmd使用指南&#xff1a;让你的S3操作速度提升100倍&#xff01; 【免费下载链接】s4cmd Super S3 command line tool 项目地址: https://gitcode.com/gh_mirrors/s4/s4cmd 想要大幅提升Amazon S3存储的操作效率吗&#xff1f;s4cmd这个超级S3命令行工具绝对值得你…

作者头像 李华
网站建设 2026/4/16 13:41:08

Type-C保温杯如何实现精准PD协议取电

你是否曾在寒冷的冬日渴望一杯热饮&#xff0c;却苦于没有热水源&#xff1f;又是否曾因传统保温杯的局限而烦恼&#xff1f;如今&#xff0c;随着Type-C智能保温杯的出现&#xff0c;这些问题都迎刃而解。这款融合传统保温与现代快充技术的产品&#xff0c;正悄然改变我们的饮…

作者头像 李华
网站建设 2026/4/16 13:39:05

程序员必须知道的端口

程序员必须知道的端口‌20/21‌ - FTP文件传输协议&#xff08;数据/控制&#xff09;‌22‌ - SSH安全远程登录‌23‌ - Telnet远程登录&#xff08;不加密&#xff0c;已过时&#xff09;‌25‌ - SMTP简单邮件传输协议‌53‌ - DNS域名系统服务‌80‌ - HTTP超文本传输协议‌…

作者头像 李华
网站建设 2026/4/14 15:23:40

终极指南:如何在任意Windows电脑上使用三星笔记完整方案

终极指南&#xff1a;如何在任意Windows电脑上使用三星笔记完整方案 【免费下载链接】galaxybook_mask This script will allow you to mimic your windows pc as a Galaxy Book laptop, this is usually used to bypass Samsung Notes 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/4/16 13:39:05

智慧职教学习自动化脚本:5大核心功能深度解析与实战指南

智慧职教学习自动化脚本&#xff1a;5大核心功能深度解析与实战指南 【免费下载链接】hcqHome 简单好用的刷课脚本[支持平台:职教云,智慧职教,资源库] 项目地址: https://gitcode.com/gh_mirrors/hc/hcqHome 还在为职业教育平台的重复性学习任务而烦恼吗&#xff1f;这款…

作者头像 李华