Имя материала: Имитационное моделирование экономических процессов

Автор: Снетков Н.Н.

§10. библиотека блоков simulink

10.1. Sources - источники сигналов

Источник постоянного сигнала Constant

Назначение: Задает постоянный по уровню сигнал. Параметры:

Constant value - постоянная величина.

Interpret vector parameters as 1-D - интерпретировать вектор параметров как одномерный (при установленном флажке). Данный параметр встречается у большинства блоков библиотеки Simulink. В дальнейшем он рассматриваться не будет.

Значение константы может быть действительным или комплексным числом, вычисляемым выражением, вектором или матрицей.

Рис. 4.17 иллюстрирует применение этого источника и измерение его выходного сигнала с помощью цифрового индикатора Display.

 

87

10.2. Sinks - приемники сигналов

10.2.1. Осциллограф Scope

Назначение:

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

Изображение блока и окно для просмотра графиков показаны на рис. 4.18.

 

FV

Sine Wave

 

88

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

Настройка окна осциллографа выполняется с помощью панелей инструментов (рис. 4.19).

 

12    34    5    678    9  10 11

 

Рис. 4.19. Панель инструментов блока Scope

 

Панель инструментов содержит 11 кнопок:

Print - печать содержимого окна осциллографа.

Parameters - доступ к окну настройки параметров.

Zoom - увеличение масштаба по обеим осям.

Zoom X-axis - увеличение масштаба по горизонтальной оси.

Zoom Y-axis - увеличение масштаба по вертикальной оси.

Autoscale - автоматическая установка масштабов по обеим осям.

Save current axes settings - сохранение текущих настроек окна.

Restore saved axes settings - установка ранее сохраненных настроек окна.

Floating scope - перевод осциллографа в «свободный» режим.

 

Lock/Unlock axes selection - закрепить/разорвать связь между текущей координатной системой окна и отображаемым сигналом. Инструмент доступен, если включен режим Floating scope.

Signal selection - выбор сигналов для отображения. Инструмент доступен, если включен режим Floating scope.

 

89

Изменение масштабов отображаемых графиков можно выполнять несколькими способами:

Нажать соответствующую кнопку , /®или и щелкнуть один раз левой клавишей мыши в нужном месте графика. Произойдет 2,5-кратное увеличение масштаба.

Нажать соответствующую кнопку , ^или ^) и, нажав левую клавишу мыши, с помощью динамической рамки или отрезка указать область графика для увеличенного изображения (рис. 4.20).

3. Щелкнуть правой клавишей мыши в окне графиков и, выбрать команду Axes properties... в контекстном меню. Откроется окно свойств графика, в котором с помощью параметров Y-min и Y-max можно указать предельные значения вертикальной оси. В этом же окне можно указать заголовок гра-

 

90

фика (Title), заменив выражение \%<SignalLabel> в строке ввода. Окно свойств показано на рис. 4.21.

jnjxj

) "Scope" properties: axis 1

Y-min: -1.1

Y-rnax: |TT

Title ['\%<5ignalLabel>' replaced by signal name): I \%<SignalLabel>

DK

Cancel

Apply

 

Рис. 4.21. Окно свойств графика

Параметры:

Параметры   блока  устанавливаются   в   окне 'Scope'

parameters, которое открывается с помощью инструмента ^1 (Parameters) панели инструментов. Окно параметров имеет две вкладки:

General - общие параметры.

Data history - параметры сохранения сигналов в рабочей области MATLAB.

Вкладка общих параметров показана на рис. 4.22.

91

На вкладке General задаются следующие параметры:

Number of axes - число входов (систем координат) осциллографа. При изменении этого параметра на изображении блока появляются дополнительные входные порты.

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

Tick labels - вывод/скрытие осей и меток осей. Может принимать три значения (выбираются из списка):

o all - подписи для всех осей, o none - отсутствие всех осей и подписей к ним, o bottom axis only - подписи горизонтальной оси только для нижнего графика.

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

Floating scope - перевод осциллографа в «свободный» режим (при установленном флажке).

На вкладке Data history (рис. 4.23) задаются следующие параметры:

Limit data points to last - максимальное количество отображаемых расчетных точек графика. При превышении этого числа начальная часть графика обрезается. В том случае, если флажок параметра Limit data points to last не установлен, то Simulink автоматически увеличит значение этого параметра для отображения всех расчетных точек.

