Режим подчиненного ------------------ Чтобы обмениваться данными с подчиненным, мастер (например, ОРС-сервер) должен обращаться к его карте памяти. Карта памяти создается автоматически, во время компиляции проекта. Компилятор берет данные для карты из локальных переменных, расположенных в схемах проекта. Для того, чтобы переменная попала в карту памяти, необходимо установить ей соответствующую опцию, указать тип доступа и адрес: .. figure:: image/variable_property.png :align: center Если установлены права **Чтение**, то эта переменная может только читаться функциями, зависящими от типа данных переменных. Если установлены права **Чтение/Запись**, то переменная может и писаться и читаться. В таблице ниже приведены функции Modbus, по которым происходит доступ к переменным в зависимости от их типа: +--------------+-------------------------------------+-------------------------------------+ |**Тип данных**| **Чтение** | **Запись** | +--------------+-------------------------------------+-------------------------------------+ | Логический |Read Coil (функция 1) |Write Single Coil (функция 5) | | | | | | |Discrete Inputs (функция 2) |Write Multiple Coils (функция 15) | +--------------+-------------------------------------+-------------------------------------+ | Числовой |Read Holding Registers (функция 3) |Write Single Register (функция 6) | | | | | | |Read Input Registers (функция 4) |Write Multiple registers (функция 16)| +--------------+-------------------------------------+-------------------------------------+ Установка адресов для переменных производится в окне редактирования списка сетевых переменных. Этот список генерируется автоматически при запуске симуляции или загрузки программы в контроллер. В него входят все локальные переменные основной FBD-программы и входящих в неё макросхем, глобальные переменные, а так же переменные других подчинённых объектов шаблона, у которых установлено свойство **"Сетевой доступ"**: .. figure:: image/Modbus2.png :align: center В этом окне можно установить следующие параметры: * **Адрес** - Modbus-адрес переменной. Адрес можно устанавливать как вручную, так и с помощью команды автонумерации. Если адреса переменных конфликтуют, то эти переменные будут выделены красным цветом; * **Тип данных** - тип данных используемой переменной; * **Доступ** - уровень доступа. Этот параметр можно изменить, то есть уровень доступа можно понизить, по отношению уровню, заданного в исходной переменной; * **Тип регистра** - номер функции чтения, по которой доступна эта переменная; * **Блокировка** - флаг, который блокирует автонумерацию адресов; * **Комментарий** - описание переменной. Параметр **Тип регистра** определяет функцию, используемую для чтения. Существую три варианта: * **Универсальный регистр** - переменная доступна для чтения по любой из функций **Read Holding Registers** или **Read Input Registers**; * **Память (Holding register/Coil)** - числовая переменная доступна для чтения по функции **Read Holding Registers**, логическая - **Read Coil**; * **Вход (Input)** - числовая переменная доступна для чтения по функции **Read Input Registers**, логическая - **Discrete Inputs**; Параметр **Тип регистра** поддерживается не во всех контроллерах. По умолчанию его значение всегда установлено в **Универсальный регистр**. .. figure:: image/modbus_slave.png :align: center Тип регистра Порядок перестановок байтов и регистров задается в настройках шаблона контроллера с помощью свойств **Порядок байтов в регистре** и **Порядок регистров**. Подробное описание в разделе :ref:`modbus_byte_order`. .. figure:: image/modbus9.png :align: center Настройка порядка байт и регистров При нажатии на кнопку **Автонумерация** производится автоматическая раздача адресов. Переменные, у которых установлен флаг блокировки, пропускаются. Раздача адресов производится с учетом типов данных переменных. Например 4-х байтовые переменные занимаю 2 регистра, соответственно адресация будет меняться с шагом 2. В случае, если при редактировании программы некоторые макроблоки, содержащие сетевые переменные или глобальные переменные будут удалены, ссылки на них в списке не пропадут, а будут помечены как невалидные (будут выделены желтым цветом). При проверки программы, при симуляции и программировании в устройство эти переменные не будут учитываться. Для удаления таких переменных необходимо нажать кнопку **Очистить**: .. figure:: image/Modbus3.png :align: center