ОБЬ
Fast Start лифтовое оборудование "Обь" + SCADA
1. Серверный проект
Драйвер
Обмен с диспетчерским комплексом «Обь» может выполняться по Modbus TCP или Modbus RTU. Выбор транспорта не влияет на карту регистров устройства.
В текущем проекте используется драйвер Modbus TCP Network.

Документация по настройке драйвера
Важно! Используем вторую версию драйвера.
SCADA-теги
Правило именования SCADA-тегов
Имена SCADA-тегов формируются по следующему шаблону:
<Имя тега> <Номер лифта>
Где:
-
<Имя тега> - функциональное наименование тега;
-
<Номер лифта> - порядковый номер лифта;
-
между именем тега и номером лифта ставится один пробел.
Если имя тега не будет соответствовать этому правилу, то скрипты могут работать некорректно.
Использование Битовой и Байтовой маски в SCADA-тегах (В разработке)
У большинства тегов используется настройка Использовать маску. Эта настройка нужна для получения значения только определенного бита или байта регистра.
Скрипты
GlobVars - главный конфигурационный файл. Содержит глобальные переменные, необходимые для работы всех скриптов. Обязательно укажите количество лифтов в переменной ELEV_COUNT
ObErrors - собраны все возможные ошибки всех лифтовых блоков в один объект. Почти все они закомментированы, кроме ошибок для ЛБ 087. Оставьте ошибки тех устройств, которые используются у вас в проекте, остальные удалите.
Utils - вспомогательные функции.
Subscriptions - Управление подписками на изменения тегов.
Main - Основной модуль обработки событий системы
ParseRegisters - Модуль с функциями обработки данных из регистров.
Состояние устройств на шине CAN
Подробная информация о структуре и содержимом регистров устройств приведена в
ОПИСАНИЕ РЕГИСТРОВ MODBUS СОСТОЯНИЙ УСТРОЙСТВ НА ШИНЕ CAN
Обратите внимание на то, что у каждого типа устройств будет свой диапазон адресов.

Добавление тегов для устройства на шине.
У всех устройств есть как одинаковые теги для отслеживания их состояния, так и уникальные для каждого устройства.
Одинаковые для всех устройств

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

Изменения этих тегов будут отлавливаться следующими функциями в скрипте Main

Для корректной работы данных функций нужно добавить теги, соответствующие нашему устройству. Для примера, ПКД 2*16.
Находим это устройство в объекте g_o01BitMaps в скрипте GlobVars и добавляем теги с именами из текущего объекта.

В конце имени каждого тега добавляем "<Адрес устр-ва на шине> <Номер лифта в проекте>"

Делаем тоже самое для объектов g_o02BitMaps и g_o03BitMaps.
Данные из "+00h Статус данных и тип устройства №_36 1" парсятся в "Статус данных устройства_36 1" и "Тип устройства_36 1".
Данные из "+04-05h Версия программы устройства №_36 1" парсятся в "Версия программы устройства №_36 1".
В итоге получится следующий список тегов

2. Панельный проект
Структура проекта
Проект состоит из главной страницы, попапа для подробной информации о лифтах первого дома, попапа для подробной информации для каждого лифта отдельно и попапа с более подробной информации, доступной только для инженеров.

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


События в журналах создаются скриптом при возникновении события, на которое мы подписаны. Теги перечислены в объекте g_oEventItems в скрипте ObConfig. Имена тегов указаны без номера лифта в конце!

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

При изменении тега Текущий этаж кабина лифта меняет свое положение. За это отвечает функция updateLiftPosition в скрипте ObGUI.
3. Скрипты
DateTime - Модуль для работы с датой и временем
Elevators - Класс для эмуляции работы лифтов (2, 3, 4).
Main - Главный модуль инициализации и обработки событий
ObConfig - Файл конфигурации
ObEvents - Модуль обработки событий
ObGUI - Модуль управления графическим интерфейсом
Utils - Вспомогательные утилиты