оглавление   ДМ   экономическая информатика   визуальные среды - 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