Разработка протоколов

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Функции, ФБ, Протоколы на С++ > API для ФБ и протоколов >

Разработка протоколов

В MasterSCADA 4D протоколы условно можно разделить на два типа:

1. Протокол не содержит модулей ввода-вывода, каналы добавляются непосредственно в протокол. Протокол служит для получения данных с одного устройства (или с резервируемых устройств). Пример такого протокола - OPC UA. В текущей документации такие элементы будем называть Простыми протоколами.

2. В протокол могут быть добавлены модули ввода-вывода, в которые добавляются каналы. В задаче протокола может опрашиваться несколько устройств. Пример - Modbus TCP.  В текущей документации такие элементы будем называть Протоколы с модулями.

Особенности при работе с протоколами

При работе с протоколами важно учитывать, что входной канал  - это канал, откуда от устройства принимается информация, а выходной канал - это канал, откуда в устройство отправляются данные.

Наглядная схема потока данных в протоколе:

razrab_protokolov

Схема наследования протоколов

В случае простого протокола применяется идея наследования от класса, схожая с функциональными блоками:

nasled_prostogo_prot

Однако в отличие от ФБ, есть дополнительные методы Create, что в базовом классе не выполняют никаких действий. Они необходимы для создания модулей, каналов и параметров протокола.

Модули - способ организации и группировки нескольких каналов и параметров.

Каналы - способ организации и группировки нескольких параметров. Каналы могут быть с доступом Input (получаем данные от устройства), Output (передаем данные в устройство), InOut (возможен и прием, и передача данных). В зависимости от доступа канал содержит разный набор параметров.

Параметры - изменяемое значение. Могут быть доступны для чтения, записи или чтения/записи. Имена параметров каналов могут быть: Вход или Выход.

Схема отношений модулей, каналов и параметров:

nasled_prostogo_prot_1

Важно! Экземпляры классов каналов и параметров могут быть созданы без наследования, а вот в случае модулей класс является абстрактным с обязательным для переопределения методом создания каналов.

 

 

Смотрите также: