Операционные системы реального времени. Программно-аппаратный экспериментальный комплекс, в составе которого инструментальный компьютер, страница 11

Установка IDE Momentics была произведена на инструментальную машину под Windows. Установка ОС QNX была произведена на тот же компьютер на виртуальную машину.

3.1.2 Развертывание связи между инструментальной и целевой платформами

Настройка связи

1.  В QNX VMware Workstation

Edit ->Virtual Network Editor

Рис. 3 Настройка связи в виртуальной машине

2.  В QNX

Configure->Network->появляется окно TCP/IP Configuration

На вкладке Devices делаем такие настройки:

Рис. 4 Настройка связи в QNX


На вкладке Network делаем такие настройки:

Рис. 5 Настройка связи в QNX

Проверяем в QNX соединение:

Видим, что отправляются пакеты

Рис. 6 Проверка связи в QNX

Проверяем в Windows соединение:

Рис. 7 Проверка связи в Windows


В IDE Momentics:

Добавляем окно Target Navigator

Рис. 8 Настройка IDE Momentics

Подключаем QNX:

Щёлкаем по окну Target Navigator правой кнопкой, появляется окно. На рисунке показаны настройки.

Рис. 9 Настройка IDE Momentics

При правильном подключении в окне Target Navigator будут отображаться процессы, запущенные в QNX.

Рис. 10 Вид окна Target Navigator


  1. Разработка и исследование распределенного клиент-серверного приложения для решения задач управления (на основе построенной кросс-системы).

4.1  Выбрать алгоритм интерполяции, экстраполяции или аппроксимации для гипотетической системы управления.

Интерполяция — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.

Ступенчатая интерполяция заключается в сохранении величины выборки  в  пределах шага дискретизации Image.

2p6n1%20copy

4.2  Программно реализовать выбранный алгоритм.

Выбранный алгоритм был реализован функцией interpolate(…), к которой в клиент-серверном приложении будет обращаться сервер для обработки данных, присланных клиентом.

// функция интерполяции

void interpolate

(

int p_numb,       // Количество исходных точек

int i_numb,       // Требуемое количество точек после интерполяции

float* data,      // Буфер исходных данных

float* result     // Буфер результата

)

{

float time[50];               // Абсциссы исходных точек

float value[50];              // Ординаты исходных точек

float maxt,mint,step;         // Промежуточные переменные

float cur_time, count_time;

int cur_time_ind;

int i,j,k;

// Получение временных границ

maxt=data[0];

mint=data[0];

// Выделение данных

for (i=0; i<p_numb; i++)

{

time[i]=data[2*i];

value[i]=data[2*i+1];

if (time[i]>maxt) maxt=time[i];

if (time[i]<mint) mint=time[i];

}

// Получение шага интерполяции

step=(maxt-mint)/(i_numb-1);

// Расчёт значений интерполянта в искомых точках

for (k=0; k<i_numb; k++)

{

// Расчёт абсциссы точки

result[2*k]=mint+step*k;

//Расчет ординаты точки

count_time=mint+step*k;

cur_time_ind=0;

cur_time=time[0];

for (j=0; j<p_numb; j++) {

if (time[j]>cur_time && time[j]<=count_time) {

cur_time_ind=j;

cur_time=time[j];

}

}

result[2*k+1]=value[cur_time_ind];

}

return;

}

4.3. Разработка клиент-серверного приложения.

Клиент (interp_client.c) считывает информацию о доступных точках (количество, абсциссы и ординаты), а также требуемое количество точек из файла и пересылает эту информацию серверу.

Сервер обрабатывает точки в соответствии с алгоритмом и посылает клиенту ответ – рассчитанные точки (абсциссы и ординаты) в требуемом количестве.

Клиент, получив ответ, записывает данные в выходной файл.

Текст interp_client.c.

#include <stdio.h>

#include <errno.h>

#include <sys/iofunc.h>

#include <sys/dispatch.h>

#include <unistd.h>

int main( int argc, char **argv)

{

int   p_numb, i_numb;         // Количества исходных и требуемых точек