Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:jroboplc:modules:task [2013/05/15 20:04]
jamis7005
doc:jroboplc:modules:task [2021/07/27 12:55] (текущий)
denis [task]
Строка 1: Строка 1:
 ====== task ====== ====== task ======
  
-==== Назначение ==== +Управляет организацией процесса выполнения модулей. ​Задача - это отдельный поток (thread), у которого есть список модулей,​ которые ​требуется ​выполнять с заданной периодичностью. ​
-Управляет организацией процесса выполнения модулей. ​По своей сути задача - это отдельный поток (thread), у которого есть список модулей,​ которые ​надо ​выполнять с заданной периодичностью. ​+
  
-==== Класс модуля ==== 
-promauto.jroboplc.plugin.**task.TaskModule** 
- 
-==== task.conf.yml ==== 
 <code yaml> <code yaml>
-module.task0:+module.taskMain:
   enable: ​  on   enable: ​  on
-  period: ​  100+  period: ​  1000
   modules:   modules:
-      ​di1 +       ​_set(taskB,​1) 
-      do1 +       ​_set(taskA,​1) 
- +       _wait(taskA,​2) 
-module.task1:+       _wait(taskB,​2) 
 +       ​SHDSH 
 +       ​_sleep(100) 
 +       ​_set(taskA,​3) 
 +       ​_wait(taskA,​4) 
 +        
 +        
 +module.taskA:
   enable: ​  on   enable: ​  on
-  period: ​  1000+  period: ​  0
   modules:   modules:
-       UVKR +       _wait(1) 
-       tagsaver +       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>​** - название модуля м. [[[[doc:​jroboplc:​notes:​how_to_name_modules]]) +^  Параметр ​ ^  Умолчание ​ ^  Описание ​ ^ 
-  ​+|**delayStart**  ​|  ​ ​|задержка ​начала выполнения задачи при старте приложения, ​мс  | 
 +|**period** ​ |  -  |период выполнения одного цикла, ​мс  | 
 +|**modules** ​ |  -  |список имен модулей,​ команды синхронизации и задержки ​ |
  
-**enable** - on/off - разрешение работы модуля+При подаче команды start все модули плагина task инициализируются и создают отдельные потоки,​ в который с заданной периодичность вызываются ​модули в указанной последовательности. После подачи команды stop потоки уничтожаются.
  
-**period** - период выполнения одного цикла, ​мс+===== Синхронизация ===== 
 +Модули задач (или ​потоки) могут работать как независимо друг от друга, так ​и синхронно. Для этого каждая задача имеет ​внутреннюю ​переменную,​ доступную для чтения ​и записи другими задачами. Команды работы с данной переменной помещаются в список ''​modules'':​
  
-**modules** список имен модулей+|**_set(value)**  |установить значение ​собственной переменной ​ | 
 +|**_set(task,​ value)** ​ |установить значение переменной другой задачи ​ |
  
-При подаче команды ​start все модули плагина ​task инициализируются ​и создают отдельные потоки, в который с заданной периодичность вызываются ​модули в указанной последовательности. После подачи команды stop потоки уничтожаются.+Команды ​установки могут принимать только ​положительные значения (от 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.1368633887.txt.gz · Последние изменения: 2013/05/15 20:04 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0