Основные понятия ---------------- Чтобы настроить работу контроллера по протоколу Modbus необходимо знать основные термины и понятия. * **Адрес подчиненного** - адрес подчинённого устройства, к которому адресован запрос. Ведомые устройства отвечают только на запросы, поступившие в их адрес. Ответ также начинается с адреса отвечающего ведомого устройства, который может изменяться от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознаёт каждое устройство, адреса в диапазоне 248…255 — зарезервированы; * **Параметры обмена** - при использовании последовательно порта обмена (ModbusRTU или ModbusASCII) это скорость, четность и количество стоп-битов . * **Направление передачи**- Мастер при обращении к подчиненному может считывать переменную (направление read) или одновременно записывать и ее же считывать (направление read/write). * **Запрос, ответ** - Каждое обращение к подчиненному называется запросом. Запрос - это пакет, формируемый мастером, который содержит в себе как служебную информацию (адрес подчиненного, адрес переменой и т.п.), так и значение самой переменной. Запрос может содержать в себе обращение к массиву адресов памяти подчиненного, таким образом, мастер записывает или считывает целый набор переменных одного типа. Этим обеспечивается экономичность использования сети. Запрос не может содержать в себе: - одновременно команды на запись и чтение; - одновременное обращение к битовой и регистровой переменным; - одновременное обращение к 2 или более массивам адресов переменных Ответ: Если подчиненный дает нормальный ответ, код функции в ответе повторяет код функции в запросе. В байтах данных содержится затребованная информация. Если имеет место ошибка, то код функции модифицируется, и в байтах данных передается причина ошибки. * **Карта памяти** - При обращении к подчиненному "мастер" должен "знать", в какой его области памяти находится переменная, которую необходимо прочитать или записать. Поэтому, при настройке, мастеру необходимо сообщить, по какому адресу в подчиненном данная переменная находится. Источником таких данных в Modbus является карта памяти, документ, который в текстовом виде описывает адреса переменных подчиненного * **Адрес переменной** - Адрес - номера ячейки памяти подчиненного, откуда надо читать или куда записывать переменную. В картах памяти может быть представлена в hex или десятичном форматах. * **Параметры порта** – Каждое из подчиненных устройств имеет свои собственные настройки порта, которые необходимо учитывать при настройке мастера. Для изменения параметров портов необходимо вызвать диалог свойств контроллера и на вкладке устройство установить нужные параметры: В этом диалоге можно установить следующие параметры портов: * ``Протокол`` – мастер или подчиненный (см. описание Modbus): .. figure:: image/Modbus1.png :align: center Для более подробной настройки портов необходимо перейти на Карту сети, выбрать нужный порт нужного контроллера и открыть его свойства: .. figure:: image/NewItem11.png :align: center В порту можно установить следующие параметры: * ``Режим работы порта`` – мастер или подчиненный (здесь этот параметр используется только для выбора режима программирования шаблона); * ``Скорость`` – скорость порта (2400, 4800, 9600,19200, 38400); * ``Четность`` – четность порта(Нет, Нечет, Чет, Метка, Пробел); * ``Таймаут`` – время ожидания ответа от устройства; * ``Диапазон адресов для поиска`` – диапазон Modbus-адресов, в пределах которого будет осуществляться поиск контроллеров на этом порту. Для работы через последовательный порт в режиме RTU или ASCII используется 11-битный формат передачи данных с одним стоп битом. Диапазон скоростей, на которых осуществляется обмен данными, лежит в пределах от 2400 бит/сек до 115 200 бит/сек. Поддерживаемые значения четности - **Нет**, **Нечет**, **Чет**, **Пробел**, **Метка**. .. |warning| image:: image/warning.png |warning| В случае, если необходимо реализовать вариант работы порта с двумя стоп битами, необходимо выбрать четность **Метка**. В этом случае бит четности всегда будет установлен в единицу и будет являться аналогом второго стоп бита. Таким образом настройка порта с четностью **Метка** и 1 стоп бит будет аналогична работе с четностью **Нет** и 2 стоп бита.