Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування промислових систем автоматизації97...doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5.39 Mб
Скачать

1.6Структура програми користувача мовою step

Питання розділу:

  • Способи реалізації взаємодії окремих частин програми

  • Призначення різних блоків програми користувача в мові

СТЕП.

Структурою програми прийнято позначати спосіб програмування окремих частин програми. Розрізняють лінійний, блоковий та структурований способи програмування.

Програма з лінійною структурою повністю записується в організаційному блоці ОВ1, що відповідає за циклічне виконання програми в контроллерах SIMATIC, див. Рисунок 1.6 .30.

Рисунок 1.6.30 – Принцип виконання ОВ1

Такий спосіб програмування рекомендується використати для простих завдань автоматизації або при обмеженому обсязі пам'яті контроллера. Складні завдання автоматизації краще розділяти на більше дрібні спеціалізовані завдання й оформляти у вигляді окремих програмних блоків, див. Рисунок 1.6 .31.

Рисунок 1.6.31 – Принцип виконання складних програм

В організаційному блоці ОВ1 при такій блоковій структурі програми вказується лише черговість виконання окремих програмних блоків за допомогою команд виклику блоків.

На відміну від програм з лінійною структурою блокові програми є більш наочними й зручними для налагодження та редагування.

Принцип побудови структурованої програми, див. Рисунок 1.6 .32 полягає в тому, що існують головна програма та багаторазово викликувані підпрограми. Для цього підпрограми повинні параметруватися, тобто мати можливість заміни формальних параметрів актуальними.

Рисунок 1.6.32 – Принцип виконання структурованих програм

Передача параметрів здійснюється при виклику блоків-підпрограм, за рахунок чого досягається одержання окремих результатів.

Необхідною умовою використання принципу структурованого програмування є наявність ідентичних багаторазова повторюваних дій, що відрізняються лише параметрами.

Розглянемо застосування блоків програми користувача мовою STEP.

Для формування процесів у пам'яті контроллера норми мови STEP7 передбачають використання організаційних блоків ОВ. Вони є, таким чином, інтерфейсом між операційною системою й програмою користувача. Організаційні блоки не можуть, тому, викликатися іншими блоками, а лише операційною системою при виникненні певних подій, що викликають виникнення переривань.

Організаційні блоки обробляються при виникненні подій у відповідність зі своїм пріоритетом (від 1 - нижчий, до 29 - вищий).

ОВ1 має нижчий пріоритет, це означає, що робота ОВ1 може бути перервана будь-яким іншим ОВ.

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

Із цим типом блоків нерозривно зв'язані допоміжні блоки даних, де при виклику функціонального блоку формується локальна область пам'яті для обробки окремих даних.

Можна виділити наступні відмінні риси функціональних блоків:

  • параметруємість, що означає наявність параметрів блоку, які служать інтерфейсом для передачі даних у блок і назад

  • статичне зберігання локальних даних, що означає оголошення статичних змінних, дійсних необмежений час для використання усередині блоку

  • тимчасове зберігання локальних даних, що означає оголошення тимчасових змінних, дійсних для використання усередині блоку тільки на час поточного виклику блоку

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

У мові STEP допускається оголошення декількох вихідних параметрів функції, які вертаються як відповідь у викликаючий функцію програмний блок.

Відмінними рисами функцій є:

  • параметруємість, тобто наявність параметрів функції, які служать інтерфейсом для передачі даних у функцію й назад

  • тимчасове зберігання локальних даних, тобто оголошення тимчасових змінних функції

  • відсутність статичної пам'яті, тобто неможливість оголошення статичних змінних функції, дійсних для використання усередині функції після поточного виклику функції

Для зберігання даних, які потрібні програмі користувача, служать блоки даних. При роботі із блоками даних звертання можливе до окремого біта, а також до байта, слова та подвійного слова.

Як уже було розглянуто вище, у допоміжних блоках даних, що прив'язуються до функціональних блоків, розташовуються їх локальні статичні змінні. При створенні функціонального блоку пов'язаний з ним допоміжний блок даних створюється автоматично та не вимагає додаткового втручання користувача.

Глобальні блоки даних містять інформацію, що доступна з будь-яких блоків програми користувача. Інформація, що зберігається в глобальних блоках даних, на відміну від інформації, що зберігається в локальному стеці блоків, не усувається після закінчення роботи блоку. Глобальні блоки даних повинні створюватися користувачем, а їхня структура вибирається довільно. Допускається одночасне використання допоміжних та глобальних блоків даних, див. Рисунок 1.6 .33.

Рисунок 1.6.33 – Звертання до різних блоків даних

У мові STEP є також системні функціональні блоки SFB та системні функції SFC, які інтегровані в операційну систему контроллера виробником й можуть викликатися програмою користувача.

Блоки SFB як і FB мають так звану статичну пам'ять. Для SFB також створюються допоміжні блоки даних, які як складова частина програми користувача повинні завантажуватися в пам’ять контроллера.

Контроллери SIMATIC S7 надають у розпорядження користувачеві системні функціональні блоки. SFB, як і FC - це блоки без статичної пам'яті. Більш докладну інформацію про системні функції й функціональні блоки можна знайти в довіднику користувача контроллерів SIMATIC фірми Siemens.

Як вже було відзначено, програмні блоки можуть викликати інші програмні блоки, створюючи ієрархічні програмні структури, див. Рисунок 1.6 .34. У мові STEP7 ці виклики блоків реалізуються за допомогою команди виклику САLL.

Рисунок 1.6.34 – Виклики блоків і переривання

Розглянемо більш докладно механізм передачі даних у функціональний блок або функцію й назад.

Для того, щоб програма у функціональному блоці або функції параметрувалася, ці блоки наділяються формальними параметрами. Їхнє створення відбувається шляхом оголошення, у результаті якого вони одержують символічне ім'я. Програма в тілі блоку може оперувати символічними іменами оголошених формальних параметрів як «нормальними» операндами мови степ.

Формальні параметри можуть бути оголошені як:

  • IN Вхідний параметр

  • OUT Вихідний параметр

  • IN_OUT Наскрізний параметр

Параметр, оголошений як вхідний у тілі блоку може тільки опитуватись. Вихідному параметру в тілі блоку привласнюються результуючі значення. Наскрізний параметр має обидві можливостями.

Наступні оголошення не стосуються формальних параметрів:

  • STAT - внутрішня змінна стану, яка зберігається в блоці даних, що приєднується (тільки для ФБ)

  • TEMP - тимчасова змінна для проміжних результатів усередині функціонального блоку або функції.

Приклад таблиці оголошень певного функціонального блоку може мати наступний вигляд, див. Таблиця 1.6 .2

Таблиця 1.6.2– Таблиця оголошень

Adresse

Deklaration

Name

Typ

Anfangswerte

Kommentar

0.0

0.1

2.0

in

in

in

Start

Stop

Drehzahl_Soll

BOOL

BOOL

INT

FALSE

TRUE

0

4.0

out

Motor_Ein

BOOL

FALSE

6.0

in_out

NOT_AUS

BOOL

FALSE

8.0

stat

Drehzahl_Ist

INT

0

0.0

temp

Zwischenergebnis

INT

- - -

Для розуміння параметруємості блоків не вистачає лише механізму передачі реальних значень символьним змінним. Передача цих значень відбувається при виклику функціонального блоку або функції в межах викликаючого блоку, про що піде мова далі.

При виклику функцій формальним параметрам повинні обов'язково привласнюватися відповідні актуальні параметри, а при виклику функціональних блоків формальним параметрам можуть привласнюватися актуальні. Це здійснюється або у вигляді списку при програмуванні в AWL, або у вигляді полів параметрів структурного елемента.

Якщо при виклику функціонального блоку актуальні параметри не передаються, він працює з величинами із приєднаного блоку даних. В FC це неможливо, тому що вони не мають блоку даних, що приєднується.

Для розглянутого приклада таблиці оголошень функціонального блоку FB10, його виклик при програмуванні в FUP буде виглядати наступним чином, див. Рисунок 1.6 .35

Рисунок 1.6.35– Виклик FB10 в FUP- формі

Входи й виходи структурного елемента служать для передачі вхідних та вихідних параметрів.

Змінна ISTWERT не з'являється на входах та виходах, тому що вона оголошена, як внутрішня змінна STAT. Це справедливо також для змінної ERGEBNISS, що оголошена, як TEMP та невідома за межами функціонального блоку. Аналогічна методика справедлива для блоків FC.

В таблиці оголошень блоків FB можуть задаватися початкові значення змінних, що повідомляються, що неможливо для FC. Виклик параметруємого функціонального блоку FB10 при програмуванні в AWL виглядає в такий спосіб, див. Рисунок 1.6 .36:

Рисунок 1.6.36– Виклик FB10 в AWL- формі

В команді CALL крім викликуваного блоку повинен бути зазначений також блок даних, що приєднується , тут DB10, що створюється в проекті автоматично.

Необхідною умовою виклику блоку є його наявність у проекті, тому при програмуванні варто звертати увагу на порядок створення блоків. Спочатку повинен створюватися викликуваний блок, а потім викликаючий.

Отже, механізм передачі параметрів дозволяє створювати блоки з кодом, що виконується, які можуть бути викликані з різних частин програми з різним набором актуальних параметрів.

Наступний приклад ілюструє механізм передачі параметрів при виклику параметруємого блоку, у процесі виконання програми користувача, див. Рисунок 1.6 .37

Рисунок 1.6.37– Механізм передачі параметрів

  1. При виклику FB за допомогою за допомогою команди CALL, до обробки самого функціонального блоку значення актуальних вхідних та наскрізних параметрів копіюються в блок даних, що приєднується.

  2. Потім здійснюється перехід до виконання блоку FB. При звертанні у тілі блоку до команди з формальним параметром , відбувається звертання до приєднаного блоку даних за актуальним операндом.

  3. Після закінчення обробки блоку FB актуальні значення вихідних та наскрізних параметрів із приєднаного блоку даних передаються в викликаючий блок програми.

Для більш детального вивчення наявних у мові STEP7 варіантів взаємодії функціональних блоків і блоків даних, що приєднуються, варто звертатися до відповідної документації фірми Siemens.