ArcticSEA — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(Ссылки)
 
(не показаны 28 промежуточных версий 1 участника)
Строка 9: Строка 9:
  
 
== Общие методы для всех классов управления приборами  ==
 
== Общие методы для всех классов управления приборами  ==
 
+
Описание всех классов, сформированное в doxygen, можно посмотреть, запустив файл help.html в корне [https://code.google.com/p/arcticsea проекта]
 
{|table class="wikitable collapsible collapsed"
 
{|table class="wikitable collapsible collapsed"
 
! colspan ="3"|Общие методы классов управления приборами  
 
! colspan ="3"|Общие методы классов управления приборами  
Строка 16: Строка 16:
 
! Входные аргументы
 
! Входные аргументы
 
! Возвращает
 
! Возвращает
 +
 
|-  
 
|-  
 
|'''SetConnection(IP, port)'''<br />Установка соединения с прибором <br />||IP, string - адрес устройства в сети<br />port - порт, для приборов Rohde & Schwarz port = 5025||1, если соединение установлено успешно, иначе 0
 
|'''SetConnection(IP, port)'''<br />Установка соединения с прибором <br />||IP, string - адрес устройства в сети<br />port - порт, для приборов Rohde & Schwarz port = 5025||1, если соединение установлено успешно, иначе 0
 +
 
|-
 
|-
|'''CloseConnection'''<br />
+
|'''CloseConnection'''<br />Закрытие соединения с прибором <br />|| --- ||1, если соединение закрыто успешно, иначе 0
Закрытие соединения с прибором <br />
+
 
''Возвращает:'' <br />
+
1, если соединение закрыто успешно, иначе 0
+
 
|-
 
|-
|'''SendCommand(strCommand)'''<br />
+
|'''SendCommand(strCommand)'''<br />Отправка команды в формате SCPI (т.е. как в документации на прибор) <br />||strCommand, string - команда в формате SCPI<br />||1, если команда отправлена успешно, иначе 0. Если отправленная команда не может быть выполнена прибором (например, прибор не поддерживает заданную частоту), сообщение от прибора будет выведено в командную строку.
Отправка команды в формате SCPI (т.е. как в документации на прибор) <br />
+
''Входные аргументы:''<br />
+
strCommand, string - команда в формате SCPI<br />
+
''Возвращает:'' <br />
+
1, если команда отправлена успешно, иначе 0. Если отправленная команда не может быть выполнена прибором (например, прибор не поддерживает заданную частоту), сообщение от прибора будет выведено в командную строку.
+
|}
+
  
*'''SendQuery(strCommand)'''<br />
+
|-
Отправка запроса в формате SCPI<br />
+
|'''SendQuery(strCommand)'''<br />Отправка запроса в формате SCPI<br />||
''Входные аргументы:''<br />
+
 
strCommand, string - запрос в формате SCPI, заканчивается вопросительным знаком<br />
 
strCommand, string - запрос в формате SCPI, заканчивается вопросительным знаком<br />
''Возвращает:'' [Status, Result] <br />
+
||[Status, Result] <br />
 
Status = 1, если запрос послан успешно, иначе 0. Result, string - ответ прибора на посланный запрос.
 
Status = 1, если запрос послан успешно, иначе 0. Result, string - ответ прибора на посланный запрос.
  
 +
|-
 +
|'''GetIDN'''<br />Запрос информации о модели прибора, серийном номере<br />|| --- ||[Status, IDN] <br />Status = 1, если операция успешна, иначе 0. IDN, string - информация о модели прибора, серийном номере.
  
*'''GetIDN'''<br />
+
|-
Запрос информации о модели прибора, серийном номере<br />
+
|'''Preset'''<br />Установка настроек прибора "по умолчанию", очистка лога ошибок<br />|| --- ||1, если операция успешна, иначе 0
''Возвращает:'' [Status, IDN] <br />
+
Status = 1, если операция успешна, иначе 0. IDN, string - информация о модели прибора, серийном номере.
+
 
+
 
+
*'''Preset'''<br />
+
Установка настроек прибора "по умолчанию", очистка лога ошибок<br />
+
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
 
+
 
+
*'''QueryError'''<br />
+
Запрос ошибок<br />
+
''Возвращает:''<br />
+
1, если есть ошибки, сообщение прибора будет выведено в командную строку. 0 - ошибок нет.
+
  
 +
|-
 +
|'''QueryError'''<br />Запрос ошибок<br />|| --- ||1, если есть ошибки, сообщение прибора будет выведено в командную строку. 0 - ошибок нет.
 +
|}
  
 
== Классы  ==
 
== Классы  ==
Строка 67: Строка 51:
  
 
==== Методы ====
 
==== Методы ====
*'''SetCenterFreq(Freq)'''<br />
+
{|table class="wikitable collapsible collapsed"
Установка центральной частоты в режиме анализа спектра<br />
+
! colspan ="3"|Методы
''Входные аргументы:''<br />
+
|-
Freq - центральная частота, может быть как string 10GHz, так и число 10E9<br />
+
! Метод
''Возвращает:''<br />
+
! Входные аргументы
1, если операция успешна, иначе 0
+
! Возвращает
  
 +
|-
 +
|'''SetCenterFreq(Freq)'''<br />Установка центральной частоты в режиме анализа спектра<br />||Freq - центральная частота, может быть как string 10GHz, так и число 10E9<br />||1, если операция успешна, иначе 0
  
*'''SetSpan(Span)'''<br />
+
|-
Установка полосы в режиме анализа спектра<br />
+
|'''SetSpan(Span)'''<br />Установка полосы в режиме анализа спектра<br />||Span - полоса, может быть как string 10MHz, так и число 10E6<br />||1, если операция успешна, иначе 0
''Входные аргументы:''<br />
+
Span - полоса, может быть как string 10MHz, так и число 10E6<br />
+
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
 
+
 
+
*'''PowerMeasure(Bandwidth)'''<br />
+
Измерение мощности сигнала в заданной полосе<br />
+
''Входные аргументы:''<br />
+
Bandwidth - полоса измерения, может быть как string 10MHz, так и число 10E6<br />
+
''Возвращает:'' [Status, measure]<br />
+
Status = 1, если операция успешна, иначе 0. measure - измеренная мощность, дБм.
+
  
 +
|-
 +
|'''PowerMeasure(Bandwidth)'''<br />Измерение мощности сигнала в заданной полосе<br />||Bandwidth - полоса измерения, может быть как string 10MHz, так и число 10E6<br />||[Status, measure]<br />Status = 1, если операция успешна, иначе 0. measure - измеренная мощность, дБм.
 +
|}
  
 
=== Класс CSMBV ===
 
=== Класс CSMBV ===
Строка 99: Строка 76:
  
 
==== Методы ====
 
==== Методы ====
*'''SetLevel(Level)'''<br />
 
Установка мощности сигнала<br />
 
''Входные аргументы:''<br />
 
Level - мощность сигнала, дБм<br />
 
''Возвращает:''<br />
 
1, если операция успешна, иначе 0
 
  
 +
{|table class="wikitable collapsible collapsed"
 +
! colspan ="3"|Методы
 +
|-
 +
! Метод
 +
! Входные аргументы
 +
! Возвращает
  
*'''SetFreq(Freq)'''<br />
+
|-
Установка частоты сигнала<br />
+
|'''SetLevel(Level)'''<br />Установка мощности сигнала<br />||Level - мощность сигнала, дБм<br />||1, если операция успешна, иначе 0
''Входные аргументы:''<br />
+
Freq - частота сигнала, может быть как string 10MHz, так и число 10E6<br />
+
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
  
  
*'''SetRFOutput(State)'''<br />
+
|-
Включение/выключение RF выхода<br />
+
|'''SetFreq(Freq)'''<br />Установка частоты сигнала<br />||Freq - частота сигнала, может быть как string 10MHz, так и число 10E6<br />||1, если операция успешна, иначе 0
''Входные аргументы:''<br />
+
State, string - ON/OFF<br />
+
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
  
 +
|-
 +
|'''SetRFOutput(State)'''<br />Включение/выключение RF выхода<br />||State, string - ON/OFF<br />||1, если операция успешна, иначе 0
  
*'''SetGPS(SatNumber)'''<br />
+
|-
Имитация сигналов заданного числа спутников(GPS, диапазон L1, расположение - Москва, статика, мощность всех сигналов одинакова)<br />
+
|'''SetGPS(SatNumber)'''<br />Имитация сигналов заданного числа спутников(GPS, диапазон L1, расположение - Москва, статика, мощность всех сигналов одинакова)<br />||SatNumber - количество спутников<br />||1, если операция успешна, иначе 0
''Входные аргументы:''<br />
+
|}
SatNumber - количество спутников<br />
+
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
 
+
  
 
=== Класс CRSC ===
 
=== Класс CRSC ===
Строка 137: Строка 104:
  
 
==== Методы ====
 
==== Методы ====
*'''SetAttenuation(ATT)'''<br />
 
Установка заданного ослабления<br />
 
''Входные аргументы:''<br />
 
ATT - ослабление, дБ<br />
 
''Возвращает:''<br />
 
1, если операция успешна, иначе 0
 
  
 +
{|table class="wikitable collapsible collapsed"
 +
! colspan ="3"| Методы
 +
|-
 +
! Метод
 +
! Входные аргументы
 +
! Возвращает
  
 +
|-
 +
|'''SetAttenuation(ATT)'''<br />Установка заданного ослабления<br />||ATT - ослабление, дБ<br />||1, если операция успешна, иначе 0
 +
|}
  
 
=== Класс CReceiver ===
 
=== Класс CReceiver ===
Строка 154: Строка 124:
  
 
==== Методы ====
 
==== Методы ====
*'''SerialConfig(COM, Baud)'''<br />
 
Настройка соединения<br />
 
''Входные аргументы:''<br />
 
COM,string - имя порта<br />
 
Baud - скорость передачи данных<br />
 
  
 +
{|table class="wikitable collapsible collapsed"
 +
! colspan ="3"|Методы
 +
|-
 +
! Метод
 +
! Входные аргументы
 +
! Возвращает
  
*'''SerialConnect'''<br />
+
|-
Соединение с приемником<br />
+
|'''SerialConfig(COM, Baud)'''<br />Настройка соединения<br />||COM,string - имя порта<br />Baud - скорость передачи данных<br />|| ---
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
  
 +
|-
 +
|'''SerialConnect'''<br />Соединение с приемником<br />|| --- ||1, если операция успешна, иначе 0
  
*'''RecieveString'''<br />
+
|-
Однократное чтение данных<br />
+
|'''RecieveString'''<br />Однократное чтение данных<br />|| --- ||[Answer]<br />строка данных
''Возвращает:'' [Answer]<br />
+
строка данных
+
  
 +
|-
 +
|'''SerialClose'''<br />Закрытие соединения<br />|| --- ||1, если операция успешна, иначе 0
  
*'''SerialClose'''<br />
+
|-
Закрытие соединения<br />
+
|'''Reset'''<br />Перезагрузка приемника<br />|| --- || ---
''Возвращает:''<br />
+
1, если операция успешна, иначе 0
+
  
 +
|-
 +
|'''GetSolutionStatus''' <br />Получение статуса решения и сохранение его в переменную класса FixType (для GEOS - 3)|| --- || ---
 +
|}
  
*'''Reset'''<br />
+
== Пример использования ==
Перезагрузка приемника<br />
+
  
 +
Для проверки созданных классов был проведен эксперимент по определению чувствительности модуля GEOS - 3 в режиме слежения.
  
*'''GetSolutionStatus''' <br />
 
Получение статуса решения и сохранение его в переменную класса FixType (для GEOS - 3)
 
  
 +
<div class="NavFrame collapsed">
 +
  <div class="NavHead">Листинг matlab</div>
 +
  <div class="NavContent">
 +
<source lang="matlab">
 +
SMBV = CSMBV;
 +
Rec = CReceiver;
  
== Пример использования ==
+
%соединение с SMBV
 +
[Stat] = SMBV.SetConnection('192.168.1.22',5025);
 +
if (Stat == 0)
 +
    error('Connection problem')
 +
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);
 +
%Соединение с приемником
 +
Stat = Rec.SerialConnect;
 +
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)
 +
                LevelStep = 2;
 +
            elseif (LastOkLevel <= -120 && LastOkLevel >= -135)
 +
                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
 +
 
 +
    if ((Rec.FixType == 1 || Rec.FixType ==2) && HaveFix == 1 && RecOkOnLastStep == 0 )
 +
    if ( toc(DeathTime) > 5 )
 +
        RecIsDead5sec = 1;
 +
    else
 +
        RecIsDead5sec = 0;
 +
    end
 +
    end
 +
   
 +
    if (Rec.FixType == 1 || Rec.FixType == 2)
 +
        RecOkOnLastStep = 0;
 +
    end
 +
   
 +
    if (RecIsDead5sec == 1)
 +
        ResultLevel(k) = LastOkLevel;
 +
        k = k + 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
 +
</source>
 +
</div>
 +
</div>
  
 
== Ссылки ==
 
== Ссылки ==
  
Ссылка на репозиторий
+
 
 +
[https://github.com/Korogodin/arcticsea Ссылка]на репозиторий

Текущая версия на 15:03, 18 октября 2021

ArcticSEA (System for Experiment Automatization) - библиотека функций в виде совокупности matlab-скриптов, предназначенных для проведения автоматизированных экспериментов и испытаний навигационной аппаратуры с помощью лабораторного оборудования.

Blue check.png Этой странице не хватает гламурной фотографии собранного стенда


Содержание

[править] Цель

Приборы Rohde & Schwarz позволяют достаточно просто управлять собой через локальную сеть. При этом некоторую сложность представляет огромное число специфичных команд управления, отвечающих стандарту SCPI (Standard Commands for Programmable Instruments). Цель создания данной библиотеки - написать классы - фасады, методы которых позволят выполнять необходимые действия с приборами без явного использования команд SCPI.


[править] Состав библиотеки

На данный момент в состав библиотеки входят 3 класса для управления приборами и класс для общения с навигационным модулем.

[править] Общие методы для всех классов управления приборами

Описание всех классов, сформированное в doxygen, можно посмотреть, запустив файл help.html в корне проекта

[править] Классы

[править] Класс CFSV

[править] Описание

Класс, созданный для управления анализатором спектра FSV.
На данный момент реализованы следующие возможности:

  1. Установка центральной частоты в режиме анализа спектра
  2. Установка полосы в режиме анализа спектра
  3. Измерение мощности сигнала в заданной полосе

[править] Методы

[править] Класс CSMBV

[править] Описание

Класс, созданный для управления генератором сигналов SMBV.
На данный момент реализованы следующие возможности:

  1. Установка частоты сигнала
  2. Установка мощности сигнала
  3. Имитация сигналов заданного числа спутников(GPS, диапазон L1, расположение - Москва, статика, мощность всех сигналов одинакова)

[править] Методы

[править] Класс CRSC

[править] Описание

Класс, созданный для управления аттенюатором RSC.
На данный момент реализованы следующие возможности:

  1. Установка заданного ослабления

[править] Методы

[править] Класс CReceiver

[править] Описание

Класс, созданный для работы с навигационными модулями.
На данный момент реализованы следующие возможности:

  1. Рестарт приемника (для GEOS - 3)
  2. Получение статуса решения и сохранение его в переменную класса FixType (для GEOS - 3)
  3. Чтение данных, посылаемых приемником по последовательному порту

[править] Методы

[править] Пример использования

Для проверки созданных классов был проведен эксперимент по определению чувствительности модуля GEOS - 3 в режиме слежения.


[править] Ссылки

Ссылкана репозиторий

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты