Часто задаваемые вопросы
Типы данных
В данном разделе представлены типы данных, используемые при работе с активными тегами проекта в системе. Для удобства на дополнительной вкладке в качестве справочной информации приведены типы данных, предусмотренные стандартом МЭК 61131-3 для языков программирования ПЛК.
Boolean— логический тип (true/false, 1/0).Int8— целое со знаком (-128 до 127).UInt8— целое без знака (0 до 255).Int16— целое со знаком (-32 768 до 32 767).UInt16— целое без знака (0 до 65 535).Int32— целое со знаком (-2 147 483 648 до 2 147 483 647).UInt32— целое без знака (0 до 4 294 967 295).Int64— целое со знаком (±9.2×10¹⁸).UInt64— целое без знака (0 до 1.8×10¹⁹).Float (Float32)— число с плавающей запятой (±3.4×10³⁸).Double (Float64)— число с двойной точностью (±1.7×10³⁰⁸).String— строковый тип данных.DateTime— дата и время (представляет из себя временную метку unix timestamp в миллисекундах, отсчитываемой от начала эпохи Unix (1 января 1970 года, 00:00:00 UTC). Внутри системы преобразуется в более читаемый формат ДД.ММ.ГГГГ ЧЧ:ММ:СС).
BOOL— логический тип, может принимать значенияTRUE(истина) илиFALSE(ложь).SINT— короткое целое со знаком, диапазон: от -128 до 127.INT— целое со знаком, диапазон: от -32 768 до 32 767.DINT— двойное целое со знаком, диапазон: от -2 147 483 648 до 2 147 483 647.LINT— длинное целое со знаком, диапазон: от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.USINT— короткое целое без знака, диапазон: от 0 до 255.UINT— целое без знака, диапазон: от 0 до 65 535.UDINT— двойное целое без знака, диапазон: от 0 до 4 294 967 295.ULINT— длинное целое без знака, диапазон: от 0 до 18 446 744 073 709 551 615.REAL— число с плавающей запятой одинарной точности (32 бита), соответствует стандарту IEEE 754. Диапазон: приблизительно ±1.18×10⁻³⁸ до ±3.40×10³⁸.LREAL— число с плавающей запятой двойной точности (64 бита). Диапазон: приблизительно ±2.23×10⁻³⁰⁸ до ±1.80×10³⁰⁸.BYTE— битовая строка длиной 8 бит: от 0 до 255.WORD— битовая строка длиной 16 бит: от 0 до 65 535.DWORD— битовая строка длиной 32 бита: от 0 до 4 294 967 295.LWORD— битовая строка длиной 64 бита: от 0 до 18 446 744 073 709 551 615.TIME— длительность (время) . Внутреннее представление — 32 бита, обычно в миллисекундах.LTIME— длительность с высоким разрешением (64 бита, наносекунды).DATE— только дата.LDATE— дата с высоким разрешением.TIME_OF_DAYилиTOD— время суток.LTIME_OF_DAYилиLTOD— время суток с высоким разрешением.DATE_AND_TIMEилиDT— дата и время суток.LDATE_AND_TIMEилиLDT— дата и время суток с высоким разрешением.STRING— строка однобайтовых символов переменной длины . Максимальная длина определяется разработчиком среды или явно указывается при объявлении (например, STRING[80]).WSTRING— строка двухбайтовых символов (для поддержки Unicode).CHAR— одиночный однобайтовый символ.WCHAR— одиночный двухбайтовый символ.
Битовая маска
Для оптимизации использования ресурсов (сокращение количества тегов) SCADA-системы часто применяется метод упаковки/распаковки битовой маски. Вместо передачи статуса каждого дискретного сигнала (состояние агрегата, реле, аварии и т. д.) отдельным тегом, контроллер объединяет группу логических сигналов в одно целое число (регистр 1 или 2 байта) и передает данные на верхний уровень, где их можно разложить на биты.
Бит может находиться в одном из двух состояний:
- логический
0(выключено,false). - логическая
1(включено,true).
Байт представляет собой последовательность из 8 бит. Если представить байт в виде строки из 8 ячеек, то каждый бит (ячейка) соответствует определенной степени двойки. Самая правая ячейка — 2⁰, следующая за ней влево — 2¹, и так далее до 2⁷.
| 7 бит | 6 бит | 5 бит | 4 бит | 3 бит | 2 бит | 1 бит | 0 бит |
|---|---|---|---|---|---|---|---|
2⁷ |
2⁶ |
2⁵ |
2⁴ |
2³ |
2² |
2¹ |
2⁰ |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
1000 0000 |
0100 0000 |
0010 0000 |
0001 0000 |
0000 1000 |
0000 0100 |
0000 0010 |
0000 0001 |
Если сложить все значения степеней двойки, представленных в байте, то получится число 255.
2⁰ + 2¹ + 2² + 2³ + 2⁴ + 2⁵ + 2⁶ + 2⁷ = 128 + 63 + 16 + 8 + 4 + 2 + 1 = 255
Таким образом, один байт позволяет закодировать 256 различных значений (от 0 до 255).
В качестве примера можно рассмотреть распаковку тега "Слово состояние" в области Holding Registers, с предварительно настроенным драйвером Modbus. Тег будет принимать число, а внутри системы раскладываться на отдельные биты. Для получения значения и передачи его из системы, помимо функции чтения в свойствах, cледует указать также и запись. В настройках тега для драйвера Modbus подойдет тип данных UInt16. Это двухбайтовый регистр, из которого для выполнения примера понадобится только один байт.

