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

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

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