«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙУНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА»

Содержание

Слайд 2

Обучение эффективной разработке программного обеспечения контроллеров ОВЕН на CoDeSys

Две основные составляющие:
Изучение возможностей

Обучение эффективной разработке программного обеспечения контроллеров ОВЕН на CoDeSys Две основные составляющие:
контроллеров ОВЕН
Программирование контроллеров ОВЕН

Цель

Слайд 3

Программируемые логические контроллеры (ПЛК)
Контроллеры ОВЕН
Основные принципы стандарта МЭК 61131-3

Программируемые логические контроллеры (ПЛК) Контроллеры ОВЕН Основные принципы стандарта МЭК 61131-3 Введение
Введение в CoDeSys
Установка CoDeSys
Языки и операторы стандарта МЭК 61131-3
Программные модули (POU)

Содержание

Слайд 4

Что такое библиотека?
Стандартная библиотека
Работа с вещественными числами
Трассировка

Что такое библиотека? Стандартная библиотека Работа с вещественными числами Трассировка Язык Последовательных
Язык Последовательных Функциональных Диаграмм (SFC)
Работа с задачами и событиями

Содержание

Слайд 5

ОВЕН ПЛК 100, ПЛК 150 и ПЛК 154

ЛЕКЦИЯ 1

ОВЕН ПЛК 100, ПЛК 150 и ПЛК 154 ЛЕКЦИЯ 1

Слайд 9

Подключение датчиков тока и напряжения осуществляется напрямую и не требует согласующих резисторов

Подключение датчиков тока и напряжения осуществляется напрямую и не требует согласующих резисторов

Слайд 10

ЛЕКЦИЯ 2

ЛЕКЦИЯ 2

Слайд 11

Что такое CoDeSys?

Инструмент программирования
Инструмент отладки
Инструмент тестирования
Инструмент создания визуализаций
Инструмент документирования проектов

CoDeSys

Что такое CoDeSys? Инструмент программирования Инструмент отладки Инструмент тестирования Инструмент создания визуализаций
–пакет для создания программного обеспечения
для ПЛК в соответствии со стандартом МЭК 61131-3

Слайд 12

Определяет принципы программирования ПЛК
Включает хорошо известные и современные языки программирования

Определяет принципы программирования ПЛК Включает хорошо известные и современные языки программирования Позволяет

Позволяет разработчику не зависеть от производителя системы программирования
Повторное использование кода
Стандарт является международным

Основные принципы стандарта МЭК 61131-3

Слайд 13

Структуру проекта
Синтаксис и семантику 5 различных языков программирования: IL, FBD,

Структуру проекта Синтаксис и семантику 5 различных языков программирования: IL, FBD, LD,
LD, ST и SFC
Типы строительных блоков проекта (POU): функции, программы и функциональные блоки
Правила объявления и типы переменных

Что определяет стандарт МЭК 61131-3

Слайд 14

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

Состоит из двух частей : системы программирования и системы исполнения. Система программирования
программирования состоит из: - редактора, компилятора и отладчика МЭК проектов; - поддерживает все 5 языков программирования МЭК; - генерирует машинный код для довольно широкого набора процессоров.
Система исполнения реализует: - управляющий цикл с обновлением входов/выходов; - связь с системой программирования; - загрузку приложения после включения питания контроллера.

Введение в CoDeSys

Слайд 15

Инсталляция CoDeSys с компакт диска или с сайта www.owen.ru
Инсталляция файлов целевой

Инсталляция CoDeSys с компакт диска или с сайта www.owen.ru Инсталляция файлов целевой платформы Инсталляция CoDeSys
платформы

Инсталляция CoDeSys

Слайд 16

Главное меню и панель инструментов
Область определения переменных
Редактор
Менеджер объектов
Окно сообщений
Строка статуса

Первый запуск CoDeSys

Главное меню и панель инструментов Область определения переменных Редактор Менеджер объектов Окно

Слайд 17

Desktop
Editor
Load & Save
Directories

Наиболее используемые опции CoDeSys

Desktop Editor Load & Save Directories Наиболее используемые опции CoDeSys

Слайд 18

Справочная система

Содержит ту же информацию, что и документация по CoDeSys
Индекс по ключевым

