Это старая версия документа.
Содержание
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 - свойства переменной:
prop | value | Описание |
---|---|---|
type | int double bool 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 | - | Арифметическое выражение (см. 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
будет содержать байткод скрипта и хеш-файл. Если во время компиляции возникла ошибка, то в этом же каталоге можно будет найти сформированный полный исходный код класса, и используя сообщение об ошибке компилятора, проанализировать код и найти ошибку.
Ссылка на тег
Ссылки на тег могут быть записаны двумя способами:
modname:tagname
- имя любого модуля проекта и его тегtagname
- имя своего тега (данного модуля)
BUG report
При отсутсвующем имени модуля, неправильном имени
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