Simulink Real-Time 2020b. How do I monitor/log a signal in my application using App Designer?

11 次查看(过去 30 天)
Hi,
I am trying to monitor a signal in my real-time application on Speedgoat using App Designer. I am trying to recreate a similar function to the one included in slrtExplorer but so far I have been unsuccessful. I am not able to use the suggested fucntions such as ConnectScalar, getCallbackDataForSignal and so on.
Does anyone know how to do it? Is there an example that is not the invertedPendulum that I can use as a reference?.
Thanks for the help!
  1 个评论
Hamidreza Kolbari
Hamidreza Kolbari 2022-4-14
Hi,
I am working an a project.
I am using below two different functions
function createInstrumentation(app)
% Create a new instrument object that will be linked to the application
app.Instrument = slrealtime.Instrument;
% Connect callback to signal
addSignal(app.Instrument, [app.modelName,'/ControlValue'], 1)
addSignal(app.Instrument, [app.modelName,'/Gain2'], 1)
connectCallback(app.Instrument, @app.instrumentCallback);
end
function instrumentCallback(app, instObj, eventData)
if ~isempty(eventData.AcquireGroupData.Time)
[~, ctrlValue] = instObj.getCallbackDataForSignal(eventData, [app.modelName,'/ControlValue:1']);
[~, valveValue] = instObj.getCallbackDataForSignal(eventData, [app.modelName,'/Gain2:1']);
end
end
pushed button>>>>>>>>>>>\
createInstrumentation(app)
but it is not working. do you know what the problem is?

请先登录,再进行评论。

回答(1 个)

Diego Kuratli
Diego Kuratli 2021-10-4
In R2021b, the code required for binding signals and parameters have been reduced. There is a simple example in the documentation:
If possible, I would recommend to move to R2021b.
For R2020b, this video might help:
  2 个评论
Matteo Pellegri
Matteo Pellegri 2021-10-4
Hi Diego, thanks for the reply.
I am aware of the improvement of 2021b but for now I am not able to move to 2021b.
I watched that video already and the problem is that connectScalar/connectLine are usfeul if you are monitoring a small amount of variables and it seems that I am not able to use the data I am logging with those functions. Furthermore adding programmatically the components and linking them seems way too complex for what I am trying to achieve.
The current workaround I implementes is the following
function setupInstrumentation(app)
% create instrumentation object
hInst = slrealtime.Instrument(mldatx);
%% Add signals and connections
hInst.addSignal({'block/signalName'}, 1);
%add callback
app.hInst.connectCallback(@app.updateCallback);
end
function updateCallback(app,instObj,eventData)
curr_time = eventData.AcquireGroupData.Time;
if ~isempty(curr_time)
aGData = eventData.AcquireGroupData.Data;
[~,cv_data] = instObj.getCallbackDataForSignal(eventData,'block/signalName',1);
app.edit.Value = double(cv_data(end)); %edit field (numeric) is not happy with anything but double
else
%do nothing
end
end
% Button pushed function: LogMessagesButton
function StartLogMessage(app, event)
selectedTargetName = app.getSelectedTargetName();
tg = slrealtime(selectedTargetName);
tg.removeAllInstruments;
app.setupInstrumentation;
% Clear previous data
app.hInst.clearScalarAndLineData;
% Validate and add instrumentation to target
tg.addInstrument(app.hInst);
end
It seems to work. Do you see anything wrong with this?
Thanks again!
Hamidreza Kolbari
Hamidreza Kolbari 2022-4-14
Hi,
I am working an a project.
I am using below two different functions
function createInstrumentation(app)
% Create a new instrument object that will be linked to the application
app.Instrument = slrealtime.Instrument;
% Connect callback to signal
addSignal(app.Instrument, [app.modelName,'/ControlValue'], 1)
addSignal(app.Instrument, [app.modelName,'/Gain2'], 1)
connectCallback(app.Instrument, @app.instrumentCallback);
end
function instrumentCallback(app, instObj, eventData)
if ~isempty(eventData.AcquireGroupData.Time)
[~, ctrlValue] = instObj.getCallbackDataForSignal(eventData, [app.modelName,'/ControlValue:1']);
[~, valveValue] = instObj.getCallbackDataForSignal(eventData, [app.modelName,'/Gain2:1']);
end
end
pushed button>>>>>>>>>>>\
createInstrumentation(app)
but it is not working. do you know what the problem is?

请先登录,再进行评论。

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by