ГоловнаПрограмування ПЛК › Регістри і порівняння
Урок 4 з 5 · Серія TECORP GROUP

Регістри ПЛК
MOV · CMP · Арифметика
// числа, дані, порівняння

Регістри — це пам'ять ПЛК для зберігання чисел. MOV переміщує дані, CMP порівнює, ADD/SUB/MUL/DIV рахують. Без регістрів неможливо працювати з аналоговими сигналами, рецептами і температурою.

📦 MOV — переміщення
⚖️ CMP — порівняння
➕ Арифметика
🌡️ Практика: термостат
🕐 ~25 хвилин

Що таке регістр ПЛК

До цього ми працювали тільки з булевими змінними — ON/OFF, 0 або 1. Але реальний процес оперує числами: температура 87.5°C, тиск 4.2 бар, швидкість 1450 об/хв, позиція 2340 мм. Для цього існують регістри — комірки пам'яті що зберігають цілі або дробові числа.

У Haiwell (і більшості PLC) регістри бувають кількох типів. Кожен має свій префікс, діапазон і призначення:

// Карта пам'яті регістрів Haiwell
D — Data Register
D0 – D7999
Загального призначення. 16-біт, -32768…+32767. Основний робочий регістр. Зберігається при живленні.
W — Word Register
W0 – W1999
Регістри зберігання і рецептів. Не скидаються при вимкненні навіть без батареї.
SD — Special Data
SD0 – SD999
Системні регістри: час ЦПУ, лічильники помилок, стан модулів аналогового вводу.
HD — HMI Register
HD0 – HD4999
Спільні регістри PLC ↔ HMI. Значення з HMI-панелі автоматично потрапляють сюди.
D (32-bit)
D0+D1 (пара)
Два регістри D утворюють 32-бітне число (-2 147 483 648…+2 147 483 647). Для великих значень використовуй інструкцію DMOV.
F — Float Register
D0+D1 (float)
32-бітне число з плаваючою крапкою (IEEE 754). Для температури, тиску. Інструкції: EMOV, EADD, ESUB.

Основні інструкції

MOV
MOV S D
Переміщення даних
Копіює значення S (джерело) до D (призначення). Джерело — константа K або регістр. Не очищає джерело.
CMP
CMP S1 S2 D
Порівняння двох значень
Порівнює S1 і S2. Встановлює три бітові флаги в D: D = S1>S2, D+1 = S1=S2, D+2 = S1<S2.
ADD
ADD S1 S2 D
Додавання
D = S1 + S2. S1 і S2 можуть бути константами K або регістрами D. Результат записується в D.
SUB
SUB S1 S2 D
Віднімання
D = S1 − S2. Зручно для обчислення відхилення від уставки: SUB D0 D10 D20 (різниця поточного і заданого).
MUL
MUL S1 S2 D
Множення
D = S1 × S2. Результат 32-бітний — займає пару D і D+1. Важливо враховувати при великих числах.
DIV
DIV S1 S2 D
Ділення
D = S1 ÷ S2 (ціла частина), D+1 = залишок. Для дробових результатів використовуй EDIV з float-регістрами.
Інструкція32-біт версіяFloat версіяУмовне виконання
MOV S DDMOVEMOVLD X0 → MOV K100 D0
ADD S1 S2 DDADDEADDLD M0 → ADD D0 D1 D2
SUB S1 S2 DDSUBESUBLD M1 → SUB D5 K10 D6
MUL S1 S2 DDMULEMULLD M2 → MUL D0 K10 D10
DIV S1 S2 DDDIVEDIVLD M3 → DIV D0 K100 D20
CMP S1 S2 DDCMPECMPLD SM0 → CMP D0 D10 M10

Інтерактивний симулятор — регістри і операції

Реальна пам'ять ПЛК прямо у браузері. Вибирай операцію, задавай значення і натискай Виконати — дивись як змінюються регістри і спрацьовують флаги CMP.

// Пам'ять ПЛК — D0…D7 / Прапори M10…M12
Регістри D0–D7
Флаги CMP (M10 = > / M11 = = / M12 = <)
Операція
S1 S2
→ D = ?
Журнал виконання
// Готовий. Виберіть операцію і натисніть Виконати.
MOV K100 D4 — запише константу 100 в регістр D4. Це найпростіша операція: ініціалізація уставки, завантаження рецепта, встановлення початкового значення.

Практика: цифровий термостат

Задача: аналоговий температурний датчик підключений до модуля AI (аналоговий вхід). Сирі дані — числа 0–4000 (відповідають 0–400°C з множником 0.1). Потрібно порівняти температуру з уставкою і включати нагрівач або охолоджувач.

Адресація
SD100 — сирі дані аналогового входу AI0
D0 — поточна температура (×0.1°C)
D10 — уставка температури (задається з HMI)
D11 — гістерезис (наприклад K5 = 0.5°C)
M10 — D0 > D10 (перегрів)
M11 — D0 = D10
M12 — D0 < D10 (нижче уставки)
Y0 — нагрівач
Y1 — охолоджувач
Код HaiwellHappy
// N1: Зчитати AI → D0 LD SM0 // завжди ON MOV SD100 D0 // AI дані → D0 // N2: Порівняти з уставкою LD SM0 CMP D0 D10 M10 // M10> M11= M12< // N3: Нагрівач — якщо нижче LD M12 OUT Y0 // нагрівач ON // N4: Охолоджувач — перегрів LD M10 OUT Y1 // охолоджувач ON
Порада — гістерезис: щоб нагрівач не клацав кожні секунди, використовуй не CMP, а дві уставки: нижня D10 - D11 і верхня D10 + D11. Нагрівач вмикається нижче нижньої, вимикається вище верхньої. Це класична двопозиційна регуляція з гістерезисом — SUB D10 D11 D12 і ADD D10 D11 D13, потім два CMP.

Готові до реального проекту?

Haiwell PLC серія A + безкоштовний HaiwellHappy — ідеальний старт для автоматизації. Постачання з Дніпра, підтримка українською.