目录

1. Lugre摩擦模型

2. Lugre摩擦模型的状态空间方程

3. Lugre摩擦模型的simulink建模

4. Lugre摩擦模型的s函数建模

5. simulink模型和s函数模型对比

6. Lugre摩擦模型的s函数源代码


1. Lugre摩擦模型

摩擦模型主要分为动态和静态摩擦模型。Lugre摩擦模型能够很好的反应出摩擦的静态和动态效应。Lugre摩擦模型:

                        ①

                ②

其中为非线性函数:

   ③

表1 参数意义及取值
参数 意义 本文取值
接触面相对角速度 ——
z 鬃毛的平均形变 ——
库伦摩擦力 2.4440
最大静摩擦力 0.5991
Stribeck速度 0.0103
鬃毛刚性系数 0.4766
滑动阻尼系数 0.2701
黏性摩擦因数 0.0049

这些参数根据不同的系统取不同的值,且会在外界温度、润滑条件、材料磨损及接触面作用力等因素的影响下发生改变(取值方法:查论文,一般通过参数辨识来计算取值;以上取值仅为示例)

2. Lugre摩擦模型的状态空间方程

          ④

                   ⑤

其中,T为离散采样时间,

取状态变量:

                          ⑥

则根据表达式④、⑤有状态方程:

         ⑦

根据表达式②有输出方程:

                      ⑧

3. Lugre摩擦模型的simulink建模

根据表达式 ①②③搭建simulink仿真模型如图1所示:

图1 Lugre的simulink仿真

参数初始化:(按照表1中参数初始化,仿真前先运行init.m文件,将参数加载到工作空间)

图2 参数初始化

输入信号:

图3 输入信号

输出波形:

图4 输出波形

4. Lugre摩擦模型的s函数建模

根据表达式⑦⑧和表1中的参数编写s函数,取离散采样时间为0.001s:

  ⑨

                                       ⑩

离散变量、输入、输出设置:

sizes.NumDiscStates  = 2;   %离散变量个数
sizes.NumOutputs     = 1;   %输出个数
sizes.NumInputs      = 1;   %输入个数

初始条件设置:

x0  = [0;0];

采样时间设置:

ts  = [0.001 0];

表达式⑨:

function sys=mdlUpdate(t,x,u)
w = u(1);
gw = 2.4440 + (0.5991 - 2.4440)*exp(-(w/0.0103)^2);
sys = [1 0.001;-0.4766*((abs(w))/gw) 0]*x+[0;1]*w;

表达式⑩:

function sys=mdlOutputs(t,x,u)
w = u(1);
sys = [0.4766 0.2701]*x+0.0049*w;

图5 s函数的Lugre仿真

输入波形:

图6 输入信号

输出波形:

图7 输出波形

5. simulink模型和s函数模型对比

图8 simulink模型和s-function模型对比

图8中上半部分为simulink模型,下半部分s-function模型

图9 仿真结果对比

根据图9可知s函数模型和simulink模型输出波形基本一致。s函数离散变量的初始状态会影响0时刻的仿真值,修改s函数离散变量初始值会减小0时刻的误差。

x0  = [0;-10];

图10 修改初始状态后的仿真结果

误差在0.001级,可以忽略。

6. Lugre摩擦模型的s函数源代码

function [sys,x0,str,ts,simStateCompliance] = Lugre(t,x,u,flag)switch flagcase 0   %初始化[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;case 1   %计算连续状态的微分sys=mdlDerivatives(t,x,u);case 2   %计算下一个离散状态  sys=mdlUpdate(t,x,u);case 3   %计算输出sys=mdlOutputs(t,x,u);case 4   %计算下一次采样的时间sys=mdlGetTimeOfNextVarHit(t,x,u);case 9   %系统结束sys=mdlTerminate(t,x,u);otherwise %其他情况DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));end%case 0:初始化
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizessizes = simsizes;           %用于设置模块参数的结构体sizes.NumContStates  = 0;   %连续变量个数
sizes.NumDiscStates  = 2;   %离散变量个数
sizes.NumOutputs     = 1;   %输出个数
sizes.NumInputs      = 1;   %输入个数
sizes.DirFeedthrough = 1;   %输入是否直接影响输出
sizes.NumSampleTimes = 1;   %至少一个采样时间sys = simsizes(sizes);%初始化初始条件
x0  = [0;0];%保留项
str = [];% 初始化采样时间
ts  = [0.001 0]; %[0 0] 连续采样%[0 1] 小步长的连续采样%[PERIOD OFFSET] 离散采用时间 [采样时间 步长]%[-2 0] 变步长的采样时间 FLAG=4时获取下一次采样时间%指定simStateCompliance块值
simStateCompliance = 'UnknownSimState'; %'UnknownSimState'  默认设置%'DefaultSimState'  与内置块的模拟状态相同%'HasNoSimState'    没有模拟状态%'DisallowSimState' 保存或恢复模型模拟状态时出错%case 1:计算连续状态的微分
%sys=AX+BU
function sys=mdlDerivatives(t,x,u)
sys = [];%case 2:计算下一个离散状态
%sys=AX+BU
function sys=mdlUpdate(t,x,u)
w = u(1);
gw = 2.4440 + (0.5991 - 2.4440)*exp(-(w/0.0103)^2);
sys = [1 0.001;-0.4766*((abs(w))/gw) 0]*x+[0;1]*w;%case 3:计算输出
%sys = CX+DU
function sys=mdlOutputs(t,x,u)
w = u(1);
sys = [0.4766 0.2701]*x+0.0049*w;%case 4:计算下一次采样的时间[-2 0]时使用该函数
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 0.01;
sys = t + sampleTime;%case 9:系统结束
function sys=mdlTerminate(t,x,u)
sys = [];

