1. Гуру ПНР : Сайт для наладчиков 
  2. Список рубрик 
  3. Автоматизация и КИП 
16 2018

Настройка преобразователя Anybus Communicator

Само по себе устройство Anybus Communicator достаточно интересное. Существуют множество его разновидностей на разные конфигурации сетей, которые он может стыковать. Мне посчастливилось работать с Profibus DP на RS232. Особенность этого девайса в том, что его нельзя просто так поставить, выставить адреса и запустить в работу. Его настройка требует достаточно приличных знаний в информатике. И хоть на сайте Anybus Communicator и есть примеры его настройки, но проверял ли кто-нибудь их на работоспособность - я лично сомневаюсь. Потихоньку начнем...

Что это за устройство и как оно работает?

Суть этого преобразователя - связать прозрачно два сегмента сети с разными интерфейсами, например, Profibus и RS232, RS422 или RS485. То есть устройства со стороны Profibus опрашивает Anybus, считывая из его ячеек памяти данные определенной длины. А в эти ячейки памяти данные складываются Anybus'ом, который выступает мастером и циклически опрашивает подключенные к нему устройства со стороны последовательного интерфейса. Вот вся загвоздка и заключается в правильной "разметке памяти" для этих данных.

Структура сети с устройством Anybus Communicator

В самой документации устройство называют шлюзом, а обе эти сети определены так: fieldbus (полевая сеть) - это сторона Profibus DP, а subnetwork (подсеть) - это сторона последовательного интерфейса, к которому подключены опрашиваемые устройства.

Если нужно что-то прочитать из устройства в подсети, мастер-устройство полевой сети просто обращается в область памяти по настроенному заранее адресу для чтения данных (Input data) из устройства Anybus Communicator. Область для записи данных используется для отправки команд или изменения данных в устройстве подсети.


Распределение памяти Anybus Communicator

Всё искусство заключается в том, чтобы настроить, с какого адреса и сколько байт нужно считать или записать в память шлюза, чтобы получить то, что нам нужно. Для этого существует специальная программа Anybus Configuration Manager. Она бесплатная, и её можно скачать с официального сайта производителя.

Шаг 1. Настройка шлюза переключателями

Настройка шлюза производится установкой переключателей на лицевой панели в соответствие с нужным адресом в сети Profibus DP. Переключатель Switch A отвечает за единицы, а Switch B - за десятки. Адрес выставляется в десятичном формате.

Настройка адреса DP

Шаг 2. Настройка шлюза в Anybus Configuration Manager

В моем случае в подсети находилось одно устройство на интерфейсе RS232, работающее по протоколу Modbus. И прежде, чем приступить к настройке, нужно вначале собрать данные, что будет считываться из устройства и в каком формате. Вот, что мне нужно считать с устройства:


Параметр№ регистра (DEC)№ регистра (HEX)ТипТип данныхДлина, байт
CW Trasar6560290InputFloating32-bit FLOAT
CW Tag6580292InputFloating32-bit FLOAT
CW Trb666029AInputFloating32-bit FLOAT
pH 0126640A68InputFloating32-bit FLOAT
ORP 0127040A90InputFloating32-bit FLOAT
Temp 0338060EDEInputFloating32-bit FLOAT
Tower Cond1428410BCInputFloating32-bit FLOAT
NCM Ms 0147541292InputFloating32-bit FLOAT

Теперь, как это "объяснить" шлюзу? Запускаем программу Anybus Configurator Manager (в моем случае актуальна версия 4.4.1.3). Создаем структуру, как показано на рисунке ниже:

Структура в Anybus Communicator

После запуска программы в левом окне Устройства есть только элементы Fieldbus, Communicator RS232/422/485 и Подсеть. Если в Подсеть нет никакого устройства, то его можно добавить щелкнув правой кнопкой на значке Подсеть → Добавить Узел. В правой части окна, в поле Конфигурация задается адрес Modbus устройства. У меня оно называется NALCO 3D Trasar.

Теперь самое время добавлять так называемые команды. Правой кнопкой на добавленном узле NALCO 3D Trasar → Добавить команду. Я не знаю, почему во всех примерах и документациях авторы выбирают 0х03 Read Holding Registers для чтения аналоговых величин. Это в корне не верно. Нужно выбирать 0x04 Read Input registers. В результате, получаем дочерние к нашему узлу элемент в виде папки, внутри которого содержатся структура команды на запрос к устройству (Query) и структура ответа устройства (Response). Их нам и нужно правильно заполнить.

Добавление команды в Anybus Communicator Manager

Рассмотри каждый элемент подробно, что и как нужно настроить:


УзелПараметрВариантыЗначение
Query

General→Offline options for fieldbus

Что отправлять устройствам Подсети, если связь по Profibus отсутствует

Clear

Отправлять нулевые значения

Freeze

Отправлять последние успешно полученные данные

NoScanning

Передача данных в подсети останавливается

Clear

Query

General→Offline options for sub-network

