Матеріали курсу Людино-машинні інтерфейси
Система керування дозволяє реалізувати ряд заходів для забезпечення найвищого рівня безпеки при керуванні процесом виробництва. Одним з таких заходів являється впровадження в проекті багаторівневої системи адміністрування доступу користувачів.
*Завдання 8.1: Створіть двох користувачів.*
Для опрацювання системи адміністрування ми створимо двох користувачів: оператора та інженера, які будіть мати різні рівні доступу\авторизації.
Автоматично з’явиться діалогове вікно налаштувань з набором вкладок.
В zenon рівні доступу не мають пріоритетності. Тобто, рівень 1 має такий же пріоритет як рівень 15. Один користувач може мати необмежену кількість рівнів (макс. 128).
У вікні детального перегляду тепер з’явився створений нами користувач. Усі налаштування можна у будь-який момент змінити через вікно властивостей.
Права адміністратора дають можливість в Runtime блокувати чи розблоковувати користувачів (у випадку, якщо тричі було введено невірно пароль), створювати нових користувачів чи видаляти існуючих.
У властивостях проекту існує спеціальний розділ - User administration, в якому можна визначити максимальну кількість разів невірного вводу паролю чи імені, мінімальну довжину паролю, переіменувати рівні авторизації та багато інших опцій. Пізніше ми сюди ще повернемось.
В zenon існує захисний механізм від втрати даних, які користувач–адміністратор додав в систему в режимі Runtime, а саме – нових користувачів. Ця опція називається RT changeable data. Якщо вона активна, то при компілюванні проекту файл ‘password.cmp’ не буде перезаписуватись і створені в середовищі розробки користувачі не «працюватимуть» в Runtime. Нас це не влаштовує. Тому цю функцію необхідно деактивувати.
*Завдання 8.2: Деактивуйте опцію *RT changeable data* для користувачів.*
Після компілювання проекту цю галочку можна повернути назад.
Розділення прав доступу в zenon здійснюється за рахунок визначення різних рівнів авторизації до елементів керування – кнопок чи задатчиків значень. Таким чином, якщо, наприклад, користувач не уповноважений перейти на той чи інший екран, система не дозволить йому це зробити.
*Завдання 8.3: Розмежуйте права користувачів.*
Для нашого проекту давайте розмежуємо права користувачів таким чином:
Користувач без авторизації | Доступ лише на екран ‘Процес’, без можливості встановлення значень усім температурним змінним. Рівень авторизації - 0 |
---|---|
Оператор | Доступ на всі екрани та встановлення значень всім змінним. Без можливості використання системних кнопок ‘Exit’ та ‘Reload’. Рівень авторизації – 0, 1 |
Інженер | Повний доступ. Рівень авторизації – 0, 1, 2 |
Для прискорення виконання однотипних операцій, через Ctrl виділіть усі кнопки та централізовано змініть відповідну властивість.
На даному етапі ми вже можемо перевірити зроблену роботу. Запустіть Runtime і натисніть кнопку ‘Хронологія’. Система автоматично видасть діалог авторизації:
Це так званий стандартний діалог тимчасової авторизації. Він діє одноразово. Якщо Ви захочете знову задіяти елемент, який має авторизацію, то це вікно з’явиться знову.
При старті проекту система автоматично запускає його як користувач ‘SYSTEM’ з рівнем авторизації 0.
У відповідні поля введіть ідентифікатор створеного нами раніше користувача ‘Оператор’ і його пароль. Відкриється екран Хронологічного списку подій, до списку якого вже буде занесено зроблену нами процедуру авторизації.
Зазвичай така тимчасова процедура авторизації використовується в окремих конкретно визначених випадках і для керування цілим проектом є неприйнятною.
В проектах виконують постійну авторизацію через спеціально створене для цього діалогове вікно чи екран.
*Завдання 8.4: Деактивуйте опцію тимчасвої авторизації .*
Щоб стандартний діалог тимчасової авторизації більше не з’являвся нам необхідно деактивувати цю процедуру
Тепер замість стандартного діалогу тимчасової авторизації, при спробі перейти на екран хронології, буде з’являтись системне повідомлення про те, що Ви не маєте права виконати цю операцію і необхідно виконати процедуру авторизації.
Якщо для середовища розробки zenon у Вас вибрано російський інтерфейс, то це повідомлення буде представлене на російській мові. Через інструмент інтернаціоналізації, який ми розглянемо пізніше, Ви зможете подавати всі текстові підписи в проекті на будь-якій необхідній мові.
*Завдання 8.5: Створіть екран авторизації.*
Давайте створимо екран авторизації, через який користувач буде проводити процедуру логування в системі.
*Завдання 8.6: Створіть кнопку виклику діалогового вікна авторизації і перевірте роботу.*
Тепер нам необхідно створити на панелі навігації кнопку виклику діалогового вікна авторизації і прив’язати до неї функцію перемикання.
На цьому створення екрану логування можна вважати завершеним. Запустіть Runtime і натисніть кнопку з ім’ям ‘Login’. З’явиться наступне вікно авторизації:
Після реалізації системи доступу, перевірте роботу усіх елементів керування, яким ми визначили різні рівні доступу: без авторизації користувача, з авторизацією як ‘Оператор’ і ‘Інженер’.
*Завдання 8.7: Створіть системну змінну для отримання інформації про поточного авторизованого користувача.*
Через системну змінну в проекті можна представити оператору інформацію про поточного авторизованого користувача. Давайте зробимо це.
Таким чином, в переліку змінних в нас з’явиться нова - ‘User – full name’, яка має наперед визначену функціональність та призначення.
*Завдання 8.8: Створіть текст для відображення імені авторизованого користувача.*
Запустіть проект та авторизуйтесь як ‘Інженер’. Зроблене поле відображає повне ім’я. Тепер в процесі роботи Ви будете бачити який користувач в даний момент є активним і відповідно знати які він має права доступу.
До послуг розробника існують іще деякі системні змінні, які Ви можете протестувати самостійно.
Для зручного сприйняття оператором елементів керування для яких потрібна авторизація, система дозволяє представити їх в декількох графічних варіантах: сірим кольором, з графічною позначкою в кутку (наприклад, замок чи інша іконка) або взагалі зробити їх невидимими.
Для того, щоб графічне зображення замка в нас не плуталось з зображенням заблокованих елементів технологією блокувань, яку ми розглянемо пізніше, давайте встановимо усі елементи, для яких потрібна авторизація, в сірий колір, а виконаний нами другий пункт відмініть.
Як ми вже згадували, серед усіх користувачів, створених в проекті, обов’язково повинен бути один з правами адміністратора (в нашому проекті - ‘Інженер’).
Спробуйте тричі ввести невірно пароль чи ім’я. Система заблокує Вас, а розблокувати зможе тільки адміністратор - ‘Інженер’.
Також адміністратор може в онлайн режимі додавати нових користувачів. Давайте перевіримо як це працює.
*Завдання 8.9: Створіть нову функцію для редагуваня користувачів та кнопку її виклику.*
Запустіть проект і авторизуйтесь з правами адміністратора. Натисніть кнопку ‘User edit’. З’явиться наступне вікно:
Якщо Ви маєте права адміністратора, в онлайн режимі Ви можете видаляти користувачів, створювати нових, редагувати (змінювати паролі та рівні доступу), а також тимчасово їх блокувати. В нашому випадку, якщо Ви авторизуєтесь як ‘Оператор’ система не дозволить виконати такі дії.
*Завдання 8.10: Перевірте роботу функції створення нового користувача.*
Давайте зараз створимо ще одного користувача.
Username: Директор
Complete name: Георгій Миколайович
Authorization levels: 0, 1
Зверніть увагу на те, що адміністратор не може створити нового користувача з більшими рівнями доступу, ніж він має сам.
Також, під час першого логування система запропонує користувачу ‘Директор’ змінити пароль. Таким чином адміністратор не знає які паролі мають активні користувачі.
Оскільки користувач ‘Директор’ має рівень доступу 0 і 1, то системні кнопки ‘Exit’ і ‘Reload’ будуть недоступні, аналогічно до прав користувача ‘Оператор’.
Таким чином, в онлайн режимі можна додати необмежену кількість нових користувачів. Внесені дані будуть зберігатися в Runtime-файлі ‘password.cmp’. В базі даних проекту цієї інформації немає, тому якщо в середовищі розробки виконати компілювання проекту при знятій галочці RT changeable data -> User administration, то внесена в онлайн режимі інформація буде втрачена.
*Завдання 8.11: Імпортувати нового користувача з середовища виконання в проект.*
В середовищі розробки проекту існує технологія, яка дозволяє виконати зворотнє зчитування Runtime-даних в базу проекту: інструментальна панель Runtime files -> Import Runtime files.
В результаті, створений нами користувач ‘Директор’ з’явиться в середовищі розробки проекту.
Самостійно промоделюйте виконання адміністратором блокування в онлайн режимі користувача ‘Оператор’.
Докладніше про систему адміністрування можна познайомитись в мануалі User administration.
Існують задачі, коли з точки зору безпеки чи згідно з технологією необхідно заблокувати ті чи інші елементи екрану, щоб оператор не міг ними керувати. Інколи цю задачу реалізують на контролері, але з zenon таке блокування можна створити безпосередньо в проекті візуалізації використовуючи стандартну функціональність.
Для нашого тестового проекту ми реалізуємо наступне блокування: якщо змінна вологості повітря в приміщенні має значення більше за 75 %, то кнопка пуску першого танку буде недоступна для керування - заблокована.
Означення блокування
**Завдання 8.12: Створіть умови блокування для змінної.****
У вікні детального перегляду з’явиться новий пункт – Interlocking 1 з елементами визначення умови блокування та змінної блокування.
В діалоговому вікні, що з’явилось, необхідно вибрати змінну. Оскільки змінної вологості в нас ще немає, ми можемо її створити одразу з цього вікна.
При необхідності в проекті можна визначити одночасно декілька умов блокувань по яким система буде проводити перевірку.Визначені тут умови можуть стосуватись декількох змінних.
З’явиться діалогове вікно формули прорахунку блокування.
Прив’язка до елементу
****Завдання 8.13: Прив’яжіть блокування до елементу та перевірте роботу.******
Оскільки система порівнює “сирі” значення змінної PLC зі встановленою нами величиною блокування в формулі, то необхідно, щоб діапазони значень змінної співпадали з реальним діапазоном вологості.
Давайте зробимо так, щоб оператор візуально бачив коли кнопка стає заблокованою.
Стан блокування відображається значком замка у верхньому лівому куті символу. Сюди можна назначить будь-яку картинку з бібліотеки файлів проекту. Також, заблокований елемент можна зробити невидимим чи сірим.
Для симулювання зміни значення створеної нами змінної ‘Вологість’ розмістіть в верхній частині екрану елемент універсальний повзунок, аналогічний до того, що ми на початку створили для керування змінної температури.
Запустіть проект і перевірте роботу блокування. Якщо Ви зробили все вірно, то при перетягуванні повзунка вище значення 75 кнопка ‘Пуск’ автоматично заблокується. При поверненні значення нижче 75 блокування повинне знятись.
Промоделюйте різні варіанти спрацювання цього блокування.
Докладніше про блокування можна прочитати в мануалі Interlockings.