Эта процедура показывает, как проследить сигналы с осциллографами файла с помощью модели xpcosc Simulink®. Вы, должно быть, уже создали и загрузили приложение реального времени для этой модели. Это также принимает, что вы используете последовательную ссылку.
Файл данных сигнала может быстро увеличиться в размере. Чтобы измерить темп роста файла, исследуйте размер файла между выполнениями. Если файл данных сигнала растет вне свободного места на диске, данные сигнала повреждается.
Создайте целевой объект tg, который представляет целевой компьютер TargetPC1. Ввод:
tg = SimulinkRealTime.target('TargetPC1')Чтобы получить список сигналов, введите:
tg.ShowSignals = 'on'Командное окно отображает список свойств целевого объекта для доступных сигналов. Например, эти сигналы являются частью модели xpcosc:
Target: TargetPC1
Connected = Yes
Application = xpcosc
.
.
.
Scopes = 1
NumSignals = 7
ShowSignals = on
Signals =
INDEX VALUE Type BLOCK NAME LABEL
0 0.000000 DOUBLE Gain
1 0.000000 DOUBLE Gain1
2 0.000000 DOUBLE Gain2
3 0.000000 DOUBLE Integrator
4 0.000000 DOUBLE Integrator1
5 0.000000 DOUBLE Signal Generator
6 0.000000 DOUBLE Sum
.
.
.Начните запускать свое приложение реального времени. Ввод:
start(tg)
Создайте осциллограф, который будет отображен на целевом компьютере. Например, чтобы создать осциллограф с идентификатором 2 и именем объекта осциллографа sc2, введите:
sc2 = addscope(tg, 'file', 2)Никакое имя первоначально не присвоено FileName. После того, как вы запустите осциллограф, Simulink Real-Time™ присваивает имя для файла, чтобы получить данные сигнала. Это имя обычно состоит из имени объекта осциллографа, ScopeId и начинающихся букв от первого сигнала, добавленного к осциллографу.
sc2 = Simulink Real-Time Scope Application = xpcosc ScopeId = 2 Status = Interrupted Type = File NumSamples = 250 NumPrePostSamples = 0 Decimation = 1 TriggerMode = FreeRun TriggerSignal = -1 TriggerLevel = 0.000000 TriggerSlope = Either TriggerScope = 2 TriggerSample = 0 FileName = unset WriteMode = Lazy WriteSize = 512 AutoRestart = off DynamicFileName = off MaxWriteFileSize = 536870912 Signals = no Signals defined
Добавьте сигналы в объект scope. Например, чтобы добавить Integrator1 и Signal Generator, введите:
addsignal(sc2, [4,5])
sc2 =
Simulink Real-Time Scope
Application = xpcosc
ScopeId = 2
Status = Interrupted
Type = File
.
.
.
FileName = unset
WriteMode = Lazy
WriteSize = 512
AutoRestart = off
DynamicFileName = off
MaxWriteFileSize = 536870912
Signals = 4 : Integrator1
5 : Signal GeneratorЦелевой компьютер отображает следующие сообщения:
Scope: 2, signal 4 added Scope: 2, signal 5 added
После того, как вы добавляете сигналы в объект scope, осциллограф файла не получает значения сигналов, пока вы не запускаете осциллограф.
Прежде, чем запустить осциллограф, скопируйте ранее полученные данные в компьютер разработчика. Когда осциллограф файла запускается, перезаписи программного обеспечения ранее полученные данные в файлах шаблона имени или указанного имени. Частично перезаписанный файл или файл, который открыт, но оставлен незаписанный, теряют свое исходное содержимое.
Запустите осциллограф. Например, чтобы запуститься определите объем sc2, введите:
start(sc2)
Командное окно отображает список свойств объектов осциллографа. FileName присвоен имя файла по умолчанию, чтобы содержать данные сигнала для осциллографа файла. Это имя обычно состоит из имени объекта осциллографа, ScopeId и начинающихся букв от первого сигнала, добавленного к осциллографу.
Application= xpcosc
ScopeId = 2
Status = Pre-Acquiring
Type = File
.
.
.
FileName = c:\sc2Integ.dat
Mode = Lazy
WriteSize = 512
AutoRestart= off
DynamicFileName = off
MaxWriteFileSize = 536870912
Signals = 4 : Integrator1
5 : Signal GeneratorОстановите осциллограф. Ввод:
stop(sc2)
Остановите приложение реального времени. В Командном окне введите:
stop(tg)
SimulinkRealTime.fileSystem | SimulinkRealTime.utils.bytes2file | SimulinkRealTime.utils.getFileScopeData | plot