Перейти к содержанию

Подходы к работе с данными внутри SCADA

Преобразование данных: "сырые" значения к инженерным единицам

ПЛК часто оперируют только целыми числами. В случае, когда необходимо выделить дробную часть из числа, то имеет смысл сделать это на уровне SCADA. Например, чтобы получить значение температуры с точностью до десятых из беззнакового целого можно воспользоваться простым арифметическим действием — делением на 10.

Или, к примеру, сигнал 4-20 мА от датчика температуры (-50…+50°С) в ПЛК будет выглядеть как как двухбайтовая беззнаковая целочисленная переменная с диапазоном значений 0…65535. В некоторых случаях имеет смысл масштабировать эти данные также на уровне SCADA-системы. Получается, что в контроллере значение 0 будет соответствовать температуре -50°С в SCADA, а значение 65535 будет соответствовать температуре +50°С.

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

Окончательная формула масштабирования для примера с датчиком температуры будет выглядеть так:

scaleScalar(value, 0, 65535, -50, 50)

  • value — актуальное значение тега, считываемое сервером;
  • 0...65535 — диапазон "сырых" значений, получаемых из ПЛК;
  • -50...50 — температурный диапазон датчика.

Работа со "словом состояния"

Хорошим тоном в программировании ПЛК является передача набора флагов в виде одного "слова состояния" (одно или двух байтовой переменной, в которой каждый бит является флагом). Например, для мотора вентилятора:

  • fan.0: останов/работает (0-ой бит в слове состоянии fan);
  • fan.1: норма/авария (1-ый бит в слове состоянии fan);
  • fan.2: готов/не готов (2-ой бит в слове состоянии fan);
  • fan.3: местное/дистанционное (3-ий бит в слове состоянии fan).

Если SCADA не умеет обращаться к отдельным битам, необходимо предусмотреть преобразование значения на сервере. Например, с помощью скрипта или выражения. Скрипт должен "разобрать" слово и создать отдельные булевые переменные для использования в мнемосхемах и сигнализации.

Пример распаковки битовой маски рассмотрен в соответствующем примере.