После настройки источника тег необходимо добавить в список активных.

Далее необходимо перейти в "Редактор мнемосхем", создать мнемосхему и добавить в область редактирования "Логический индикатор 2" из "Общей галереи". Затем нажать правой кнопкой мыши на индикаторе и отредактировать его для работы с битовыми состояниями.

В первую очередь в режиме редактирования "Редактора фигур" следует активировать пункт меню Фигура > Аргументы и в открывшемся диалоговом окне добавить новый аргумент "Номер бита" в свойства.

Для аргумента необходимо установить флаг "Видимость в свойствах", чтобы иметь возможность указывать номер бита для элемента на мнемосхеме. Затем необходимо отключить флаг "Видимость в привязках" и указать тип значения Integer. Далее закрыть окно, нажав кнопку "Ок".

На втором этапе необходимо активировать пункт меню Фигура > Привязки и отредактировать выражения в двух привязках. Цели рекомендуется оставить без изменений. В выражении будет использоваться функция getBit, которая позволяет извлекать состояние конкретного бита из значения тега.

Справка
Для различных индикаторов, представленных в общей галерее, используются различные выражения. В частности, для "Логического индикатора 2" доработанное выражение при работе с битовыми состояниями можно трактовать следущим образом: если переменная не привязана, результатом будет значение 1. В противном случае из значения привязанной переменной извлекается состояние бита, указанное в свойствах фигуры.
Перед сохранением следует нажать кнопку "Проверить" и убедиться, что в выражении отсутствуют ошибки.

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

После нажатия кнопки "Ок" в редакторе фигур в окне с предложением нажать "Да."

Далее выполнить привязку фигуры к активному тегу проекта и размножить элемент. Для каждого элемента указать "Номер бита" в свойствах. Справа налево для первого элемента указать 0 бит, для второго элемента 1 бит и т.д. Обязательно проверить, что к каждому элементу выполнена привязка к тегу "Слово состояние" и указан номер бита в свойствах.


Развернуть проект на сервере, перейти в любой удобный клиент и при помощи эмулятора передать любое число в диапазоне 0-255. В зависимости от переданного числа на мнемосхеме будет активироваться соответствующий бит или набор битов. Для удобства на мнемосхеме можно расположить любой текстовый индикатор из общей галереи и привязать к нему тег проекта с актуальным значением тега.

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

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

В редакторе аргументов добавить новый аргумент "Номер бита". Установить флаг видимости в свойствах.


Далее создать новую привязку и отредактировать для неё выражение и цель.

