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

Модернизация S-функций, созданных с помощью S-Function Builder

Создание S-функций на языке Fortran

И.В.Черных

  1. Приложение 1. Система меню обозревателя библиотек программы Simulink
  2. Приложение 2. Система меню окна модели

При создании S-функции на языке Fortran могут использоваться два подхода. Первый поход (первый уровень) подразумевает использование только языка Fortran. Второй подход (второй уровень) предусматривает совместное использование программных модулей, написанных на языках Fortran и C. Наилучшими возможностями обладает второй способ. Однако, первый подход наиболее прост и позволяет создать Fortran S-функцию в сжатые сроки. В данном параграфе будет рассмотрен именно такой способ. Ограничения второго способа, по сравнению с первым, заключаются, в основном, невозможности передать параметры S-функции через окно диалога блока S-function. Данное ограничение легко преодолевается передачей параметров через входы блока S-function.

Создание Fortran S-функции рассмотрим на примере двигателя постоянного тока независимого возбуждения (п. 16.7.6). В качестве основы использован файл шаблона sfuntmpl_fortran.f (папка ...\simulink\src). В тексте шаблона приняты следующие обозначения:

Ниже приводится текст S-функции модели ДПТ НВ (файл DPT_Sfunc_1_For.f):

C===========================================================================

C Файл: DPT_Sfunc_1_For.for

C Пример S-функции на языке FORTRAN длЯ моделированиЯ двигателЯ постоЯнного

C тока независимого возбуждениЯ

C

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

С состоЯниЯ:

C x' = Ax + Bu

C y = Cx + Du

C

C Copyright 2002, Chernykh ILya

C $Revision: Free

C============================================================================

C

C Откомпилировать S-функцию можно командой:

C

C mex DPT_Sfunc_1_For.f simulink.f

C

C Copyright 2002, Chernykh ILya

C $Revision: Free

C

C============================================================================

C Функция: SIZES. Задает размерность вектора size.

C

C SIZES возвращает вектор, который задает характеристики модели.

C Вектор содержит информацию о числе переменных состояния и другие параметры,

C а именно:

C SIZE(1) Число непрерывных переменных состоЯниЯ

C SIZE(2) Число дискретных переменных состоЯниЯ

C SIZE(3) Число выходных переменных

C SIZE(4) Число входов

C SIZE(5) Число разрывных корней системы

C SIZE(6) Флаг, задающий возможность передачи входных переменных на выход

C

C============================================================================

C

SUBROUTINE SIZES(SIZE)

C .. Массив аргументов функции

INTEGER*4 SIZE(*)

C .. Параметры ..

INTEGER*4 NSIZES

PARAMETER (NSIZES=6)

SIZE(1) = 2

C Число непрерывных переменных состояния (ток якоря и скорость

C вращения вала)

SIZE(2) = 0

С Число дискретных переменных состоЯниЯ

C Параметр равен 0, поскольку модель непрерывнаЯ

SIZE(3) = 2

C Число выходных переменных (скорость вращениЯ и момент на валу)

SIZE(4) = 2+6

C Число входов. Параметр равен 2 + 6 (напряжение на обмотке якоря и

C момент сопротивлениЯ + параметры двигателя).

SIZE(5) = 0

C Число разрывных корней системы

SIZE(6) = 1

C Прямой проход (1 - есть, 0 - нет).

C В данном случае проход входных сигналов на выход есть,

С поскольку параметры двигателя передаются через входной порт

RETURN

END

C

C============================================================================

C Функция: OUTPUT . Рассчитывает значения непрерывных выходных переменных.

C============================================================================

C

SUBROUTINE OUTPUT(T,X,U,Y)

C .. Параметры ..

C T - Текущее времЯ

C X - Вектор непрерывных переменных состоЯниЯ системы

C U - Вектор входных сигналов

C Y - Вектор выходных переменных (возвращаемые значениЯ)

C

REAL*8 T

REAL*8 X(*), U(*), Y(*)

C

REAL*8 L,R,J,Cm,Cw,Fi

C Объявление переменных - параметров двигателя постоЯнного тока

C L,R,J,Cm,Cw,Fi

L=U(3)

R=U(4)

J=U(5)

Cm=U(6)

Cw=U(7)

Fi=U(8)

C

C Расчет выходных переменных:

Y(1) = Cm*Fi*X(1)

Y(2) = X(2)

RETURN

END

C

C

C=====================================================

C Функция: INITCOND. Задает начальные значения переменных состояния.

