Язык Astra.Om

 
Язык Astra.Om позволяет описывать исполняемые элементы скриптов (процедуры и формулы), которые запускаются в процессе работы компонентов ПК AstraRegul.
 
Скрипты можно создавать в процессе работы со следующими программными компонентами:
Astra.Server.
Astra.HMI.
Astra.AStudio.
 
Процедуры и формулы в процессе выполнения обращаются к данным. На рисунке ниже приведена схема иерархии элементов. Иерархия элементов – иерархия элементов данных (объекты, поля), к которым могут обращаться исполняемые элементы (формулы , процедуры).
 
 
Элементы данных:
Поле – атомарный элемент данных, хранящий значение некоторого типа;
Объект – составной элемент данных, который может состоять из нескольких вложенных элементов данных (объектов или полей). Объект может сам хранить значение некоторого типа.
 
Исполняемые элементы:
Формула связана с полем, служит для пересчета значения поля. Пересчет формулы начинается автоматически, как только один из аргументов выражения-формулы меняет свое значение.
 
Процедура связана с объектом, служит для выполнения последовательности инструкций после наступления какого либо события, связанного с объектом.

Относительная адресация

 
Для работы с иерархией объектов используются следующие ключевые слова и символы:
me – указатель на текущий объект иерархии;
@N – обращение к N-му уровню иерархии выше текущего объекта:
@0 – текущий объект, аналогично me
@1 – родительский объект
@2 – родитель родителя
 
Пусть полный тег объекта: AK.DMN.LU1.NPS1.TANK1.SW1.State:
me – обращение к самому объекту: AK.DMN.LU1.NPS1.TANK1.SW1.State
@1 – обращение к родительскому объекту: AK.DMN.LU1.NPS1.TANK1.SW1;
@2 – "прыжок" на два уровня вверх по иерархии объектов: AK.DMN.LU1.NPS1.TANK1;
@3 – "прыжок" на три уровня вверх по иерархии объектов: AK.DMN.LU1.NPS1.
 
$ – символ «доллар» применяется в ситуациях, когда тег объекта противоречит стандартным правилам написания - например, наличие пробелов или запрещенных символов. Символ "$" указывает компилятору, что написанная после него строка (заключенная в двойные кавычки) является путем до объекта в иерархии.
 
Путь к атрибуту объекта содержит пробелы, поэтому нужно использовать $:
X: uint1 = $"Уровень 1.Уровень 2.Объект А.Атрибут объекта";

Явное чтение аргумента формулы

 
При компиляции формул для каждого аргумента создаются привязки, которые отслеживают состояния аргументов и запускают пересчет формулы каждый раз при изменении аргумента. Чтобы компилятор не отслеживал состояние некоторого аргумента при пересчете, используйте оператор явного чтения read.
 
Значение сигнала вычисляется по формуле: X + Y * Z. Необходимо, чтобы значение пересчитывалось при изменениях X и Y и не пересчитывалось при изменениях Z:
X + Y * read Z