Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
doc:jroboplc:modules:task [2013/05/12 20:18]
jamis7005 создано
doc:jroboplc:modules:task [2021/07/27 12:55] (текущий)
denis [task]
Строка 1: Строка 1:
 ====== task ====== ====== task ======
  
-==== Назначение ​==== +Управляет организацией процесса выполнения модулей. Задача - это отдельный поток (thread), у которого есть список модулей, которые требуется выполнять с заданной периодичностью
-.+
  
-==== Класс модуля ==== 
-promauto.jroboplc.plugin.**task.TaskModule** 
- 
-==== task.conf.yml ==== 
 <code yaml> <code yaml>
 +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)
 </​code>​ </​code>​
  
-==== Описание ==== 
  
-**module.<​name>​** - название модуля +^  Параметр ​ ^  Умолчание ​ ^  Описание ​ ^ 
-   +|**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 ​   |общее время работы,​ мс  |
doc/jroboplc/modules/task.1368375513.txt.gz · Последние изменения: 2013/05/12 20:18 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0