C=====================================================

C

SUBROUTINE INITCOND(X0)

C .. Параметры ..

C X0 - Вектор начальных значений переменных состояния системы

C (возвращаемые значениЯ)

REAL*8 X0(*)

X0(1)=0

X0(2)=0

C В данном случае начальные условиЯ нулевые

RETURN

END

C=====================================================================

C Функция: DERIVS. Рассчитывает значения производных вектора состояния

C системы X.

C=====================================================================

C

SUBROUTINE DERIVS(T,X,U,DX)

REAL*8 T, X(*), U(*), DX(*)

C

REAL*8 L,R,J,Cm,Cw,Fi

C Объявление переменных - параметров двигателя постоЯнного тока

L=U(3)

R=U(4)

J=U(5)

Cm=U(6)

Cw=U(7)

Fi=U(8)

C

DX(1) = (-R/L)*X(1)-(Cw*Fi/L)*X(2)+(1/L)*U(1)

DX(2) = (Cm*Fi/J)*X(1)-(1/J)*U(2)

C

RETURN

END

C

C================================================================

C Функция: TSAMPL. Задает вектор модельного времени и смещениЯ

C================================================================

C

SUBROUTINE TSAMPL(T, X, U, TS, OFFSET)

REAL*8 T,TS,OFFSET,X(*),U(*)

TS=0.

C Шаг модельного времени.

OFFSET=0.

C Смещение.

RETURN

END

C

C=====================================================

C Шаблоны не используемых в данном примере функций.

C=====================================================

C

C

C====================================================================

C Функция: DSTATES. Рассчитывает новые значения дискретных переменных

C состояния.

C====================================================================

C .. Параметры ..

SUBROUTINE DSTATES(T, X, U, XNEW)

C XNEW - Вектор новых значений дискретных переменных состоЯниЯ системы

REAL*8 T, X(*), U(*), XNEW(*)

C --- Ничего не выполняется

RETURN

END

 

 

C===================================================================

C Функция: DOUTPUT. Рассчитывает новые значения дискретных выходных

переменных

C===================================================================

C

SUBROUTINE DOUTPUT(T, X, U, Y)

REAL*8 T, X(*), U(*), Y(*)

C --- Ничего не выполняется

RETURN

END

C

Сборку S-функции следует произвести командой:

mex DPT_Sfunc_1_For.f simulink.f .

Файл simulink.f предварительно необходимо скопировать из папки ...MATLAB6p5\simulink\src в рабочую папку.

Естественно, что компилятор языка Fortran должен быть дополнительно установлен на компьютере. Matlab 6.5 поддерживает следующие компиляторы:

Перед сборкой S-функции следует выбрать компилятор командой:

mex -setup.

Пример модели с разработанной S-функцией показан на рис. 16.20. На рисунке видно, что параметры модели передаются не через окно диалога блока S-function, а через входной порт.

Рис. 16.20 Модель ДПТ на основе Fortran S-функции.

Приложение 1. Система меню обозревателя библиотек программы Simulink

Таблица П.1

Команда

Назначение


Меню File (Файл)

New

Открыть окно новой блок-диаграммы

Model (Ctrl-N)

Открыть окно для создания Simulink-модели.

Library

Открыть окно для создания новой библиотеки Simulink.

Open … (Ctrl - O)

Открыть существующий mdl-файл. При выборе данного пункта открывается окно диалога, с помощью которого можно отыскать и открыть требуемый файл модели.

Close (Ctrl – W)

Закрыть окно модели (и соответствующий mdl-файл). В том случае, если модель изменялась, то перед закрытием окна MATLAB запросит подтверждение на закрытие файла.

Preferences…

Настройка Simulink. Задает параметры создаваемых моделей.


Меню Edit (Редактирование)

Продолжение таблицы П.1

Команда

Назначение

Add to the current model

Добавить выделенный блок в текущую модель.

Find block...

Найти блок с заданным именем. Команда выводит окно с запросом имени блока.

Find next block...

Найти следующий блок с заданным именем. Эту же операцию выполняет и команда Find next в окне задания слова для поиска.


Меню View (Вид)

Toolbar

Вывод/скрытие панели инструментов.

Status bar

Вывод/скрытие строки состояния.

Description

Вывод/скрытие окна сообщений.

Stay оn top

Установка статуса окна обозревателя библиотек “поверх всех окон”.

Collapse entire Browser

Закрытие текущего раздела библиотеки.

