<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководства по подключению различных контроллеров > Подключение ОВЕН ПЛК1xx > Рекомендации по организации переменных |
Для упрощения настройки обмена по Modbus далее будут приведены несколько рекомендаций.
•Не использовать переменную 8 Bits
•Задать настройку "Максимально допустимый разрыв адресов в запросе чтения".
•Формировать адреса в определенной последовательности
•Вычислять адреса с помощью функции "Групповые операции"
Как было сказано ранее в контроллере ОВЕН, все Modbus переменные размещены в одном сегменте памяти, к которому можно обращаться через регион Holding Registers или Coils.
Переменную 8 bits, обычно используют для передачи отдельных бит. Однако гораздо эффективнее использовать для этих целей переменную типа Word (подэлемент 2 Byte). Для записи и чтения отдельных битов в Codesys можно использовать специальные функциональные блоки – Pack и Unpack (библиотека "Util.lib"), а на языке ST можно обращаться к отдельным битам через точку (например VarWord1.0:=true).
Если на верхнем уровне используется MasterSCADA, то для упаковки и извлечения битов можно использовать ФБ "Упаковка 32-битного значения" и "Распаковка 32-битного значения".
Отказ от работы с отдельными битами через регион Coils позволит сэкономить как лицензионные теги OPC сервера, так и SCADA системы, а кроме того снизит сетевую нагрузку по обмену данных.
Из-за правил выравнивания может получится, что некоторые промежуточные Modbus адреса окажутся неиспользованными. В нашем примере сначала идут переменные VarWord1 и VarWord2 с адресами 1 и 2, а затем VarFloat1 с адресом 4, и VarDWord1 с адресом 6, т.е. адрес 3 не используется. В этом случае OPC сервер выполнит два Modbus запроса – сначала опросит адреса 1 и 2, а затем адреса с 4 по 7.
При необходимости можно сделать, чтобы подобные регистры были опрошены за один запрос чтения. Для этого необходимо у устройства задать настройку Максимально допустимый разрыв в запросе чтения. По умолчанию данная настройка равна нулю. Если же задать данный параметр, то все разрывы адресов меньшие заданного значения будут игнорироваться.
То есть, если в данном случае мы установим этот параметр равным 1, то ОРС сервер запросит регистр с 1 по 7 одним запросом. Пустой, третий, Modbus регистр также будет опрошен, но его значение сервер просто проигнорирует.
Чтобы уменьшить количество неиспользуемых ячеек памяти, и упростить подсчет Modbus адресов, рекомендуем структурировать переменные по типам. Например – сначала добавляем переменные типа Word (2 Byte), затем добавляем переменные типа Real (Float).
При добавлении OPC переменных можно легко ошибиться при задании Modbus адресов.
В третьей версии Modbus Universal MasterOPC сервера появилась новая функция – Групповые операции. С помощью данной функции можно быстро вносить изменения в группе тегов – менять адреса, тип данных в устройстве, чередование байт. Данная функция может облегчить и задание адресов для опроса контроллеров ОВЕН.
Рассмотрим следующим пример. В модуль Modbus (Slave) добавлено 7 переменных типа Word, 4 переменных типа Float и 2 переменных типа DWord.
Создадим конфигурацию OPC сервера для их опроса.
Добавим в устройство теги в таком же порядке, как и модуля Modbus (Slave) и соответствующими типами данных (2 byte – uint16, Float – Float, 4 Byte – uint32). Адрес у всех тегов можно оставлять равным нулю или оставить вариант предлагаемым сервером – позже мы вычислим через групповые операции.
В итоге у нас получилась следующая ОРС конфигурация:
Через контекстное меню устройства вызовем команду Групповые операции.
Выберем операцию Изменить адрес, укажем способ изменения – По типам, базовый адрес укажем – 0.
Нажмем кнопку Применить.
Теги получили последовательно идущие адреса с шагом в зависимости от типа.
Однако 4 байтовые теги (Float и DWord переменные) попали на нечетные адреса, в то время как по правилам 4 байтовые переменные должны находится в адресах памяти кратных 4. То есть Modbus адреса 4 байтовых переменных должны начинаться с четного числа. Исправим эту ошибку.
Нажмем кнопку Готово. Затем у устройства, на закладке Таблица тегов выделим все 4-байтовые переменные, вызовем контекстное меню, а затем команду Групповые операции.
Переменная Float начинается с адреса 7. Укажем в качестве базового адреса следующее четное число, то есть 8.
Нажмем кнопку Применить.
Теперь все адреса корректные. Нажмем на кнопку Готово.