ArcticSEA — различия между версиями
Dneprov (обсуждение | вклад) (→Методы) |
Dneprov (обсуждение | вклад) (→Пример использования) |
||
Строка 160: | Строка 160: | ||
<div class="NavContent"> | <div class="NavContent"> | ||
<source lang="matlab"> | <source lang="matlab"> | ||
− | SMBV = CSMBV; | + | SMBV = CSMBV; |
− | Rec = CReceiver; | + | Rec = CReceiver; |
− | % | + | %соединение с SMBV |
− | [Stat] = SMBV.SetConnection('192.168.1.22',5025); | + | [Stat] = SMBV.SetConnection('192.168.1.22',5025); |
if (Stat == 0) | if (Stat == 0) | ||
− | error('Connection problem') | + | error('Connection problem') |
− | end | + | end |
+ | %сброс настроек SMBV в дефолтные, очистка лога ошибок | ||
+ | [Stat] = SMBV.Preset; | ||
+ | if (Stat == 0) | ||
+ | error('Error') | ||
+ | end | ||
+ | %запрос модели, серийного номера | ||
+ | [Stat, result] = SMBV.GetIDN; | ||
+ | if (Stat == 0) | ||
+ | error('Error') | ||
+ | end | ||
+ | disp(result); | ||
+ | %проверка системных ошибок | ||
+ | [status, result] = SMBV.SendQuery('SYST:SERR?'); | ||
+ | if (result(1) ~= '0' || status == 0 ) | ||
+ | disp (['*** Instrument error : ' result]); | ||
+ | return; | ||
+ | end | ||
+ | %начальные настройки эксперимента | ||
+ | StartLevel = -95; % стартовая мощность сигнала | ||
+ | %запуск имитации сигнала GPS | ||
+ | [Stat] = SMBV.SetGPS(6); | ||
+ | if (Stat == 0) | ||
+ | error('Error') | ||
+ | end | ||
+ | %установка стартовой мощности | ||
+ | [Stat] = SMBV.SetLevel(StartLevel); | ||
+ | if (Stat == 0) | ||
+ | error('Error') | ||
+ | end | ||
+ | [Stat] = SMBV.SetRFOutput('ON'); | ||
+ | if (Stat == 0) | ||
+ | error('Error') | ||
+ | end | ||
− | % | + | %Настройка соединения с приемником |
− | + | Rec.SerialConfig('COM6',115200); | |
− | if (Stat == 0) | + | %Соединение с приемником |
− | error(' | + | Stat = Rec.SerialConnect; |
− | end | + | if (Stat == 0) |
+ | error('Serial: connection problem') | ||
+ | end | ||
+ | %Перезагрузка приемника, запуск отсчета времени на даннй мощности | ||
+ | Rec.Reset; | ||
+ | pause(70); | ||
+ | tin_thislevel = tic; | ||
− | % | + | %Параметры эксперимента: шаг изменения мощности, ожидание на мощности |
− | + | LevelStep = 1; PauseOnLevel = 30; | |
− | + | HaveFix = 0; | |
− | + | k = 1; | |
− | + | RecIsDead5sec = 0; | |
− | + | RecOkOnLastStep = 0; | |
+ | Pow_arr = cell(1,1); | ||
+ | p = 1; | ||
+ | m = 0; | ||
− | + | %цикл эксперимента | |
− | + | while (1) | |
− | + | ||
− | + | Rec.GetSolutionStatus; | |
− | + | ||
− | + | if (Rec.FixType == 3) | |
− | + | RecOkOnLastStep = 1; | |
− | + | HaveFix = 1; | |
− | + | if (toc(tin_thislevel) > PauseOnLevel) | |
− | + | LastOkLevel = SMBV.Level; | |
− | + | Pow_arr{p,1} = [LastOkLevel 1]; | |
− | + | p = p + 1; | |
− | + | if (LastOkLevel <= -95 && LastOkLevel >= -118) | |
− | + | LevelStep = 8; | |
− | + | elseif (LastOkLevel == -119) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | %цикл эксперимента | + | |
− | while (1) | + | |
− | + | ||
− | Rec.GetSolutionStatus; | + | |
− | + | ||
− | if (Rec.FixType == 3) | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
LevelStep = 2; | LevelStep = 2; | ||
− | + | elseif (LastOkLevel <= -120 && LastOkLevel >= -135) | |
LevelStep = 0.5; | LevelStep = 0.5; | ||
− | + | end | |
− | + | Stat = SMBV.SetLevel(LastOkLevel - LevelStep); | |
− | + | if (Stat == 0) | |
+ | error('SMBV error') | ||
+ | end | ||
+ | tin_thislevel = tic; | ||
+ | end | ||
+ | elseif ((Rec.FixType == 1 || Rec.FixType == 2) && RecOkOnLastStep == 1 ) | ||
+ | DeathTime = tic; | ||
end | end | ||
− | + | ||
− | + | if ((Rec.FixType == 1 || Rec.FixType ==2) && HaveFix == 1 && RecOkOnLastStep == 0 ) | |
− | + | if ( toc(DeathTime) > 5 ) | |
− | + | RecIsDead5sec = 1; | |
− | + | else | |
− | if ( toc(DeathTime) > 5 ) | + | RecIsDead5sec = 0; |
− | RecIsDead5sec = 1; | + | end |
− | else | + | end |
− | RecIsDead5sec = 0; | + | |
− | end | + | if (Rec.FixType == 1 || Rec.FixType == 2) |
− | end | + | RecOkOnLastStep = 0; |
− | + | end | |
− | if (Rec.FixType == 1) | + | |
− | + | if (RecIsDead5sec == 1) | |
− | end | + | ResultLevel(k) = LastOkLevel; |
− | + | k = k + 1; | |
− | if (RecIsDead5sec == 1) | + | Pow_arr{p,1} = [(LastOkLevel - LevelStep) 0]; |
− | + | p = p + 1; | |
− | + | file = [num2str(m) 'MSHUpower.mat']; | |
− | + | save(file, 'Pow_arr'); | |
− | + | m = m + 1; | |
− | + | Rec.Reset; | |
− | + | SMBV.SetLevel(StartLevel); | |
− | + | HaveFix = 0; | |
− | + | RecOkOnLastStep = 0; | |
− | + | RecIsDead5sec = 0; | |
− | + | toc(DeathTime); | |
− | + | pause(70); | |
− | + | tin_thislevel = tic; | |
− | + | ||
− | + | end | |
− | end | + | |
− | + | end | |
</source> | </source> | ||
</div> | </div> |
Версия 13:57, 13 марта 2013
ArcticSEA (System for Experiment Automatization) - библиотека функций в виде совокупности matlab-скриптов, предназначенных для проведения автоматизированных экспериментов и испытаний навигационной аппаратуры с помощью лабораторного оборудования.
![]() |
Этой странице не хватает гламурной фотографии собранного стенда |
Содержание[убрать] |
Цель
Приборы Rohde & Schwarz позволяют достаточно просто управлять собой через локальную сеть. При этом некоторую сложность представляет огромное число специфичных команд управления, отвечающих стандарту SCPI (Standard Commands for Programmable Instruments). Цель создания данной библиотеки - написать классы - фасады, методы которых позволят выполнять необходимые действия с приборами без явного использования команд SCPI.
Состав библиотеки
На данный момент в состав библиотеки входят 3 класса для управления приборами и класс для общения с навигационным модулем.
Общие методы для всех классов управления приборами
Описание всех классов, сформированное в doxygen, можно посмотреть, запустив файл help.html в корне проекта
[показать]Общие методы классов управления приборами |
---|
Классы
Класс CFSV
Описание
Класс, созданный для управления анализатором спектра FSV.
На данный момент реализованы следующие возможности:
- Установка центральной частоты в режиме анализа спектра
- Установка полосы в режиме анализа спектра
- Измерение мощности сигнала в заданной полосе
Методы
[показать]Методы |
---|
Класс CSMBV
Описание
Класс, созданный для управления генератором сигналов SMBV.
На данный момент реализованы следующие возможности:
- Установка частоты сигнала
- Установка мощности сигнала
- Имитация сигналов заданного числа спутников(GPS, диапазон L1, расположение - Москва, статика, мощность всех сигналов одинакова)
Методы
[показать]Методы |
---|
Класс CRSC
Описание
Класс, созданный для управления аттенюатором RSC.
На данный момент реализованы следующие возможности:
- Установка заданного ослабления
Методы
[показать] Методы |
---|
Класс CReceiver
Описание
Класс, созданный для работы с навигационными модулями.
На данный момент реализованы следующие возможности:
- Рестарт приемника (для GEOS - 3)
- Получение статуса решения и сохранение его в переменную класса FixType (для GEOS - 3)
- Чтение данных, посылаемых приемником по последовательному порту
Методы
[показать]Методы |
---|
Пример использования
Для проверки созданных классов был проведен эксперимент по определению чувствительности модуля GEOS - 3 в режиме слежения.
Ссылки
Ссылкана репозиторий