Блок для вывода процессы и задачи
Блок для вывода процессы и задачи:
В каждый момент времени генерирует только один номер задач разных типов отличный от нуля.
Диспетчер следует размещать в одной из первых плат FLProg (выше только платы настройки с однократным выполнением).
Эта плата должна вызвываться в каждом цикле loop (т.е. условия вызова платы отсутсвуют).
Выходы номеров задач:
control - изменяется значение (0/1) в каждом цикле loop() для наблюдения логическим анализатором.
quick – номера оперативных задач (по умолчанию 5 задач, период смены задачи 10 мс);
fast – номера быстрых задач (по умолчанию 4 задач, период смены задачи 25 мс);
slow – номера медленных задач (по умолчанию 4 задачи, период смены задачи 250 мс);
back – номера фоновых задач (по умолчанию 5 задач, период смены задачи 100 мс);
frdm - номера свободных задач (без периода) (по умолчанию 25 задач) номера последовательно изменяются
в циклах, когда номера предыдущих задач равны 0);
Кол-во задач могут быть изменены самим блоком или внешним блоком
(RT_HW_Base.shed.quick.qnt, RT_HW_Base.shed.fast.qnt, RT_HW_Base.shed.slow.qnt, RT_HW_Base.shed.back.qnt).
Периоды задач не изменяются.
Номера задач изменяются циклически. Например для quick ->1,0,2,0,3,0,4,0,5,0 и т.д.)
При одновременной готовности к вызову нескольких типов (quick, fast и т.д.) задач,
они вызывается по приоритету -> quick, fast, slow, back, frdm.
Многофункциональный генератор:
1. Генератор событий и меандров.
Входы: "Разрешение" (подключаемый) [EN], "Полупериод в мс" [time].
Выходы:"Меандр"(подключаемый) [mean], "Событие" (подключаемый) [event].
2. Генератор импульсов.
Входы: "Разрешение" (подключаемый) [EN], "Длит.вкл. в мс" (timeON), "Длит.выкл. в мс" (timeOFF).
Выходы:"Импульс"(pulse).
3. Генератор широтно-импульсного сигнала (ШИМ).
Входы: "Разрешение" (подключаемый), [EN] "Период"(period), "Скважность в %"(w%).
Выходы: "Широтно-импульсный сигнал" (ШИМ) (pwm).
4. Генератор задач без таймера.
Входы: "Разрешение" (подключаемый) [EN], "Кол-во задач" [qnt].
Выходы: "Номер задачи" [task].
На выходе task циклично меняются значения от 1 до qnt.
5. Генератор задач с таймером. При EN=1 на выходе task циклично меняются значения от 1 до qnt;
Входы: "Разрешение" (подключаемый) [EN], "Период" [period], "Кол-во задач" [qnt].
Выходы: "Номер задачи" [Task].
На выходе Task циклично меняются значения от 1 до qnt с периодом=period.
Значения устанавливаются на один цикл, остальное время Task=0;
6. Генератор однократной пачки импульсов (меандры)
(может быть использована для индикации режимов при включении контроллера).
7. Генератор периодической пачки импульсов (меандры).
8. Генератор контрольного сигнала (для контроля цикла loop() логическим анализатором.
9. Генератор секундных импульсов и вычисление моточасов - работает при наличии блока "Диспетчера" в проекте.
10. Делитель входных событий (или передних фронтов импульсов)
Входы: "Разрешение" (подключаемый) [EN], "Делитель" [div].
Выходы:"Меандр"(подключаемый) [mean], "Событие" (подключаемый) [event].
Дешифраторы и конверторы.
Нижепречисленные функции могут быть просто получены и обычными средствами FLProg
- реализованы они для удобства создания тестов.
1. Дешифратор на 8 битов: v=0->dc=0; v=1->dc=1... v=8->dc=255; v>0->dc=0;
2. Дешифратор на 16 бит: v=0->dc=0; v=1->dc=1.. .v=16->dc=65535; v>0->dc=0;
3. Преобразование тетрады в четыре выхода;
4. Преобразование 16-ти разрядного числа в два 8-ми разрядных числа.
Счетчики:
1.Счетчик "Пила":
при EN=1 увеличение от порога "Низ" до порога "Верх",
сброс до порога "Низ" и повторение цикла.
2.Счетчик "Треугольник":
при EN=1 увеличение от порога "Низ" до порога "Верх",
далее уменьшение до порога "Низ" и повторение цикла.
3.Счетчик "Предел":
при EN=1 при шаге изменения >0, увеличение от начального значения до +32767,
при шаге изменения <0, уменьшение от начального значения до -32768;
4.Счетчик "Реверс":
при EN+=1 увеличение до порога "Верх",
при EN- =1 уменьшение до порога "Низ",
Если EN+ и EN- одновременно равные 1, значение EN- не обрабатывается.
Примечение: Шаг изменения может присваиваться отрицательное значение. В этом случае
Счетчики "Пила", "Треугольник", "Реверс" будут работать с инверсной логикой.
Блок "Фронты" - обработка фронтов входного импульса .
Основные режимы:
1. Выделение переднего фронта (Front).
2. Выделение заднего фронта (Back).
3. Выделение обоих фронтов (Change).
4. При разрешенном входе "Делитель"(div), то выполняется деление входных импульсов.
Входы:
1.Front,Back,Change - входной импульс;
2.div - делитель входных импульсов;
Выходы:
1. Событие (сохраняет значение =1 в течении одного цикла loop()).
2. Меандр.
Дешифраторы и конверторы.
Нижепречисленные функции могут быть просто получены и обычными средствами FLProg
- реализованы они для удобства создания тестов.
1. Дешифратор на 8 битов: v=0->dc=0; v=1->dc=1... v=8->dc=255; v>0->dc=0;
2. Дешифратор на 16 бит: v=0->dc=0; v=1->dc=1.. .v=16->dc=65535; v>0->dc=0;
3. Преобразование тетрады в четыре выхода;
4. Преобразование 16-ти разрядного числа в два 8-ми разрядных числа.
Преобразование.
(0) Float->Float без точки;
(1) Float->Float с 1 знаком после точки;
(2) Float->Float с 2 знаками после точки;
(3) Float->Float с 3 знаками после точки;
(4) Float->Float с 4 знаками после точки;
(9)
(A) Float->int16_t x1;
(B) Float->int16_t x10;
(C) Float->int16_t x100;
(N) bool->Float;
Комментариев 0