Режим подчиненного

Чтобы обмениваться данными с подчиненным, мастер (например, ОРС-сервер) должен обращаться к его карте памяти. Карта памяти создается автоматически, во время компиляции проекта. Компилятор берет данные для карты из локальных переменных, расположенных в схемах проекта.

Для того, чтобы переменная попала в карту памяти, необходимо установить ей соответствующую опцию, указать тип доступа и адрес:

_images/variable_property.png

Если установлены права Чтение, то эта переменная может только читаться функциями, зависящими от типа данных переменных.

Если установлены права Чтение/Запись, то переменная может и писаться и читаться.

В Таблице приведены функции, Modbus по которым происходит доступ к переменным в зависимости от их типа:

Тип данных Чтение Запись
Логический

Read Coil (функция 1)

Discrete Inputs (функция 2)

Write Single Coil (функция 5)

Write Multiple Coils (функция 15)

Числовой

Read Holding Registers (функция 3)

Read Input Registers (функция 4)

Write Single Register (функция 6)

Write Multiple registers (функция 16)

Установка адресов для переменных производится в окне редактирования списка сетевых переменных. Этот список генерируется автоматически для контроллера. В него входят все локальные переменные основной FBD-программы и входящих в неё макросхем, у которых установлено свойство “Сетевой доступ”:

_images/Modbus2.png

В этом окне можно установить следующие параметры:

  • Адрес - Modbus-адрес переменной. Адрес можно устанавливать как вручную, так и с помощью команды автонумерации. Если адреса переменных конфликтуют, то эти переменные будут выделены красным цветом;
  • Тип данных - тип данных используемой переменной;
  • Доступ - уровень доступа. Этот параметр можно изменить, то есть уровень доступа можно понизить, по отношению уровню, заданного в исходной переменной;
  • Тип регистра - номер функции чтения, по которой доступна эта переменная;
  • Блокировка - флаг, который блокирует автонумерацию адресов;
  • Комментарий - описание переменной.

Параметр Тип регистра определяет функцию, используемую для чтения. Существую три варианта:

  • Универсальный регистр - переменная доступна для чтения по любой функции;
  • Память (Holding register/Coil) - числовая переменная доступна для чтения по функции Read Holding Registers, логическая - Read Coil;
  • Вход (Input) - числовая переменная доступна для чтения по функции Read Input Registers, логическая - Discrete Inputs;

Параметр Тип регистра поддерживается не во всех контроллерах. По умолчанию его значение всегда установлено в Универсальный регистр.

_images/modbus_slave.png

Тип регистра

При нажатии на кнопку Автонумерация производится автоматическая раздача адресов. Переменные, у которых установлен флаг блокировки, пропускаются. Раздача адресов производится с учетом типов данных переменных. Например 4-х байтовые переменные занимаю 2 регистра, соответственно адресация будет меняться с шагом 2.

В случае, если при редактировании программы некоторые макроблоки, содержащие сетевые переменные или глобальные переменные будут удалены, ссылки на них в списке не пропадут, а будут помечены как невалидные (будут выделены желтым цветом). При проверки программы, при симуляции и программировании в устройство эти переменные не будут учитываться. Для удаления таких переменных необходимо нажать кнопку Очистить:

_images/Modbus3.png