оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации
Свободно распространяемое бесплатное ПО компьютерного моделирования

Система моделирования динамических систем Simulink

Модель гибридной системы

И.В.Черных

  1. Simulink-функции

Модель гибридной системы (комбинации непрерывной и дискретной системы) дана в файле mixedm.m . Рассматриваемая S-функция моделирует систему, состоящую из последовательно включенных интегратора (1/s) и блока задержки (1/z). Особенность S-функции для гибридной системы в том, что вызов callback-методов для расчета дискретной части системы выполняется в те же моменты времени, что и для непрерывной ее части, поэтому пользователь, при написании S-функции, должен предусмотреть проверку правильности вызова callback-методов рассчитывающих дискретную часть системы.
Ниже приведен текст этой S-функции.

S-функция dsfunc:

function [sys,x0,str,ts] = mixedm(t,x,u,flag)

% MIXEDM Пример S-функции. S-функция моделирует систему, состоящую из

% последовательно включенных интегратора (1/s) и блока задержки (1/z).

%

% Шаблон для создания S-функции - файл sfuntmpl.m .

%

% Copyright 1990-2001 The MathWorks, Inc.

% $Revision: 1.27 $

% Авторский перевод комментариев: Черных И.В.

% Шаг модельного времени и смещение для дискретной части системы:

dperiod = 1;

doffset = 0;

switch flag % В зависимости от значения переменной flag происходит

% вызов того или иного метода:

 

%===============%

% Инициализация %

%===============%

case 0

[sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset);

%====================%

% Расчет производных %

%====================%

case 1

sys=mdlDerivatives(t,x,u);

%============================================================%

% Расчет значений вектора состояний дискретной части системы %

%============================================================%

case 2,

sys=mdlUpdate(t,x,u,dperiod,doffset);

%===========================================%

% Расчет значений вектора выходных сигналов %

%===========================================%

case 3

sys=mdlOutputs(t,x,u,doffset,dperiod);

%====================%

% Завершение расчета %

%====================%

case 9

sys = [];

%======================================%

% Неизвестное значение переменной flag %

%======================================%

otherwise

error(['unhandled flag = ',num2str(flag)]);

end

% Окончание mixedm

%===============================================================%

% mdlInitializeSizes %

% Функция инициализации %

% Расчет начальных условий, значений вектора модельного времени,%

% размерности матриц %

%===============================================================%

function [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset)

sizes = simsizes;

sizes.NumContStates = 1; % Число непрерывных переменных состояния.

sizes.NumDiscStates = 1; % Число дискретных переменных состояния.

sizes.NumOutputs = 1; % Число выходных переменных (размерность выходного

% вектора).

sizes.NumInputs = 1; % Число входных переменных (размерность входного

% вектора).

sizes.DirFeedthrough = 0; % Прямой проход. Прохода входного сигнала на выход

% нет.

sizes.NumSampleTimes = 2; % Размерность вектора шагов модельного времени.

% Шаги модельного времени задаются для непрерывной

% и для дискретной частей системы.

sys = simsizes(sizes);

x0 = zeros(2,1); % Задание вектора начальных значений переменных

% состояния.

% Начальные условия нулевые

str = []; % Параметр заразервирован для будущего

% использования.

ts = [0 0]; % Шаг модельного времени для непрерывной части

% системы.

dperiod doffset]; % Шаг модельного времени для дискретной части

% системы.

% Окончание mdlInitializeSizes

%

%========================================================================%

% mdlDerivatives %

% Функция для расчета значений производных вектора состояния непрерывной %

% части системы %

%========================================================================%

function sys=mdlDerivatives(t,x,u)

sys = u;

% Окончание mdlDerivatives

 

%=========================================================================%

% mdlUpdate %

% Функция для расчета значений вектора состояния дискретной части системы %

%=========================================================================%

%

function sys=mdlUpdate(t,x,u,dperiod,doffset)

% Расчет значения переменной состояния дискретной части системы

% выполняется в соостветствии с дискретным шагом расчета

% (погрешность по времени выбрана равной 1e-15).

if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-15

