Составление цикла задач, необходимых для начального освоения принципов работы с компактным контроллером TWDLCAE40DRF, страница 6

  1. В секции №5 реализуйте следующие вычисления с использованием арифметических инструкций:

·  По сигналу %M0 вычисление суммы %MW20 := Y_0 + 100. Управление выходом %Q0.3 по результату проверки неравенства  Y_0 > 100;

·  Вычисление частного %MW21 := %MW20 / 3;

·  Вычисление остатка от деления %MW19 := %MW20 REM %MW18;

·  По сигналу %I0.1 вычисление %MW22 := %MW21 – K_1, %MW18 := %MW18 + 5, %MW23 := SQRT( %MW22

  1. В секции №6 реализуйте следующие функции арифметических операций:

·  по сигналу %I0.21 вычисление %MF32 := %MF30 + %MF34, %MF36 := %MF32 * %MF34, %MF38 := %MF36 / %MF34, %MF40 := SQRT( %MF32 );

·  вычисление функций степенных и логарифмических функций %MF42 := EXP(%MF32 ), %MF44 := LN( %MF42 ), %MF46 := EXPT( KF_1 , 10 ), %MF48 := LOG( %MF46 );

·  выделение целой части числа в формате с плавающей точкой %MF50 := TRUNC(%MF46 );

·  преобразование из градусов в радианы %MF62 := DEG_TO_RAD( %MF60 ), вычисление тригонометрических функций %MF64 := SIN( %MF62 ), %MF66 := COS( %MF62 ), %MF68 := %MF64 / %MF66, %MF70 := ATAN(%MF68), %MF72 := RAD_TO_DEG( %MF70 ).

Используемые входы и выходы:

I0.20             Q0.12

I0.21             Q0.13

Q0.14

Q0.15


5) Лабораторная работа 5

Использование расширенных функциональных блоков

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

Задание:

10.  Создайте проект с именем "Ваша фамилия_4".

11.  Зарезервируйте секцию №1 для инициализации начальных значений переменных. Используйте в этой цепи сигнал системного бита %S13 – первый цикл в режиме RUN.

12.  В секции №2 реализуйте следующие функции:

·  управление очередью FIFO на базе регистра %R0 – сброс по сигналу входа %I0.20, запись данных по переднему фронту сигнала %I0.21, чтение данных по переднему фронту сигнала %I0.22;

·  пересылка данных с выхода %R0 в слово %MW2 := %R0.O по переднему фронту сигнала %I0.22 при условии, что в очереди есть данные (%R0.E = 0);

·  пересылка данных из слова %MW1 на вход %R0 (%R0.I := %MW1) по переднему фронту сигнала %I0.21 при условии, что в очереди есть свободное место (%R0.F = 0); одновременно увеличение значения %MW1 := %MW1 + 5;

13.  В секции №3 реализуйте следующие функции:

·  управление стеком LIFO на базе регистра %R1 – сброс по сигналу входа %I0.20, запись данных по сигналу %M0, чтение данных по переднему фронту сигнала %I0.22;

·  пересылка данных с выхода %R1 в слово %MW4 := %R1.O по переднему фронту сигнала %I0.22 при условии, что в стеке есть данные (%R1.E = 0);

·  пересылка данных из слова %MW3 на вход %R1 (%R1.I := %MW3) по сигналу %I0.21 при условии, что в стеке есть свободное место (%R0.F = 0); одновременно увеличение значения %MW3 := %MW3 + 10 и установка значения %M0 = 1;

14.  В секции №4 реализуйте стек двойных слов в зоне памяти от %MD20 до %MD40. Для этого создайте следующие цепи:

·  по сигналу %S13 инициализация слова %MD42 := 0 - резервирование памяти под стек;

·  по переднему фронту сигнала %I0.21 запись по индексной адресации значения входного слова стека %MD6 в память стека (%MD20[%MW18] := %MD6). Двойное слово %MD20 – это основание (дно) стека, слово %MW18 – указатель стека, содержащий номер последнего использованного или первого свободного слова (относительно дна стека). Одновременно увеличение указателя стека %MW18 := %MW18 + 2 и изменение значения входного слова %MD6 := %MD6 + 250;