script

Добавляет возможности использования скриптов, копирования и вычисления значений тегов. Модуль script состоит из сохраняемых переменных (var) и последовательно выполняемых действий (actions).

Данный модуль требует включения в задачу.

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
java.src scripts/java каталог исходного кода скриптов на java
java.bin scripts/bin каталог байткода скриптов на java. Создается автоматически при компиляции
calcexpr - набор выражений для действия calc (см. calc выражения)
var - список переменных-тегов
actions - список действий:
copy - перемещает значение из тега в тег
calc - создает вычисляемый тег
scriptjava - выполняет скрипт на языке java

var

var - список определений переменных в формате:

-tagname[;prop:value;...][=inival]

tagname - имя тега переменной, уникальное в пределах переменных модуля;

prop:value - свойства переменной:

propvalueОписание
type int
double
bool
string
тип тега
saveoff / onтег имеет флаг autosave
hiddenoff / onтег имеет флаг hidden

inival - начальное значение, по умолчанию, в зависимости от типа, 0 / off / пустая строка.

copy

id - Имя действия (опционально)
src - Имя тега-источника в формате ссылки
dst - Имя тега-приемника в формате ссылки
delay_s 0 Задержка копирования с секундах. Значение источника после изменения копируется в приемник только, если значение источника не вернулось в прежнее состояние в течение времени задержки
delay_ms 0 Задержка копирования в миллисекундах

calc

id - Имя действия (опционально)
expr - Арифметическое выражение (см. calc выражения)
result - Имя тега результата вычисления. Если модуль еще не содержит такого тега, то он будет создан. Тип тега double. Также можно в качестве результирующего тега указать тег другого модуля в формате ссылки.
<arg1> - Аргументы могут иметь любые совместимые в yaml-форматом имена. Значениями аргументов являются ссылки на теги в формате ссылки. Количество аргументов может быть любым. Аргументы используются при расчете выражения, подставляя их значения в выражение по их именам.
<argN>
delay_s 0 Задержка копирования значения в тег результата. Изменившееся вычисленное значение копируется в тег результата только, если вычисленное значение не вернулось в прежнее состояние в течение времени задержки
delay_ms 0 Та же задержка в миллисекундах

java

java
id - Имя действия (обязательный параметр)
class - Имя класса скрипта
<arg1> - Аргументы для передачи значений в скрипт. Количество аргументов может быть любым
<argN>

Скрипт - это java класс, наследуемый от класса с интерфейсом ScriptJavaApi.java. Для написания скрипта требуется перекрыть методы load и execute. Файл исходного кода состоит только из методов и полей. Для простого скрипта заголовок класса, пакета, импорт пакетов и прочее указывать не нужно (DemoScript1).

Если же скрипт более сложный, и требуется включение дополнительных пакетов, то класс описывается полностью (DemoScript2).

В целях ограничения области действия скрипта текст исходного кода не может содержать слово promauto.

Файлы исходного кода скриптов помещаются в каталог java.src. Один файл может содержать один класс. Файлы могут находится во вложенных подкаталогах, при этом имя подкаталога(ов) включается в имя класса через точку. Например, subdir1.subdir2.MyScript.

После создания или изменения скрипта при загрузке системы происходит компиляция, и если успешно, то каталог java.bin будет содержать байткод скрипта и хеш-файл. Если во время компиляции возникла ошибка, то в этом же каталоге можно будет найти сформированный полный исходный код класса, и используя сообщение об ошибке компилятора, проанализировать код и найти ошибку.

Ссылка на тег

Ссылки на тег могут быть записаны двумя способами:

  1. modname:tagname - имя любого модуля проекта и его тег
  2. tagname - имя своего тега (данного модуля)
doc/jroboplc/modules/tagscript.txt · Последние изменения: 2018/12/03 11:37 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0