sys = x(1);

else

sys = [];

end

% Окончание mdlUpdate

%

%========================================================%

% mdlOutputs %

% Функция для расчета значений вектора выходных сигналов %

%========================================================%

%

function sys=mdlOutputs(t,x,u,doffset,dperiod)

 

% Расчет значения выходного сигнала системы

% выполняется в соостветствии с дискретным шагом расчета

% (погрешность по времени выбрана равной 1e-15).

% Если условие, заданное оператором if истинно, то выходной сигнал блока

% изменяется. В противном случае выходной сигнал остается равным значению

% на предыдущем шаге.

%

if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-15

sys = x(2);

else

sys = [];

end

% Окончание mdlOutputs

Пример модели с S-функцией mixedm приведен на рис.16.7.

Рис. 16.7 Модель с S-функцией mixedm

16.7.6. Непрерывная модель электродвигателя постоянного тока независимого возбуждения

В данном параграфе на примере двигателя постоянного тока независимого возбуждения (ДПТ НВ) рассмотрим создание S-функции для модели реального объекта.

16.7.6.1. Математическое описание ДПТ НВ

Двигатель постоянного тока независимого возбуждения (рис. 16.9), описывается следующей системой дифференциальных и алгебраических уравнений в абсолютных единицах:

(1)

(2)

(3)

(4)

где

u - напряжение на якорной обмотке двигателя,

e - электродвижущая сила (ЭДС) якоря,

i - ток якоря,

Ф - поток, создаваемый обмоткой возбуждения,

M - электромагнитный момент двигателя,

MС - момент сопротивления движению,

  - скорость вращения вала двигателя,

R - активное сопротивление якорной цепи,

L - индуктивность якорной цепи,

J - суммарный момент инерции якоря и нагрузки,

С - коэффициент связи между скоростью и ЭДС,

СМ - коэффициент связи между током якоря и электромагнитным моментом.

Рис. 16.9 Двигатель постоянного тока с независимым возбуждением.

С точки зрения будущей модели, входными воздействиями являются напряжения якоря u и момент сопротивления движению MС , выходными переменными - электромагнитный момент двигателя M и скорость вращения вала двигателя , а переменными состояния - переменные стоящие под знаком производной: ток якоря i и скорость вращения вала двигателя . Остальные переменные, входящие в состав уравнений (1) - (4) являются параметрами, численные значения которых, необходимо будет задавать при проведении расчетов.

Преобразуем дифференциальные уравнения (1) и (2) к явной форме Коши и выполним подстановку. Система уравнений примет вид:

(5)

(6)

(7)

(8)

Последнее уравнение есть отражение того факта, что переменная состояния является также и выходной переменной.

Введем "машинные" переменные. Входные переменные:

, . .

Выходные переменные:

, . ,

Переменные состояния:

, .

Тогда уравнения (5) - (8) примут вид:

(9)

(10)

(11)

(12)

Перепишем систему уравнений в матричной форме:

(13)

(14)

где

,

,

.

Отметим, что в получившейся системе уравнений входные переменные не участвуют в формировании выходных переменных (матрица обхода D - отсутствует) и, следовательно, параметр sizes.DirFeedthrough, определяемый при инициализации S-функции должен быть задан равным нулю.

16.7.6.2. Пример S-функции для ДПТ НВ