Expand entire Browser

Раскрытие текущего раздела библиотеки.

Large icons

Отображение пиктограмм блоков в увеличенном размере.

Small icons

Отображение пиктограмм блоков в уменьшенном размере.

Show Parameters for selected block

Вывод окна установки параметров отмеченного блока.


Help (Справка)

Help on the selected block

Справка по выделенному блоку.

Simulink help

Вывод окна справочной системы Simulink.

Tip of the day

Полезные советы каждый день.

Приложение 2. Система меню окна модели

Таблица П.2

Команда

Назначение


Меню File (Файл)

New

Открыть окно новой блок-диаграммы

Model (Ctrl-N)

Открыть окно для создания Simulink-модели.

Library

Открыть окно для создания новой библиотеки Simulink.

Open … (Ctrl - O)

Открыть существующий mdl-файл. При выборе данного пункта открывается стандартная диалоговая панель файловой системы Windows, с помощью которой можно найти и открыть требуемый файл модели.

Close (Ctrl – W)

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

Save (Ctrl – S)

Cохранить (записать на диск) mdl-файл; если данный файл записывается впервые, то при выборе этой команды открывается стандартная диалоговая панель, с помощью которой пользователь может указать новое имя файла (вместо untitled) и каталог, в котором будет производиться запись; если же файл уже записывался на диск ранее, то при выполнении команды Save он будет сохранен под прежним именем и в том же каталоге (без открытия диалоговой панели).

Save as...

Команда позволяет сохранить файл под новым именем или в другом каталоге; для ее выполнения также используется стандартная диалоговая панель Windows.

Source Control...

Управление источниками сигналов.

Check in...

Проверка входа. Позволяет ввести расширенное текстовое описание источника.

Check out

Проверка выхода. Позволяет ввести расширенное текстовое описание источника.

Undo Check out

Отмена проверки выхода.

Preferences

Команда выводит окно настроек пакета Simulink (окно Preferences) с открытой панелью General > Source control, что позволяет выбрать схему управления источниками.

Model Properties

Команда вызова компоненты управления версиями Simulink-модели.

Print (Ctrl – P)

Команда обеспечивает вывод на печать блок-диаграмму модели и некоторую дополнительную информацию по ней. При выполнении этой команды открывается диалоговое окно, обеспечивающее настройку параметров печати

Print setup

Команда настройки параметров вывода на печать. Установка параметров выполняется с помощью стандартной диалоговой панели Windows

Exit MATLAB

Завершение работы с системой Matlab.


Меню Edit (Редактирование)

Undo

Отменить предыдущую команду редактирования. В некоторых случаях команда Undo может уточняться, например, после добавления в блок-диаграмму линии связи между блоками она называется Undo Add Line (Отменить добавление линии). Если нельзя отменить предыдущее действие, то команда Undo заменяется сообщением Can't Undo.

Redo

