Это старая версия документа.
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/handler.php on line 1458
Warning: Declaration of syntax_plugin_tablecalc::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 41
Warning: Declaration of syntax_plugin_tablecalc::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 72
Warning: Declaration of syntax_plugin_offline::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 60
Warning: Declaration of syntax_plugin_offline::render($format, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 67
Warning: preg_match(): Compilation failed: invalid range in character class at offset 3416 in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/lexer.php on line 118
====== script ====== Добавляет возможности использования скриптов, копирования и вычисления значений тегов. Модуль ''script'' состоит из сохраняемых переменных (var) и последовательно выполняемых действий (actions). Данный модуль требует включения в задачу. <code yaml> plugin.script: enable: on module.myscript: enable: on java.src: java/src java.bin: java/bin calcexpr: my_calc_expr1: x/3+30 my_calc_expr2: x*3+10 actions: - copy: src: gelios1:State dst: SHDSH:GLSA_404_State delay_ms: 10123 - calc: id: 2 expr: x*10+y+7.3 result: 301_StateSost x: SHDSH:GLSA_301_State y: SHDSH:GLSA_301_Sost - calc: id: text_id_3 expr: my_calc_expr1 result: 301_StateSost_1x x: 301_StateSost delay_s: 10 actions: - java: id: myscr1 class: test.TestA prm1: 123 prm2: hello var: - MyVar1; type:bool; save:off; hidden:on - MyVar2; type:double = 1.2 - MyVar3 = 22 - MyVar4 </code> |**java.src** | ''java'' |каталог исходного кода скриптов на java | |**java.bin** | ''java/bin'' |каталог байткода скриптов на java. Создается автоматически при компиляции | |**calcexpr** | - |набор выражений для действия calc (см. [[doc:jroboplc:modules:tagscript:calcfunctions]]) | |**var** | - |список переменных-тегов | |**actions** | - |список действий: | |:::|:::|''copy'' - перемещает значение из тега в тег| |:::|:::|''calc'' - создает вычисляемый тег| |:::|:::|''scriptjava'' - выполняет скрипт на языке java| ===== var ===== **var** - список определений переменных в формате: <code>-tagname[;prop:value;...][=inival]</code> **tagname** - имя тега переменной, уникальное в пределах переменных модуля; **prop:value** - свойства переменной: ^prop^value^Описание^ |''type'' |**int**<html><br></html>double<html><br></html>bool<html><br></html>string|тип тега| |''save''|off / **on**|тег имеет флаг autosave| |''hidden''|**off** / on|тег имеет флаг hidden| **inival** - начальное значение, по умолчанию, в зависимости от типа, 0 / off / пустая строка. ===== copy ===== |**id** | - |Имя действия (опционально) | |**src** | - |Имя тега-источника в формате [[#ссылка_на_тег|ссылки]] | |**dst** | - |Имя тега-приемника в формате [[#ссылка_на_тег|ссылки]] | |**delay_s** | ''0'' |Задержка копирования с секундах. Значение источника после изменения копируется в приемник только, если значение источника не вернулось в прежнее состояние в течение времени задержки | |**delay_ms** | ''0'' |Задержка копирования в миллисекундах | ===== calc ===== |**id** | - |Имя действия (опционально) | |**expr** | - |Арифметическое выражение (см. [[doc:jroboplc:modules:tagscript:calcfunctions]]) | |**result** | - |Имя тега результата вычисления. Если модуль еще не содержит такого тега, то он будет создан. Тип тега ''double''. Также можно в качестве результирующего тега указать тег другого модуля в формате [[#ссылка_на_тег|ссылки]]. | |**<arg1>** | - |Аргументы могут иметь любые совместимые в yaml-форматом имена и любые значения. Количество аргументов может быть любым. Аргументы используются при расчете выражения, подставляя их значения в выражение по именам. | |**<argN>** |:::|:::| |**delay_s** | ''0'' |Задержка копирования значения в тег результата. Изменившееся вычисленное значение копируется в тег результата только, если вычисленное значение не вернулось в прежнее состояние в течение времени задержки | |**delay_ms** | ''0'' |Та же задержка в миллисекундах | ===== java ===== ^java^^^ |**id** | - |Имя действия (обязательный параметр) | |**class** | - |Имя класса скрипта | |**<arg1>** | - |Аргументы для передачи значений в скрипт. Количество аргументов может быть любым | |**<argN>** |:::|:::| Скрипт - это java класс, наследуемый от класса с интерфейсом [[doc:jroboplc:modules:tagscript:scriptjavaapi]]. Для написания скрипта требуется перекрыть методы ''load'' и ''execute''. Файл исходного кода состоит только из методов и полей. Заголовок класса, пакета, импорт пакетов и прочее указывать не нужно ([[doc:jroboplc:modules:tagscript:javaexample]]). В целях ограничения области действия скрипта текст исходного кода не может содержать слово ''promauto''. Файлы исходного кода скриптов помещаются в каталог ''java.src''. Один файл может содержать один класс. Файлы могут находится во вложенных подкаталогах, при этом имя подкаталога(ов) включается в имя класса через точку. Например, ''subdir1.subdir2.MyScript''. После создания или изменения скрипта при загрузке системы происходит компиляция, и если успешно, то каталог ''java.bin'' будет содержать байткод скрипта и хеш-файл. Если во время компиляции возникла ошибка, то в этом же каталоге можно будет найти сформированный полный исходный код класса, и используя сообщение об ошибке компилятора, проанализировать код и найти ошибку. ===== Ссылка на тег ===== Ссылки на тег могут быть записаны двумя способами: - ''modname:tagname'' - имя любого модуля проекта и его тег - ''tagname'' - имя своего тега (данного модуля)