Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
script [2025/09/18 06:57] root [Пример вызова функции скрипта ПЛК из скрипта интерфейса] |
script [2025/09/18 12:38] (текущий) root [Пример вызова функции скрипта ПЛК из скрипта интерфейса] |
||
|---|---|---|---|
| Строка 149: | Строка 149: | ||
| <wrap ks> | <wrap ks> | ||
| - | Создадим в скаде код логики работы некоего устройства. К примеру | + | Создадим в скаде код логики работы некоего устройства. К примеру |
| </ | </ | ||
| Строка 163: | Строка 163: | ||
| function setActive(state) { | function setActive(state) { | ||
| + | log(' | ||
| isActive = state; | isActive = state; | ||
| } | } | ||
| </ | </ | ||
| - | ====== Дальше все херня, переделываю... ====== | ||
| - | ====== Раздел проекта " | ||
| <wrap ks> | <wrap ks> | ||
| - | Все скрипты проекта запускаются | + | Должен получиться проект следующего вида: |
| </ | </ | ||
| + | |||
| + | {{ :: | ||
| + | |||
| <wrap ks> | <wrap ks> | ||
| - | При | + | Далее |
| </ | </ | ||
| - | <code javascript> | ||
| - | export async function init() { | ||
| - | | ||
| - | } | ||
| - | </ | ||
| - | Эта функция вызывается ядром системы при каждом старте среды исполнения. Если скрипту не требуется инициализация при старте, | ||
| - | Экспортируемые элементы скриптов можно в дальнейшем использовать в других скриптах. К примеру создадим скрипт с именем //script1// и содержимым: | ||
| - | \\ | ||
| - | **script1** | ||
| - | <code javascript> | ||
| - | export function f1() { | ||
| - | alert(' | ||
| - | } | ||
| - | function f2() { | ||
| - | alert(' | ||
| - | } | ||
| - | </ | ||
| - | Здесь функция f1 будет доступной из сторонних скриптов, | ||
| - | \\ | ||
| - | **script2** | ||
| <code javascript> | <code javascript> | ||
| - | export | + | async function |
| - | dsScript.script1.f1(); | + | await ds.plcCall(' |
| } | } | ||
| </ | </ | ||
| - | При запуске проекта на исполнение мы увидим сообщение: | ||
| - | {{ : | ||
| - | Если мы попытаемся вызвать функцию //f2//, мы получим ошибку, | ||
| - | \\ | ||
| - | **script2** | ||
| - | <code javascript> | ||
| - | export async function init() { | ||
| - | dsScript.script1.f2(); | ||
| - | } | ||
| - | </ | ||
| - | {{ :: | ||
| - | При этом функцию //f2// мы без проблем можем использовать внутри первого скрипта: | ||
| - | \\ | ||
| - | **script1** | ||
| - | <code javascript> | ||
| - | export function f1() { | ||
| - | f2(); | ||
| - | } | ||
| - | function f2() { | + | <wrap ks> |
| - | alert(' | + | и |
| - | } | + | </wrap> |
| - | </code> | + | |
| - | \\ | + | |
| - | **script2** | + | |
| - | <code javascript> | + | |
| - | export async function init() { | + | |
| - | dsScript.script1.f1(); | + | |
| - | } | + | |
| - | </code> | + | |
| - | {{ :: | + | |
| - | ====== Скрипты элементов визуализации ====== | ||
| - | Скрипты так же можно использовать как действие на событие элементов визуализации (на данный момент доступно только событие " | ||
| - | \\ | ||
| - | **script1** | ||
| <code javascript> | <code javascript> | ||
| - | export | + | async function |
| - | alert('hi'); | + | await ds.plcCall('script_plc0.setActive', [ false ]); |
| } | } | ||
| </ | </ | ||
| - | Чтобы использовать код скрипта проекта в своем коде, его необходимо подключить функцией // | ||
| - | Далее добавляем на экран кнопку, | ||
| - | {{ :: | ||
| - | Пропишем следующий код скрипта: | ||
| - | <code javascript> | ||
| - | const script1 = ds.include(' | ||
| - | script1.f1(); | ||
| - | </ | ||
| - | Теперь при запуске проекта и нажатии кнопки будет вызываться функция скрипта: | ||
| - | {{ :: | ||
| - | ====== Глобальные | + | <wrap ks> |
| - | В любых | + | Запустим проект и понажимаем кнопки, в журнале будет видно |
| - | Для примера создадим две кнопки, первая | + | </ |
| - | {{ :: | + | |
| - | После чего пропишем следующий код:\\ | + | {{ :: |
| - | \\ | + | |
| - | **Кнопка " | + | |
| - | <code javascript> | + | |
| - | ds.global.x = Date(); | + | |
| - | </ | + | |
| - | \\ | + | |
| - | **Кнопка " | + | |
| - | <code javascript> | + | |
| - | alert(ds.global.x); | + | |
| - | </ | + | |
| - | При нажатии кнопки "Сохранить дату" | + | |
| - | ====== Функции ядра ====== | ||
| - | Скада система помимо стандартных функций языка JavaScript предоставляет дополнительные инструменты для работы с ядром системы. Системные функции находятся в объекте //ds//, доступном из всех скриптов. Большинство функций являются асинхронными, | ||
| - | На данный момент доступны следующие функции: | ||
| - | \\ | ||
| - | [[ds.sleep|sleep]] - задержка выполнения кода на указанное количество миллисекунд; | ||
| - | [[ds.goto|goto]] - переход на указанный экран; | ||
| - | [[ds.getDev |getDev]] - получить значение переменной устройства; | ||
| - | [[ds.setDev |setDev]] - записать значение переменной устройства; | ||
| - | [[ds.getProp |getProp]] - получить значение свойства графического элемента; | ||
| - | [[ds.setProp |setProp]] - установить значение свойства графического элемента.\\ | ||