Simulnk对AMEsim模型进行参数辨识

如何用simulink对AMEsim搭建的一维整车模型进行参数辨识?

  1. 使用Simulink-AMESim联合仿真工具箱将AMEsim模型导入Simulink模型;
     
  2. 然后在Simulink中添加一个参数估计器块(Parameter Estimator Block);
     
  3. 在参数估计器块中指定要进行辨识的参数,并设置初始值、辨识算法、数据输入等相关参数;
     
  4. 添加一些测试数据来执行参数辨识,例如驱动循环或其他测试数据。这些数据可以是实验数据,也可以是来自仿真模型的数据;
     
  5. 然后就可以运行模型并分析结果了。

 
如果答案对您有所帮助,望采纳。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7710841
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Simulink实时更改运行的模块参数
  • 除此之外, 这篇博客: simulink代码生成中的 与现有协议的冲突 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 标准modbus协议中,与这里存在矛盾,以常用的03H指令为例
    主机发送: 01 03 00 00 00 01 84 0A
    从机回复: 01 03 02 12 34 B5 33
    /发送数据解析/
    01-地址
    03-功能码,代表查询功能,其他功能后面再说
    00 00-代表查询的起始寄存器地址.说明从0x0000开始查询.
    (这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据;)
    00 01-代表查询了一个寄存器.结合前面的00 00,意思就是查询从0开始的1个寄存器值;
    84 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到84前面为止;
    (这个校验就是保证数据传输过程没有错误的一种手段,不同的协议这种校验公式不一样)
    /回复解析/
    01-地址
    03-功能码
    02-代表后面数据的字节数,因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数;
    12 34-寄存器的值是12 34,结合发送的数据看出,01这个寄存器的值为12 34
    B5 33-循环冗余校验
    对应的基本流程:
    发送:地址正确+我要查的寄存器个数+校验
    回复:从机的地址+数据的字节数+数据+校验
    因此,帧数据是不定的
    而实际上,帧数据识别的实现方式,是借助定时器+串口检测,即串口中断接收数据,接收一个指令/一个小包(考虑CAN等通信一次传输的单位是多个字节)计时,计时超过一定时间后即认为帧数据传输结束。