Это старая версия документа.


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 java каталог исходного кода скриптов на java
java.bin java/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> - Имя тега-аргумента в формате ссылки. Количество аргументов может быть любым
<argN>
delay_s 0 Задержка копирования значения в тег результата. Изменившееся вычисленное значение копируется в тег результата только, если вычисленное значение не вернулось в прежнее состояние в течение времени задержки
delay_ms 0 Та же задержка в миллисекундах

java

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

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

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

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

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

Ссылка на тег

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

  1. modname:tagname - имя любого модуля проекта и его тег
  2. tagname - имя своего тега (данного модуля)

BUG report

При отсутсвующем имени модуля, неправильном имени

  1. modname:tagname

Запуск осуществляется, tcp сервер не поднимается, посмотреть можно только в логах, в командной строке вывода нет

Пример сервер UVRES на порту 30000

… Starting JRoboPLC UVRES…

Waiting for JRoboPLC UVRES……

running: PID:6960

Starting JRoboPLC UVSYS…

Waiting for JRoboPLC UVSYS……

running: PID:7219

Пробуем

telnet 192.168.2.11 30000

Trying 192.168.2.11…

telnet: Unable to connect to remote host: Connection refused

А нет, проблемка отыщется в логах, хотя консоль сказала, что все путем:

016-07-06 11:46:26,406 [WrapperSimpleAppMain] ERROR promauto.jroboplc.core.tags.Ref - [prepare] Module not found: rpcl_uvfkt3

doc/jroboplc/modules/tagscript.1467780554.txt.gz · Последние изменения: 2016/07/06 07:49 — alexeyb
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0