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界面,将系数的分子和分母部分复制粘贴即可。

相关推荐
t198751282 小时前
电力系统经典节点系统潮流计算MATLAB实现
人工智能·算法·matlab
暮乘白帝过重山2 小时前
ArkTS ForEach 参数解析:组件与键值生成器
开发语言·数据库
LiamTuc3 小时前
Java构造函数
java·开发语言
三途河畔人3 小时前
Pytho基础语法_运算符
开发语言·python·入门
Benmao⁢3 小时前
C语言期末复习笔记
c语言·开发语言·笔记·leetcode·面试·蓝桥杯
adsadswee3 小时前
Qt 样式与 QLinearGradient 渐变详解
开发语言·qt·qt样式表·qlineargradient·qss渐变效果
花月C3 小时前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法
脾气有点小暴3 小时前
前端页面跳转的核心区别与实战指南
开发语言·前端·javascript
rit84324994 小时前
基于MATLAB的BP神经网络手写数字识别
开发语言·神经网络·matlab
San30.4 小时前
深入 JavaScript 内存机制:从栈与堆到闭包的底层原理
开发语言·javascript·udp