OpenSCADAWiki: Home Page Uk/Doc/ Sockets
 
English (1 Kb) English
Russian (1 Kb) Российский

 (2 Kb) Сторінку заморожено, актуальна тут.

Модуль <Soсkets> підсистеми "Транспорти"

Модуль: Sockets
Ім'я: Сокети
Тип: Транспорт
Джерело: tr_Sockets.so
Версія: 2.3
Автор: Роман Савоченко, Максим Кочетков
Опис: Надає транспорт заснований на сокетах. Підтримуються інтернет та UNIX сокети. Інтернет сокет використовує TCP, UDP та RAWCAN протоколи.
Ліцензія: GPL

Contents

Вступ

Модуль транспорту Sockets надає до системи підтримку транспортів, заснованих на сокетах. Підтримуються вхідні та вихідні транспорти, основані на інтернет сокетах: TCP, UDP та UNIX. Додати нові вхідні та вихідні сокети можна за посередництвом конфігурації транспортної підсистеми у будь якому конфігураторі системи OpenSCADA.

1. Вхідні транспорти

Сконфігурований та запущений вхідний транспорт відкриває серверний сокет для очікування підключення клієнтів, крім ініціативного підключення. У випадку з UNIX сокетом створюється файл UNIX сокету. Сокети TCP та UNIX є багатопотоковими, тобто при підключені клієнту до сокетів цих типів створюється клієнтський сокет та новий потік, у якому відбувається обслуговування клієнту. Серверний сокет у цей момент переходить до очікування запитів від нового клієнту. Таким чином досягається паралельне обслуговування клієнтів. RAWCAN сокет здійснює прийом CAN кадрів з інтерфейсу згідно налаштованому фільтру.

Кожний вхідний сокет пов'язується з одним з доступних транспортних протоколів, якому передаються вхідні повідомлення. Разом з транспортним протоколом підтримується механізм об'єднання шматків розрізнених при передачі запитів.

Діалог конфігурації вхідного сокету зображено на рис. 1.

Діалог конфігурації вхідного сокету. (108 Kb)
Рис.1. Діалог конфігурації вхідного сокету.


За допомогою цього діалогу можна встановити:
 (2 Kb) Порожнє значення обрання протоколу перемикає транспорт у режим створення асоційованого вихідного транспорту для кожного підключення на цей вхідний.
Режим асоційованих вихідних транспортів для вхідного передбачає наявність деякої зовнішньої для транспорту процедури, яка виконує роль протоколу, та яка має "обходити" всі асоційовані вихідні транспорти, та виконувати запит на читання або запис-читання.
 (2 Kb) Відсутність такої процедури неминуче призведе до росту асоційованих вихідних транспортів у зв'язку відсутності сутності яка зупиняє транспорти із закритими підключеннями та можливістю наступного видалення зупинених вихідних транспортів цим вхідним транспортом.
 (2 Kb) Вимикати цю функцію не рекомендується оскільки властивість мереж TCP/IP не гарантує повідомлення серверу про відключення з'єднання, скажемо у випадку зникнення живлення на клієнті. У результаті чого можуть назавжди залишатися відкритими клієнтські підключення, а при досягненні ліміту сервер припинить приймати нові!

Особливості формування адрес вхідних сокетів приведено у таблиці нижче:
Тип сокету Адреса
TCP TCP:{адреса}:{порт}:{режим}
де:
  • адреса — Адреса, на якій відкривається сокет. Має бути одним з адрес хосту. Якщо нічого не вказано, то сокет буде доступний на всіх інтерфейсах хосту. Допускається як символьне, так й IP представлення адреси.
  • порт — Мережевий порт, на якому відкривається сокет. Можливе вказання символьного імені порту (відповідно до /etc/services).
  • режим — режим роботи вхідного сокету:
    • '0' — Примусово розривати з'єднання після сеансу прийом-відповідь.
    • '1' — Не розривати з'єднання, тільки з урахуванням параметрів KeepAlive.
    • '2' — Ініціативне підключення. Включає режим ініціативи підключення цього вхідного транспорту до віддаленого хосту (адреса замість локального) та перехід у режим очікування запитів від цього хосту. Значення "Keep alive час очікування (сек.)" використовується як таймаут перепідключення даного транспорту за відсутності активності, з метою відновлення можливо втраченого підключення.
Приклад: "TCP::10001:1" — TCP-сокет доступний на всіх інтерфейсах, відкритий на порту 10001 та з'єднання не розриває.
UDP UDP:{адреса}:{порт}
де:
  • адреса — теж що у TCP;
  • порт — теж що у TCP.
Приклад: "UDP:localhost:10001" — UDP-сокет доступний тільки на інтерфейсі "localhost" та відкритий на порту 10001.
RAWCAN RAWCAN:{інтерфейс}:{маска}:{ідентифікатор}
де:
  • інтерфейс — ім'я CAN інтерфейсу;
  • маска, ідентифікатор — маска та ідентифікатор для фільтрації CAN кадрів.
Приклад: "RAWCAN:can0:0:0" — приймати всі CAN кадри на інтерфейсі can0.
UNIX UNIX:{ім'я}:{режим}
де:
  • ім'я — ім'я файлу UNIX сокету;
  • режим — теж що у TCP.
Приклад: "UNIX:/tmp/oscada:1" — UNIX-сокет доступний через файл "/tmp/oscada" та з'єднання не розриває.

2. Вихідні транспорти

Сконфігурований та запущений вихідний транспорт відкриває з'єднання з вказаним сервером. При розриві з'єднання вихідний транспорт вимикається. Для відновлення з'єднання транспорт треба знову запустити.

Головна вкладка сторінки конфігурації вихідного сокету зображено на рис.2.

Головна вкладка сторінки конфігурації вихідного сокету. (90 Kb)
Рис.2. Головна вкладка сторінки конфігурації вихідного сокету.


За допомогою цього діалогу можна встановити:

Адреси вихідних сокетів різного типу формуються наступним чином:
Тип сокету Адреса
TCP/UDP TCP:{адреса}:{порт}
UDP:{адреса}:{порт}
де:
  • адреса — Адреса, з якою здійснюється підключення. Допускається як символьне так й IP представлення адреси.
  • порт — Мережевий порт, з яким здійснюється підключення. Можливе вказання символьного імені порту (відповідно до /etc/services).
Приклад: "TCP:127.0.0.1:7634" — підключення з портом 7634 на хості 127.0.0.1.
RAWCAN RAWCAN:{інтерфейс}:{маска}:{ідентифікатор}
де:
  • інтерфейс — ім'я CAN інтерфейсу;
  • маска, ідентифікатор — маска та ідентифікатор CAN кадрів.
Приклад: "RAWCAN:can0:0:0" — приймати всі CAN кадри на інтерфейсі can0.
UNIX UNIX:{ім'я}
де:
  • ім'я — ім'я файлу UNIX сокета.
Приклад: "UNIX:/tmp/oscada" — з'єднатися з UNIX-сокетом через файл /tmp/oscada.

Посилання

Referring pages: HomePageUk/Doc
HomePageUk/Doc/DAQ
HomePageUk/Doc/OPCUA
HomePageUk/Doc/Serial
HomePageUk/Function
HomePageUk/Using/PLC/firmware
HomePageUk/Using/SmartHouse