| Порівняння попередніх версій Попередня ревізія | |
| scada:cicodefiles [2026/08/27 10:31] – scada | scada:cicodefiles [2026/08/27 10:39] (поточний) – scada |
|---|
| ====== Документація бібліотечних модулів Cicode (AVEVA / Citect SCADA & PowerSCADA Expert) =========== 1. Базові бібліотечні контролі та графічний інтерфейс ========= _Internal_Library.ci (_Internal_Control.ci) ==== | ====== Документація бібліотечних модулів Cicode (AVEVA / Citect SCADA & PowerSCADA Expert) ====== |
| Базове ядро системи бібліотечних контролів SCADA: Реєстрація графічних елементів керування через анімаційні номери (AN) та розділення задач за чергами високого (''_LibCtrl_HP'') та низького (''_LibCtrl'') пріоритетів. Керування життєвим циклом компонентів: ініціалізація, циклічна обробка, перемальовування (''_LibControl_StartRender'', ''_LibControl_RenderComplete'') та перевірка зайнятості (''_LibControl_IsBusy''). Маніпуляція числовими масивами, упакованими в текстові рядки (''LibControl_StrArray*''), та механізм динамічного масштабування. ==== Internal_Table.ci / Table.ci ==== | |
| Низькорівневе ядро та публічний API табличного контрола (''LibTable''): Керування структурою стовпців: додавання, приховування, зміна порядку свайпом/перетягуванням, автопідбір ширини під текст (''_LibTable_SetColWidth'', ''_LibTable_AutoWidth''). Обробка виділення рядків: одиночний вибір, вибір діапазону клавішею Shift, кумулятивний вибір через Ctrl та вибір усіх рядків (''LibTable_SelectRow'', ''LibTable_SelectAll''). Кешування даних комірок у чергах і фонове виконання задач для вибраних рядків (''LibTable_TaskSelectedRows''). ==== TabTable.ci ==== | ===== 1. Базові бібліотечні контролі та графічний інтерфейс ===== |
| Високорівневі допоміжні функції для роботи з таблицями в шаблонах екранних форм: Автоматичне підлаштування ширини всіх видимих колонок таблиці (''TabTable_AutoFit''). Підрахунок кількості виділених оператором рядків у видимій області дисплея (''TabTable_GetDspSelectedCount''). Запит підтвердження дій над прихованими за межами прокрутки виділеними записами (''TabTable_ShowRowActionConfirmForm''). ==== Internal_Scrollbar.ci / Scrollbar.ci ==== | |
| Внутрішня математика та зовнішній інтерфейс елемента смуги прокрутки (''LibScrollBar''): Розрахунок розміру повзунка (thumb) на основі співвідношення видимих рядків до загальної кількості записів. Обробка перетягування повзунка мишею, посторінковий перехід при кліку поза повзунком та авто-приховування. Синхронізація позиції прокрутки з прив'язаними таблицями та деревами через виклики зворотного зв'язку. ==== _Internal_Slider.ci / Slider.ci ==== | ==== _Internal_Library.ci (_Internal_Control.ci) ==== |
| Реалізація горизонтального та вертикального повзунка/слайдера: Обчислення відносного та абсолютного зсуву в пікселях під час перетягування (''_LibSlider_SetOffset''). Підтримка режиму пристикування (Docking) до країв екрана зі збереженням попередньої позиції. Збереження позицій слайдера у чергах для відновлення стану після зміни сторінок. ==== TabTree.ci ==== | Базове ядро системи бібліотечних контролів SCADA: |
| Керування інтерактивним спліттером (розділювачем панелей) між деревом та таблицею: Динамічна зміна ширини лівого дерева та правої таблиці при переміщенні повзунка (''TabTree_SplitChanged''). Автоматичне позиціонування та приховування прив'язаних горизонтальних і вертикальних скролбарів. Допоміжні функції роботи з кластерними префіксами обладнання (''TabEqTree_HasCluster'', ''TabEquip_GetCluster''). ==== _Internal_Tree.ci / Tree.ci ==== | |
| Ієрархічне деревоподібне меню з підтримкою чекбоксів та розгортання: Рекурсивний рендеринг вузлів, підвузлів, ліній зв'язку та піктограм із контролем глибини стека. Підтримка станів чекбоксів (активний, неактивний, успадкований від батька) через бітові маски. Автоматичне розгортання батьківських гілок і прокрутка до виділеного елемента (''LibTree_SelectItemRef''). ==== _Internal_Calendar.ci / Calendar.ci ==== | * Реєстрація елементів через анімаційні номери (AN). |
| Календарний контроль для вибору дат і часових проміжків: Календарна арифметика: розрахунок високосних років, зміщення днів тижня та кількості днів у місяці. Обробка вибору одиночних дат, діапазонів і подвійних кліків (''_LibCalendar_MouseUp'', ''_LibCalendar_MouseDouble''). Підсвічування поточної дати, виділених днів та перехід між місяцями свайпами. ==== _Internal_Sample.ci / Sample.ci ==== | |
| Шаблонний каркас для розробки нових бібліотечних контролів: Базова координатна сітка, обробка наведення та кліків курсора. Структура для підключення горизонтальних і вертикальних скролбарів. ===== 2. Навігація, меню та вкладки ========= _Internal_PageTabs.ci / Tabs.ci / PageTabs.ci ==== | |
| Керування вкладками сторінок (Tab Control): Генерація та перемикання вкладок на основі списку відкритих вікон (''PageList'') або меню (''MenuNode''). Підтримка закриття окремих вкладок кліком на піктограму хрестика. Розрахунок адаптивної ширини та посторінкова прокрутка вкладок (''LibTabs_Scroll''). ==== Tabmenu.ci / Tabmenu_Metadata.ci ==== | * Розподіл завдань на черги високого (''_LibCtrl_HP'') та низького (''_LibCtrl'') пріоритетів. |
| Система навігаційних вкладок і панелей кнопок у шаблонах Tab Style: Побудова дворівневого меню (вкладки розділів зверху, кнопки операцій під ними). Автоматичне приховування елементів, що не вміщуються на екрані, та виведення їх у випадаюче меню переповнення (''Tabmenu_SelectHiddenTabMenu''). Збереження конфігурації позицій, ширини та метаданих об'єктів у внутрішніх масивах. ==== Page.ci ==== | |
| Системні функції навігації, друку сторінок та безпеки шаблонів: Перехід до батьківської сторінки (''PageParent'') та друк екрана/звіту (''PagePrint''). Відображення діалогового вікна входу/виходу користувача та редагування облікових записів (''PageDspLoginMenu''). Парсер виконання застарілих команд формату CSV_Include (''?Function arg1,arg2''). Перевірка привілеїв під час спроби завершення роботи SCADA (''_PageShutdownConfirmation''). ==== PLSNavigation.ci ==== | |
| Керування історією переходів оператора: Ведення циклічного стека історії відкритих сторінок для кожного вікна окремо. Навігація вперед/назад по історії зі збереженням параметрів виклику сторінок (''PLSNavPageBackward'', ''PLSNavPageForward''). Випадаюче контекстне меню історії відвіданих сторінок (''PLSNavPageBackwardMenu''). ==== PLSNavigationCustom_Tabmenu.ci ==== | * Керування життєвим циклом компонентів: ініціалізація, циклічна обробка, рендеринг (''_LibControl_StartRender'', ''_LibControl_RenderComplete'') та перевірка зайнятості (''_LibControl_IsBusy''). |
| Генерація типової структури навігаційного меню: Автоматичне наповнення розділів меню: «PAGES» (сторінки проекту з бази ''_pages.rdb''), «ALARMS/EVENTS» (журнали тривог та подій), «ANALYSIS» (тренди, осцилограми, діагностика). Фільтрація та виключення службових сторінок (''_PLSNav_IsSystemPage''). ==== PLSNavigationTabs.ci ==== | |
| Побудова навігаційних панелей на основі бази даних ''PLSNavTab_DBF'': Зчитування дерева меню, прав доступу операторів, команд та іконок із файлу бази даних. Динамічний розрахунок геометрії кнопок та позиціонування елементів за рівнями. ===== 3. Тривоги, події та фільтрація ========= AlarmFilter.ci / TabAlarmFilter.ci ==== | |
| Публічний інтерфейс для виклику діалогів фільтрації тривог: Відкриття діалогу налаштування фільтрації активних тривог, журналу подій, відключених тривог чи SOE (''LibAlarmFilterForm''). Формування та застосування рядка фільтра до системного списку анімаційного номера (AN). Перевірка наявності конкретних полів у поточному фільтрі (''LibAlarmFilterContains''). ==== _Internal_AlarmFilterActiveX.ci / _Internal_AlarmFilterControls.ci ==== | * Маніпуляція числовими масивами в рядках (''*LibControl_StrArray**'') та механізм динамічного масштабування. |
| Обслуговування вікна конфігурації фільтра тривог: Ініціалізація випадаючих списків вибору полів тривог, операторів порівняння та стандартних правил. Керування радіокнопками вибору простого, розширеного або користувацького режиму фільтра. Інтеграція з календарем для вибору часових інтервалів. ==== _Internal_AlarmFilterParser.ci / _Internal_AlarmFilterTable.ci / _Internal_AlarmFilterTransfer.ci ==== | |
| Аналіз, валідація та синхронізація виразів фільтрації: ''_Internal_AlarmFilterParser.ci'': приведення дат до секунд Unix Time, числових форматів та обробка макросу ''#Now''. ''_Internal_AlarmFilterTable.ci'': взаємодія таблиці правил із внутрішньою буферною чергою, видалення виділених умов. ''_Internal_AlarmFilterTransfer.ci'': передача сформованих виразів у ядро SCADA через сесії ''AlarmFilterEdit*''. ==== PLSAlarmFilter.ci / PLSAlarmFilterInit.ci / PLSAlarmFilterValidation.ci ==== | |
| Розширена фільтрація тривог для PowerSCADA Expert: Підтримка модальних вікон фільтрації тривог та подій безпеки (''!PLSAlarmFilter'', ''!PLSSecFilter''). Фільтрація за часовими мітками з корекцією літнього часу (DST), категоріями, пріоритетами та метаданими. Валідація синтаксису введених користувачем даних перед збереженням у глобальний кеш. ==== _Internal_AlmTable.ci / AlmTable.ci / TabAlmTable.ci ==== | |
| Реалізація та адаптація таблиці відображення тривог: Зчитування записів тривог за допомогою викликів ''AlarmDsp'' / ''AlarmDspLast''. Формування колонок на основі категорійних форматів або параметрів проекту. Сортування колонок кліком по заголовку, експорт даних сторінок у формати HTML та CSV. ==== TabAlarm.ci / TabAlarm_Metadata.ci / TabAlarm_Utility.ci ==== | ==== *Internal_Table.ci / Table.ci ==== |
| Утиліти та методи обробки тривог для Tab Style шаблонів: Перевірка прав доступу на квитування, блокування та коментування записів (''TabAlarm_GetAckPriv''). Керування контекстним меню виділеного рядка тривоги. Збереження метаданих списку тривог і колонок у сторінкових змінних. ==== PLSAlarmDisplay.ci / PLSAlarmCustom_TabAlarm.ci ==== | Низькорівневе ядро та публічний API табличного контролу (''LibTable*''): |
| Специфічні механізми відображення та контекстні дії тривог PLS: Формування розширеного контекстного меню (перехід до перегляду осцилограм Waveform, історії сповіщень Notification History, сторінки обладнання). Додавання користувацьких коментарів та подій безпосередньо у Sequence of Events (SOE). Декодування спеціальних тегів опису в коментарях ('''', '''', '''', ''''). ==== TabAlarmEqTree.ci ==== | |
| Синхронізація дерева обладнання з фільтрами списку тривог: Автоматичне формування складних фільтрів за вибраними чекбоксами вузлів дерева. Підрахунок та динамічне відображення кількості активних тривог для кожного пристрою дерева. ==== PLSAlarmSetpoints.ci ==== | * Керування структурою колонок: додавання, приховування, зміна порядку перетягуванням та автопідбір ширини (''_LibTable_SetColWidth'', ''_LibTable_AutoWidth''). |
| Перегляд та зміна уставок спрацьовування аварійної сигналізації: Посторінкова навігація по списку уставок аналогових і дискретних тривог. Зміна числових значень меж (HH, H, L, LL, Deadband, Delay) через екранну клавіатуру з перевіркою меж. Дистанційне блокування/розблокування тривог із синхронним записом на резервовані сервери. ==== PLSAlarmSound.ci / TabAlarmSnd.ci ==== | |
| Звукова сигналізація аварійних режимів: Фоновий контроль найвищого несквитованого пріоритету тривоги в системі. Відтворення аудіофайлів ''.wav'' на клієнтах із налаштованою частотою повторення. Функція тимчасового заглушення сирени (Silence) оператором на заданий час. ==== AddAuditEvent.ci / PLSAlarmQueue.ci ==== | |
| Журналювання аудиту та застаріла файлова черга: ''AddAuditEvent.ci'': функція запису системних дій оператора у журнал SOE (''SOEEventAdd''). ''PLSAlarmQueue.ci'' (Deprecated): експорт подій у циклічні файли CSV/XML на диску. ===== 4. Перегляд баз даних, SQL та теги ========= _Internal_BrowseTable.ci / BrowseTable.ci / TabBrowseTable.ci ==== | * Обробка виділення рядків: одиночний вибір, вибір діапазону через ''Shift'', кумулятивний вибір через ''Ctrl'', вибір усіх записів (''LibTable_SelectRow'', ''LibTable_SelectAll''). |
| Універсальна таблиця перегляду записів конфігураційних баз SCADA: Відкриття та посторінковий скролінг сесій перегляду тегів, обладнання, накопичувачів, трендів (''TagBrowseOpen'', ''EquipBrowseOpen''). Збереження структури колонок і ширини в INI-файлі між сеансами роботи. Контекстне меню зміни значення тегу, встановлення режимів заміщення (Override Mode) та блокування керування (Control Mode). ==== _Internal_SqlTable.ci / SqlTable.ci ==== | |
| Таблиця виконання прямих SQL-запитів до реляційних СУБД: Відкриття підключення до БД (''SQLCreate'', ''SQLOpen'') та виконання вибірок SELECT. Автоматичне створення структури колонок на основі метаданих отриманого рекордсету. Посторінкове відображення рядків із навігацією по масиву результатів. ==== _Internal_TagTable.ci / TagTable.ci ==== | |
| Таблиця динамічного перегляду підписаних змінних тегів: Оформлення підписок на теги в реальному часі (''TagSubscribe''). Автоматичне оновлення комірок таблиці через callback-процедури при зміні значень чи якості. ==== PLSTagBrowse.ci / PLSTagView.ci / PLSTagExtensions.ci ==== | * Кешування даних комірок, фонове виконання задач для виділених рядків (''LibTable_TaskSelectedRows''). |
| Інструменти діагностики та перегляду тегів: ''PLSTagBrowse.ci'': низькорівневе читання файлу бази даних тегів ''_Variabl.rdb''. ''PLSTagView.ci'': переглядач усіх тегів вибраного пристрою з підтримкою .NET-акселератора (''TagViewer.dll''). ''PLSTagExtensions.ci'': керування розширеннями якості тегів (Override, Control Inhibit, Tag Status). ===== 5. Однолінійні схеми, анімація та обладнання ========= PLSAnimation.ci / PLSAnimGenies.ci / PLSAnimColor.ci / PLSAnimCore.ci ==== | |
| Ядро та механізми динамічної розмальовки схем OneLine (Advanced One Line): Обробка станів вимикачів: включено, відключено, аварія, вкочено, тест, викочено, втрата зв'язку. Моніторинг працездатності (Health Check) зовнішнього процесу розрахунку топології схеми ''AdvOneLineLauncher.exe''. Призначення кольорів лініям, шинам та контактам відповідно до джерел живлення та напруги. ==== PLSEquipment.ci / PLSEquipmentAdv.ci / PLSEquipmentForm.ci / PLSEquipmentUtil.ci ==== | |
| Команди телекерування комутаційними апаратами: Пряме керування (Direct Operate) та вибір перед виконанням (Select-Before-Operate) для вимикачів. Розширені команди для стандарту IEC 61850 з перевіркою синфазності (Synchrocheck), блокувань (Interlock) та тестового режиму. Спливаючі діалогові вікна підтвердження операцій ''!Equipment1'' та списку тегів ''!Equipment2''. Фоновий сервіс моніторингу статусу зв'язку з пристроями (''_PLSEquipProcessIODevStatus''). ==== PLSMotorForm.ci ==== | |
| Керування та моніторинг асинхронних електродвигунів: Збір статусів: готовність, робота, попередження, аварійне відключення. Підтримка режимів: реверсивний, двошвидкісний, двоступеневий, захист від перевантаження. Команди пуску вперед/назад, перемикання швидкості, зупинки та скидання помилок захисту. ==== PLSEnersure.ci ==== | ==== TabTable.ci ==== |
| Підтримка панелей багатоканального обліку електроенергії Enersure (ANSI/IEC): Відображення параметрів струмів, напруг, потужностей та енергії по 42/84 або 22/88 каналах. Графічне групування одно-, дво- та трифазних конфігурацій фідерів. ==== _Internal_EquipTree.ci / DDD.ci / PLSGraphicsTest.ci ==== | Високорівневі допоміжні функції для роботи з таблицями в шаблонах екранних форм: |
| Допоміжні модулі обладнання: ''_Internal_EquipTree.ci'': побудова дерева навігації по структурі обладнання. ''DDD.ci'': розкодування напрямку протікання аварійних збурень (Disturbance Direction Detection) та показників якості електроенергії. ''PLSGraphicsTest.ci'' (Deprecated): тестовий режим графіки. ===== 6. Тренди та аналіз процесів ========= PLSProcessAnalyst.ci / PLSPADisplay.ci ==== | |
| Інтеграція та керування ActiveX-компонентом Process Analyst: Відкриття сторінок та спливаючих вікон аналізу трендів (''PLSAnalDisplayTags''). Динамічне додавання та видалення пер аналогових трендів і тривог, вибір кольорів. Налаштування індивідуальних шкал, інтервалів часу та типу ліній (пряма/східчаста). Збереження набору обраних точок у списку оператора для швидкого виклику графіків. ==== PLSInstantTrends.ci ==== | * Автоматичний підбір ширини всіх видимих колонок таблиці (''TabTable_AutoFit''). |
| Швидкі тренди реального часу (Instant Trends): Відкриття вікна ''!InstantTrends'' для оперативної діагностики. Інтерактивне додавання пера кліком лупи по будь-якому тегу на мнемосхемі SCADA. Навігація по базі тегів через спливаюче діалогове вікно вибору. ===== 7. Осцилограми та протокол COMTRADE ========= PLSWaveform.ci / PLSWaveformSearch.ci ==== | |
| Пошук та перегляд файлів осцилограм: Пошук файлів осцилограм у локальній базі за мітками часу подій (UTC/мс) та іменем пристрою. Відображення діалогу результатів пошуку ''!PLSWaveformResults'' та запуск переглядача ''!PLSWaveform''. Взаємодія з системною бібліотекою ''waveformdb.dll''. ==== PLSWaveformFTP.ci / PLUSFTP.ci / PLSWaveformExtractorCore.ci ==== | |
| Автоматичне вивантаження та збір осцилограм: ''PLSWaveformFTP.ci'': періодичний фоновий збір COMTRADE-файлів з мікропроцесорних реле через FTP. ''PLUSFTP.ci'': низькорівневий FTP-клієнт на базі ''PLUSFTP.dll''. ''PLSWaveformExtractorCore.ci'': керування процесом служби екстрактора осцилограм через RPC. ==== PLSWaveformEvent.ci ==== | * Підрахунок кількості виділених оператором рядків у видимій області дисплея (''TabTable_GetDspSelectedCount''). |
| Генерація записів у журналі подій при появі нових осцилограм: Синхронізація індексатора ''WaveformSearch.dll'' з каталогом збережених файлів. Створення події зміни значення змінної для інформування оператора про новий аварійний запис. ===== 8. Безпека, інтеграція та системні сервіси ========= PLSSecurity.ci / PLSOneTimePassword.ci ==== | |
| Контроль доступу та багатофакторна аутентифікація: Авторизація користувачів з підтримкою вибору мови локалізації. Двофакторна перевірка одноразових паролів (YubiKey/OTP) через запити до App Services. Багаторівнева перевірка прав на виконання команд телекерування з повторним запитом пароля. ==== PLSProviderEngine.ci ==== | |
| Інтерфейс взаємодії з постачальниками даних платформи (Provider Engine): Асинхронний виклик провайдерів за GUID через бібліотеку ''ProviderGatewayManaged.dll''. Оновлення метаданих платформи на серверах та очищення кешу пам'яті. ==== PLSNotification.ci ==== | * Запит підтвердження дій над прихованими за межами прокрутки виділеними записами (''TabTable_ShowRowActionConfirmForm''). |
| Служба нативних сповіщень операторів (Email/SMS): Вичитка черги подій ядра ''AlarmEventQue'' та передача у .NET сервіс ''Notification.dll''. Моніторинг черги Watchdog та відстеження зміни станів серверів тривог (Active/Standby). Діалогові форми налаштування одержувачів і перегляду історії сповіщень. ==== PLSApplications.ci / PLSWebPage.ci ==== | |
| Інтеграція зовнішніх веб-додатків та PME (Power Monitoring Expert): Генерація Single Sign-On (SSO) токенів для безпечного відкриття сторінок без повторного вводу пароля. Відкриття звітів PME Reports, WebReach, панелей Dashboards та веб-інтерфейсу сповіщень ENM у вікнах SCADA. ==== PLSDiagnosticsViewer.ci ==== | |
| Запуск зовнішньої утиліти системної діагностики: Виклик діагностичного модуля ''SystemAndDiagnosticInfo.exe''. Перевірка прав RPC та доступності серверних компонентів системи. ==== PLSGeneral.ci / Display.ci ==== | |
| Загальносистемні та графічні утиліти: ''PLSGeneral.ci'': міжкластерний запис тегів, синхронний запис на резервовані сервери, строкові утиліти CSV. ''Display.ci'': контроль стану курсора (фокус, натискання) для складених графічних об'єктів та обрізка довгого тексту. ==== PLSOEM.ci / PLSVersion.ci / PLUSXML.ci / MillisecondHelper.ci ==== | ==== *Internal_Scrollbar.ci / Scrollbar.ci ==== |
| Службові функції запуску, версій та обробки даних: ''PLSOEM.ci'': автоматичний запуск фонових задач тривог, зв'язку I/O та осцилограм при старті SCADA. ''PLSVersion.ci'': читання інформації про версії та білди компонентів із XML-файлу. ''PLUSXML.ci'': повнофункціональний парсер XML DOM та клієнт SOAP через бібліотеку ''PLUSSOAP.dll''. ''MillisecondHelper.ci'': отримання мілісекунд через зовнішню бібліотеку ''MSec.dll''. ===== Зведена таблиця файлів проєкту =====^ Файл ^ Призначення / Підсистема ^ Ключові функції / Механізми ^ | Внутрішня математика та публічний інтерфейс елемента смуги прокрутки (''LibScrollBar*''): |
| | |
| | * Розрахунок розміру бігунка (thumb) відносно співвідношення видимих рядків до загальної кількості. |
| | |
| | |
| | * Обробка перетягування бігунка мишею, посторінковий перехід при кліку поза повзунком та автоприховування. |
| | |
| | |
| | * Синхронізація позиції прокрутки з прив'язаними таблицями та деревами через callback-процедури. |
| | |
| | |
| | |
| | ==== _Internal_Slider.ci / Slider.ci ==== |
| | Реалізація горизонтального та вертикального повзунка/слайдера: |
| | |
| | * Обчислення абсолютного та відносного зсуву в пікселях під час перетягування (''_LibSlider_SetOffset''). |
| | |
| | |
| | * Підтримка режиму пристикування (Docking) до країв екрана зі збереженням попередньої позиції. |
| | |
| | |
| | * Збереження позицій слайдера у чергах для відновлення стану після зміни сторінок. |
| | |
| | |
| | |
| | ==== TabTree.ci ==== |
| | Керування інтерактивним спліттером (розділювачем панелей) між деревом та таблицею: |
| | |
| | * Динамічна зміна ширини лівого дерева та правої таблиці при переміщенні повзунка (''TabTree_SplitChanged''). |
| | |
| | |
| | * Автоматичне позиціонування та приховування прив'язаних горизонтальних і вертикальних скролбарів. |
| | |
| | |
| | * Допоміжні функції роботи з кластерними префіксами обладнання (''TabEqTree_HasCluster'', ''TabEquip_GetCluster''). |
| | |
| | |
| | |
| | ==== _Internal_Tree.ci / Tree.ci ==== |
| | Ієрархічне деревоподібне меню з підтримкою чекбоксів: |
| | |
| | * Рекурсивний рендеринг вузлів, підвузлів, ліній зв'язку та піктограм із контролем глибини стека. |
| | |
| | |
| | * Підтримка станів чекбоксів (активний, неактивний, успадкований від батьківського вузла) через бітові маски. |
| | |
| | |
| | * Автоматичне розгортання батьківських гілок і прокрутка до виділеного елемента (''LibTree_SelectItemRef''). |
| | |
| | |
| | |
| | ==== _Internal_Calendar.ci / Calendar.ci ==== |
| | Календарний контроль для вибору дат і часових проміжків: |
| | |
| | * Календарна арифметика: розрахунок високосних років, зміщення днів тижня та кількості днів у місяці. |
| | |
| | |
| | * Обробка вибору одиночних дат, діапазонів і подвійних кліків (''_LibCalendar_MouseUp'', ''_LibCalendar_MouseDouble''). |
| | |
| | |
| | * Підсвічування поточної дати, виділених днів та перехід між місяцями свайпами. |
| | |
| | |
| | |
| | ==== _Internal_Sample.ci / Sample.ci ==== |
| | Шаблонний каркас для розробки нових бібліотечних контролів: |
| | |
| | * Базова координатна сітка, обробка наведення та кліків курсора. |
| | |
| | |
| | * Структура для підключення горизонтальних і вертикальних скролбарів. |
| | |
| | |
| | |
| | ===== 2. Навігація, меню та вкладки ===== |
| | |
| | ==== _Internal_PageTabs.ci / Tabs.ci / PageTabs.ci ==== |
| | Керування вкладками сторінок (Tab Control): |
| | |
| | * Динамічна генерація та перемикання вкладок зі списку відкритих вікон (''PageList'') або меню (''MenuNode''). |
| | |
| | |
| | * Підтримка закриття окремих вкладок кліком на піктограму хрестика. |
| | |
| | |
| | * Розрахунок адаптивної ширини та посторінкова прокрутка вкладок (''LibTabs_Scroll''). |
| | |
| | |
| | |
| | ==== Tabmenu.ci / Tabmenu_Metadata.ci ==== |
| | Система навігаційних вкладок і панелей кнопок у шаблонах Tab Style: |
| | |
| | * Побудова дворівневого меню (вкладки розділів зверху, кнопки операцій під ними). |
| | |
| | |
| | * Автоматичне приховування елементів, що не вміщуються на екрані, та виведення їх у випадаюче меню переповнення (''Tabmenu_SelectHiddenTabMenu''). |
| | |
| | |
| | * Збереження конфігурації позицій, ширини та метаданих об'єктів у внутрішніх масивах. |
| | |
| | |
| | |
| | ==== Page.ci ==== |
| | Системні функції навігації, друку сторінок та безпеки шаблонів: |
| | |
| | * Перехід до батьківської сторінки (''PageParent'') та друк екрана/звіту (''PagePrint''). |
| | |
| | |
| | * Відображення діалогового вікна входу/виходу користувача та редагування облікових записів (''PageDspLoginMenu''). |
| | |
| | |
| | * Парсер виконання команд формату CSV_Include (''?Function arg1,arg2''). |
| | |
| | |
| | * Перевірка привілеїв під час спроби завершення роботи SCADA (''_PageShutdownConfirmation''). |
| | |
| | |
| | |
| | ==== PLSNavigation.ci ==== |
| | Керування історією переходів оператора: |
| | |
| | * Ведення циклічного стека історії відкритих сторінок для кожного вікна окремо. |
| | |
| | |
| | * Навігація вперед/назад по історії зі збереженням параметрів виклику сторінок (''PLSNavPageBackward'', ''PLSNavPageForward''). |
| | |
| | |
| | * Випадаюче контекстне меню історії відвіданих сторінок (''PLSNavPageBackwardMenu''). |
| | |
| | |
| | |
| | ==== PLSNavigationCustom_Tabmenu.ci ==== |
| | Генерація типової структури навігаційного меню: |
| | |
| | * Автоматичне наповнення розділів меню: «PAGES» (сторінки проекту з бази ''_pages.rdb''), «ALARMS/EVENTS» (журнали тривог та подій), «ANALYSIS» (тренди, осцилограми, діагностика). |
| | |
| | |
| | * Фільтрація та виключення службових сторінок (''_PLSNav_IsSystemPage''). |
| | |
| | |
| | |
| | ==== PLSNavigationTabs.ci ==== |
| | Побудова навігаційних панелей на основі бази даних ''PLSNavTab_DBF'': |
| | |
| | * Зчитування дерева меню, прав доступу операторів, команд та іконок із файлу бази даних. |
| | |
| | |
| | * Динамічний розрахунок геометрії кнопок та позиціонування елементів за рівнями. |
| | |
| | |
| | |
| | ===== 3. Тривоги, події та фільтрація ===== |
| | |
| | ==== AlarmFilter.ci / TabAlarmFilter.ci ==== |
| | Публічний інтерфейс для виклику діалогів фільтрації тривог: |
| | |
| | * Відкриття діалогу налаштування фільтрації активних тривог, журналу подій, відключених тривог чи SOE (''LibAlarmFilterForm''). |
| | |
| | |
| | * Формування та застосування рядка фільтра до системного списку анімаційного номера (AN). |
| | |
| | |
| | * Перевірка наявності конкретних полів у поточному фільтрі (''LibAlarmFilterContains''). |
| | |
| | |
| | |
| | ==== _Internal_AlarmFilterActiveX.ci / _Internal_AlarmFilterControls.ci ==== |
| | Обслуговування вікна конфігурації фільтра тривог: |
| | |
| | * Ініціалізація випадаючих списків вибору полів тривог, операторів порівняння та стандартних правил. |
| | |
| | |
| | * Керування радіокнопками вибору простого, розширеного або користувацького режиму фільтра. |
| | |
| | |
| | * Інтеграція з календарем для вибору часових інтервалів. |
| | |
| | |
| | |
| | ==== _Internal_AlarmFilterParser.ci / _Internal_AlarmFilterTable.ci / _Internal_AlarmFilterTransfer.ci ==== |
| | Аналіз, валідація та синхронізація виразів фільтрації: |
| | |
| | * ''_Internal_AlarmFilterParser.ci'': приведення дат до секунд Unix Time, числових форматів та обробка макросу ''#Now''. |
| | |
| | |
| | * ''_Internal_AlarmFilterTable.ci'': взаємодія таблиці правил із внутрішньою буферною чергою, видалення виділених умов. |
| | |
| | |
| | * ''_Internal_AlarmFilterTransfer.ci'': передача сформованих виразів у ядро SCADA через сесії ''AlarmFilterEdit*''. |
| | |
| | |
| | |
| | ==== PLSAlarmFilter.ci / PLSAlarmFilterInit.ci / PLSAlarmFilterValidation.ci ==== |
| | Розширена фільтрація тривог для PowerSCADA Expert: |
| | |
| | * Підтримка модальних вікон фільтрації тривог та подій безпеки (''!PLSAlarmFilter'', ''!PLSSecFilter''). |
| | |
| | |
| | * Фільтрація за часовими мітками з корекцією літнього часу (DST), категоріями, пріоритетами та метаданими. |
| | |
| | |
| | * Валідація синтаксису введених користувачем даних перед збереженням у глобальний кеш. |
| | |
| | |
| | |
| | ==== _Internal_AlmTable.ci / AlmTable.ci / TabAlmTable.ci ==== |
| | Реалізація та адаптація таблиці відображення тривог: |
| | |
| | * Зчитування записів тривог за допомогою викликів ''AlarmDsp'' / ''AlarmDspLast''. |
| | |
| | |
| | * Формування колонок на основі категорійних форматів або параметрів проекту. |
| | |
| | |
| | * Сортування колонок кліком по заголовку, експорт даних сторінок у формати HTML та CSV. |
| | |
| | |
| | |
| | ==== TabAlarm.ci / TabAlarm_Metadata.ci / TabAlarm_Utility.ci ==== |
| | Утиліти та методи обробки тривог для Tab Style шаблонів: |
| | |
| | * Перевірка прав доступу на квитування, блокування та коментування записів (''TabAlarm_GetAckPriv''). |
| | |
| | |
| | * Керування контекстним меню виділеного рядка тривоги. |
| | |
| | |
| | * Збереження метаданих списку тривог і колонок у сторінкових змінних. |
| | |
| | |
| | |
| | ==== PLSAlarmDisplay.ci / PLSAlarmCustom_TabAlarm.ci ==== |
| | Специфічні механізми відображення та контекстні дії тривог PLS: |
| | |
| | * Формування розширеного контекстного меню (перехід до перегляду осцилограм Waveform, історії сповіщень Notification History, сторінки обладнання). |
| | |
| | |
| | * Додавання користувацьких коментарів та подій безпосередньо у Sequence of Events (SOE). |
| | |
| | |
| | * Декодування спеціальних тегів опису в коментарях ('''', '''', '''', ''''). |
| | |
| | |
| | |
| | ==== TabAlarmEqTree.ci ==== |
| | Синхронізація дерева обладнання з фільтрами списку тривог: |
| | |
| | * Автоматичне формування складних фільтрів за вибраними чекбоксами вузлів дерева. |
| | |
| | |
| | * Підрахунок та динамічне відображення кількості активних тривог для кожного пристрою дерева. |
| | |
| | |
| | |
| | ==== PLSAlarmSetpoints.ci ==== |
| | Перегляд та зміна уставок спрацьовування аварійної сигналізації: |
| | |
| | * Посторінкова навігація по списку уставок аналогових і дискретних тривог. |
| | |
| | |
| | * Зміна числових значень меж (HH, H, L, LL, Deadband, Delay) через екранну клавіатуру з перевіркою меж. |
| | |
| | |
| | * Дистанційне блокування/розблокування тривог із синхронним записом на резервовані сервери. |
| | |
| | |
| | |
| | ==== PLSAlarmSound.ci / TabAlarmSnd.ci ==== |
| | Звукова сигналізація аварійних режимів: |
| | |
| | * Фоновий контроль найвищого несквитованого пріоритету тривоги в системі. |
| | |
| | |
| | * Відтворення аудіофайлів ''.wav'' на клієнтах із налаштованою частотою повторення. |
| | |
| | |
| | * Функція тимчасового заглушення сирени (Silence) оператором на заданий час. |
| | |
| | |
| | |
| | ==== AddAuditEvent.ci / PLSAlarmQueue.ci ==== |
| | Журналювання аудиту та файлова черга: |
| | |
| | * ''AddAuditEvent.ci'': функція запису системних дій оператора у журнал SOE (''SOEEventAdd''). |
| | |
| | |
| | * ''PLSAlarmQueue.ci'' (Deprecated): експорт подій у циклічні файли CSV/XML на диску. |
| | |
| | |
| | |
| | ===== 4. Перегляд баз даних, SQL та теги ===== |
| | |
| | ==== _Internal_BrowseTable.ci / BrowseTable.ci / TabBrowseTable.ci ==== |
| | Універсальна таблиця перегляду записів конфігураційних баз SCADA: |
| | |
| | * Відкриття та посторінковий скролінг сесій перегляду тегів, обладнання, накопичувачів, трендів (''TagBrowseOpen'', ''EquipBrowseOpen''). |
| | |
| | |
| | * Збереження структури колонок і ширини в INI-файлі між сеансами роботи. |
| | |
| | |
| | * Контекстне меню зміни значення тегу, встановлення режимів заміщення (Override Mode) та блокування керування (Control Mode). |
| | |
| | |
| | |
| | ==== _Internal_SqlTable.ci / SqlTable.ci ==== |
| | Таблиця виконання прямих SQL-запитів до реляційних СУБД: |
| | |
| | * Відкриття підключення до БД (''SQLCreate'', ''SQLOpen'') та виконання вибірок SELECT. |
| | |
| | |
| | * Автоматичне створення структури колонок на основі метаданих отриманого рекордсету. |
| | |
| | |
| | * Посторінкове відображення рядків із навігацією по масиву результатів. |
| | |
| | |
| | |
| | ==== _Internal_TagTable.ci / TagTable.ci ==== |
| | Таблиця динамічного перегляду підписаних змінних тегів: |
| | |
| | * Оформлення підписок на теги в реальному часі (''TagSubscribe''). |
| | |
| | |
| | * Автоматичне оновлення комірок таблиці через callback-процедури при зміні значень чи якості. |
| | |
| | |
| | |
| | ==== PLSTagBrowse.ci / PLSTagView.ci / PLSTagExtensions.ci ==== |
| | Інструменти діагностики та перегляду тегів: |
| | |
| | * ''PLSTagBrowse.ci'': низькорівневе читання файлу бази даних тегів ''_Variabl.rdb''. |
| | |
| | |
| | * ''PLSTagView.ci'': переглядач усіх тегів вибраного пристрою з підтримкою .NET-акселератора (''TagViewer.dll''). |
| | |
| | |
| | * ''PLSTagExtensions.ci'': керування розширеннями якості тегів (Override, Control Inhibit, Tag Status). |
| | |
| | |
| | |
| | ===== 5. Однолінійні схеми, анімація та обладнання ===== |
| | |
| | ==== PLSAnimation.ci / PLSAnimGenies.ci / PLSAnimColor.ci / PLSAnimCore.ci ==== |
| | Ядро та механізми динамічної розмальовки схем OneLine (Advanced One Line): |
| | |
| | * Обробка станів вимикачів: включено, відключено, аварія, вкочено, тест, викочено, втрата зв'язку. |
| | |
| | |
| | * Моніторинг працездатності (Health Check) зовнішнього процесу розрахунку топології схеми ''AdvOneLineLauncher.exe''. |
| | |
| | |
| | * Призначення кольорів лініям, шинам та контактам відповідно до джерел живлення та напруги. |
| | |
| | |
| | |
| | ==== PLSEquipment.ci / PLSEquipmentAdv.ci / PLSEquipmentForm.ci / PLSEquipmentUtil.ci ==== |
| | Команди телекерування комутаційними апаратами: |
| | |
| | * Пряме керування (Direct Operate) та вибір перед виконанням (Select-Before-Operate) для вимикачів. |
| | |
| | |
| | * Розширені команди для стандарту IEC 61850 з перевіркою синфазності (Synchrocheck), блокувань (Interlock) та тестового режиму. |
| | |
| | |
| | * Спливаючі діалогові вікна підтвердження операцій ''!Equipment1'' та списку тегів ''!Equipment2''. |
| | |
| | |
| | * Фоновий сервіс моніторингу статусу зв'язку з пристроями (''_PLSEquipProcessIODevStatus''). |
| | |
| | |
| | |
| | ==== PLSMotorForm.ci ==== |
| | Керування та моніторинг асинхронних електродвигунів: |
| | |
| | * Збір статусів: готовність, робота, попередження, аварійне відключення. |
| | |
| | |
| | * Підтримка режимів: реверсивний, двошвидкісний, двоступеневий, захист від перевантаження. |
| | |
| | |
| | * Команди пуску вперед/назад, перемикання швидкості, зупинки та скидання помилок захисту. |
| | |
| | |
| | |
| | ==== PLSEnersure.ci ==== |
| | Підтримка панелей багатоканального обліку електроенергії Enersure (ANSI/IEC): |
| | |
| | * Відображення параметрів струмів, напруг, потужностей та енергії по 42/84 або 22/88 каналах. |
| | |
| | |
| | * Графічне групування одно-, дво- та трифазних конфігурацій фідерів. |
| | |
| | |
| | |
| | ==== _Internal_EquipTree.ci / DDD.ci / PLSGraphicsTest.ci ==== |
| | Допоміжні модулі обладнання: |
| | |
| | * ''_Internal_EquipTree.ci'': побудова дерева навігації по структурі обладнання. |
| | |
| | |
| | * ''DDD.ci'': розкодування напрямку протікання аварійних збурень (Disturbance Direction Detection) та показників якості електроенергії. |
| | |
| | |
| | * ''PLSGraphicsTest.ci'' (Deprecated): тестовий режим графіки. |
| | |
| | |
| | |
| | ===== 6. Тренди та аналіз процесів ===== |
| | |
| | ==== PLSProcessAnalyst.ci / PLSPADisplay.ci ==== |
| | Інтеграція та керування ActiveX-компонентом Process Analyst: |
| | |
| | * Відкриття сторінок та спливаючих вікон аналізу трендів (''PLSAnalDisplayTags''). |
| | |
| | |
| | * Динамічне додавання та видалення пер аналогових трендів і тривог, вибір кольорів. |
| | |
| | |
| | * Налаштування індивідуальних шкал, інтервалів часу та типу ліній (пряма/східчаста). |
| | |
| | |
| | * Збереження набору обраних точок у списку оператора для швидкого виклику графіків. |
| | |
| | |
| | |
| | ==== PLSInstantTrends.ci ==== |
| | Швидкі тренди реального часу (Instant Trends): |
| | |
| | * Відкриття вікна ''!InstantTrends'' для оперативної діагностики. |
| | |
| | |
| | * Інтерактивне додавання пера кліком лупи по будь-якому тегу на мнемосхемі SCADA. |
| | |
| | |
| | * Навігація по базі тегів через спливаюче діалогове вікно вибору. |
| | |
| | |
| | |
| | ===== 7. Осцилограми та протокол COMTRADE ===== |
| | |
| | ==== PLSWaveform.ci / PLSWaveformSearch.ci ==== |
| | Пошук та перегляд файлів осцилограм: |
| | |
| | * Пошук файлів осцилограм у локальній базі за мітками часу подій (UTC/мс) та іменем пристрою. |
| | |
| | |
| | * Відображення діалогу результатів пошуку ''!PLSWaveformResults'' та запуск переглядача ''!PLSWaveform''. |
| | |
| | |
| | * Взаємодія з системною бібліотекою ''waveformdb.dll''. |
| | |
| | |
| | |
| | ==== PLSWaveformFTP.ci / PLUSFTP.ci / PLSWaveformExtractorCore.ci ==== |
| | Автоматичне вивантаження та збір осцилограм: |
| | |
| | * ''PLSWaveformFTP.ci'': періодичний фоновий збір COMTRADE-файлів з мікропроцесорних реле через FTP. |
| | |
| | |
| | * ''PLUSFTP.ci'': низькорівневий FTP-клієнт на базі ''PLUSFTP.dll''. |
| | |
| | |
| | * ''PLSWaveformExtractorCore.ci'': керування процесом служби екстрактора осцилограм через RPC. |
| | |
| | |
| | |
| | ==== PLSWaveformEvent.ci ==== |
| | Генерація записів у журналі подій при появі нових осцилограм: |
| | |
| | * Синхронізація індексатора ''WaveformSearch.dll'' з каталогом збережених файлів. |
| | |
| | |
| | * Створення події зміни значення змінної для інформування оператора про новий аварійний запис. |
| | |
| | |
| | |
| | ===== 8. Безпека, інтеграція та системні сервіси ===== |
| | |
| | ==== PLSSecurity.ci / PLSOneTimePassword.ci ==== |
| | Контроль доступу та багатофакторна аутентифікація: |
| | |
| | * Авторизація користувачів з підтримкою вибору мови локалізації. |
| | |
| | |
| | * Двофакторна перевірка одноразових паролів (YubiKey/OTP) через запити до App Services. |
| | |
| | |
| | * Багаторівнева перевірка прав на виконання команд телекерування з повторним запитом пароля. |
| | |
| | |
| | |
| | ==== PLSProviderEngine.ci ==== |
| | Інтерфейс взаємодії з постачальниками даних платформи (Provider Engine): |
| | |
| | * Асинхронний виклик провайдерів за GUID через бібліотеку ''ProviderGatewayManaged.dll''. |
| | |
| | |
| | * Оновлення метаданих платформи на серверах та очищення кешу пам'яті. |
| | |
| | |
| | |
| | ==== PLSNotification.ci ==== |
| | Служба нативних сповіщень операторів (Email/SMS): |
| | |
| | * Вичитка черги подій ядра ''AlarmEventQue'' та передача у .NET сервіс ''Notification.dll''. |
| | |
| | |
| | * Моніторинг черги Watchdog та відстеження зміни станів серверів тривог (Active/Standby). |
| | |
| | |
| | * Діалогові форми налаштування одержувачів і перегляду історії сповіщень. |
| | |
| | |
| | |
| | ==== PLSApplications.ci / PLSWebPage.ci ==== |
| | Інтеграція зовнішніх веб-додатків та PME (Power Monitoring Expert): |
| | |
| | * Генерація Single Sign-On (SSO) токенів для безпечного відкриття сторінок без повторного вводу пароля. |
| | |
| | |
| | * Відкриття звітів PME Reports, WebReach, панелей Dashboards та веб-інтерфейсу сповіщень ENM у вікнах SCADA. |
| | |
| | |
| | |
| | ==== PLSDiagnosticsViewer.ci ==== |
| | Запуск зовнішньої утиліти системної діагностики: |
| | |
| | * Виклик діагностичного модуля ''SystemAndDiagnosticInfo.exe''. |
| | |
| | |
| | * Перевірка прав RPC та доступності серверних компонентів системи. |
| | |
| | |
| | |
| | ==== PLSGeneral.ci / Display.ci ==== |
| | Загальносистемні та графічні утиліти: |
| | |
| | * ''PLSGeneral.ci'': міжкластерний запис тегів, синхронний запис на резервовані сервери, строкові утиліти CSV. |
| | |
| | |
| | * ''Display.ci'': контроль стану курсора (фокус, натискання) для складених графічних об'єктів та обрізка довгого тексту. |
| | |
| | |
| | |
| | ==== PLSOEM.ci / PLSVersion.ci / PLUSXML.ci / MillisecondHelper.ci ==== |
| | Службові функції запуску, версій та обробки даних: |
| | |
| | * ''PLSOEM.ci'': автоматичний запуск фонових задач тривог, зв'язку I/O та осцилограм при старті SCADA. |
| | |
| | |
| | * ''PLSVersion.ci'': читання інформації про версії та білди компонентів із XML-файлу. |
| | |
| | |
| | * ''PLUSXML.ci'': повнофункціональний парсер XML DOM та клієнт SOAP через бібліотеку ''PLUSSOAP.dll''. |
| | |
| | |
| | * ''MillisecondHelper.ci'': отримання мілісекунд через зовнішню бібліотеку ''MSec.dll''. |
| | |
| | |
| | |
| | ===== Зведена таблиця компонентів ===== |
| | |
| | ^ Файл ^ Призначення / Підсистема ^ Ключові функції / Механізми ^ |
| | ''_Internal_Library.ci'' | Ядро бібліотечних контролів | Черги задач ''_LibCtrl_HP'', реєстрація AN, стани busy | | | ''_Internal_Library.ci'' | Ядро бібліотечних контролів | Черги задач ''_LibCtrl_HP'', реєстрація AN, стани busy | |
| | ''_Internal_Table.ci'' | Диспетчер таблиць і сіток | Зміна колонок, багаторівневий вибір рядків, кешування | | | ''_Internal_Table.ci'' | Диспетчер таблиць і сіток | Зміна колонок, багаторівневий вибір рядків, кешування | |