Для создания S-функции для ДПТ НВ за основу взят файл примера модели непрерывной системы csfunc.m . Принципиальные отличия нового файла от образца сводятся к следующему:

  1. Для расчета матриц уравнений пространства состояния A, В и С используются параметры передаваемые в S-функцию через окно диалога блока S-function. Эти параметры (L,R,J,Cm,Cw,Fi) записываются в конце списка параметров в заголовке S-функции : function [sys,x0,str,ts] = dpt_sfunc_1(t,x,u,flag,L,R,J,Cm,Cw,Fi)
  2. Для исключения одинаковых (повторяющихся) вычислений расчет матриц A, В и С выполняется в методе mdlInitializeSizes. Для этого параметры блока (L,R,J,Cm,Cw,Fi) передаются в метод mdlInitializeSizes через его заголовок: [sys,x0,str,ts] = mdlInitializeSizes(L,R,J,Cm,Cw,Fi) Поскольку инициализация модели происходит лишь один раз, то и расчет матриц A, В и С будет выполнен также один раз, что значительно повысит скорость моделирования.
  3. Передача рассчитанных в mdlInitializeSizes матриц выполняется с помощью глобальных переменных. Для этого объявления вида: global A B C; выполнены в теле S-функции, методе mdlInitializeSizes (где выполняется расчет этих матриц), а также методах mdlDerivatives и mdlOutputs (где эти матрицы используются для расчетов).
  4. Поскольку в уравнения пространства-состояния матрица D отсутствует (входные переменные не участвуют в формировании выходных переменных), то параметр sizes.DirFeedthrough в методе mdlInitializeSizes задан равным нулю.

Ниже приводится текст S-функции dpt_sfunc_1 (файл dpt_sfunc_1.m):

function [sys,x0,str,ts] = dpt_sfunc_1(t,x,u,flag,L,R,J,Cm,Cw,Fi)

% DPT_SFUNC_1 Пример S-функции для моделирования двигателя постоянного тока

% независимого возбуждения.

%

% В примере выполняется моделирование с помощью уравнений

% пространства-состояния:

% x' = Ax + Bu

% y = Cx + Du

%

% Copyright 2002, Chernykh ILya

% $Revision: 1.8

% Автор: Черных И.В.

%

% Параметры S-функции, передаваемые через окно диалога блока S-function:

%

% L - Индуктивность цепи якоря

% R - Активное сопротивление цепи якоря

% J - Момент инерции

% Cm - Коэффициент связи между моментом и током

% Cw - Коэффициент связи между потоком и скоростью вращения вала

% Fi - Поток, создаваемый обмоткой возбуждения

%

global A B C; % Объявление глобальными переменных, необходимых для

% расчетов внутри функций mdlDerivatives и mdlOutputs .

% Сами матрицы расчитываются в методе mdlInitializeSizes .

switch flag, % В зависимости от значения переменной flag происходит

% вызов того или иного метода:

%===============%

% Инициализация %

%===============%

case 0,

[sys,x0,str,ts]=mdlInitializeSizes(L,R,J,Cm,Cw,Fi);

 

%====================%

% Расчет производных %

%====================%

case 1,

sys=mdlDerivatives(t,x,u);

 

%===========================================%

% Расчет значений вектора выходных сигналов %

%===========================================%

case 3,

sys=mdlOutputs(t,x,u);

 

%=========================================%

% Неиcпользуемые значения переменной flag %

%=========================================%

case { 2, 4, 9 },

sys = [];

 

%======================================%

% Неизвестное значение переменной flag %

%======================================%

otherwise

error(['Unhandled flag = ',num2str(flag)]);

end

% Окончание dpt_sfunc_1

 

%===============================================================%

% mdlInitializeSizes %

% Функция инициализации %

% Расчет начальных условий, значений вектора шагов модельного %

% времени,размерности матриц %

%===============================================================%

function [sys,x0,str,ts]=mdlInitializeSizes(L,R,J,Cm,Cw,Fi)

 

sizes = simsizes;

sizes.NumContStates = 2; % Число непрерывных переменных состояния

% В данном случае этот параметр равен 2

% (ток якоря и скорость вращения вала).

sizes.NumDiscStates = 0; % Число дискретных переменных состояния

% В данном случае этот параметр равен 0,

% поскольку модель непрерывная.

sizes.NumOutputs = 2; % Число выходных переменных (размерность выходного

% вектора). В данном случае этот параметр равен 2

% (скорость вращения и момент на валу).

sizes.NumInputs = 2; % Число входных переменных (размерность входного

% вектора). В данном случае этот параметр равен 2

% (напряжение на обмотке якоря и момент

% сопротивления).

sizes.DirFeedthrough = 0; % Прямой проход. Значение параметра равно нулю,

% поскольку матрица обхода D - отсутствует (входные

% переменные не участвуют в формировании выходных

% переменных).

