用VB控制matlab simulink仿真模型

  • 要求
  • 方案
  • VB代码:


要求

在VB界面里内嵌matlab simulink仿真模块,并能控制仿真中的参数。

方案

用 Matlab.Execute () 语句使matlab运行代码。
用 set_param() 语句改变仿真里的参数

VB代码:

装配环境下,录制代码如下:

Dim Matlab As Object
Private lHwnd As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
 ‘窗口加载事件
Private Sub Form_Load() 
  On Error GoTo ErrTrap
   Set Matlab = CreateObject("Matlab.Application")  ‘链接matlab
     Matlab.Visible = False
     ‘11下面代码为捕捉simulink模块窗口
    Matlab.Execute ("simulink")    ‘matlab打开 Simulink模块  
   lHwnd = FindWindow(vbNullString, "Simulink Start Page")    ‘捕捉simulink窗口
   MoveWindow lHwnd, 0, 0, 500, 550, 1 ' 改变窗口大小
    If lHwnd = 0 Then Exit Sub
    SetParent lHwnd, simu.hWnd
    Exit Sub
   ‘11不需要该模块窗口可注释11这部分代码
 ErrTrap:
    On Error GoTo 0
End Sub

‘捕捉的窗口内嵌代码
Private Sub Form_Unload(Cancel As Integer)
    If lHwnd = 0 Then Exit Sub
    SetParent lHwnd, 0
End Sub

‘加一个按键打开指定位置仿真模型
Private Sub Command1_Click()
  Matlab.Execute ("open_system('C:\Users\tengyu\Desktop\GUI_ex11.mdl')")  ‘打开仿真模型
  ‘22传递参数给仿真模型,
  ‘使模型中pushbutton_value1值为1,pushbutton_value2值为2,然后运行模型。
  ‘可以在窗口添加按键和标签,再拼接字符串,达到参数传递给仿真的目的。
 txt="set_param('GUI_ex11/pushbutton_value1','Value','1');set_param('GUI_ex11/pushbutton_value2','Value','0');sim('GUI_ex11');" ‘命令集合为字符串
Matlab.Execute (txt)
‘也可以加入窗口捕捉代码,把窗口固定在vb界面
End Sub