====== task ====== Управляет организацией процесса выполнения модулей. Задача - это отдельный поток (thread), у которого есть список модулей, которые требуется выполнять с заданной периодичностью. module.taskMain: enable: on period: 1000 modules: _set(taskB,1) _set(taskA,1) _wait(taskA,2) _wait(taskB,2) SHDSH _sleep(100) _set(taskA,3) _wait(taskA,4) module.taskA: enable: on period: 0 modules: _wait(1) plci1 prks1 pdat1 _set(2) _wait(3) plco1 _sleep(100) _set(4) module.taskB: enable: on period: 0 modules: _wait(1) icp1 icp2 _set(2) ^ Параметр ^ Умолчание ^ Описание ^ |**delayStart** | - |задержка начала выполнения задачи при старте приложения, мс | |**period** | - |период выполнения одного цикла, мс | |**modules** | - |список имен модулей, команды синхронизации и задержки | При подаче команды start все модули плагина task инициализируются и создают отдельные потоки, в который с заданной периодичность вызываются модули в указанной последовательности. После подачи команды stop потоки уничтожаются. ===== Синхронизация ===== Модули задач (или потоки) могут работать как независимо друг от друга, так и синхронно. Для этого каждая задача имеет внутреннюю переменную, доступную для чтения и записи другими задачами. Команды работы с данной переменной помещаются в список ''modules'': |**_set(value)** |установить значение собственной переменной | |**_set(task, value)** |установить значение переменной другой задачи | Команды установки могут принимать только положительные значения (от 0 включительно и выше). Изначально переменные инициализируются в 0. |**_wait(value)** |ожидание заданного значения собственной переменной | |**_wait(task, value)** |ожидание заданного значения переменной другой задачи | Ожидание чужой переменной длится не более заданного времени period, если собственный period больше 0. При превышении времени ожидания (тайм-ауте), в переменную записывается значение -1, ожидание прекращается, задача переходит к выполнению следующей позиции в списке modules. Если же period равен 0, ожидание длится неопределенно долго. Ожидание собственной переменной всегда длится неопределенно долго. Если в процессе ожидания в собственной переменной появляется не желаемое значение, а -1, то ожидание прекращается, и задача продолжает свое выполнение. Значение -1 устанавливается и сбрасывается автоматически, исключая взаимоблокировки задач. Его нельзя использовать при конфигурировании с командами _set и _wait. ===== Другие команды ===== |**_sleep(ms)** |задержка выполнения задачи в мс | ===== Теги ===== |running |состояние | |statebaton |синхронизационный тег (используется только для отладки) | |timecounter |кол-во отработанных циклов | |timecycle |время рабты последнего цикла, мс | |timetotal |общее время работы, мс |