В выражении указать:
Функция setBit установит значение бита. В данном выражении она принимает исходную переменную, номер бита и новое инвертированное значение, которое было получено функцией getBit.
Для цели необходимо указать:
- Цель — Кнопка.
- Свойство — ActionProps.Value (значение записываемое в тег при нажатии).
Далее отредактировать выражения первых двух привязок. Это необходимо, чтобы переключатель мог не только записывать состояние бита, но и считывать его. Цели рекомендуется оставить без изменений.


Далее выйти из редактора привязок и редактора фигур, нажав кнопку "Ок" для сохранения изменений. Привязать к преключателю тег "Слово состояние", размножить его и для каждого указать номер бита начиная с 0, как это было выполнено с индикатором. Развернуть проект на сервере и перейти в клиент. Теперь появилась возможность включать и отключать каждый бит активного тега. Если включить бит 4, бит 5 и бит 6, то тег примет значение 112.

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

Групповые операции
Для выполнения групповых операций с активными тегами необходимо выделить группу тегов в окне "Проект" любым удобным способом и произвести настройку свойств, доступных для группового редактирования.
Справка
Не все свойства тегов могут быть представлены в списке. В окне "Свойства" будут отображаться только совместимые. Если требуемое свойство для группового редактирования отсутствует в списке, необходимо будет настроить данное свойство для каждого тега отдельно.
Если требуется увеличить имя с приращением +1, то после выбора группы необходимо ввести новое имя, поставить пробел и указать число, с которого начнется нумерация, затем нажать клавишу "Enter".


Например, если в проект необходимо добавить аналогичный ПЛК с тем же набором тегов, можно воспользоваться функцией "Дублировать группу". Для этого следует нажать на каталоге правой кнопкой мыши и из контекстного меню выбрать:
- Активировать флаг "Заменять имена".
- Выбрать пункт "Дублировать", либо воспользоваться комбинацией клавиш Ctrl+D

Для замены имени необходимо указать искомое слово и слово, которое будет использоваться вместо него.

После выполнения дублирования (при необходимости) можно скопировать свойства для всего каталога с тегами через контекстное меню.


В диалоговом окне следует проверить корректность переноса свойств от исходного тега к целевому и нажать кнопку "Ок".

Экспорт проекта из Симплайт 4
Миграция проекта из Симплайт 4 осуществляется через экспорт исходной конфигурации и последующий импорт в среде разработки Симплайт 5. Данный механизм позволяет перенести только настройки драйвера и активные теги проекта.
Справка
На данном этапе миграция отчетов, архивных данных и графических элементов мнемосхем проекта недоступна.
Важно
При работе с четвертой версией необходимо учитывать, что файл конфигурации драйвера после его настройки сохраняется на локальном компьютере. При переносе проекта на другой компьютер и попытке открыть "Редактор каналов" без источника данных, система автоматически отвяжет теги от источника и миграцию проекта выполнить не получится.
Modbus
Для выполнения миграции проекта с источником данных Modbus будет рассмотрен пример части технологического процесса работы насосов. Источником данных выступит эмулятор Modbus TCP/RTU устройств.

В исходный проект была добавлена конфигурация драйвера Modbus. В конфигурацию драйвера были добавлены теги, которые впоследствии были перенесены в проект.

Необходимо убедиться, что теги проекта получают значения с хорошим качеством. Для этого следует активировать функцию "Тест каналов".

Миграция проекта включает в себя четыре этапа:
- Экспорт конфигурации Modbus-драйвера версии 4 в CSV-файл.
- Экспорт конфигурации активных тегов версии 4 в JSON-файл.
- Импорт конфигурации Modbus-драйвера из сохраненного CSV-файла в версию 5.
- Импорт конфигурации активных тегов из сохраненного JSON-файла в версию 5.
Для экспорта кофигурации драйвера необходимо воспользоваться инструментом экспорта в CSV-файл. Это инструмент доступен в окне настройки Modbus-драйвера. Для этого следует нажать кнопку "Экспорт в CSV" и сохранить файл.

После этого необходимо выполнить экспорт конфигурации активных тегов проекта. В "Редакторе каналов" выделить теги в окне, вызвать контекстное меню, нажав правую кнопку мыши, и выбрать пункт "Экспорт тегов в v5". В диалоговом окне выбрать каталог для сохранения JSON-файла.

Далее перейти в среду разработки Симплайт 5 и создать новый проект.

В окне настройки Modbus-драйвера нажать кнопку "Импорт из CSV" и указать путь к каталогу с CSV-файлом конфигурации.

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

Следующим этапом необходимо импортировать конфигурацию активных тегов проекта. Для этого в окне "Проект" необходимо вызвать контекстное меню, нажав правую кнопку мыши, и выбрать "Импорт тегов из v4".

Система уведомит о полной замене активных тегов целевого проекта на импортируемые.

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

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

Запуск проекта без установки среды
Задача:
Необходимо развернуть проект с названием "Вентиляция" на ПК-сервере Симплайт 5 без установки среды разработки.
Для решения задачи потребуется выполнить следующие действия:
- Скопировать проект в каталог, который система при установке назначает для хранения проектов:
C:/SimpLight projects/. - Перейти в каталог
C:/Users/Public/Documents/SimpLight_5.0/, открыть файлserver.config.jsonи указать в нем новые значения для параметров:projectFolder— название каталога.projectName— название проекта.
{
"binHome": "C:\\Program Files\\SimpLight_5.0\\Server",
"channelWatcherRate": 50,
"hostname": "localhost",
"projectFolder": "C:\\SimpLight projects\\Вентиляция",
"projectHome": "C:\\SimpLight projects\\",
"projectName": "Вентиляция",
"projectID": "00000000-0000-0000-0000-000000000000",
"runType": "service",
"stationID": "88f410b8-d8fc-4e0c-be7e-ed6fe97ea693",
"version": "5.1.2.1485",
"versionType": "enterprise"
}
4. После этого необходимо запустить "Менеджер служб" и нажать кнопку "Запуск сервера", либо выполнить перезагрузку сервера, если на нем был развернут другой проект.

- Скопировать проект в каталог, который система при установке назначает для хранения проектов:
/var/lib/simplight/projects/. - Перейти в каталог
/var/lib/simplight/common/, открыть файлserver.config.jsonи указать в нем новые значения для параметров:projectFolder— название каталога.projectName— название проекта.
{
"binHome": "C:\\Program Files\\SimpLight_5.0\\Server",
"channelWatcherRate": 50,
"hostname": "localhost",
"projectFolder": "C:\\SimpLight projects\\Вентиляция",
"projectHome": "C:\\SimpLight projects\\",
"projectName": "Вентиляция",
"projectID": "00000000-0000-0000-0000-000000000000",
"runType": "service",
"stationID": "88f410b8-d8fc-4e0c-be7e-ed6fe97ea693",
"version": "5.1.2.1485",
"versionType": "enterprise"
}
4. После этого необходимо запустить "Менеджер служб" и нажать кнопку "Запуск сервера", либо выполнить перезагрузку сервера, если на нем был развернут другой проект.

Проверка типа лицензии USB-ключа на удаленном ПК
Задача:
Необходимо проверить тип лицензии удаленного ПК-сервера Симплайт 5.
Для решения задачи потребуется перейти в "Профили развертывания" и нажатием кнопки (✔) на панели инструментов активировать профиль удаленного ПК-сервера. Затем нажать кнопку запроса детальной информации о типе лицензии (❕).

При подключении к серверу система может выдать предупреждение Server Certificate Invalid or not present. Буквально это означает, что сертификат сервера является недействительным или отсутствует.

В таком случае необходимо выполнить перевыпуск сертификата. Для этого следует открыть HMI-клиент или web-клиент и подключиться к серверу, на котором развернут проект. Затем перейти в "Панель управления" клиента.

В области "Инструменты" нажать кнопку "Перевыпустить сертификат".

Система запросит подтверждение. Также есть возможность указать дополнительные IP-адреса, включаемые в сертификат при перевыпуске.

В случае отсутствия проблем службы сервера уведомят о выпуске нового сертификата. После этого необходимо перезагрузить удаленный ПК-сервер.

После перезагрузки требуется повторить процедуру проверки типа лицензии.

Также можно перенести каталог c системными тегами сервера "Лицензионный ключ" в область активных тегов и нажать кнопку "Тест тегов".

В ответ сервер предоставит информацию с подключенного USB-носителя с лицензией. Если есть необходимость контролировать подключение USB-ключа в ОС, то можно связать тег "Статус" с аварийным событием в системе.
Настройка оповещений в Telegram
Сначала необходимо создать бота в мессенджере. Для этого в поле поиска следует ввести команду @BotFather — это основной бот в Telegram, с помощью которого можно создать нового бота и управлять всеми созданными ботами.
После этого необходимо нажать кнопку START, чтобы начать работу с ботом. В меню выбрать команду create a new bot или в поле для сообщений ввести команду /newbot.
Ввести название бота и нажать кнопку отправки сообщения в мессенджере. Название будут видеть подписчики telegram-бота.
Необходимо ввести имя пользователя для созданного бота. Имя пользователя должно быть уникальным и заканчиваться на bot. В случае если имя пользователя уже занято, @BotFather предложит выбрать другое имя.
В случае успешного завершения процесса создания нового бота, будет выведено сообщение о завершении. В сообщении будет содержаться следующая информация:
- Токен — это конфиденциальный код доступа к боту через API. Его необходимо сразу скопировать в буфер обмена, чтобы настроить оповещения для мессенджера в среде разработки.
- Ссылка на канал бота. После копирования токена следует сразу перейти в канал бота по ссылке.
В канале нажать кнопку START для запуска бота.
В среде разработки перейти в Настройки > Уведомления > Телеграм.
Для активации функции необходимо выбрать флаг "Выключено". После этого флаг изменит значение на "Включено". В поле "Токен" необходимо вставить токен, скопированный ранее, и нажать кнопку "Обновить" на боковой панели инструментов окна настройки telegram-сообщений.
В случае если после обновления система выдаст сообщение об отсутствии пользователей, необходимо отправить в бот любое сообщение, после чего повторить попытку.
В среде разработки повторно выполнить действие "Обновить". В результате в разделе "Получатели" должен появиться контакт получателя.
Для отправки тестового сообщения получателю следует его выбрать из списка и нажать кнопку "Отправить тестовое сообщение".
Система отправит сообщение с текстом "Тестовое сообщение. Рассылка в Telegram успешно настроена".
Настройку оповещений для получателя можно активировать двойным нажатием левой кнопки мыши на нужном получателе. В диалоговом окне "Настройка получателя" активировать флаг "Включить в рассылку", выбрать диапазон "Начало/Конец" для оповещений по приоритетам и нажать кнопку "ОК", чтобы сохранить изменения.
Перейти в настройки категорий событий, выбрать необходимую группу событий и в раскрывающемся списке "Канал сообщений" в поле "Телеграм" нажать на кнопку ...
В диалоговом окне "Получатели в категории событий" выбрать получателя.
После сохранения в поле "Получатели" будет отображаться информация о том, что добавлен один получатель. После произведенных настроек для всех аварийных событий оповещения будут дублироваться в simplight bot мессенджера.
Изменение источника данных
В некоторых случаях может возникнуть ситуация, что на каком-то этапе разработки проекта источник данных, к которому были привязаны теги, может изменится. Но проект при этом уже разработан, в нем выполнены привязки к определенным объектам на мнемосхеме, либо названия тегов используются в скриптах. Чтобы не удалять теги и привязки из проекта, можно использовать инструмент "Отвязать каналы от источника".
Например, есть некоторый набор активных тегов в проекте.
Необходимо изменить привязки некоторых тегов с источника данных с протоколом Modbus TCP на протокол Modbus RTU.
Система запросит подтверждение.
После выборе варианта "Да" система отвяжет теги от источника и преобразует физические теги проекта в виртуальные. При этом ID тегов останутся неизменными.
После этого необходимо открыть источник COM (или другой настроенный драйвер) и, используя левую кнопку мыши, перетащить тег из нового устройства на отвязанный ранее тег.
После этого тег становится физическим, что подтверждается изменением цвета стрелочного индикатора, адреса источника и типа данных. При этом идентификатор ID и все привязки тега внутри проекта остаются неизменными.