用s函数实现Lugre摩擦模型相关推荐

  1. Lugre摩擦模型的Stribeck曲线仿真

    文章目录 0. 序言 1. simulink 如下 2. 参数设置 3. 运行仿真 4. 运行结果 5. 参考文献 0. 序言 对论文<基于改进遗传算法的LuGre摩擦模型参数辨识及补偿> ...

  2. 2021-04-12 电机滑模控制 LuGre摩擦模型

    电机滑模控制 LuGre摩擦模型 Simulation for A Sliding Mode Controller Abstract: In this paper we first briefly i ...

  3. matlab摩擦阵子,用simulink仿真lugre摩擦模型时出现错误该如何解决。

    本帖最后由 Austin_uFe47 于 2017-6-9 09:09 编辑 程序如图 s函数为 function [sys,x0;str,ts]=ccc(t,x,u,flag) switch fla ...

  4. R语言广义线性模型函数GLM、R中有几种泊松回归扩展和变异、变时段泊松回归、零膨胀泊松回归、鲁棒泊松回归、pscl包的zeroinfl拟合零膨胀泊松回归、robust包中的glmRob函数拟合鲁棒模型

    R语言广义线性模型函数GLM.glm函数构建泊松回归模型.R中有几种泊松回归扩展和变异.变时段泊松回归.零膨胀泊松回归.鲁棒泊松回归.pscl包的zeroinfl拟合零膨胀泊松回归.robust包中的 ...

  5. R语言广义线性模型函数GLM、glm函数构建泊松回归模型、模型中存在过离散(Overdispersion)、则将连接函数从possion函数替换为quasipoisson函数重新构建泊松回归模型

    R语言广义线性模型函数GLM.glm函数构建泊松回归模型(Poisson regression).模型中存在过离散(Overdispersion).则将连接函数从possion函数替换为quasipo ...

  6. R语言广义线性模型函数GLM、glm函数构建泊松回归模型(Poisson regression)、输出提供偏差(deviances)、回归参数和标准误差、以及系数的显著性p值

    R语言广义线性模型函数GLM.glm函数构建泊松回归模型(Poisson regression).输出提供偏差(deviances).回归参数和标准误差.以及系数的显著性p值 目录

  7. R语言使用lm函数拟合多元线性回归模型、假定预测变量没有交互作用(Multiple linear regression)

    R语言使用lm函数拟合多元线性回归模型.假定预测变量没有交互作用(Multiple linear regression) 目录

  8. R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化

    R语言编写自定义函数.评估回归模型预测变量的相对重要性(Relative importance).通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加.来评估预测变量的重要程度.并通过点图可 ...

  9. R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系)、交叉验证获取最优子树之后构建最优xgboost模型

    R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系).交叉验证获取最优子树之后构建最优xgboost模型 目录

最新文章

  1. 一种新的验证码(改进版)
  2. ISE14.7安装教程(转)
  3. Python+selenium 自动化-读取excel记录的脚本执行登陆操作实战演示
  4. ALEIDoc EDI(7)--IDoc Extension
  5. php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中
  6. FMS案例开发--视频聊天室(三)
  7. java实现省市区的联动,chosen实现省市区三级联动
  8. ocx在我indows7无法注册
  9. 阿里和腾讯在泰国热战正酣,马云和马化腾要打世界大战?
  10. 如何解决apt-get中Unmet dependencies问题
  11. oppofindx5pro评测
  12. 服务器攻击后的善后工作
  13. .net(C#) json 大驼峰、小驼峰,命名混用
  14. @click=“active=index“ 这行是什么意思,绑定事件不应该是一个方法吗?
  15. html清除浮动的那一块区域,CSS中的BFC,外边距折叠,清除浮动
  16. vue中base64图片展示提示 图片报错:GET data:image/png;base64,undefined net::ERR_INVALID_URL
  17. 【集百家之长】阻容降压电路
  18. 叠瓦式硬盘和垂直式硬盘怎么区分?
  19. 《爱情呼叫转移》经典语录
  20. php 删除多余图片,php如何删除指定图片

热门文章

  1. android录音笔记软件,录音笔记app
  2. 快递鸟智选物流API对接流程
  3. python如何导出csv文件_python pandas如何输出csv文件
  4. 小程序开发之 wx.getUserInfo获取用户信息方案介绍
  5. 中文停用词表整理(1893个)
  6. c语言最长良序字符串,C语言高效编程的4个方法
  7. [蓝桥杯单片机 八位共阳数码管](4)
  8. 地图学的基础知识_天文坐标系_大地坐标系_地心坐标系及其相关概念
  9. 腾讯云GPU服务器深度学习环境搭建
  10. root改手机型号王者,手机root后怎么改手机型号