Справочная система Содержит ту же информацию, что и документация по CoDeSys Индекс
словам
Поиск по тексту
Русифицирована

Слайд 19

Проект

POU

Типы данных

Ресурсы

Объявление переменных

Код

Глобальные переменные

Библиотеки

HMI

Структура проекта

Проект POU Типы данных Ресурсы Объявление переменных Код Глобальные переменные Библиотеки HMI Структура проекта

Слайд 20

POU

Типы данных

Ресурсы

HMI

Структура проекта

POU Типы данных Ресурсы HMI Структура проекта

Слайд 21

Что такое проект в CoDeSys ?

…хранится в одном файле (name.pro)
…содержит программные компоненты

Что такое проект в CoDeSys ? …хранится в одном файле (name.pro) …содержит
(POU), визуализации, ресурсы и т.д.
... выполнение приложения начинается с POU PLC_PRG(аналог функции main )
… выполняется циклически

Слайд 22

Что такое POU ?

POU (Program organisation unit) –это программный модуль
POU PLC_PRG вызывается

Что такое POU ? POU (Program organisation unit) –это программный модуль POU
неявно системой исполнения
Стандарт МЭК 61131-3 определяет 3 типа POU
Программы
Функциональные блоки
Функции

Слайд 23

Главная программа PLC_PRG: Для однозадачных систем программа PLC_PRG соответствует OB1 в системах S5/7. Эта

Главная программа PLC_PRG: Для однозадачных систем программа PLC_PRG соответствует OB1 в системах
программа вызывается циклически системой исполнения

Слайд 24


Target Settings
Создание главной программы PLC_PRG
Автоматическое

Target Settings Создание главной программы PLC_PRG Автоматическое объявление Первый проект (Инкремент переменной)
объявление



Первый проект (Инкремент переменной)

Слайд 25

В МЭК 61131-3 определенны следующие типы данных:

Стандартные типы данных

В МЭК 61131-3 определенны следующие типы данных: Стандартные типы данных

Слайд 26

3 метода объявления переменных