Отменить выполнение команды Undo. Эта команда также может видоизменяться (например, Redo Add Line), либо сообщать о невозможности отмены (Can't Redo).

Cut

Вырезать (переместить в буфер обмена) один или несколько блоков. Соответствующие блоки должны быть выделены.

Copy

Копировать один или несколько блоков. Копируемые блоки должны быть предварительно выбраны. Данная команда используется совместно с командой Paste.

Paste

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

Clear

Очистить (удалить) выделенную область. Область в буфере обмена не сохраняется, но может быть восстановлена с помощью команды Undo.

Select All

(Ctrl - A)

Выделить все элементы блок-диаграммы.

Copy Model to Clipboard

Копировать модель в буфер обмена. Запись графического изображения блок-диаграммы в буфер обмена Windows для передачи в другие Windows-приложения в качестве графического объекта.

Find … (Ctrl - F)

Поиск объекта в модели

Block Parameters…

Вызов диалогового окна для установки параметров выбранного блока.

Block Properties…

Вызов диалогового окна для установки дополнительных атрибутов выбранного блока.

Signal Properties

Вызов окна диалога окна для установки атрибутов сигнала, передаваемого по выбранной линии связи. Окно содержит следующие элементы:

• текстовое поле Signal Name (Имя сигнала), предназначенное для ввода имени (текстового атрибута) сигнала; метка отображается в блок-диаграмме рядом с соответствующей линией связи,

• текстовое поле Description (Описание), позволяющее вводить пояснения к данному сигналу,

• текстовое поле Document Link (Связь с документом), в котором вводится выражение (команда) MATLAB, формирующее ссылку на источник дополнительной информации по данному сигналу,

• флажок Simulink Global (Test Point) (Визуализация контрольной точки).

Если он установлен, то во время моделирования соответствующая линия связи “подсвечивается” при наличии в ней сигнала.

Create Subsystem

(Ctrl - G)

Создать подсистему. По этой команде выбранная часть модели (один или несколько блоков) “сворачиваются” в подсистему, и заменяются в блок-диаграмме одним блоком — Subsystem..

Mask Subsystem…

(Ctrl – M)

Маскировать подсистему. Команда обеспечивает вызов редактора “маски” подсистемы. Команда становится доступна, если в модели выделена подсистема (блок типа Subsystem). Маскированная подсистема — это подсистема, используемая в модели как один неделимый блок, содержимое которого скрыто под “маской”, с помощью которой осуществляется задание параметров подсистемы.

Если выделенная подсистема уже имеет “маску”, т. е. является маскированной, то команда Mask Subsystem принимает вид Edit Mask.

Look Under Mask

(Ctrl - U)

Заглянуть под маску. Команда открывает окно блок-диаграммы маскированной подсистемы. Команда доступна только в том случае, если выбранный блок является маскированной подсистемой

Link options

Настойка связей блока

Go To Library Link

Перейти к связанной библиотеке. Команда открывает раздел библиотеки, к которому относится выделенный блок; доступна только в том случае, если блок взят из библиотеки пользователя или из раздела Simulink Extras.

Disable Link

Разорвать связь с библиотекой. Команда позволяет сделать библиотечный блок "независимым", не связанным с библиотекой, что дает возможность его редактирования. Данная команда работает для тех же разделов библиотеки, что и предыдущая.

Unlock Library

Разблокировать библиотеку. Команда доступна только в окне библиотеки (Library). После ее выполнения становится возможным редактирование соответствующего раздела, при этом на месте команды выводится признак Library Unlocked (Библиотека разблокирована), который сохраняется до закрытия окна редактируемого раздела.

Update Diagram

(Ctrl - D)

Обновить окно модели. Команду необходимо использовать в следующих случаях:

  • после изменения библиотечных блоков, копии которых используются в модели;
  • после добавления в конфигурацию MATLAB нового раздела библиотеки, блоки из которого используются в открытой модели;
  • после изменения параметров одного или нескольких блоков модели из командного окна MATLAB;
  • после изменения S-функции, используемой в модели (при добавлении или удалении входных и/или выходных портов соответствующего блока).


Меню View (Вид)

Go to Parent

Переход из подсистемы в систему высшего уровня иерархии (“родительскую систему”). Команда доступна только, если открыта подсистема.

Toolbar

Показать/скрыть панель инструментов

Statusbar

Показать/скрыть строку состояния

Model Browser Options

Параметры обозревателя модели.

Model Browser

Вызов обозревателя модели

Show Library Links

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

Show Masked Subsystems

Показывать в окне обозревателя маскированные подсистемы.

Block Data Tips Options

Справка по параметрам блока. Содержит команды управления всплывающей подсказкой (tips) для блоков модели. О том, что соответствующий режим установлен, свидетельствует маркер в виде птички. Подсказка появляется на экране, если задержать на некоторое время указатель мыши над пиктограммой блока.

Block name

Показывать название блока

Parameter names and values

Показывать имена и значения параметров настройки блока.

User description string

Показывать описание блока заданное пользователем с помощью команды Edit/Block Properties…

Show Library Browser

Показывать окно обозревателя библиотек блоков.

Zoom In

Увеличить масштаб. Увеличить масштаб изображения блок-диаграммы; каждое обращение к команде дает увеличение масштаба в полтора раза (на 50%).

Zoom Out

Уменьшить масштаб. Уменьшить масштаб изображения блок-диаграммы; каждое обращение к команде дает уменьшение масштаба в полтора раза.

Fit system to view

Подготовить систему для просмотра. Увеличить масштаб изображения выбранного элемента блок-диаграммы. Команда обеспечивает N-кратное увеличение (кратность увеличения зависит от исходного размера элемента), и позиционирует элемент по центру окна блок-диаграммы. Повторное применение дополнительного эффекта не дает.

Normal (100%)

Восстановить стандартный масштаб изображения.


Меню Simulation (Моделирование)

Start

Начать моделирование. При запуске модели команда Start заменяется командой Pause, которая позволяет приостановить сеанс моделирования. Кроме того, становится доступной команда Stop, расположенная ниже. При прерывании моделирования с помощью команды Pause она заменяется альтернативной командой — Continue.

Stop

Завершить моделирование. Позволяет остановить моделирование досрочно, то есть либо до истечения заданного интервала моделирования, либо до реализации предусмотренных условий окончания сеанса моделирования. Команда становится доступной после запуска модели на исполнение

Simulation parameters ...

По данной команде открывается диалоговое окно настроек параметров моделирования.

Normal

Обычный (не ускоренный) режим расчета. Команда доступна, если установлено приложение Simulink Performance Tool.

Accelerator

Ускоренный режим расчета. Команда доступна, если установлено приложение Simulink Performance Tool. В этом режиме, после запуска модели на исполнение, создается исполняемый файл модели в виде динамической библиотеки (файл с расширением dll). В результате скорость расчета возрастает в несколько раз. Ускоренный режим расчета не поддерживается для моделей имеющих замкнутые алгебраические контуры.


Меню Format (Форматирование)

Font...

Выбор шрифта для текстовой информации, отображаемой блоком.

Text Alignment

Выравнивание текста. Задает способ расположения текста в текстовой области.

Flip Name

Изменить положение имени блока (над или под изображением блока).

Hide Name/

Show Name

Скрыть/показать имя блока.

Flip Block

Развернуть изображение блока относительно вертикальной оси симметрии на 180°.

Rotate Block

Повернуть изображение блока относительно вертикальной оси симметрии на 90° (по часовой стрелке).

Show/Hide Drop Shadow

Показать/скрыть “тень” блока.

Hide/Show Port Labels

Скрыть/показать метки портов блока. Данная команда применима только к блокам-подсистемам (Subsystem), содержащим внутренние входные или выходные порты, то есть блоки In и Out. Если такие блоки имеются в подсистеме, то их метки по умолчанию выводятся на пиктограмме блока-подсистемы.

Foreground Color

Основной цвет. Выбор цвета контура и символов на пиктограмме выбранного блока (группы блоков).

Background Color

Цвет фона. Выбор цвета фона пиктограммы выбранного блока (группы блоков).

Screen Color

Выбор цвета фона блок-диаграммы.

Library Link Display

Отображение связей с библиотеками.

Sample Time Colors

Подсветка блоков, управляемых параметром Sample time. Блоки, работа которых зависит от величины шага модельного времени, а также соединяющие их линии связи при выполнении данной команды выделяются на блок-диаграмме красным цветом.

Wide nonscalar lines

Широкие линии связи для не скалярных величин. Линии связи, по которым передаются векторные и матричные величины, выводятся более “жирными”.

Signal dimensions

Размерность векторных и матричных линий связи. Для векторных или матричных линий связи выводится в цифровой форме размерность передаваемого сигнала, то есть число элементов вектора.

Port Data Types

Тип порта. Рядом с линиями связи отображаются наименования типов данных, установленных для портов, с которыми они соединены.

Storage class

Класс памяти.

Execution order

Вывод порядкового номера блока в последовательности выполнения расчета.


Tools (Инструментальные средства)

Data explorer…

Обозреватель данных. Позволяет просмотреть значения переменных находящихся в рабочей области MATLAB.

Simulink debugger…

Отладчик моделей. Позволяет в пошаговом режиме протестировать модель.

Data Class Designer…

Инструмент создания классов данных.

Model differences…

Сравнение моделей.

Merge/Compare two models…

Объединить/Сравнить две модели.

Compare to last saved model…

Сравнить текущее состояние модели с вариантом который был сохранен на диске в последний раз.

Profiler

Создание отчета о процессе моделирования. Команда должна быть выполнена до начала процесса моделирования. По окончании моделирования создается и выводится на экран отчет в котором можно просмотреть временные затраты при выполнении расчета.

Coverage Setting…

Открытие окна настроек отчета по моделированию.

Linear Analysis…

Исследование линейных стационарных систем. Команда доступна, если установлен инструмент Control System Toolbox (Приложение к MATLAB для исследования и разработки систем управления).


Help
(Справка)

Simulink help

Справка по работе с программой Simulink.

Blocks

Справка по выделенному блоку или библиотеке блоков в целом.

Shortcuts

Справка по управлению программой Simulink с помощью нажатия комбинаций клавиш.

S-functions

Справка по созданию S-функций.

Demos

Запуск системы демонстрационных примеров.

About Simulink

Вывод окна с номером версии Simulink.

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