Настройка контроллеров с протоколом Modbus

Это краткая инструкция по настройке произвольных ПЛК, допускающих опрос по протоколу Modbus. Обратите внимание на то, что тип протокола опроса указывается при регистрации устройства в системе.

Чтение регистра Modbus устройства, содержащего значение (тип int, boolean, float, byte).

  • Регистрируем новое устройство (подробно Подключение устройств). Категория «прочее оборудование», выбираем соответственно «Устройство с протоколом Modbus RTU» или «Устройство с протоколом Modbus TCP» или «Устройство с протоколом Modbus ASCII».
      000220
  • Если устройство к модему подключено одно, можно не указывать сетевой адрес, если же их несколько, адрес нужно указывать для каждого устройства свой. На этой же странице регистрации можно указать параметры последовательной линии (в основном при использовании модема).
    000221
  • Заполняем другие данные, нажимаем кнопку "Сохранить" и переходим к настройке параметров. Для этого идем в «Настройки», «Настройки устройства», нажимаем на  рядом с надписью «Общие параметры». В нижней части экрана открывается список доступных параметров.
    000222
  • Нажимаем на  «Новый параметр».
  • Тип параметра – «читаемый с прибора».
    Название – любое человекочитаемое, например «Температура подачи».
    Сокращенное название – короткое, например t1.
    Код параметра – должен иметь вид rXX_YYY, где XX – modbus-функция для чтения (01, 02, 03 или 04), YYY – адрес регистра (в десятичной системе). Параметры с функцией чтения 01 или 02 - это соответственно дискретные входы, 03 и 04 - регистры (ввода или хранения).
    Категория – «текущие».
    Единицы измерения – 1, 2 или 4 байтное целое, либо float (в формате IEEE), согласно описанию подключаемого контроллера. В системе Энергоатлас единицы могут быть следующими:
    • байт (byte)- 1-байтное целое (от -128 до 127)
    • короткое целое (short) - 2-байтное целое (от -32768 до 32767)
    • короткое целое (инвертированный порядок байт) (short.swap) - 2-байтное целое (от -32768 до 32767)
    • логическое (bool) - логическое значение, 0 или 1.
    • с плавающей точкой (float) - 4-байтное вещественное в формате IEEE.
    • с плавающей точкой (старшим байтом вперёд 1-0-3-2) (float.bswap) - 4-байтное вещественное в формате IEEE.
    • с плавающей точкой (старшим регистром вперёд 2-3-0-1) (float.rswap) - 4-байтное вещественное в формате IEEE.
    • с плавающей точкой (старшим регистром и старшим байтом вперёд 3-2-1-0) (float.swap) - 4-байтное вещественное в формате IEEE.
    • целое (int) - 4-байтное целое.
    • целое (старшим байтом вперёд 1-0-3-2) (int.bswap) - 4-байтное целое. 4-байтное целое.
    • целое (старшим регистром вперёд 2-3-0-1) (int.rswap) - 4-байтное целое. 
    • целое (старшим регистром и старшим байтом вперёд 3-2-1-0) (int.swap) - 4-байтное целое. 

    Важно! Стоит отметить, что единицы измерения, заданные в интерфейсе Энергоатлас, определяют порядок интерпретации полученных с прибора значений, т.е. следует выбирать единицы измерения исходя из того, как значение хранится в приборе. При использовании функций 01 или 02 единственным допустимым выбором является bool, поскольку дискретные входы могут принимать только значения 0 или 1.
    000223
  • Полученное значение «Температура подачи» (t1), в нашем примере, Вы можете использовать уже Узле учета устройства, где добавляете составной параметр и указываете ему единицу измерения температуры С°.
    000224
  • Далее необходимо добавить в параметр формулу которая будет только ссылаться на ранее добавленный параметр
    000225
  • Таким образом мы получили значение нужного нам регистра с нужной единицей измерения в системе. Результат можно увидеть Закладка «Информация об объекте», а так же использовать такой параметр в Закладка «Коммерческие отчеты», Закладка «Таблицы», Закладка «Графики и диаграммы» и Работа в разделе «Редактор мнемосхем».

Чтение регистра Modbus устройства, содержащего информацию о состоянии дискретных сигналов

Все описанное выше совершенно аналогично и для данного случая, но только до пункта редактирования (добавления формулы) составного параметра в Узеле учета.

  • Так же как и вышеописанном случае добавляем составной параметр, но единицу измерения выбираем логическое(bool).
  • Полученное ранее значение регистра (обычно типа int)  Вы можете разбить на биты (дискретные сигналы) или работать с байтом как с аналоговым сигналом. Для этого используется специальная функция has. Вид формулы в редакторе формул будет иметь следующий вид: rXX_YYY has Z.AABB, где rXX_YYY - ранее вычитанный регистр (полученное значение регистра), Z - показатель инверсии бита (если поставить 1, то будет считаться, что дискретный сигнал нормальный, если 0, то сигнал инверсный), АА - номер бита (в десятичной системе), ВВ - маска для проверки.
    Например:
    r03_2 has 0.0301;
    r03 - команда чтения _2 - номер байта (читаем второй байт);
    has 0. - дискретный сигнал в инверсии (аварийный/на разрыв) или has 1. - нормальный сигнал;
    03 - номер читаемого бита (третий бит);
    01 - маска.
    000226
  • Далее по тому же принципу добавляем еще составные параметры, что бы перебрать все биты регистра (дискретных сигналов) устройства.
  • В итоге полученные параметры будут иметь значения только одного бита из полученного ранее регистра (дискретных сигналов) устройства. Результат можно увидеть Закладка «Информация об объекте», а так же использовать такой параметр в Закладка «Коммерческие отчеты», Закладка «Таблицы», Закладка «Графики и диаграммы» и Работа в разделе «Редактор мнемосхем».

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