Save data to workspace - сохранение значений сигналов в рабочей области MATLAB.

Variable name - имя переменной для сохранения сигналов в рабочей области MATLAB.

Format - формат данных при сохранении в рабочей области MATLAB. Может принимать значения:

 

92

Подпись: •	Decimation - кратность отображения входного сигна¬ла. При Decimation = 1 отображается каждое значение входного сигнала, при Decimation = 2 отображается каждое второе значение, при Decimation = 3 - каждое третье значение и т.д.
•	Sample time - шаг модельного времени. Определяет дискретность отображения данных.
•	Floating display (флажок) - перевод блока в «свобод¬ный» режим. В данном режиме входной порт блока отсутствует, а выбор сигнала для отображения вы¬полняется щелчком левой клавиши мыши на соответ¬ствующей линии связи. В этом режиме для параметра расчета Signal storage reuse должно быть установлено значение off (вкладка Advanced в окне диалога Simulation parameters...).
На рис. 4.24 показано применение блока Display с ис¬пользованием различных вариантов параметра Format.

 

3.1415926

3.142 І

format: short

 

Constant

Display

 

3.1415926

format: long

Displayl

3.1416e+000 I

format: short e

Display3

3.141592600000000e+000

format: long_e

Display4

3.141

format: bank

 

 

 

94

Displays

Рис. 4.24. Применение блока Display с использованием различных вариантов параметра Format

10.3. Continuous - аналоговые блоки

10.3.1. Интегрирующий блок Integrator

Назначение:

Выполняет интегрирование входного сигнала. Параметры:

External reset - внешний сброс. Тип внешнего управляющего сигнала, обеспечивающего сброс интегратора к начальному состоянию. Выбирается из списка:

 

none - нет (сброс не выполняется),

rising - нарастающий сигнал (передний фронт сигнала),

falling - спадающий сигнал (задний фронт сигнала),

either - нарастающий либо спадающий сигнал,

level - ненулевой сигнал (сброс выполняется, если сигнал на управляющем входе становится не равным нулю). В том случае, если выбран какой-либо (но не none) тип

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

Initial condition source - источник начального значения выходного сигнала. Выбирается из списка:

 

internal - внутренний;

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

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

Limit output (флажок) - использование ограничения выходного сигнала.

 

95

Подпись: •	Upper saturation limit - верхний уровень ограничения выходного сигнала. Может быть задан как числом, так и символьной последовательностью inf, то есть + 00.
•	Lower saturation limit - нижний уровень ограничения выходного сигнала. Может быть задан как числом, так и символьной последовательностью inf, то есть - 00.
•	Show saturation port - управляет отображением порта, выводящего сигнал, свидетельствующий о выходе ин¬тегратора на ограничение. Выходной сигнал данного порта может принимать следующие значения:

1.	ноль, если интегратор не находится на ограничении;
2.	+1, если выходной сигнал интегратора достиг верхнего ограничивающего предела;
3.	-1, если выходной сигнал интегратора достиг нижнего ограничивающего предела.
•	Show state port (флажок) - отобразить/скрыть порт состояния блока. Данный порт используется в том случае, если выходной сигнал интегратора требуется подать в качестве сигнала обратной связи этого же интегратора. Например, при установке начальных условий через внешний порт или при сбросе интегра¬тора через порт сброса. Выходной сигнал с этого пор¬та может использоваться также для организации взаи¬модействия с управляемой подсистемой.
•	Absolute tolerance - абсолютная погрешность.
•	На рис. 4.25 показан пример работы интегратора при подаче на его вход ступенчатого сигнала. Начальное условие принято равным нулю.

 

96

ІД Ш\£>[р&\& шві В§1

Пример на рис. 4.25 отличается от предыдущего подачей начального значения через внешний порт. Начальное значение выходного сигнала в данном примере задано равным 1о.

ш

 

#В|И[ЕИ

В 1

 

97

10.3.2. Блок фиксированной задержки сигнала Transport Delay

Назначение:

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

Параметры:

Time Delay - время задержки сигнала (неотрицательное значение).

Initial input - начальное значение выходного сигнала.

Buffer size - размер памяти, выделяемой для хранения задержанного сигнала. Задается в байтах числом, кратным 8 (по умолчанию 1024).

Pade order (for linearization) - порядок ряда Паде, используемого при аппроксимации выходного сигнала. Задается целым положительным числом.

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

В том случае, если начального значения объема памяти буфера не хватит для хранения задержанного сигнала, Simulink автоматически выделит дополнительную память. После завершения моделирования в командном окне MATLAB появится сообщение с указанием нужного размера буфера. На рис. 4.27 показан пример использования блока Transport Delay для задержки прямоугольного сигнала на 0,5 с.

 

98

 

10.3.3. Блок управляемой задержки сигнала Variable Transport Delay

 

Назначение:

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

Maximum delay - максимальное значение времени задержки сигнала (не отрицательное значение).

Initial input - начальное значение выходного сигнала.

Buffer size - размер памяти, выделяемой для хранения задержанного сигнала. Задается в байтах числом, кратным 8 (по умолчанию 1024).

Pade order (for linearization) - порядок ряда Паде, используемого при аппроксимации выходного сигнала. Задается целым положительным числом.

 

99

Блок управляемой задержки Variable Transport Delay работает аналогично блоку постоянной задержки сигнала Transport Delay.

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

На рис. 4.28 показан пример использования блока Variable Transport Delay. Величина времени задержки сигнала изменяется от 0,5 до 1 с в момент времени равный 5 с.

 

]« ш pf^^l ft unless

Подпись:
Pulse Generator

Variable

Transport Delay

            ►

 

 

0 2 I Time offset: 0

 

Рис. 4.28. Пример использования блока Variable Transport Delay

 

10.4. Nonlinear - нелинейные блоки

10.4.1. Блок ограничения Saturation

Назначение:

Выполняет ограничение величины сигнала. Параметры:

Upper limit - верхний порог ограничения.

Lower limit - нижний порог ограничения.

 

100

3. Treat as gain when linearizing (флажок) - трактовать как усилитель с коэффициентом передачи равным 1 при линеаризации.

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

Scope

в a

Подпись:

 

Г7

 

101

10.4.2. Блок переключателя Switch

Назначение:

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

Параметры:

Threshold - порог управляющего сигнала.

Блок работает следующим образом. Если сигнал управления, подаваемый на средний вход меньше, чем величина порогового значения Threshold, то на выход блока проходит сигнал с первого (верхнего) входа. Если сигнал управления превысит пороговое значение, то на выход блока будет поступать сигнал со второго (нижнего) входа.

На рис. 4.30 показан пример работы блока Switch. В том случае, когда сигнал на управляющем входе ключа равен 1, на выход блока проходит гармонический сигнал, если же управляющий сигнал равен нулю, то на выход проходит сигнал нулевого уровня от блока Ground. Пороговое значение управляющего сигнала задано равным 0,5.

la и|Грр р| ft s н| в і -ч?

102

10.4.3. Блок ручного переключателя Manual Switch

 

Назначение:

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

Параметры: Нет.

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

Scope

 

Ground

Рис. 4.31. Пример использования блока Manual Switch

 

10.5. Math - блоки математических операций

 

10.5.1. Блок вычисления суммы Sum

Назначение:

Выполняет вычисление суммы текущих значений сигналов. Параметры:

Icon shape - форма блока. Выбирается из списка: round -окружность, rectangular - прямоугольник.

List of sign - список знаков. В списке можно использовать следующие знаки: + (плюс), - (минус) и | (разделитель знаков).

Saturate on integer overflow (флажок) - подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

 

103

Количество входов и операция (сложение или вычитание) определяется списком знаков параметра List of sign, при этом метки входов обозначаются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими.

Если количество входов блока превышает 3, то удобнее использовать блок Sum прямоугольной формы.

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

Если количество входов блока больше, чем один, то блок выполняет поэлементные операции над векторными и матричными сигналами. При этом количество элементов в матрице или векторе должно быть одинаковым.

Если в качестве списка знаков указать цифру 1 (один вход), то блок можно использовать для определения суммы элементов вектора.

104

10.5.2. Усилители Gain и Matrix Gain

Назначение:

Выполняют умножение входного сигнала на постоянный коэффициент.

Параметры:

Gain - коэффициент усиления.

Multiplication - способ выполнения операции. Может принимать значения (из списка): Element-wise K*u - Поэлементный; Matrix K*u - матричный (коэффициент усиления является левосторонним операндом); Matrix u*K - матричный (коэффициент усиления является правосторонним операндом).

Saturate on integer overflow (флажок) - подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно. Блоки усилителей Gain и Matrix Gain есть один и тот же

блок, но с разными начальными установками параметра Multiplication.

Параметр блока Gain может быть положительным или отрицательным числом, как больше, так и меньше 1. Коэффициент усиления можно задавать в виде скаляра, матрицы или вектора, а также в виде вычисляемого выражения.

В том случае если парметр Multiplication задан как Element-wise K*u, то блок выполняет операцию умножения на заданный коэффициент скалярного сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент, заданный матрицей.

По умолчанию коэффициент усиления является действительным числом типа double.

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

105

108

Входные сигналы также могут быть логического типа (boolean).

10.6. Signal&Systems - блоки преобразования сигналов и вспомогательные блоки

 

10.6.1. Мультиплексор (смеситель) Mux

Назначение:

Объединяет входные сигналы в вектор. Параметры:

Number of Inputs - количество входов.

Display option - способ отображения. Выбирается из списка:

o bar - вертикальный узкий прямоугольник черного цвета;

o signals - прямоугольник с белым фоном и отображением меток входных сигналов;

o none - прямоугольник с белым фоном без отображения меток входных сигналов.

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

Если среди входных сигналов есть векторы, то количество входов можно задавать как вектор с указанием числа элементов каждого вектора. Например, выражение [2 3 1] определяет три входных сигнала: первый сигнал - вектор из двух элементов, второй сигнал - вектор из трех элементов, и последний сигнал - скаляр. Если размерность входного вектора не совпадает с указанной в параметре Number of Inputs, после начала расчета Simulink выдаст сообщение об ошибке. Размерность входного вектора можно задавать как -1 (минус один). В этом случае размерность входного вектора может быть любой.

Параметр Number of Inputs можно задавать также в виде списка меток сигналов, например: Vector1, Vector2, Scalar. В этом случае метки сигналов будут отображаться рядом с соответствующими соединительными линиями.

Сигналы, подаваемые на входы блока, должны быть одного типа (действительного или комплексного).

 

109

10.6.2. Демультиплексор (разделитель) Demux

Назначение:

Разделяет входной векторный сигнал на отдельные составляющие.

Параметры:

Number of Outputs - количество выходов.

Bus Selection Mode (флажок) - режим разделения векторных сигналов.

Входным сигналами в обычном режиме является вектор, сформированный любым способом. Выходными сигналами являются скаляры или векторы, количество которых и размерность определяется параметром Number of Outputs и размерностью входного вектора.

Если количество выходов P (значение параметра Number of Outputs) равно размерности входного сигнала N, то блок выполняет разделение входного вектора на отдельные элементы.

Если количество выходов P меньше, чем размерность входного сигнала N, то размерность первых P-1 выходных сигналов равна отношению N/P, округленному до ближай-

 

110

шего большего числа, а размерность последнего выходного сигнала равна разности между размерностью входного сигнала и суммой размерностей первых P-1 выходов. Например, если размерность входного сигнала равна 8, а количество выходов равно 3, то первые два выходных вектора будут иметь размерность ceil(8/3) = 3, а последний выходной вектор будет иметь размерность 8 - (3 + 3) = 2.

Параметр Number of Outputs может быть задан также с помощью вектора, определяющего размерность каждого выходного сигнала. Например, выражение [2 3 1] определяет три выходных сигнала: первый сигнал - вектор из двух элементов, второй сигнал - вектор из трех элементов, и последний сигнал - скаляр. Размерность можно также задавать как -1 (минус один). В этом случае размерность соответствующего выходного сигнала определяется как разность между размерностью входного вектора и суммой размерностей заданных выходных сигналов. Например, если размерность входного вектора равна 6, а параметр Number of Outputs задан выражением [1 -1 3], то второй выходной сигнал будет иметь размерность 6 - (3 + 1) = 2.

111

В режиме Bus Selection Mode блок Demux работает не с отдельными элементами векторов, а с векторными сигналами в целом. Входной сигнал в этом режиме должен быть сформирован блоком Mux или другим блоком Demux. Параметр Number of Outputs в этом случае задается в виде скаляра, определяющего количество выходных сигналов, либо в виде вектора, каждый элемент которого определяет количество векторных сигналов в данном выходном сигнале. Например, при входном сигнале, состоящем из трех векторов, параметр Number of Outputs, заданный вектором [2 1], определит два выходных сигнала, первый из которых будет содержать два векторных сигнала, а второй - один.

 

10.7. Function & Tables - блоки функций и таблиц

10.7.1. Блок задания функции Fcn

Назначение:

Задает выражение в стиле языка программирования (C++). Параметры:

Expression - выражение, используемое блоком для вычисления выходного сигнала на основании входного. Это выражение составляется по правилам, принятым для описания функций на языке С.

В выражении можно использовать следующие компоненты:

Входной сигнал. Входной сигнал в выражении обозначается u, если он является скаляром. Если входной сигнал -вектор, необходимо указывать номер элемента вектора в круглых скобках. Например, u(1) и u(3) - первый и третий элементы входного вектора.

Константы.

Арифметические операторы (+ - * /).

Операторы отношения (= = != > < >= <=).

Логические операторы (&& | | !).

Круглые скобки.

112

7.         Математические функции: abs, acos, asin, atan, atan2, ceil,

cos, cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power,

rem, sgn, sin, sinh, sqrt, tan, и tanh.

8.         Переменные из рабочей области. Если переменная ра-

бочей области является массивом, то ее элементы долж-

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

Например, A(1,1) - первый элемент матрицы A.

Операторы отношения и логические операторы возвра-

щают значения в виде логического нуля (FALSE) или логиче-

ской единицы (TRUE).

Операторы, допускаемые к использованию в выражении, имеют следующий приоритет (в порядке убывания):

1.         ( )

+ - (унарные)

Возведение в степень

!

/

+ - (бинарные)

> < <= >=

= !=

9.         &&

10.  | |

Блок не поддерживает матричные и векторные операции. Выходной сигнал блока всегда - скаляр.

113

10.7.2. Блок задания функции MATLAB Fcn

Назначение:

Задает выражение в стиле языка программирования

MATLAB.

Параметры:

MATLAB function - выражение на языке MATLAB.

Output dimensions - размерность выходного сигнала. Значение параметра -1 (минус один) предписывает блоку определять размерность автоматически.

Output signal type - тип выходного сигнала. Выбирается из списка:

o real - действительный сигнал;

o complex - комплексный сигнал;

o auto - автоматическое определение типа сигнала.

Collapse 2-D results to 1-D - Преобразование двумерного выходного сигнала к одномерному.

Входной сигнал в выражении обозначается u, если он является скаляром. Если входной сигнал - вектор, необходимо указывать номер элемента вектора в круглых скобках. Например, u(1) и u(3) - первый и третий элементы входного вектора. Если выражение состоит из одной функции, то ее можно задать без указания параметров. Выражение может содержать также собственные функции пользователя, написанные на языке MATLAB и оформленные в виде m-файлов. Имя m-файла не должно совпадать с именем модели (mdl-файлом).

Рис. 4.38 демонстрирует применение блока MATLAB Fcn. В примере используется функция My_Matlab_Fcn_1, вычисляющая сумму и произведение двух элементов входного вектора. Текст функции (файл My_Matlab_Fcn_1.m) приведен ниже:

function y=My_Matlab_Fcn_1(x,k);

y(1)=x*k;

y(2)=x + k;

Выражение для вызова функции, заданное параметром

MATLAB function, имеет вид: My_Matlab_Fcn_1(u(1),u(2)).

 

114

Подпись: ConstantПодпись: 101MATLAB

 

Function

 

MAT LAB Fcn Display

I

Constantl

Рис. 4.38. Примеры использования блока MATLAB Fcn

 

10.8. Этапы моделирования

Процесс расчета модели выполняется Simulink в несколько этапов. На первом этапе выполняется инициализация модели: подключение библиотечных блоков к модели, определение размерностей сигналов, типов данных, величин шагов модельного времени, оценка параметров блоков, а также определяется порядок выполнения блоков и происходит выделение памяти для проведения расчета. Затем Simulink начинает цикл моделирования. На каждом цикле моделирования (временном шаге) происходит расчет блоков в порядке, определенном на этапе инициализации. Для каждого блока Simulink вызывает функции, которые вычисляют переменные состояния блока x, производные переменных состояния и выходы y в течение текущего шага модельного времени. Этот процесс продолжается, пока моделирование не будет завершено. На рис. 4.39 показана диаграмма, иллюстрирующая этот процесс.

 

115

 

116

Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |