Введення
SimInTech є середовищем для створення математичних моделей будь-яких систем, рівняння динаміки яких можна представити у вигляді входо-вихідних співвідношень (представлення DataFlow). Для реалізації підходу кінцевих автоматів у середовищі SimInTech існував блок умовного виконання субмоделі, який забезпечував зупинку і запуск моделювання за умовою, що приходить ззовні. Такий підхід забезпечує можливість розділити загальну модель на стани і в кожен момент часу розраховувати тільки ті субмоделі, умови виконання яких встановлені в true. Однак, така реалізація автоматного підходу не дуже зручна, з точки зору наочності, і вимагала додаткового налаштування параметрів системи.
В даний час всі необхідні параметри реалізовані в спеціальній бібліотеці блоків, яка забезпечує створення моделей систем у вигляді кінцевих автоматів, (подання State Flow) і може бути використана при створенні моделей управління.
У цій статті показано приклад використання елементів бібліотеки «Кінцеві автомати» для створення системи керування.
Показ завдання
Для демонстрації моделювання за допомогою кінцевих автоматів використовується модель керування водонагрівальним котлом. Якщо температура нижче заданої, то контролер забезпечує включення нагрівача на час не більше 20 секунд, з витримкою між включеннями 40, а так само індикацію свого стану за допомогою включення і вимикання лампочки індикації.
При увімкненому нагрівачі потужність нагріву постійна і нагріває 1 літр води на 1 градус за секунду.
При вимкненому нагрівачі втрати постійні і такі, що охолоджують 1 літр води на 0,1 градуса за секунду.
Кількість води 25 літрів.
Алгоритм роботи автомата підтримки температури працює наступним чином:
Як вхідний вплив до регулятора задаються:
1) Задане значення (статутку) температури, яку необхідно забезпечити.
2) Поточне значення температури, отриманої від датчика температури.
Опис моделі в термінах кінцевих автоматів
Роботу кінцевих автоматів контролера нагрівача можна описати наступним чином:
Автомат має два стани включений і вимкнений.
У початковий момент часу активний стан - вимкнено.
Стан вимкнено.
Нагріву немає.
Індикатор блимає зеленим кольором з частотою 5 секунд.
Перехід між станами: зі стану вимкнений до стану включений здійснюється у разі збігу двох умов: контролер знаходиться в стані вимкнений більше 40 сек і температура з датчика нижче заданої статутки.
Стан увімкнено
Відбувається нагрів.
Індикатор нагріву червоним моргає з частотою 1 секунду.
Перехід зі стану включений до стану вимкнений здійснюється у двох випадках:
1) Нагрів здійснювався протягом 20 секунд.
2) Температура з датчика досягла заданої статутки.
Схема кінцевих автоматів, що реалізує даний алгоритм, зображена на малюнку 1:
Малюнок 1. Схема роботи кінцевого автомата
Реалізація кінцевого автомата в SimInTech
Створення моделі об'єкта
Модель нагрівача створюється з використанням стандартних засобів моделювання SimInTech і являє собою субмодель, на вхід якої подається ознака включення нагрівача (0 - вимкнений, 1 - включений), на виході розраховується температура води.
Помістіть на схему блок «Субмодель» з закладки «Субструктури» і зберіть модель, як представлено на малюнку 2.
Малюнок 2. Модель нагрівача
На вхід до блоку подається логічна змінна - ознака роботи нагрівача, 1 - нагрівач включений, 0 - нагрівач вимкнений. Ця змінна інвертується і подається на ключ «A3». Залежно від цієї змінної ключ передає значення, отримані з блоків типу «Константа»: 1 - нагрів, або -0,1 - охолодження. Вихід блоку ключа A3 інтегрується стандартним інтегратором. Таким чином, формуються значення температури. Параметри блоку інтегратора наведено на малюнку 3.
Малюнок 3. Параметри інтегратора
Початкова температура дорівнює 15, коефіцієнт посилення 1/25 (25 літрів нагріваються із заданою швидкістю).
Для перевірки роботи моделі нагрівача на вхід ми подаємо значення з блоку «Меандр», вихід виводимо на графік разом з входом. Схема моделі наведена на малюнку 4.
Малюнок 4. Загальна схема перевірки моделі нагрівача
Результат моделювання показано на малюнку 5. У періоди часу, коли значення меандра дорівнює 1 (імітація включеного нагрівача), модель за рахунок інтегратора накопичує температуру зі швидкістю нагріву. У періоди, коли значення меандра дорівнює 0 (імітація вимкненого нагрівача), температура знижується зі швидкістю охолодження.
Малюнок 5. Графік роботи моделі нагрівача
Таким чином, ми переконалися, що створена модель може бути використана для перевірки роботи контролера нагрівача.
Створення блоку керування нагрівачем на базі кінцевих автоматів
Для створення контролера ми використовуємо блок «Карта стану кінцевого автомата» на закладці «Кінцеві автомати». Див. малюнок 6:
Малюнок 6. Закладка «Кінцеві автомати», блок «Карата станів кінцевого автомата»
Помістіть блок на схему разом зі створеним раніше блоком «Модель нагрівача». Оскільки цей блок створений на основі стандартної субмоделі SimInTech, то з ним можна працювати так само як з субмоделлю: додавати входи і виходи, додавати сигнали, додавати властивості, оголошувати і використовувати внутрішні змінні, пов'язувати його з базою даних сигналів.
Увійдіть всередину блоку «Карта станів кінцевого автомата» подвійним кліком по ньому. Єдина відмінність від стандартної субмоделі - наявність на внутрішній схемі додаткового блоку, «Блок вибір станів» у лівому куті схеми (див. рис. 7)
Перш ніж переходити до створення карти станів підготуємо в даному блоці входи і виходи, необхідні для зв'язку контролера з моделлю нагрівача.
В якості входу буде використовуватися задана і дійсна температури, в якості виходу буде розраховуватися стан нагрівача включений-вимкнений і індикація лампочки.
Помістіть на схему два блоки «Порт входу» і два блоки «Порт виходу» з закладки «Субструкутри» і змініть їх назви як показано на малюнку 7:
Малюнок 7. Підготовлений до обміну даними блок «Карта станів кінцевого автомата»
На даному етапі можна вийти з блоку подвійним кліком по порожньому мету схеми і на верхньому рівні біля блоку «Карта станів кінцевого автомата» з'являться блоки - порти входу і виходу - для з'єднання на загальній схемі. З'єднайте схему і підпишіть блоки, як показано на малюнку 8:
Малюнок 8. Блок «Стан автомата»
Поставте два блоки «Стан автомата» на схему всередині блоку «Контролер нагрівача». Один з блоків буде моделювати стан вимкнено, інший - увімкнено. Підпишіть блоки відповідним чином, як показано на малюнку 9.
Малюнок 9. Блок «Стан автомата»
Поставте два блоки «Стан автомата» на схему всередині блоку «Контролер нагрівача». Один з блоків буде моделювати стан вимкнено, інший - увімкнено. Підпишете блоки відповідним чином, як показано на малюнку 10.
Малюнок 10. Схема контролера з двома доданими станами
Для коректної роботи карти станів необхідно вказати початковий стан системи. У нашому випадку початковим станом автомата буде стан вимкнений. Виділіть блок кліком і клацніть правою кнопкою миші. У спадному меню виберіть «Властивості». З'явиться вікно редагування властивостей, в якому потрібно вибрати та в єдиній властивості «За замовчуванням» (див. рис. 11):
Малюнок 11. Налаштування властивостей першого активного стану у карті
Перш ніж перейти до створення логіки роботи автоматів і переходів між станами, додамо на схему логічний блок «Більше» і проведемо порівняння заданої температури з температурою, отриманою з моделі. Таким чином, ми отримаємо нову логічну змінну, яка приймає значення 1, коли температура менше статутки, і 0, коли температура більше або дорівнює статутці.
Додайте блок «Більше» і з'єднайте схему як показано на малюнку 12:
Малюнок 12: Порівняння заданої та виміреної температури
Зверніть увагу, що SimInTech не дає з'єднати вихід блоку «Більше» з входом блоку «Стан автомата», оскільки в першому випадку лінія забезпечує передачу значення між блоками, а в другому - перехід зі стану в стан.
Створення логіки стану
Виконайте подвійний клік по блоку, щоб перейти до внутрішньої структури блоку. Схема внутрішньої початкової структури блоку зображена на малюнку 13:
Малюнок 13. Внутрішня структура блоку «Стан автомата»
Внутрішня структура за замовчуванням містить блок «Вироблення умов виконання» у верхній частині схеми. Цей блок отримує команду на активацію стану зі структури верхнього рівня («Блок вибору станів»), користувачеві не потрібно змінювати цей блок.
Крім цього, блок містить два блоки «входу-виходу» спеціального виду:
1) «FROM_STATE» - вхід до стану;
2) «TO_STATE» - вихід зі стану;
Дані порти відповідають входу і виходу в блок на схемі верхнього рівня. Дані блоки розташовані на закладках «Кінцеві автомати»: блоки «Вхід стану» та «Вихід стану» відповідно.
Схема роботи автоматів передбачає для стану включений один вихід (при збігу двох умов: вимкнений протягом 40 секунд і температура менше заданої), але повернення в стан можливе за двома умовами: або робота нагрівача протягом 20 секунд, або досягнення заданої температури. Додайте до схеми блок «Вхід стану» закладки «Кінцеві автомати» (див. рис. 14):
Малюнок 14. Закладка «Кінцеві автомати» блок «Вхід стан»
Оскільки для розрахунку умови виходу зі стану нам необхідно значення зовнішнього порівняння заданої температури з виміреною, додайте на схему так само блок «Порт входу» з закладки «Субструкутри» (см рис. 15)
Малюнок 15. Закладка субструктури блок «Порт входу»
Щоб отримати результати обчислень, виконаних у даному стані, додайте на схему блок «Порт виходу» з закладки «Субструктури» (см рис 16):
Малюнок 16. Закладка субструктури блок «Порт виходу»
Змініть назву порту «Вхід» на «Cold» - тут буде змінна порівняння виміреної температури з заданої, а назви порту «Вихід» на «On/Off» - тут ми будемо зчитувати ознаку включення і вимикання нагрівача.
Загальна схема, підготовлена до створення логіки стану, представлена на малюнку 17.
Малюнок 17. Блок «Стан автомата» підготовлений до створення логіки
У вимкненому стані автомат повинен перебувати 40 секунд. Якщо через даний проміжок часу температура води менше заданої (вхід Cold = 1), необхідно перейти в стан включений. Для формування затримки використовуємо блок «Блок витримки стану». (див. рис 18):
Малюнок 18. Закладка «Кінцеві автомати» блок «Витримка стану»
Цей блок, підключений до виходу блоку «Умова виконання», включає таймер і формує сигнал закінчення часу через заданий інтервал. Помістіть блок на поле і встановіть значення 40 у властивостях витримки.
Сигнал закінчення витримки об'єднується із зовнішнім сигналом (Cold) через логічно блок «і». Якщо вони збігаються (час вимикання закінчився і температура нижче статутки), то ми формуємо команду виходу зі стану і одночасно подаємо на вихід сигнал про включення нагрівача. Загальна схема логіки роботи представлена на малюнку 19.
Малюнок 19 Логіка роботи в стані «вимкнено»
При формуванні виходу з блоку стану необхідно враховувати, що блок в активному стані постійно розраховує і формує значення вихідних сигналів (у нашому випадку це вихід On/Off). При завершенні роботи стану і виходу з нього на лінії залишається останнє обраховане значення. У нашому випадку на виході зі стану буде сформовано значення 1 і воно залишиться до тих пір, поки стан не буде знову активно.
Після завершення створення моделі роботи в стані вимкнено, піднімемося на рівень вище шляхом подвійного кліка за порожнім місцем схеми (див. рис. 20).
Малюнок 20. Схема карти станів після редагування блоку «вимкнено»
Зовнішній вигляд блоку стану вимкнено на схемі змінився. Після додавання вхідних і вихідних портів всередині блоку стану, на блоці зовні з'явилися три вхідних порти і два вихідних. Колір стандартних портів для передачі сигналів - чорний, колір портів для підключення ліній переходу між станами - червоний. Користувач не може підключити лінії з даними до портів стану і, навпаки, лінії переходу станів до портів даних.
Перейдемо до формування логіки роботи в стані включений.
Перейдіть всередину блоку подвійним кліком за зображенням. Для цього блоку буде дві умови виходу зі стану. За замовчуванням у блоці є один «Вихід стану». Помістіть на схему стану другий блок «Вихід стану» (див. рис. 21):
Малюнок 21. Закладка «Кінцеві автомати» блок «Вихід стану»
Для формування умови виходу необхідно в блок передати значення порівняння температури. Для цього ми додамо на схему блок «Порт виходу» з закладки «Субструктури» (див. рис. 15).
Для контролю роботи протягом 20 секунд поставимо на схему блок «Витримка стану» (див. рис. 17), і задамо йому як параметр «Час до переходу в інший стан» - 20.
Загальна структура логіки роботи блоку виглядатиме як показано на малюнку 22:
Малюнок 22. Структура роботи в стані «включений»
При переході в стан включений взводиться таймер витримки роботи, після закінчення часу здійснюється перехід по першому виходу.
Одночасно аналізується значення, отримане за входом з даними. На цей порт ми подамо результат порівняння заданої температури з виміреною. Якщо результат дорівнює 1 (істина), температура в бойлері нижче заданої і потрібно продовжувати нагрів. Якщо значення дорівнює 0 (брехня), потрібно завершувати нагрів. Блок «Оператор НЕ» забезпечує інверсію входу та вироблення команди на перехід зі стану включений за другим виходом (див. рис. 22).
Перейдемо на верхній рівень цієї схеми. Біля блоку стану автомата включено два додаткових порти. І тепер блок містить:
- один вхідний порт для переходу в стан (червоного кольору);
- один вхідний порт для даних (чорного кольору);
- два вихідних порти для переходу зі стану (червоного кольору).
З'єднайте порти, як показано на малюнку 23:
Малюнок 23. Логіка роботи кінцевого автомата в зборі
Таким чином, ми підготували модель управління на основі кінцевих автоматів до тестування. На даному етапі вихід на індикатор ми підключили до порту включення, щоб виключити помилку, пов'язану з непідключеним вхідним портом.
Порт індикатора на цій стадії відображає стан (увімкнено/вимкнено). Моделювання інтервалів і кольору індикатора ми зробимо пізніше.
Визовіть параметри обрахунку, натиснувши кнопку «Параметри розрахунку» (див. рис. 24):
Малюнок 24. Кнопка «Параметри розрахунку»
На вкладці «Параметри розрахунку» виберіть «Кінцевий час розрахунку» 700 секунд. (див. рис. 25)
Малюнок 25. Параметри розрахунку
На закладці «Синхронізація» встановіть галочку «Синхронізувати з реальним часом» та «Коефіцієнт прискорення» - 100 (див. рис. 26).
Малюнок 26. Параметри розрахунку. Синхронізація
Встановивши режим синхронізації, ми зможемо спостерігати за перемиканням між станами моделі прямо на схемі. В іншому випадку розрахунок відбувається занадто швидко і перемикання стану можна відстежувати тільки за графіками.
Запустіть модель на розрахунок, натиснувши кнопку старт (див. рис. 27).
Малюнок 27. Запуск на розрахунок моделі
Якщо ви всі зібрали згідно з інструкцією, то ви отримали модель водонагрівача, керовану системою на базі логіки кінцевих автоматів. На схемі контролера під час моделювання можна спостерігати перемикання зі стану в стан, зеленим кольором відображається активний у момент моделювання стан (див. рис. 28).
Малюнок 28. Схема кінчених автоматів у режимі моделювання
Результати моделювання представлені на малюнках 29 (режим роботи нагрівача) і 30 (температура бойлера). На графіку режиму роботи видно, що в початковий момент часу автомат знаходиться в стані вимкнений (см рис. 29).
Малюнок 29. Режим роботи нагрівача
Малюнок 30. Температура нагрівача
На графіку температури (рис. 30) видно, що в початковий момент температура дорівнює 15 градусам і знижується зі швидкістю охолодження. Після перебування в стані вимкнений протягом 40 секунд відбувається перехід до стану включений (див. рис. 29). У даному стані відбувається нагрів зі швидкістю, заданою в моделі нагрівача (див. рис. 30). Після відпрацювання протягом 10 секунд відбувається перехід у стан вимкнений (див. ризи.29). Дані цикли повторюються до тих пір, поки температура не досягне статутку в 20 градусів. Після цього цикл включення скорочується, оскільки перехід зі стану включений в стан вимкнений здійснюється по досягненню статутки по температурі. Це видно на графіку «Режим роботи» після 500 секунди розрахунку (див. рис. 29).
Таким чином, ми переконалися, що модель управління на базі логіки кінцевих автоматів працює і підтримує задану температуру в нагрівачі.
Зверніть увагу, що сигнал включення і вимикання (On/Off) ми формуємо в блоці вимкнений, оскільки даний стан є активним за замовчуванням і його виходи на старті визначені. При виході з цього стану ми змінюємо значення сигналу на 1 (див. малюнок 18) і він залишається в стані включений (1) весь час, поки стан не активно. Оскільки в даному кінцевому автоматі всього два стани, ми можемо цей сигнал подати на вихід з карти станів. При будь-якому активному стані значення сигналу буде певним і вірним. Якщо у нас більше двох станів, то вихід з субмоделі «Карта станів» повинен визначатися або розраховуватися в кожному блоці станів, інакше можлива ситуація використання змінних, які не визначені через неактивний стан.
У наступній частині статті буде:
- Демонстрація інших можливостей обміну даними, у схема кінцевих автоматів.
- Процес створення вкладеного автомат стану для моделювання роботи індикатора. Частина 2 тут....
- Процес отримання коду Сі зі створеної моделі системи управління.
Пробну версію SimInTech можна завантажити з сайту розробника Тут...















