[Запись обучения] Построение S-функции нелинейного метода обратного шага

Предисловие

Вслед за предыдущей статьей (6 сообщений) Запись обучения Simulink: Построение адаптивного контроллера для нелинейных систем_Блог HFUTdumpling-CSDN , в этой статье записан авторский процесс обучения S-функции (S-Fcn).

S-функция — это аббревиатура системной функции, которая описывает модуль в Simulink неграфическим способом . Полная система структуры S-функций содержит все возможности, необходимые для описания динамической системы . Используя S-функции, пользователи могут добавлять свои собственные модули в модель Simulink и могут свободно использовать MATLAB, C, C++ и другие языки для создания своих собственных модулей.

Simulink — функция S — Zhihu (zhihu.com)

текст

S —— Система, как следует из названия, функция S — это функция, используемая для построения типа системы (как вы можете видеть в предыдущей статье, использование simulink для ее построения приведет к большему количеству строк). Если для ее построения использовать функцию S, вся система будет выглядеть просто и понятно.

Следующее переходит непосредственно к примеру:

Система построена с использованием S-функций. (Предыдущий k был адаптирован с помощью уравнения. Теперь измените хаты в уравнении на k, что эквивалентно использованию метода обратного шага для проектирования этого контроллера. Если вы не понимаете эту часть, это не повлияет на конструкцию ).

Процесс строительства

Сначала создайте четыре новых скрипта, а именно plant (система), ctrl (контроллер), параметры (параметры) и BS_plot (чертеж).

parmmeters определяет несколько параметров, а именно:

Обратите внимание, что здесь он определен через структуру, облегчающую последующее использование.

Введите edit sfuntmpl в окне командной строки, чтобы открыть функцию S. Вы можете видеть, что функция S — это функция, встроенная в систему.

Обратите внимание, что содержимое этой функции нельзя изменять. При использовании выберите все, скопируйте и вставьте их в созданный вами скрипт. Вот копируем всю эту часть и вставляем в plant и ctrl соответственно.

    • строительство завода (т.е. строительство системы)

Во-первых, давайте кратко объясним структуру функции S:

Такова общая структура функции, а смысл параметров примерно следующий:

t:时间;x:系统的状态(列向量);u:系统的一个输入(列向量);flag:标志

注意函数名“plant”需要与该脚本名相同(为了方便引用)

然后pa是引入的结构体参数,所以在函数中也需要申明。

往下滑动可以看到这一条,这是函数的初始化,以下是我对各函数意义的一些简单的注释:

这部分的数值是对系统搭建的一个初始化。

这里提一个点:

直接馈入:如果S函数的输出y或采样时间t与输入u有直接联系,就是直接馈入;否则不存在直接馈入情况

系统的结构是微分方程的结构,故需要在该函数(状态变量微分)中编辑:

系统的输出项:

至此,系统搭建完毕。

    • ctrl搭建(即控制器搭建)

跟上部分一样,此处就直接看结果了。

初始化:

输出结果:

至此两个s函数搭建完毕。

3.在simulink中搭建起来

搭建结果大致如上。其中第一个模块是上一篇文章中搭建好的((6条消息) Simulink学习记录:一种非线性系统自适应控制器的搭建_HFUTdumpling的博客-CSDN博客)。

中间的ctrl和plant模块则是用了S函数模块:

这里将名称“system”改为之前编辑好的s函数文件名称即可直接与之前编辑的文件对应起来了。然后自己申明的参数是需要写出来的(如pa)。

搭建好之后,在示波器中,我们可以看到仿真结果:

可以看到x1和x1d是能基本拟合的。

至此,非线性反步法的S函数搭建完毕。

*追加一个模块:

这个模块可以在simulink中作为输出,导出的数据可以存入工作区。用以下方法引用:

simulink中:

建立的脚本文件中:

再次感谢b站up:德狗追求独立

S-Function/S函数,一个实例带你直接上手(非线性反步法搭建)_哔哩哔哩_bilibili

Supongo que te gusta

Origin blog.csdn.net/weixin_47723114/article/details/128749447
Recomendado
Clasificación