Підходи до найменування сутностей в програмах PLC
це чернетка
Угорська нотація
Приклад із документація Machine Expert / CODESYS
Найменування змінних та екземплярів
Для кожної змінної підбирайте змістовний, короткий опис. Він використовується як базове ім’я. Для кожного слова в базовому імені використовуйте велику літеру, а для решти символів — малі (приклад: FileSize).
Таблиця 1. Префікси змінних
| Тип даних | Нижня межа | Верхня межа | Інформаційний вміст | Префікс | Коментар |
|---|---|---|---|---|---|
| BOOL | FALSE | TRUE | 1 біт | x* | – |
| BOOL | FALSE | TRUE | 1 біт | b | зарезервовано |
| BYTE | – | – | 8 біт | by | бітовий рядок, не для арифметичних операцій |
| WORD | – | – | 16 біт | w | бітовий рядок, не для арифметичних операцій |
| DWORD | – | – | 32 біти | dw | бітовий рядок, не для арифметичних операцій |
| LWORD | – | – | 64 біти | lw | бітовий рядок, не для арифметичних операцій |
| SINT | -128 | 127 | 8 біт | si | арифметичний цілочисельний тип, 8 біт |
| USINT | 0 | 255 | 8 біт | usi | арифметичний цілочисельний тип, 8 біт |
| INT | -32 768 | 32 767 | 16 біт | i | арифметичний цілочисельний тип, 16 біт |
| UINT | 0 | 65 535 | 16 біт | ui | арифметичний цілочисельний тип, 16 біт |
| DINT | -2 147 483 648 | 2 147 483 647 | 32 біти | di | арифметичний цілочисельний тип, 32 біти |
| UDINT | 0 | 4 294 967 295 | 32 біти | udi | арифметичний цілочисельний тип, 32 біти |
| LINT | -2⁶³ | 2⁶³−1 | 64 біти | li | арифметичний цілочисельний тип, 64 біти |
| ULINT | 0 | 2⁶⁴−1 | 64 біти | uli | арифметичний цілочисельний тип, 64 біти |
| REAL | – | – | 32 біти | r | арифметичний дійсний тип, 32 біти |
| LREAL | – | – | 64 біти | lr | арифметичний дійсний тип, 64 біти |
| STRING | – | – | – | s | рядок одиничної ширини змінної довжини (типово 80 символів) |
| WSTRING | – | – | – | ws | рядок подвійної ширини змінної довжини (типово 80 символів) |
| TIME | – | – | – | tim | тривалість часу, 32 біти |
| LTIME | – | – | – | ltim | тривалість часу, 64 біти |
| TIME_OF_DAY (TOD) | – | – | – | tod | час доби, 32 біти |
| LTIME_OF_DAY (LTOD) | – | – | – | ltod | час доби, 64 біти |
| DATE_AND_TIME (DT) | – | – | – | dt | дата і час |
| LDATE_AND_TIME (LDT) | – | – | – | ldt | – |
| DATE | – | – | – | dat / d | календарна дата |
| LDATE | – | – | – | ldat / ld | календарна дата |
| Enumeration | – | – | 16 біт | e | – |
| POINTER | – | – | – | p | – |
| ARRAY | – | – | – | a | – |
Приклади простих оголошень:
bySubIndex : BYTE;
sFileName : STRING;
udiCounter : UDINT;
Приклад вкладеного оголошення, у якому префікси приєднуються один до одного в порядку оголошень:
pabyTelegramData : POINTER TO ARRAY [0..7] OF BYTE;
Екземпляри функціональних блоків і змінні користувацьких типів даних отримують скорочення імені функціонального блока або типу даних як префікс (наприклад: sdo). Приклад:
cansdoReceivedTelegram : CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* префікс: sdo *)
STRUCT
wIndex : WORD;
bySubIndex: BYTE;
byLen : BYTE;
aby : ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Локальні константи (c) починаються з префікса c та символу підкреслення, після чого вказується префікс типу і назва змінної. Приклад:
VAR CONSTANT
c_uiSyncID : UINT := 16#80;
END_VAR
Глобальні змінні мають префікс g_, а глобальні константи — префікс gc_. Приклад:
VAR_GLOBAL
g_iTest : INT;
END_VAR
VAR_GLOBAL CONSTANT
gc_dwExample : DWORD;
END_VAR
Загалом застосовуйте описані вище правила іменування змінних при іменування змінних у бібліотеках. Під час доступу до змінної з бібліотеки у коді застосунку використовуйте простір імен бібліотеки як префікс. Приклад:
g_iTest : INT; (* оголошення *)
CAN.g_iTest (* використання у програмі застосунку *)
Назва кожного структурного типу даних складається з короткого, змістовного опису структури (наприклад, SDOTelegram). Приклад (у бібліотеці з простором імен CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Оголошення:
eToday : CAL.Day;
Використання у застосунку:
IF eToday = CAL.Day.MONDAY THEN
Примітка: під час використання DUT або переліків (enumeration), оголошених у бібліотеках, слід враховувати простір імен.
Функції, функціональні блоки, програми (POU), дії
Назви функцій, функціональних блоків і програм мають починатися з короткої, змістовної назви POU (наприклад, SendTelegram). Як і для змінних, перша літера кожного слова в назві POU має бути великою, а решта — малими. Рекомендується формувати назву POU з дієслова та іменника, щоб чітко відобразити призначення функціонального блока. Приклад:
FUNCTION_BLOCK SendTelegram
У частині оголошення слід подати короткий опис POU у вигляді коментаря. Далі вхідні та вихідні змінні також мають супроводжуватися коментарями. Для функціональних блоків префікс, пов’язаний з екземплярами налаштування, слід вставляти безпосередньо після імені.
Дії (Action) не мають префікса. Лише ті дії, які викликаються виключно всередині самого POU, починаються з prv_.
Для створення імен методів застосовуються ті самі правила, що і для дій. Для можливих входів методу слід наводити коментарі англійською мовою. До оголошення методу необхідно додати короткий опис. Назви інтерфейсів слід починати з літери I, наприклад ICANDevice.
Примітка: під час використання POU, оголошених у бібліотеках, слід враховувати простір імен.
Автори
Теретичне заняття розробив Олександр Пупена.
Feedback
Якщо Ви хочете залишити коментар у Вас є наступні варіанти:
Про проект і можливість допомогти проекту написано тут