Локальные (для 1 ФБ) или Глобальные (для всех

3 метода объявления переменных Локальные (для 1 ФБ) или Глобальные (для всех
ФБ)

текстовый, табличный и автоматический

Сохраняемые и постоянные переменные

Представление данных в CoDeSys

Слайд 27

Синтаксис идентификаторов

Буквы и цифры
Должен начинаться с буквы
Только одинарные подчеркивания
Без пробелов
Нельзя использовать зарезервированные

Синтаксис идентификаторов Буквы и цифры Должен начинаться с буквы Только одинарные подчеркивания
слова МЭК и операторы
Регистр не различается

Примеры
Otto, otto, OTTO
Valve1
a_long_name

Слайд 28


Основные команды режима Online
[Ctrl+F8]>







Основные команды режима Online

Слайд 29

(в ОВЕН ПЛК)

Запустить систему исполнения
Выключить режим эмуляции

(в ОВЕН ПЛК) Запустить систему исполнения Выключить режим эмуляции Настроить параметры связи
Simulation Mode>
Настроить параметры связи

Запуск приложения в целевой платформе

Слайд 30

Языки МЭК 61131-3

Список инструкций (IL)
Структурированный текст (ST)
Язык функциональных блоковых диаграмм (FBD)
Язык

Языки МЭК 61131-3 Список инструкций (IL) Структурированный текст (ST) Язык функциональных блоковых
релейных диаграмм (LD)
Язык последовательных функциональных схем (SFC)

Слайд 31

Список инструкций (IL)

Текстовый язык
Схож с ассемблером
Все операции производятся через аккумулятор
Легко читается в

Список инструкций (IL) Текстовый язык Схож с ассемблером Все операции производятся через
случае небольших программ
Не поддерживает структурного программирования

ЛЕКЦИЯ 3

Слайд 32

Структурный текст (ST)

Текстовый язык
Язык высокого уровня
Схож с Паскалем
Лучший язык для программирования циклов

Структурный текст (ST) Текстовый язык Язык высокого уровня Схож с Паскалем Лучший
и условий (IF, WHILE, FOR, CASE)

Слайд 33

Язык релейных диаграмм(LD)

Графический язык
Программа состоит из схем
Использовался для программирования практически всех классических

Язык релейных диаграмм(LD) Графический язык Программа состоит из схем Использовался для программирования
ПЛК
Удобен для программирования логических выражений
Сложно использовать для работы с аналоговыми типами данных
Переключение между FBD и LD

Слайд 34

Язык функциональных блоковых диаграмм (FBD)

Графический язык
Программа состоит из нескольких схем
Легко читается
Каждая схема состоит

Язык функциональных блоковых диаграмм (FBD) Графический язык Программа состоит из нескольких схем
из блоков и операндов

Непрерывные функциональные схемы (CFC)

Схож с FBD, но…
Блоки и соединители располагаются свободно
Разрешаются циклы и свободные соединения

Слайд 35

Язык функциональных блоковых диаграмм(FBD)

[Выход] [Блок] [Присваивание] [Переход] [Возврат] [Инверсия]

[Добавление входа]

[Установка/Сброс]

[Выход]

[Выход] [Установка/Сброс]

<

Язык функциональных блоковых диаграмм(FBD) [Выход] [Блок] [Присваивание] [Переход] [Возврат] [Инверсия] [Добавление входа] [Установка/Сброс] [Выход] [Выход] [Установка/Сброс]
Имя переменной / Имя экземпляра >

<Имя оператора/функции/функционального блока/программы>

Слайд 36

Язык последовательных функциональных схем(SFC)

Графический язык
Используется для структурирования приложений
Состоит из шагов и

Язык последовательных функциональных схем(SFC) Графический язык Используется для структурирования приложений Состоит из
переходов
Действия выполняются внутри шагов
Не конвертируется в другие языки
CoDeSys поддерживает два типа SFC
Подробнее будет рассмотрен завтра !

ЛЕКЦИЯ 4

Слайд 37

Упражнение 2. Управление освещением в длинном коридоре

Есть длинный коридор. Для управления освещением

Упражнение 2. Управление освещением в длинном коридоре Есть длинный коридор. Для управления
в коридоре используется три переключателя:
Msw- главный переключатель
Bsw – переключатель в начале коридора.
Esw – переключатель в конце коридора.

Слайд 38

Упражнение 2. Управление освещением в длинном коридоре

Подача питания в коридор осуществляется с

Упражнение 2. Управление освещением в длинном коридоре Подача питания в коридор осуществляется
помощью переключателя Msw.
Необходимо решить задачу включения/выключения света с помощью любого из двух переключателей Bsw и Esw, установленных в разных концах коридора.
Т.е. при входе в коридор с одной стороны необходимо переключить Bsw, чтобы зажечь свет. На выходе с другой стороны коридора необходимо переключить Esw, чтобы свет погас. И наоборот.

Слайд 39

Через ресурс PLC-configuration
Прямая адресация Например: %QX0.7 := (%IX0.3 AND %IX3.7) OR %IX3.0;
Присвоение

Через ресурс PLC-configuration Прямая адресация Например: %QX0.7 := (%IX0.3 AND %IX3.7) OR
адресам имен Например: xInput AT %IX0.7 : BOOL;

Конфигурирование входов/выходов

Слайд 40

Синтаксис адресов

Обозначаются знаком ‘%’
Тип адреса определяется префиксом
I вход
Q выход
M маркер
Тип данных
X бит
None бит
B байт (8 бит)
W слово (16 бит)
D двойное

Синтаксис адресов Обозначаются знаком ‘%’ Тип адреса определяется префиксом I вход Q
слово (32 бит)

Примеры - %IW215 - %QX1.1 - %MD48

Слайд 41

Области памяти

Входы

Выходы

Маркированная память

%IB0

%IB1

%IB2

%IB3

%IW0

%IW1

%ID0

%IX0.0
%IX0.1
%IB0: %IX0.2
.....
%IX0.7
%IX0.8
%IX0.9
%IB1: ...
...

Области памяти Входы Выходы Маркированная память %IB0 %IB1 %IB2 %IB3 %IW0 %IW1
%IX0.15

Входные драйверы

Выходные драйверы

Физические входы

Физические выходы

Слайд 42

CoDeSys поддерживает все операторы МЭК 61131-3

Оператор присваивания
Битовые операторы
Сдвиговые операторы

CoDeSys поддерживает все операторы МЭК 61131-3 Оператор присваивания Битовые операторы Сдвиговые операторы
Операторы сравнения
Числовые операторы

Работа с действительными числами
Логарифмические операторы
Тригонометрические операторы
Операторы выбора

Операторы в CoDeSys

Слайд 43

Используются для работы со всеми типами данных

Операторы присваивания

Используются для работы со всеми типами данных Операторы присваивания

Слайд 44

Битовые операторы

Используются для работы с двоичными типами данных (BOOL, BYTE, WORD, DWORD)

Битовые операторы Используются для работы с двоичными типами данных (BOOL, BYTE, WORD, DWORD)

Слайд 45

Сдвиговые операторы (1)

Используются для работы с двоичными типами данных (BOOL, BYTE, WORD,

Сдвиговые операторы (1) Используются для работы с двоичными типами данных (BOOL, BYTE, WORD, DWORD)
DWORD)

Слайд 46

Сдвиговые операторы (2)

SHL (сдвиг влево)
SHR (сдвиг вправо)
ROL (цикл. сдвиг влево)
ROR (цикл. сдвиг

Сдвиговые операторы (2) SHL (сдвиг влево) SHR (сдвиг вправо) ROL (цикл. сдвиг
вправо)

a

d

c

b

e

h

g

f

b

e

d

c

f

0

h

g

a

a

d

c

b

e

h

g

f

b

e

d

c

f

a

h

g

a

d

c

b

e

h

g

f

0

c

b

a

d

g

f

e

h

a

d

c

b

e

h

g

f

h

c

b

a

d

g

f

e

Слайд 47

Операторы сравнения

Используются для работы со всеми типами данных

Операторы сравнения Используются для работы со всеми типами данных

Слайд 48

Арифметические операторы

Выполняют алгебраические операции над целыми числами и числами с плавающей запятой

Арифметические операторы Выполняют алгебраические операции над целыми числами и числами с плавающей запятой

Слайд 49

Вход

ПЛК

Внешний сенсор

Внутренний сенсор

ЛАМПА

Упражнение 3. Управление освещением в комнате

Цель - свет должен

Вход ПЛК Внешний сенсор Внутренний сенсор ЛАМПА Упражнение 3. Управление освещением в
быть выключен, когда в комнате никого нет!

Слайд 50

Упражнение 3. Управление освещением в комнате

На входе установлены два дискретных датчика: один

Упражнение 3. Управление освещением в комнате На входе установлены два дискретных датчика:
снаружи комнаты, другой внутри.
Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату.
Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.
Задача1: Если человек вошел – включить свет, Если человек вышел – выключить свет.
Задача2: Необходимо считать количество людей, заходящих и выходящих из комнаты.
Пока в комнате остается хотя бы один человек, свет должен быть включен.

Слайд 51

Визуализация

Доступ ко всем данным проекта
Графическое отображение логических и численных значений
Ввод логических и

Визуализация Доступ ко всем данным проекта Графическое отображение логических и численных значений
численных значений
Перемещение графических объектов

ЛЕКЦИЯ 5

Слайд 52

Инструменты визуализации

v

CoDeSys

Разработка и выполнение

Инструменты визуализации v CoDeSys Разработка и выполнение

Слайд 53

Функция: < FUNCTION >
Имеет один или более входов, один

Функция: Имеет один или более входов, один выход, рекурсии не допустимы Функциональный
выход, рекурсии не допустимы
Функциональный блок:
Имеет произвольное число входов и выходов. Имеет внутреннюю память. Для каждого функционального блока можно объявить несколько экземпляров
Программа: < PROGRAM >
Подобна функциональному блоку, но имеет один глобальный экземпляр

Типы POU

Слайд 54

Функция
Не имеет внутренней памяти
Локальные переменные инициализируются при каждом вызове
Функция возвращает значение, через

Функция Не имеет внутренней памяти Локальные переменные инициализируются при каждом вызове Функция
свой идентификатор.Функция имеет тип!
Удобна для реализации комплексных вычислений
Не рекомендуется использование глобальных переменных в функции

Слайд 55

Функциональный блок


Все переменные функционального блока сохраняют значения
При создании экземпляра функционального блока

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

Слайд 56

Программа


Все переменные сохраняют свои значения
Используется для структурирования приложения

Программа Все переменные сохраняют свои значения Используется для структурирования приложения

Слайд 57

Вызов POU

Вызов POU

Слайд 58

Упражнение 4. Работа с программными компонентами CoDeSys (POU)

Функция расчета мощности постоянного тока

Упражнение 4. Работа с программными компонентами CoDeSys (POU) Функция расчета мощности постоянного
по напряжению и сопротивлению
Счетчик положительных фронтов дискретного сигнала
Вызов функций и функциональных блоков из программы

Слайд 59

Упражнение 5. Система пожарной сигнализации здания

Упражнение 5. Система пожарной сигнализации здания

Слайд 60

Упражнение 5. Система пожарной сигнализации здания

В здании две одинаковые комнаты.
В каждой

Упражнение 5. Система пожарной сигнализации здания В здании две одинаковые комнаты. В
комнате установлено три пожарных датчика, кнопка ручного включения сигнализации и кнопка ручного отключения сигнализации. Для каждой комнаты предусмотрена сигнальная лампа. Сигнализация пожара является общей для обеих комнат.
Если в комнате срабатывает хотя бы один из датчиков, то загорается сигнальная лампа для соответствующей комнаты. Лампа гаснет, если все датчики в комнате отключены.
Если в комнате срабатывает любые два из трех датчиков, то включается пожарная сигнализация. Сигнализация работает до тех пор, пока ее не отключат соответствующей кнопкой.
Сигнализация может быть включена кнопкой включения вне зависимости от состояния датчиков.

Слайд 61

Сложные типы данных

Массив
abList : ARRAY[0..31] OF BOOL;
Структура
TYPE SetType :
STRUCT
iCount : INT;
rValue : ARRAY[0..9] OF

Сложные типы данных Массив abList : ARRAY[0..31] OF BOOL; Структура TYPE SetType
REAL;
END_STRUCT
END_TYPE
Перечисление
TYPE ColorType :
( RED, YELLOW, GREEN, BLUE );
END_TYPE
Псевдоним
TYPE Message : STRING(40); END_TYPE

Слайд 62

Предопределенные блоки (Библиотеки)

Библиотека состоит из объектов, которые могут быть использованы в

Предопределенные блоки (Библиотеки) Библиотека состоит из объектов, которые могут быть использованы в
различных проектах
Пользователь может создавать и использовать собственные библиотеки.
Можно создавать библиотеки с защитой.
Библиотеки могут быть написаны не только на МЭК, но и на других языках программирования
Библиотека standard.lib содержит POU описанные в стандарте МЭК

Слайд 63

Стандартная библиотека

Функции работы со строками
Детекторы фронтов
Счетчики
Таймеры

Стандартная библиотека Функции работы со строками Детекторы фронтов Счетчики Таймеры

Слайд 64

Функции работы со строками

LEN
LEFT
RIGHT
MID
CONCAT
INSERT

DELETE
REPLACE
FIND

Функции работы со строками LEN LEFT RIGHT MID CONCAT INSERT DELETE REPLACE FIND

Слайд 65

Детекторы фронтов

R_TRIG
определяет передний фронт
F_TRIG
определяет задний фронт

t

0

1

1

0

Входной сигнал

Выходной сигнал

t

0

1

1

0

Входной сигнал

Выходной

Детекторы фронтов R_TRIG определяет передний фронт F_TRIG определяет задний фронт t 0
сигнал

Слайд 66

Счетчики

CTU
Инкрементируется по переднему фронту
CTD
Декрементируется по переднему фронту
CTUD
Инкрементируется или декрементируется

Счетчики CTU Инкрементируется по переднему фронту CTD Декрементируется по переднему фронту CTUD
по разным входам

Слайд 67

Временные типы данных МЭК 61131-3

Временные типы данных МЭК 61131-3

Слайд 68

Часы реального времени RTC

Часы реального времени RTC

Слайд 69

Генерирует импульс заданной длительности

Таймер TP

Генерирует импульс заданной длительности Таймер TP

Слайд 70

Включает выход с задержкой по переднему фронту

Таймер TON

Включает выход с задержкой по переднему фронту Таймер TON

Слайд 71

Выключает выход с задержкой по заднему фронту

Таймер TOF

Выключает выход с задержкой по заднему фронту Таймер TOF

Слайд 72

Упражнение 6. Работа с элементами стандартной библиотеки

Реализовать задачу управления светом комнате (упражнение

Упражнение 6. Работа с элементами стандартной библиотеки Реализовать задачу управления светом комнате
3) с помощью компонентов стандартной библиотеки. Свет должен выключаться через 5 секунд, после того как последний человек покинет комнату.

Слайд 73

Операторы для работы с числами с плавающей запятой

Операторы для работы с числами с плавающей запятой

Слайд 74

Логарифмические операторы

Вычисление логарифмов и экспоненты

Логарифмические операторы Вычисление логарифмов и экспоненты

Слайд 75

Тригонометрические операторы

Тригонометрические операторы

Слайд 76

Предназначены для ограничения и выбора операндов
Используются с любыми типами данных

Операторы выбора

Предназначены для ограничения и выбора операндов Используются с любыми типами данных Операторы выбора

Слайд 77

Для каждой пары типов данных используется отдельная функция

Операторы преобразования типов данных

Для каждой пары типов данных используется отдельная функция Операторы преобразования типов данных

Слайд 78

Упражнение 7. Генератор синусоиды

Операции с вещественными числами
Преобразование типов
Первое знакомство с трассировкой

Упражнение 7. Генератор синусоиды Операции с вещественными числами Преобразование типов Первое знакомство с трассировкой

Слайд 79

Язык Последовательных Функциональных диаграмм(SFC)

Графический язык
Управление последовательностью выполнения действия
Состоит из шагов, действий и

Язык Последовательных Функциональных диаграмм(SFC) Графический язык Управление последовательностью выполнения действия Состоит из
переходов
Помогает структурировать приложение
В CoDeSys есть упрощенная версия SFC

Слайд 80

Упражнение 8. Управление сверлильным станком

Станок производит сверление отверстий в заготовках по

Упражнение 8. Управление сверлильным станком Станок производит сверление отверстий в заготовках по
заданной программе: запуск станка, опускание сверла, сверление по одному из выбранных режимов, подъем сверла.
На станке предусмотрена кнопка запуска, тумблер выбора режима сверления, кнопка останова сверления.
Контроллер подает три управляющие команды: опускание сверла, подъем сверла, сверление.
Предусмотрено два режима: либо сверление производится в течение 5 секунд (автоматический режим), либо сверление производится до нажатия оператором кнопки останова сверления. Режим выбирается с помощью тумблера выбора перед запуском станка.

Слайд 81

Упражнение 8. Управление сверлильным станком

Перед началом работы оператор с помощью тумблера выбора

Упражнение 8. Управление сверлильным станком Перед началом работы оператор с помощью тумблера
определяет режим сверления.
После нажатия оператором кнопки запуска контроллер начинает управление станком. Подается команда опустить сверло и начинается обратный отсчет координаты. При достижении нижней точки (y=0) снимается команда на опускание и подается команда на сверление.
Если выбран первый режим, то команда сверления снимается через 5 секунд. Если выбран второй режим, то команда сверления снимается после нажатия оператором кнопки останова сверления.
Затем контролер подает команду на подъем сверла и начинает прямой отсчет координаты. После достижения верхнего положения (y=70) команда подъема снимается.

Слайд 82

Упражнение 8. Управление сверлильным станком

Упражнение 8. Управление сверлильным станком

Слайд 83

Конфигурирование задач

Задачи выполняются по событию или циклически
Имеют приоритет
Вызывают программы
Есть свободно-выполняемые задачи(аналог idle)

Конфигурирование задач Задачи выполняются по событию или циклически Имеют приоритет Вызывают программы Есть свободно-выполняемые задачи(аналог idle)
Имя файла: «САМАРСКИЙ-ГОСУДАРСТВЕННЫЙ-АЭРОКОСМИЧЕСКИЙУНИВЕРСИТЕТ-имени-академика-С.П.-КОРОЛЕВА».pptx
Количество просмотров: 224
Количество скачиваний: 0