Замітки по роботі з PLCnext
Розширені функції та функціональні блоки -> Ethernet
Функціональний блок TLS_SEND_2
поєднує обробку TCP і TLS в одному FB. Крім того, він підтримує сервер TCP/TLS, який може спілкуватися з кількома клієнтами. FB TLS_SEND_2
потрібно використовувати з дескрипторами сокетів, створеними FB TLS_SOCKET_2
.
Функціональний блок використовується для надсилання даних через TCP або TLS (Transport Layer Security) на пристрій Ethernet із підтримкою TCP/TLS. Це робиться за допомогою сокета TCP/TLS. Перш ніж надсилати дані, спершу потрібно відкрити сокет за допомогою функціонального блоку TLS_SOCKET_2
.
Після відкриття сокета та встановлення з’єднання функціональний блок надсилає дані комунікаційному партнеру через чисте з’єднання TCP або захищене з’єднання TLS. Тип підключення залежить від значення входу START_TLS
функціонального блоку TLS_SOCKET_2
:
START_TLS = FALSE
, функціональний блок використовує для надсилання даних чисте з’єднання TCP.START_TLS = TRUE
, функціональний блок надсилає дані через захищене з’єднання TLS.Функціональний блок забезпечує перевірку безпеки для визначення того, чи програма IEC очікує, що дані надсилатимуться через з’єднання TCP чи через захищене з’єднання TLS. Перевірка безпеки виконується шляхом порівняння значень входу SEND_SECURE
функціонального блоку та виходу START_TLS
FB TLS_SOCKET
. Якщо виявлено невідповідність вхідних значень, наприклад, SEND_SECURE = TRUE
(додаток IEC вимагає безпечної передачі даних) а START_TLS = FALSE
(протокол TLS ще не ініціалізовано), вихід ERROR
встановлюється в TRUE
, а на виході STATUS
вказується код помилки 16#C150
.
Кожна операція передачі ініціюється переднім фронтом на вході запиту REQ
. Під час цього циклу функціональний блок копіює дані для надсилання (застосовуються до вхідних даних DATA
) у внутрішній буфер. Вихід BUSY
встановлено на TRUE
, поки дані надсилаються з внутрішнього буфера. Якщо BUSY = TRUE
, вхід REQ
ігнорується. Передача нових даних, які доступні на вході DATA
під час поточного циклу передачі, може бути ініційована лише за допомогою переднього фронту на вході REQ
, якщо для виходу BUSY
встановлено значення FALSE
.
Якщо з’єднання розірвано та партнера по зв’язку неможливо досягти, вихід ERROR
встановлюється на TRUE
протягом одного циклу. Відповідний код помилки надається на виході STATUS
протягом цього циклу.
Сокет, відкритий функціональним блоком TLS_SOCKET_2
, можна використовувати лише для наступних викликів функціонального блоку TLS_SEND_2
, якщо вихід ACTIVE
функціонального блоку TLS_SOCKET_2
має значення TRUE
. Виклик функціонального блоку TLS_SEND_2
, коли ACTIVE = FALSE
, викликає помилку у функціональному блоці TLS_SEND_2
(видається ERROR = TRUE
і код STATUS code= 0xC210
).
Для контролерів із вбудованим брандмауером переконайтеся, що брандмауер не блокує порти, залучені до зв’язку. В іншому випадку з’єднання не вдасться встановити.
Назва | Тип | Призначення |
---|---|---|
REQ | BOOL | Передній фронт на вході запиту REQ ініціює передачу даних, застосованих до входу DATA . Доки надсилаються дані (BUSY = TRUE ) введення ігнорується. Усі інші вхідні параметри оцінюються з наростаючим фронтом на вході REQ у випадку, якщо BUSY = FALSE . |
HANDLE | DWORD | Дескриптор сокета, який було відкрито за допомогою функціонального блоку TLS_SOCKET_2 . Параметр оцінюється лише в тому циклі, в якому параметр REQ змінює значення TRUE . |
DATA_CNT | UDINT | Кількість байтів, які потрібно надіслати з буфера DATA (DATA_CNT = DATA_CouNT ). Максимальна кількість байтів для надсилання обмежена максимальним значенням 2147483647 байт. Якщо значення дорівнює 0 (= початкове значення параметра), буде надіслано всю змінну, пов’язану з DATA . Параметр оцінюється лише в циклі, у якому параметр REQ перемикається на TRUE . Ви можете використовувати функцію SIZEOF , щоб визначити розмір змінної (кількість байтів, зарезервованих для змінної в пам’яті контролера). |
SEND_SECURE | BOOL | Означує, чи програма IEC очікує, що дані надсилатимуться через з’єднання TCP чи через TLS: TRUE : програма очікує через захищене з’єднання TLS FALSE : програма очікує з’єднання через TCP.Вхідне значення порівнюється зі значенням START_TLS , що вводиться FB TLS_SOCKET_2 . Якщо виявлено невідповідність вхідних значень, наприклад, SEND_SECURE = TRUE (додаток IEC вимагає безпечної передачі даних) і START_TLS = FALSE (протокол TLS ще не ініціалізовано), вихід ERROR встановлюється на TRUE , а код помилки 16# C150 вказується на виході STATUS |
Назва | Тип | Призначення |
---|---|---|
DATA | ANY | Буфер даних, який містить дані для надсилання. Дані передаються як потік байтів. Перетворення Little-/Big-Endian не виконується. Якщо типом даних підключеної змінної є STRUCT (або ARRAY OF STRUCT ), потік байтів може містити байти заповнення. |
Назва | Тип | Призначення |
---|---|---|
DONE | BOOL | Після успішного надсилання даних установлює значення TRUE . Вихід встановлюється лише на один цикл. |
BUSY | BOOL | Встановлює значення TRUE , коли система намагається надіслати дані. Поки для параметра встановлено значення TRUE , вхід REQ ігнорується. |
ERROR | BOOL | Якщо виникає помилка, вихід ERROR встановлюється на TRUE . Відповідний код помилки можна прочитати на виході STATUS , коли ERROR = TRUE . У разі виявлення помилки вихід встановлюється на TRUE лише на один цикл. Код помилки має бути прочитаний на виході STATUS протягом цього циклу. Див. коди помилок / коди стану для функціональних блоків TLS_* . |
STATUS | WORD | Надає код помилки у разі помилки (ERROR = TRUE ) або поточний стан функціонального блоку (ERROR = FALSE ). Коди помилок починаються з 16#Cxxx , а коди стану — з 16#8xxx .Див. коди помилок/коди стану для функціональних блоків TLS_* . |