sizes.NumSampleTimes = 1; % Размерность вектора модельного времени.

sys = simsizes(sizes);

x0 = zeros(2,1); % Задание вектора начальных значений переменных

% состояния. Начальные условия нулевые.

str = []; % Зарезервированный параметр

ts = [0 0]; % Матрица из двух колонок, задающая шаг модельного

% времени и смещение.

% Далее в функцию mdlInitializeSizes добавлены операторы для

% вычисления матриц A, B и C уравнений пространства состояния

% модели двигателя постоянного тока

global A B C; % Объявление глобальными переменных, необходимых для

% расчетов внутри функций mdlDerivatives и mdlOutputs.

% Расчет матриц А,В и С:

%

A=[-R/L -Cw*Fi/L

Cm*Fi/J 0 ];

%

B=[1/L 0

0 -1/J];

%

C=[Cm*Fi 0

0 1];

% Окончание mdlInitializeSizes

%========================================================================%

% mdlDerivatives %

% Функция для расчета значений производных вектора состояния непрерывной %

% части системы %

%========================================================================%

function sys=mdlDerivatives(t,x,u)

%

global A B; % Объявление глобальными переменных, необходимых для

% расчетов внутри метода.

sys = A*x + B*u;

% Окончание mdlDerivatives

%========================================================%

% mdlOutputs %

% Функция для расчета значений вектора выходных сигналов %

%========================================================%

function sys=mdlOutputs(t,x,u)

global C; % Объявление глобальными переменных, необходимых для

% расчетов внутри метода.

sys = C*x;

% Окончание mdlOutputs

На рис.16.10 показаны модели двигателя постоянного тока на базе S-функции и с использованием стандартных блоков. Результаты расчета для обеих моделей идентичны. Окно диалога блока S-function изображено на рис. 16.11.

Рис. 16.10 Модели ДПТ НВ

Рис. 16.11 Окно диалога блока S-function

16.8. Создание S-функций на языке C с помощью S-Function Builder

Инструментарий Simulink предоставляет пользователю два способа создания S-функций на языке C: с помощью автоматического построителя S-Function Builder и вручную, с использованием шаблона (аналогично созданию S-функций на языке MATLAB). И хотя наибольшими возможностями обладает именно второй способ, первый способ прост и наименее трудоемок, и, поэтому именно с помощью S-Function Builder пользователь может легко и быстро создать нужную ему S-функцию. При этом как во втором, так и в первом случаях S-функция будет создана в виде исполняемого dll-файла, что обеспечивает повышенное быстродействие этой функции.

Создание S-функции рассмотрим на примере двигателя постоянного тока независимого возбуждения. Его математическое описание дано в п. 16.7.6.1. Поскольку в стандарте языка C отсутствуют матричные операции, то уравнения (9) - (12) перепишем в обычной форме:

(15)

(16)

(17)

(18)

Значения элементов матриц даны в п. 16.7.6.1.

S-Function Builder оформлен в виде обычного блока Simulink и находится в библиотеке Function&Tables (функции и таблицы). Пиктограмма блока показана на рис.16.12.


Рис. 16.12 Пиктограмма блока S-Function Builder

Двойной щелчок на пиктограмме открывает окно S - Function Builder . Окно S - Function Builder (см. рис. 16.13) содержит панель параметров ( Parameters), в которой находится графа для ввода имени S -функции ( S - function name ) и графа для ввода начальных значений параметров, передаваемых через окно диалога блока S - function ( S - function parameters ). Также на этой панели находится кнопка Build, предназначенная для запуска процесса компиляции S -функции . В нижней части окна S - Function Builder находятся кнопки Help (вызов справки) и Close / Cancel (закрыть окно).

Среднюю часть окна занимают шесть вкладок, предназначенных для задания свойств S -функции

и фрагментов ее кода:

1. Initialization - Инициализация. На вкладке Initialization задаются следующие свойства S -функции:

Окно S-Function Builder с открытой вкладкой Ininialization показано на рис.16.13. Для рассматриваемого примера число входных переменных равно двум (напряжение на обмотке якоря и момент сопротивления). Число выходных переменных равно двум (момент и скорость). Количество переменных состояния также равно двум (ток якоря и скорость). Число параметров S-функции, передаваемых через окно диалога равно 6 (см. п. 16.7.6.2), шаг модельного времени - наследуемый, число дискретных переменных состояния - 0, начальные значения дискретных и непрерывных переменных состояния нулевые.


Рис. 16.13 Окно S-Function Builder (вкладка Ininialization)

2. Libraries - Библиотеки. На вкладке имеется три окна для ввода фрагментов С-кода:

Окно S - Function Builder с открытой вкладкой Libraries показано на рис. 16.14.


Рис. 16.14 Окно S-Function Builder ( вкладка Libraries)

3. Outputs - Выходы. Вкладка содержит текстовое окно, предназначенное для ввода выражений расчета выходных переменных. В расчетных выражениях можно использовать следующие переменные (не объявляя их специально):

На вкладке имеется флажок для установки параметра Inputs are needed in the output function ( direct feedthrough ) - использование входных сигналов для расчета выходных (прямой проход).

Текст автоматически генерируемого метода mdl Outputs , приведен ниже:

void sfun_Outputs_wrapper(const real_T *u,

real_T *y,

const real_T *xD, /* optional */

const real_T *xC, /* optional */

const real_T *param0, /* optional */

int_T p_width0 /* optional */

real_T *param1 /* optional */

int_t p_width1 /* optional */

int_T y_width, /* optional */

int_T u_width) /* optional */

{

/* Место для ввода расчетного кода */

} ,

где sfun - имя S -функции.

Окно S - Function Builder с открытой вкладкой Output s показано на рис. 16.15.


Рис. 16.15 Окно S-Function Builder (вкладка Outputs)

В примере на рис. 16.15 в первой строке объявляются переменные - параметры электродвигателя, и этим переменным присваиваются значения параметров передаваемых в S -функцию через окно диалога. Во второй строке объявляются и вычисляются переменные COO и С11, входящие в уравнения (17), (18). В третьей и четвертой строках записаны выражения для расчета выходных сигналов в соответствии с уравнениями (17) и (18). Параметр Inputs are needed in the output function ( direct feedthrough ) не установлен, поскольку в выражениях для расчета выходных сигналов отсутствуют входные. После генерации С-кода в тексте S-функции появится код, введенный в окне вкладки Outputs .

4. Continuous Derivatives - Производные непрерывных переменных состояния. Вкладка содержит текстовое окно, предназначенное для ввода выражений расчета производных непрерывных переменных состояния. В расчетных выражениях можно использовать те же переменные, что и на вкладке Outputs , за исключением дискретных переменных состояния xD . Сами производные обозначаются как dx [0], dx [1], dx [2] и т.п.

Текст автоматически генерируемого метода mdl Derivatives , приведен ниже:

void sfun_Derivatives_wrapper(const real_T *u,

const real_T *y,

real_T *dx,

real_T *xC,

const real_T *param0, /* optional */

int_T p_width0, /* optional */

real_T *param1,/* optional */

int_T p_width1, /* optional */

int_T y_width, /* optional */

int_T u_width) /* optional */

{

/* Место для ввода расчетного кода */

}

Окно S-Function Builder с открытой вкладкой Continuous Derivatives показано на рис . 16.15.


Рис . 16.16 Окно S-Function Builder ( вкладка Continuous Derivatives )

В примере на рис. 16.16 в первых двух строках объявляются переменные - параметры электродвигателя, и этим переменным присваиваются значения параметров передаваемых в S -функцию через окно диалога. В следующих двух строках объявляются и вычисляются переменные AOO B 11 , входящие в уравнения (15), (16). В последних двух строках записаны выражения для расчета производных непрерывных переменных состояния в соответствии с уравнениями (15) и (16).

5. Discrete Update - Расчет дискретных переменных состояния. В текстовом окне вкладки записываются выражения для расчета дискретных переменных состояния. В расчетных выражениях можно использовать те же переменные, что и на вкладке Outputs , за исключением непрерывных переменных состояния x С . Сами дискретные переменные состояния обозначаются как xD [0], xD [1], xD [2] и т.п.

