API iRidium. Тренды (Trend)
Linear Trend - это тип графического элемента (Item), который отображает временно́й график в виде одной или нескольких кривых. Одна из кривых является главной, и она задаёт вид отображения всего тренда.
Ось времени - горизонтальная ось X. Можно задавать дату и время начальной (StartTime) и конечной (EndTime) точек оси времени, это позволяет отображать исторические (архивные) данные на тренде. Также тренд может следить за вновь поступающими значениями кривых и в реальном времени перестраивать отображение всех кривых, в этом случае следует использовать метод .SetDynamic().
Пример
Функционал тренда работает с двумя проектами - для сервера (файл .sirpz) и для панели (файл .irpz). Сервер получает значение тэга и сохраняет его в своей базе данных. Панель запрашивает у сервера данные в необходимом временном диапазоне и затем отображает их на экране в виде тренда. Управление отображением тренда осуществляется в скрипте панельного проекта (.irpz).
Для успешного запуска проектов следует загрузить проект сервера с использованием iRidium transfer на реальный контроллер или в компьютер с запущенным iRidium server. Проект панели можно загрузить на реальное устройство, либо запустить в эмуляторе. При этом в проекте панели нужно предварительно задать правильный IP-адрес сервера:

Методы объекта Linear Trend
.SetDynamic()
задаёт диапазон времени по оси времени тренда, а также перманентно привязывает крайнюю правую точку оси к текущему времени.
Синтаксис
.SetDynamic(range);
| на входе | значение | описание |
|---|---|---|
| range | 1.0 | type: number диапазон времени в сутках в формате iDate |
| на выходе | ||
|---|---|---|
| - |
Пример
`IR.GetPage("Page 1").GetItem("Trend 1").SetDynamic(5/(24*60)); // range = 5 min`
.GetCurve()
даёт доступ к кривой на тренде и её настройкам.
Синтаксис
.GetCurve(name);
| на входе | значение | описание |
|---|---|---|
| name | "Curve 1" | type: string имя кривой, к которой нужно получить доступ |
| на выходе | ||
|---|---|---|
| - | [ ] | type: object объект кривой |
Пример
`var Curve1 = IR.GetPage("Main_page").GetItem("Trend").GetCurve("Temperature");`
.GetCurve().SetCurveTag()
.SetCurveTag() позволяет указать переменную, график которой будет отображать кривая тренда. Для использования метода, получите доступ к кривой методом .GetCurve()
Синтаксис
.GetCurve(name).SetCurveTag(path);
| на входе | значение | описание |
|---|---|---|
| name | "Drivers.Modbus.Register 12" | type: string полное имя переменной (можно посмотреть примеры в диалоге Relations, в панели Programming элемента) |
| на выходе | ||
|---|---|---|
| - |
Пример
IR.GetPage("Main_page").GetItem("Trend").GetCurve("Setpoint").SetCurveTag("Drivers.iRidium Server.KNX.1/4/1");
IR.GetPage("Main_page").GetItem("Trend").GetCurve("Current").SetCurveTag("Drivers.Modbus.Register 12");
IR.GetPage("Main_page").GetItem("Trend").GetCurve("Fan speed").SetCurveTag(""); // clear
Свойства объекта Linear Trend
.StartTime
| StartTime | 43259.4621924 | type: number Дата и время начальной точки по оси времени тренда в формате iDate. |
.EndTime
| EndTime | 43260.4621924 | type: number Дата и время конечной точки по оси времени тренда в формате iDate. |
var tomorrow = new iDate()-1;
var tomorrow_start = new iDate(tomorrow[0], tomorrow[1], tomorrow[2]); // midnight time 00:00:00.000
IR.GetPage("Main_page").GetItem("Trend").StartTime = tomorrow_start;
IR.GetPage("Main_page").GetItem("Trend").EndTime = tomorrow_start+1;
Свойства кривой
.XInterval
| XInterval | 365.0 | type: number Интервал времени в сутках между подписями по оси времени в формате iDate. |
- Свойство применяется только к главной кривой тренда.
- Для аккуратного отображения тренда необходимо задать XInterval в несколько раз меньше, чем длина оси времени на тренде (EndTime - StartTime).
IR.GetPage("Main_page").GetItem("Trend").GetCurve("Temperature").XInterval=1/24; // one hour
.XLabelTemplate
| XLabelTemplate | "%yy/%mm/%dd" | type: string Формат подписей даты и времени на оси времени. |
Свойство применяется только к главной кривой тренда.
var time = "%hh:%nn:%ss.%ms"; // hh:mm:ss.ms format
var date = "%dd.%mm.%yy"; // dd.mm.yyyy format
IR.GetPage("Main_page").GetItem("Trend").GetCurve("Temperature").XLabelTemplate = time + " " + date;