Что отправлять устройстам по Profibus, если отсутствует связь с устройством в подсети

Clear

Отправлять нулевые значения

Freeze

Отправлять последние успешно полученные данные

Clear

Query

General→Update mode

Как команды передаются в подсеть:

Cyclically

Команды передаются с периодом, заданным в Update time

On data change

Команды передаются только при изменениях в данных

Single shot

Команда передается один раз при запуске

Change of state trigger

Команда передается при изменении триггера

Cyclically

Query

Timing→Minimum time between broadcasts

Пауза между широковещательными посылками команд. Пункт используется, если есть широковещательный узел Broadcaster.

Кратно 10 мс

100

Query

Timing→Reconnect time

Время между повторной попыткой связаться с недоступным узлом.

Кратно 10 мс. 0 - запрещает повторную попытку установки связи.

1000

Query

Timing→Retries

Количество попыток связаться с недоступным узлом.

Целое число

3

Query

Timing→Timeout time

Время ожидания ответа от узла до повторной отправки данных.

Кратно 10 мс

100

Query

Timing→Update time

Минимальное время между однотипными транзакциями.

Кратно 10 мс

100

Query

Trigger→Trigger byte address

Адрес данных в памяти длиной один байт, изменение которых дает событие срабатывания триггера.

Адрес в формате HEX

0x05FF

Query→Slave Address

General→Value

Адрес в сети Modbus, который будет послан устройства. По-сути, это и адрес узла.

Не редактируется

0x7E

Query→Function

General→Value

Команда по протоколу Modbus.

Все поддерживаемые Modbus команды

0x04

Query→Starting Address

General→Value

Адрес данных внутри устройства Modbus. Это как раз то, что указано в таблице выше в колонке "№ регистра (HEX)"

Адрес в формате HEX

0x0290

Query→Quantity Of Input Registers

General→Value

Это длина данных в словах. Таким образом для данных типа FLOAT мы должны использовать 2 слова или 4 байта.

Целое число

0x0002

Query→Checksum

General→Error check start byte

Номер байта в кадре, начиная с которого вычисляется контрольная сумма.

Целое число

0x0000

Query→Checksum

General→Error check type

Тип алгоритма вычисления контрольной суммы

CRC

LRC

XOR

ADD

CRC

Query→Checksum

General→Error check by combined with

Способы передачи контрольной суммы в сеть

None

Без преобразования

One's complement

Преобразование до первого дополнения

Two's complement

Преобразование до второго дополнения

None

Query→Checksum

General→Representation

Представление контрольной суммы

Binary

Без преобразования в двоичном виде

ASCII

Символы будут преобразованы в значение ACSII кода

Binary

Response

Trigger→Trigger byte

Включение или отключение счетчика триггера

Enabled

Изменять триггер при каждом удачном приеме данных из подсети

Disabled

Не использовать триггер для данной команды

Disabled

Response

Trigger→Trigger byte address

Адрес триггера в памяти

Целое число в формате (HEX)

0x05FF

Response→Slave Address

General→Value

Адрес Modbus устройства, передавшего данные

Не редактируется

0x7E

Response→Function

General→Value

Номер Modbus команды, на которую пришел ответ данных

Не редактируется

0x7E

Response→Byte Count

General→Value

Длина ответа - данных в байтах

Целое число

0x04

Response→Input Registers

General→Data Length

Длина ответа - данных в байтах

Целое число

0x0004

Response→Input Registers

General→Data Location

Адрес в памяти шлюза, по которому будут размещены полученные данные длиной Data Length (из предыдущего пункта)

Целое число

0x0000 - Адреса не должны совпадать для остальных команд, иначе данные будут перезаписаны

Response→Input Registers

Operations→Byte swap

Определяет, как данные будут размещены в памяти

No swapping

Размещаются как есть, без преобразования

Swap 2 bytes

Парное переворачивание байт в каждом слове данных, например двойное слово [ABCD] преобазуется в [BADC]

Swap 4 bytes

Полное переворачивание байт, например двойное слово [ABCD] преобазуется в [DCBA]

No swapping

И таких команд должно быть столько, сколько запросов требуется сделать для конкретного устройства. В моем случае для устройства NALCO 3D Trasar выполняется 8 запросов. Команды будут все однотипные, отличия должны быть только в:

Шаг 3. Настройка Profibus мастера

В моем случае Profibus мастером был контроллер Siemens S7-300. Всё, что мне потребовалось, это указать в Hardware Configuration для Anybus Communicator с какого адреса сколько байт считывать. Первые 12 байт система зарезервировала для себя, а остальные 12+32 байта назначились моим данным в шлюзе.
Поделиться:
Присоединиться:
Поддержать:
 
 


РАСПРОСТРАНЕНИЕ


Материалы данного сайта предназначены для специалистов в области пусконаладочных работ.

Использование материалов данного сайта разрешается с указанием ссылки на источник.

РАССКАЖИТЕ О НАС