Instrument

Создайте объект инструмента в реальном времени

Описание

Система координат slrealtime.Instrument объект передает данные сигнала от симуляции в реальном времени, выполняемой на целевом компьютере, на компьютер разработчика.

Создание

instrument_object = slrealtime.Instrument('appName') создает пустой объект инструмента для существующего приложения реального времени appName.

Пример: Создайте объект инструмента для приложения реального времени

instrument_object = slrealtime.Instrument() создает пустой объект инструмента без назначенного приложения реального времени.

Пример: Создайте объект инструмента без приложения реального времени

Свойства

расширить все

The AxesTimeSpan свойство управляет временной осью (ось X) для всех осей в пользовательском интерфейсе App Designer. Когда установлено значение Inf, значение сигналов от приложения реального времени, выполняемой на целевом компьютере, отображается в осях. Если вы меняете значение, например 10, то ось времени для всех осей устанавливается на это значение, например, на 10 секунд.

The AxesTimeSpanOverrun свойство управляет откликом для осей в пользовательском интерфейсе App Designer при переполнении данных AxesTimeSpan значение свойства. Когда AxesTimeSpan значение свойства Inf, а AxesTimeSpanOverrun свойство не влияет. Когда AxesTimeSpan значение свойства устанавливается в секундах, ось времени для всех осей устанавливается на конечную ширину ( временную область значений). Когда значение сигналов от приложения реального времени превышает самое большое значение времени на оси X, оси могут либо прокрутить, либо перенести.

Можно задать значение Application свойство существующему приложение реального времени при создании объекта Instrument или можно задать значение позже. После записи значения в это свойство оно становится доступным только для чтения. Вы не можете изменить значение свойства приложения непосредственно после создания объекта. Значение свойства может быть изменено только после создания объекта при помощи validate функция.

Функции объекта

addInstrumentedSignalsНайдите приборные сигналы и добавьте их к объекту инструмента в реальном времени
addSignalДобавьте сигнал для потоковой передачи, чтобы быть доступным в коллбэке
clearScalarAndLineDataОчистить данные от дочерних элементов объекта инструмента в реальном времени
connectCallbackДобавьте коллбэк, который реагирует на новые данные
connectLineСоедините сигнал для потоковой передачи с осями
connectScalarДобавьте сигнал для потоковой передачи на скалярное отображение
deleteУдалите объект инструмента в реальном времени
generateScriptСгенерируйте скрипт, который создает скаляр и управляет осями из сигналов, скаляров и линий в объекте инструмента в реальном времени
getCallbackDataForSignalПолучите данные коллбэка для сигнала в объекте инструмента в реальном времени
removeCallbackУдален коллбэк из объекта инструмента в реальном времени
removeSignalУдалите сигнал от объекта прибора в реальном времени
validateПроверьте сигналы в объекте прибора

Примеры

свернуть все

Создайте объект hInst для существующего приложения реального времени appName.

appName = 'slrt_ex_tank.mldatx';
hInst = slrealtime.Instrument(appName);

Создайте объект hInst без назначения приложения реального времени. Этот подход полезен при построении графический интерфейс пользователя, и файл MLDATX приложения реального времени недоступен.

hInst = slrealtime.Instrument();

В этом примере показано, как создать объект Instrument, применить методы объекта Instrument и удалить объект.

inst = slrealtime.Instrument();

inst.connectScalar(app.Numeric1, 'ScalarDouble1');
inst.connectScalar(app.Gauge1,   'ScalarDouble1');
inst.connectScalar(app.Numeric2, "ScalarDouble2");
inst.connectScalar(app.Gauge2,   "ScalarDouble2");

inst.connectScalar(app.Text1, "myString", 'Callback', @(t,d)string(d));
inst.connectScalar(app.Text2, "myString", 'Callback', @(t,d)string(d), 'Decimation', 2);

inst.connectScalar(app.Lamp0, "TrafficLight", 'PropertyName', 'Visible', 'Callback', @(t,d)string(slprivate('onoff',d==hSampleEnum.Green)));
inst.connectScalar(app.Lamp1, "TrafficLight", 'PropertyName', 'Visible', 'Callback', @(t,d)string(slprivate('onoff',d==hSampleEnum.Yellow)));
inst.connectScalar(app.Lamp2, "TrafficLight", 'PropertyName', 'Visible', 'Callback', @(t,d)string(slprivate('onoff',d==hSampleEnum.Red)));

ls2 = slrealtime.instrument.LineStyle();
ls2.Marker = '*';
ls2.MarkerSize = 4;
ls2.Color = 'black';
inst.connectLine(app.Axes1, "SineWave", 'ArrayIndex', 5, 'LineStyle', ls2, 'Callback', @(t,d)(d+app.Offset.Value));
inst.connectLine(app.Axes1, "SineWave");

inst.connectCallback(@(o,e)customPlot(o,e,app)); % plot sine waves added together with amplitudes 1, 3 and 5

tg=slrealtime;
tg.addInstrument(inst);

inst.AxesTimeSpan = 10;

inst.AxesTimeSpanOverrun = 'wrap';

inst.AxesTimeSpan = Inf;

tg.removeInstrument(inst);
Введенный в R2020b