Это программируемое на Tibbo BASIC/C устройство, функциональность которого определяет загруженное приложение.
Мы предлагаем различные готовые к использованию приложения, например, Serial-over-IP (SoI), Modbus Gateway и Sensor Hub.
Анализ движения устройства

Анализ движения устройства

О приложении

Данный пример служит для иллюстрации возможностей интеграции LTPS с платформой AggreGate. Пример потребует базовых знаний платформы AggreGate. Для взаимодействия с устройством мы используем уже знакомый нам по предыдущим примерам TPS-драйвер. От платформы в примере используются модели и тревоги. Давайте напишем приложение, основу которого составляет схема на языке FBD и функция на языке ST. Программа служит для анализа движения устройства. После детекции движения будут проанализированы показания датчика света и, если освещение недостаточно, будет включён светодиод для подсветки. Если потребуется выключить тревогу и диод, необходимо нажать на кнопку.

Вам потребуется:

Аппаратное обеспечение

Программное обеспечение

Приложение

Для начала создадим вспомогательную функцию для обработки данных акселерометра. Вспомогательная функция будет написана на языке ST. Создадим программу на языке ST. При создании все параметры останутся дефолтными.

Первый шаг

В открывшемся окне, в первую очередь, необходимо создать локальные переменные.

Объявление переменных

VAR_INPUT
    newX, newY, newZ : DINT;
END_VAR   
VAR_OUTPUT
    averregeVal : DINT;
END_VAR   
   
VAR 
    differences : ARRAY[0..4] OF DINT;
    summ : DINT;
    i : LINT;
END_VAR

Далее можно приступить к реализации функции вычисления среднего для сглаживания и устранения случайных шумов из показаний акселерометра.

Реализация функции

summ :=0;
FOR i := 4 TO 1 BY 1 DO
    differences[i] := differences[i-1];
    summ := summ + differences[i];
END_FOR;
differences[0] := newX + newY + newZ;
summ := summ + differences[0];
averregeVal := summ / 5;

Следующий шаг

Реализация логики программы. Общая программа будет реализована FBD схемой. При создании программы нужно задать следующие свойства:

  1. Type - Program;
  2. Import - добавить ранее написанную программу calculateAverageMovement;
  3. Task - true;
  4. Device Context - LTPS (созданный ранее);
  5. Execution Type - Cycle.

Основная схема программы:

Для реализации схемы нам понадобится использовать функциональный блок, реализующий функцию, написанную и импортированную ранее. После добавления функционального блока необходимо задать ему значение реализуемой функции, как показано на снимке экрана далее.

Дополнительно

Для реализации схемы необходимо добавить несколько "input" с выражениями, которые написаны на языке ST, но внутри себя функции вызывают язык выражений платформы Aggregate. Разберем более подробно два типа выражений, использованных в схеме:

1) Получение значения одной координаты из таблицы

OBJECT_TO_DINT(cell({users.admin.devices.TPSAgent:s6_tibbit36} , "accelerationX" , 0 , FALSE))
//1 - ST function "OBJECT_TO_DINT"
//2 - AggreGate expression language "cell" 
//cell paramiters:
//{users.admin.devices.TPSAgent:s6_tibbit36} - dataTable from context, "accelerationX" - field, 0 - row, FALSE - description. 

2) Получение значения одной координаты из таблицы и операции сравнения

OBJECT_TO_DINT(cell({users.admin.devices.TPSAgent:s4_tibbit28}, "illumination" , 0 , FALSE)) < 30
//1 - ST function "OBJECT_TO_DINT"
//2 - AggreGate expression language "cell" 
//cell paramiters:
//{users.admin.devices.TPSAgent:s4_tibbit28} - dataTable from context, "illumination" - field, 0 - row, FALSE - description.
//3 - compare <.

Вложенные и простые условия

Условия в представленной выше схеме реализованы в виде переходов на метку см. блок 7 и 9. Условие перехода будет успешно выполнено после вычисления логического выражения в "input".

Далее

Необходимо создать модель, которая содержит переменную, контролирующую появление тревоги и саму тревогу соответственно.

Результат

Теперь осталось лишь запустить программу, которая после детекции движения изменит значение переменной в модели и вызовет тревогу в AggreGate, а в случае плохой освещённости включит диод. Далее тревога будет активна, и диод будет гореть до тех пор, пока пользователь не нажмёт на кнопку.

Анализ движения устройства