Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:jroboplc:modules:task [2015/11/15 13:24]
denis [Описание]
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.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** ​ ​|  ​ |период выполнения одного цикла, мс  | 
-**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 устанавливается и сбрасывается автоматически, исключая взаимоблокировки задач. Его нельзя использовать при конфигурировании с командами _set и _wait.
  
  
 +===== Другие команды =====
 +|**_sleep(ms)** ​ |задержка выполнения задачи в мс  |
  
 +===== Теги =====
  
 +|running ​     |состояние ​ |
 +|statebaton ​  ​|синхронизационный тег (используется только для отладки) ​ |
 +|timecounter ​ |кол-во отработанных циклов ​  |
 +|timecycle ​   |время рабты последнего цикла, мс  |
 +|timetotal ​   |общее время работы,​ мс  |
doc/jroboplc/modules/task.1447583087.txt.gz · Последние изменения: 2015/11/15 13:24 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0