Текст автоматически генерируемо метода mdl Update , приведен ниже:

void sfun_Update_wrapper(const real_T *u,

const real_T *y,

real_T *xD,

const real_T *param0, /* optional */

int_T p_width0, /* optional */

real_T *param1,/* optional */

int_T p_width1, /* optional */

int_T y_width, /* optional */

int_T u_width) /* optional */

{

/* Место для ввода расчетного кода */

}

Окно S - Function Builder с открытой вкладкой Discrete Update показано на рис. 16.17.


Рис . 16.17 Окно S-Function Builder ( вкладка Discrete Update ).

В рассматриваемом примере отсутствуют дискретные переменные состояния, поэтому на рисунке дан лишь пример расчетного выражения.

6. Build Info - Информация о компоновке. На вкладке в окне Compilation diagnostics (диагностические сообщения о ходе компиляции) отображается информацию о процессе компоновки S-функции .

На вкладке Build Info с помощью флажков можно установить следующие параметры:

Перед началом компиляции необходимо выбрать (настроить) компилятор. Для этого в командном окне MATLAB следует ввести команду:

mex - setup

и далее следовать диалогу с компилятором. С программой MATLAB поставляется компилятор Lcc . Ниже приводится пример такого диалога:

Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n? n - Ответ пользователя

Select a compiler:

[1] Borland C++Builder version 5.0

[2] Borland C++Builder version 4.0

[3] Borland C++Builder version 3.0

[4] Borland C/C++ version 5.02

[5] Borland C/C++ version 5.0

[6] Borland C/C++ (free command line tools) version 5.5

[7] Compaq Visual Fortran version 6.1

[8] Compaq Visual Fortran version 6.5

[9] Digital Visual Fortran version 6.0

[10] Digital Visual Fortran version 5.0

[11] Lcc C version 2.4

[12] Microsoft Visual C/C++ version 6.0

[13] Microsoft Visual C/C++ version 5.0

[14] WATCOM C/C++ version 11

[15] WATCOM C/C++ version 10.6

[0] None

Compiler: 11 - Ответ пользователя

Your machine has a Lcc C compiler located at

C:\MATLAB6\sys\lcc. Do you want to use this compiler [y]/n? y - Ответ пользователя

Please verify your choices:

Compiler: Lcc C 2.4

Location: C:\MATLAB6\sys\lcc

Are these correct?([y]/n): y - Ответ пользователя

The default options file:

"C:\Documents and Settings\Администратор\Application Data\MathWorks\MATLAB\R12\mexopts.bat"

is being updated from C:\MATLAB6\BIN\WIN32\mexopts\lccopts.bat...

 

Процесс компиляции начинается после нажатия на кнопку Build . Об успешном завершении процесса компиляции свидетельствует сообщение вида:

### S-function 'DPT_Sfunc_1_C.dll' created successfully . По завершении процесса компиляции в рабочей папке будут созданы текстовые файлы с названиями вида:

sfun_C.c , sfun_wrapper.c и sfun.dll > . Последний является исполняемым файлом. В файле sfun _ C . c находится текст S -функции , а в файле sfun _ wrapper . c - методы, сгенерированные S- Function Builder .

Окно S - Function Builder с открытой вкладкой Build Info показано на рис. 16.18.


Рис . 16.18 Окно S-Function Builder ( вкладка Build Info ).

Результаты расчетов, выполненных с использованием созданной таким образом S -функции , полностью совпадают с результатами, приведенными в п.  16.7.6.2 . Скорость расчета модели с использованием S -функции , написанной на языке C в несколько раз выше, чем при использовании языка MATLAB .

Свободно распространяемое бесплатное ПО компьютерного моделирования
оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Знаете ли Вы, что неограниченность целевой функции - это ситуация, при которой множество допустимых значений переменных задачи математического программирования содержит значения, доставляющие сколь угодно большое значение целевой функции. Если имеет место неограниченность целевой функции, оптимального решения задачи не существует.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution