Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
до лабораторної роботи №3
з дисципліни:
“Розподілені системи збору інформації та управління”
на тему:
«Мова функціональних блоків (FBD)»
Львів – 2009
Тема: Мова функціональних блоків (FBD).
Мета: Навчитися створювати, тестувати та застосовувати програми мовою FBD в редакторі бази каналів системи Trace Mode.
Теоретичні відомості
У Трейс Моуд можливе створення програм, які використовуються для обробки даних та управління. Для розробки програм передбачені мови Техно FBD та Техно IL. Вони реалізують стандарт МЕК-1131.
Мова Техно FBD призначена для розробки алгоритмів у вигляді діаграм функціональних блоків. Створені на ньому програми можуть викликатися з процедур каналів.
FBD-програма (програма, написана мовою Техно FBD) має ім’я та коментар. Ці атрибути використовуються для її ідентифікації та визначення доступу до неї з різних вузлів проекту. Ім’я програми може мати до 8 символів, а коментар – до 128. Ім’я програми не може починатися з цифри і не може містити службових символів.
FBD-програму можна зберегти у файл (він має розширення .crm), а потім вставити у вузол того самого чи іншого проекту. Її можна зберегти також у вигляді тексту, записаного структурованою мовою стандарту МЕК 1131-3 (у цьому випадку буде розширення .frm). Файл у текстовому форматі можна використати в інших додатках.
FBD-програми запускаються процедурами каналів: трансляція та управління.
При цьому настроюється зв’язок аргументів програми з атрибутами каналів та задаються значення констант. Недопустимо використовувати FBD-програму без входів, виходів і констант, тобто, коли у неї немає точок прив’язки.
Кожен рядок списку аргументів програми містить характеристику аргументу та пов’язаної з ним змінної бази каналів. Рядок має наступний формат:
nn <ім’я об’єкта>:<ім’я каналу>_<атрибут>,
де
nn – характеристика аргументу:
=> – значення аргументу формується програмою;
<= – значення аргументу передається програмі.
У списку аргументів FBD-програми виводяться також її константи.
FBD-програма розробляється розміщенням функціональних блоків у робочому полі та з’єднанням їх в одну діаграму.
Змінні FBD-програми є внутрішні та зовнішні. Зовнішні змінні називаються аргументами. Сумарна кількість змінних в одній програмі не може перевищувати 254.
Кожна змінна має числовий індекс, який використовується при посиланнях на неї.
При виклику однієї і тієї самої програми різними каналами для кожного з них створюється свій набір змінних цієї програми.
Елементарною ланкою FBD-програми є функціональний блок.
Блок – це графічне зображення виклику однієї з функцій. Це можуть бути або стандартні, вбудовані в систему функції, або розроблені користувачем. Вбудовані функціональні блоки згруповані у кілька розділів.
Кожен функціональний блок має атрибути:
виконувана функція,
номер,
входи,
виходи.
Функція блока визначає дії, які виконуються над його входами при формуванні значень виходів. Стандартні функції (їх близько 150) згруповані в 14 розділів. Крім того, передбачені ще три розділи для блоків, запрограмованих на Техно IL чи на тому ж Техно FBD, і ще один розділ для підключення зовнішніх блоків, розроблених на Сі та оформлених як dll модулі.
Номер функціонального блока встановлюється автоматично після першого перерахунку в режимі налагодження чи збереження проекту. Номер показує послідовність виконання блоків та не коректується. Номер блока, що виконується наступним, записується за номером поточного блока через символ “:”. Для першого блока в цій області перед номером записується символ B, а для останнього – E.
Кожен блок залежно від виконуваної ним функції має певну кількість входів і виходів. Входи завжди розміщені зліва, а виходи – справа.
Вхід блока може бути зв’язаний зі змінною чи константою, а може бути вільним. Вільні входи не враховуються при його перерахунку. На діаграмі вони виводяться яскраво-зеленим кольором.
Призначення входів та виходів блока визначається його функцією. Винятком є лише перший блок. Він завжди керує перерахунком блока. Перший блок називається входом запуску/блокування (RUN), решта блоків називаються функціональними.
В режимі емуляції програми поряд із кожним входом та виходом виводиться його значення. При цьому для входів значення, що виводяться, заміняють їхні позначення.
Приклад функціонального блоку:
Даний блок виконує функцію розпакування бітів. Значення його виходів рівні відповідним бітам молодшого байта входу INW. При цьому OB0 означає молодший біт, а OB7 – старший біт молодшого байта. При INW=0xFF08 значення OB3 буде рівне 1, а всі інші виходи – рівні 0.
Існує два види представлення даних для входів та виходів функціональних блоків:
FLOAT;
HEX.
При зв’язуванні входів та виходів, які мають різний вид представлення, дані перетворюються автоматично.
Тип входу/виходу визначає змінну, з якою він буде пов’язаний. Це може бути або внутрішня змінна, або зовнішня змінна (аргумент), або константа.
Входи та виходи блоків можуть мати один із наступних типів:
Вільний;
Блок;
Константа;
Аргумент.
Тип Вільний встановлюється автоматично для всіх незадіяних входів. Він
є недоступний для установки вручну.
Тип Блок встановлюється для всіх виходів при розміщенні блока. Вхід чи вихід даного типу пов’язаний з внутрішньою змінною програми. Цей тип автоматично встановлюється для входу, пов’язаного з виходом будь-якого блока.
Тип Константа може бути заданий лише для входу. Такий вхід має фіксоване значення та не може мінятися в процесі виконання програми.
Аргументами є атрибути каналів.
Для входів та виходів функціональних блоків реалізовано логічну та побітову інверсію.
Для визначення послідовності обчислення блоків застосовується наступний алгоритм:
На першій ітерації обчислюються всі блоки, входи яких є константами чи аргументами програми, тобто, визначені при виклику програми.
На другій ітерації обчислюються всі блоки, входи яких визначилися після першої ітерації.
Далі ітерації повторюються доти, доки всі блоки не будуть перераховані або кількість перерахованих блоків перестане збільшуватися (наявність зворотних зв’язків).
Цей пункт виконується, якщо обчислення програми не завершене, а кількість перерахованих блоків не збільшується. У цьому випадку вибирається верхній і лівий невиконаний блок та перераховується за поточними значеннями його входів. Після цього відбувається перехід на другий пункт алгоритму.
Якщо блок не перераховується, то з його виходів знімаються значення, які лишилися на попередньому такті перерахунку, при цьому значення виходів, оголошених аргументами, не присвоюються прив’язаним до них атрибутів.
При розробці програм на Техно FBD можна використовувати довільно програмовані блоки. Для їх створення використовується мова Техно IL. Нові блоки по мірі їх додавання послідовно заповнюють вільні місця у функціональних розділах Техно IL_1, Техно IL_2 і Техно IL_3. Ім’я такої IL-програми не повинно містити пробіли та перевищувати довжину у 7 символів.
Створений блок повинен виконувати наступні вимоги:
Сумарне число входів та виходів не повинне перевищувати 16 (включаючи вхід блокування RUN).
Число входів не повинне перевищувати 12 (включаючи вхід блокування RUN).
Число виходів не повинне перевищувати 8.
Новий блок можна не тільки запрограмувати мовою Техно IL, але й створити з FBD-програми. При цьому ім’я нового блока складається з перших трьох літер імені програми, вхідні та вихідні аргументи програми утворюють входи та виходи нового блока, а перші три символи коментарю до аргументу використовуються в якості імені відповідного входу чи виходу.
Створений блок повинен дотримуватися тих самих вимог, що й при програмуванні на Техно IL.
FBD-блок не може бути використаний у програмі, з якої він створений.
FBD-блок не можна створити з програми, яка використовує блоки, створені з FBD-програм.
Результат виконаної роботи:
Висновок:
На даній лабораторній роботі я навчився створювати, тестувати та застосовувати програми мовою FBD в редакторі бази каналів системи Trace Mode.