Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:task [2015/11/15 13:40] denis [task.conf.yml] |
doc:jroboplc:modules:task [2021/07/27 12:55] (текущий) denis [task] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
Управляет организацией процесса выполнения модулей. Задача - это отдельный поток (thread), у которого есть список модулей, которые требуется выполнять с заданной периодичностью. | Управляет организацией процесса выполнения модулей. Задача - это отдельный поток (thread), у которого есть список модулей, которые требуется выполнять с заданной периодичностью. | ||
- | ==== Класс модуля ==== | ||
- | promauto.jroboplc.plugin.**task.TaskModule** | ||
- | |||
- | ==== task.conf.yml ==== | ||
<code yaml> | <code yaml> | ||
module.taskMain: | module.taskMain: | ||
Строка 46: | Строка 42: | ||
</code> | </code> | ||
- | ==== Описание ==== | ||
- | **module.<name>** - название модуля (см. [[[[doc:jroboplc:notes:how_to_name_modules]]) | + | ^ Параметр ^ Умолчание ^ Описание ^ |
- | + | |**delayStart** | - |задержка начала выполнения задачи при старте приложения, мс | | |
- | + | |**period** | - |период выполнения одного цикла, мс | | |
- | **enable** - on/off - разрешение работы модуля | + | |**modules** | - |список имен модулей, команды синхронизации и задержки | |
- | + | ||
- | **period** - период выполнения одного цикла, мс | + | |
- | + | ||
- | **modules** - список имен модулей, команды синхронизации и задержки. | + | |
При подаче команды start все модули плагина task инициализируются и создают отдельные потоки, в который с заданной периодичность вызываются модули в указанной последовательности. После подачи команды stop потоки уничтожаются. | При подаче команды start все модули плагина task инициализируются и создают отдельные потоки, в который с заданной периодичность вызываются модули в указанной последовательности. После подачи команды stop потоки уничтожаются. | ||
- | ==== Синхронизация ==== | + | ===== Синхронизация ===== |
Модули задач (или потоки) могут работать как независимо друг от друга, так и синхронно. Для этого каждая задача имеет внутреннюю переменную, доступную для чтения и записи другими задачами. Команды работы с данной переменной помещаются в список ''modules'': | Модули задач (или потоки) могут работать как независимо друг от друга, так и синхронно. Для этого каждая задача имеет внутреннюю переменную, доступную для чтения и записи другими задачами. Команды работы с данной переменной помещаются в список ''modules'': | ||
- | **_set(value)** - установить значение собственной переменной | + | |**_set(value)** |установить значение собственной переменной | |
- | + | |**_set(task, value)** |установить значение переменной другой задачи | | |
- | **_set(task, value)** - установить значение переменной другой задачи | + | |
Команды установки могут принимать только положительные значения (от 0 включительно и выше). Изначально переменные инициализируются в 0. | Команды установки могут принимать только положительные значения (от 0 включительно и выше). Изначально переменные инициализируются в 0. | ||
- | **_wait(value)** - ожидание заданного значения собственной переменной | + | |**_wait(value)** |ожидание заданного значения собственной переменной | |
+ | |**_wait(task, value)** |ожидание заданного значения переменной другой задачи | | ||
- | **_wait(task, value)** - ожидание заданного значения переменной другой задачи | + | Ожидание чужой переменной длится не более заданного времени period, если собственный period больше 0. При превышении времени ожидания (тайм-ауте), в переменную записывается значение -1, ожидание прекращается, задача переходит к выполнению следующей позиции в списке modules. Если же period равен 0, ожидание длится неопределенно долго. |
- | Ожидание чужой переменной длится не более заданного времени period, если period > 0. При превышении времени ожидания (тайм-ауте), в переменную записывается значение -1, ожидание прекращается, задача переходит к выполнению следующей позиции в списке modules. Если же period равен 0, ожидание длится неопределенно долго. | + | Ожидание собственной переменной всегда длится неопределенно долго. Если в процессе ожидания в собственной переменной появляется не желаемое значение, а -1, то ожидание прекращается, и задача продолжает свое выполнение. |
- | Ожидание собственной переменной всегда длится неопределенно долго. Если в процессе ожидания в собственной переменной появляется не желаемое значение, а -1, то ожидание прекращается, и задача продолжает свое выполнение. | + | Значение -1 устанавливается и сбрасывается автоматически, исключая взаимоблокировки задач. Его нельзя использовать при конфигурировании с командами _set и _wait. |
- | Значение -1 устанавливается и сбрасывается автоматически, исключаю взаимоблокировки задач. Его нельзя использовать при конфигурировании с командами _set и _wait. | ||
+ | ===== Другие команды ===== | ||
+ | |**_sleep(ms)** |задержка выполнения задачи в мс | | ||
- | ==== Другие команды ==== | + | ===== Теги ===== |
- | **_sleep(ms)** - задержка выполнения задачи в мс. | + | |
+ | |running |состояние | | ||
+ | |statebaton |синхронизационный тег (используется только для отладки) | | ||
+ | |timecounter |кол-во отработанных циклов | | ||
+ | |timecycle |время рабты последнего цикла, мс | | ||
+ | |timetotal |общее время работы, мс | |