Режим подчиненного¶
Чтобы обмениваться данными с подчиненным, мастер (например, ОРС-сервер) должен обращаться к его карте памяти. Карта памяти создается автоматически, во время компиляции проекта. Компилятор берет данные для карты из локальных переменных, расположенных в схемах проекта.
Для того, чтобы переменная попала в карту памяти, необходимо установить ей соответствующую опцию, указать тип доступа и адрес:
Если установлены права Чтение, то эта переменная может только читаться функциями, зависящими от типа данных переменных.
Если установлены права Чтение/Запись, то переменная может и писаться и читаться.
В Таблице приведены функции, 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-программы и входящих в неё макросхем, у которых установлено свойство “Сетевой доступ”:
В этом окне можно установить следующие параметры:
- Адрес - Modbus-адрес переменной. Адрес можно устанавливать как вручную, так и с помощью команды автонумерации. Если адреса переменных конфликтуют, то эти переменные будут выделены красным цветом;
- Тип данных - тип данных используемой переменной;
- Доступ - уровень доступа. Этот параметр можно изменить, то есть уровень доступа можно понизить, по отношению уровню, заданного в исходной переменной;
- Тип регистра - номер функции чтения, по которой доступна эта переменная;
- Блокировка - флаг, который блокирует автонумерацию адресов;
- Комментарий - описание переменной.
Параметр Тип регистра определяет функцию, используемую для чтения. Существую три варианта:
- Универсальный регистр - переменная доступна для чтения по любой функции;
- Память (Holding register/Coil) - числовая переменная доступна для чтения по функции Read Holding Registers, логическая - Read Coil;
- Вход (Input) - числовая переменная доступна для чтения по функции Read Input Registers, логическая - Discrete Inputs;
Параметр Тип регистра поддерживается не во всех контроллерах. По умолчанию его значение всегда установлено в Универсальный регистр.
При нажатии на кнопку Автонумерация производится автоматическая раздача адресов. Переменные, у которых установлен флаг блокировки, пропускаются. Раздача адресов производится с учетом типов данных переменных. Например 4-х байтовые переменные занимаю 2 регистра, соответственно адресация будет меняться с шагом 2.
В случае, если при редактировании программы некоторые макроблоки, содержащие сетевые переменные или глобальные переменные будут удалены, ссылки на них в списке не пропадут, а будут помечены как невалидные (будут выделены желтым цветом). При проверки программы, при симуляции и программировании в устройство эти переменные не будут учитываться. Для удаления таких переменных необходимо нажать кнопку Очистить: