一、搭建所需的simulink模型
在模型的属性中,修改Callbacks中的StartFcn,添加listener以获取模型中的输出。
set(0,'ShowHiddenHandles','on');
blk='SineFcn/Gain';
event='PostOutputs';
listener=@hhh;
h=add_exec_event_listener(blk,event,listener);
二、建立GUI
可修改服务器IP地址、端口号;
显示simulink模块输出值
显示ModbusTcp服务器端返回的心跳包,以确认连接状态。
显示发送至服务器的数据。
三、GUI中m文件的关键点
1、simulink的仿真启动及停止
load_system('SineFcn');%打开模型
set_param('SineFcn','SimulationCommand','start');%模型开始仿真
set_param('SineFcn','SimulationCommand','stop');%模型停止仿真
2、modbus连接的建立
mbConnector= modbus('tcpip',ModbusServerIp,ModbusServerPort);%创建modbus对象
mbConnector.Timeout = 20;
data1 = read(mbConnector,'holdingregs',1,1); %对保持寄存器的数据
write(mbConnector,'holdingregs',3,data2);%向保持寄存器写数据
没有modbus设备的,可以利用modbus sim等软件进行仿真。
3、simulink监听器的建立
function hhh(block,eventdata)
rto= get_param('SineFcn/Gain','Runtimeobject')%获得simulink中的gain
str=num2str(rto.OutputPort(1).Data);
statestxt = findobj('Tag','edit3');
%update the gui
set(statestxt,'string',str);
end
4、跨组件的参数传递
利用handles结构体,在使用前后读取储存handles的内容
guidata(hObject, handles);
四、运行演示