MATLAB使用系统辨识工具箱建立PID水温的传递函数系数

概述

利用PID控制水温,由于实际在工程项目中,手动调节PID参数比较耗费时间,所以可以先利用MATLAB中的Simulink软件建立模型,先在仿真软件上调节大概的PID参数,再利用此PID参数为基础在实际的工程项目中手动调节PID参数,以此缩短调节PID参数的时间。由于Simulink中传递函数(Transfer Fcn)为被控对象,传递函数中相关的系数需要根据实际的控制模型进行填写,控制模型的系数可以利用MATLAB中的系统辨识工具箱(System Identification)识别。

实现步骤

(1).以PID控制水温为例子,在实际的工程项目中,以PWM的占空比为输入,输出为温度的值,以百分之百的占空比加热水温,将水温从当前温度(例如:30度)加热到100度,记录加热期间每秒钟对应的PWM占空比的值,以及每秒钟对应的水温值,这里为了便于计算以恒定的占空比百分之百加热,记录的数值存储到SD卡中,若没有SD卡可用串口讲记录的数据发送到上位机中,这里以SD卡为例,将每秒钟记录的水温存储到txt格式的文本中。

(2).打开MATLAB软件,导入数据,将导入的数据转换为列向量,并修改导入数据的变量名为PID_Output。

(3).创建一个脚本文件,并定义一个变量名为PID_Input的列向量,由于以恒定的占空比百分之百加热,所以值定为100,由于输出的数据是一共有970行,输入和输出需要对应,所以输入的数据也要是970行,输入完之后,记得点击运行,否则数据不会进入工作区中。

(4).打开MATLAB软件中的APP中的System Identification软件,会弹出System Identification界面,在此界面中的Import data中选择Time-Domain Signals,即时域信号,随时间变化的信号,弹出Import data界面,Input处输入PID_Input,Output处输入PID_Output,因为开始时间从1开始计时,所以Starting time处输入为1,因为记录的数据间隔时间为1,,所以Sample time处输入为1。最后点击Import选项。


(5).点击Import选项后,会更新System Identification界面,选择Estimate中的Transfer Function Models选项,会弹出Transfer Function界面,由于水温控制是一阶系统,所以在这里选择1个极点和1个零点,时间选择Continuous-time,最后点击Estimate选项。

(6).点击Estimate选项后,会弹出Plant Identification Progress界面,此界面中的Fit to estimation data代表系统辨识的识别度,若此百分比大于80就代表此模型识别成功,可以应用到Simulink中的传递函数中。

(7).再次查看System Identification界面,界面中的tf1即为模型传递函数的系数,双击可以点开,或者拖动tf1到To Workspace中,MATLAB工作区中就会有tf1变量。



(7).在Simulink中建议一个PID控制模型,双击Transfer Fun对象,会弹出Block Parameters:Transfer Fcn界面,将系数的分子和分母部分复制粘贴即可。

相关推荐
测试界的酸菜鱼10 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
晨曦_子画20 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend28 分钟前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
希言JY1 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
残月只会敲键盘1 小时前
php代码审计--常见函数整理
开发语言·php
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc
y5236482 小时前
Javascript监控元素样式变化
开发语言·javascript·ecmascript
IT技术分享社区2 小时前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
极客代码2 小时前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow