· По сигналу %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
· по сигналу %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
Цель работы: Составление и отладка программ с использованием функциональных блоков очередей и стеков, барабанных контроллеров, блоков расписания, функций установки и отметок времени.
Задание:
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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.