atpv

Навчальні матеріали з автоматизації технологічних процесів та виробництв, розроблені спільнотою

<- До підрозділу Коментувати

Підходи до найменування сутностей в програмах 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

Якщо Ви хочете залишити коментар у Вас є наступні варіанти:

Про проект і можливість допомогти проекту написано тут