Главная > Описания шаговых двигателей



Описания шаговых двигателей

Описание протокола Modbus

Данная статья описывает основы работы с протоколом Modbus. В статье вы можете найти:

  • Описание Modbus
  • Пример применения
  • Описание программы Onitex Modbus Terminal

Основные принципы Modbus

Modbus — коммуникационный протокол, основанный на клиент-серверной архитектуре. В данной статье мы рассмотрим основы протокола и базовые принципы работы. Кроме того, вы можете ознакомиться с конкретными примерами работы протокола Modbus, изучив описания контроллеров, использующих этот протокол, к примеру, OSM-17RA, а так же скачав программу Modbus Terminal, позволяющую удобно работать с различными регистрами Modbus.

Протокол Modbus разработан для использования в программируемых логических контроллерах, таких, как управление электроприводом. В настоящее время является очень распространенным протоколом, используемых в различных промышленных системах. К примеру, данный протокол используется в контроллерах шаговых двигателей Онитекс. Широко используется для передачи данных последовательные линии связи, основанных на интерфейсах RS-485, RS-422, RS-232. В начале развития применялся интерфейс RS-232, как один из наиболее простых промышленных интерфейсов для последовательной передачи данных. В настоящее время протокол часто используется поверх интерфейса RS-485, что позволяет добиться высокой скорости передачи, больших расстояний и объединения нескольких устройств в единую сеть, тем более что протокол Modbus поддерживает адресацию. Широкая распространенность протокола Modbus, обусловленная его простотой и надежностью, позволяет легко интегрировать устройства, поддерживающие Modbus, в единую сеть.

Основной особенностью протокола является наличие в сети одного ведущего устройства - master. Только ведущее устройство может опрашивать остальные устройства сети, которые являются ведомыми (slave). Подчиненное устройство не может самостоятельно инициировать передачу данных или запрашивать какие-либо данные у других устройств, работа сети строится только по принципу "запрос-ответ". Мастер может так же выдать широковещательный запрос, адресованный всем устройствам в сети, в таком случае ответное сообщение не посылается.

Существует три типа протокола Modbus: Modbus ASCII, Modbus RTU и Modbus TCP. Устройства Onitex поддерживают протокол Modbus RTU, поэтому мы в дальнейшем будем иметь в виду прежде всего этот протокол.

Пакет данных в Modbus выглядит следующим образом:

Адрес | Код функции | Данные | Контрольная сумма.

Адрес - это поле, содержащее номер устройства, которому адресован запрос. Каждое устройство в сети должно иметь уникальный адрес. Устройство отвечает только на те запросы, которые поступают по его адресу, во избежание конфликтов. При этом, ведомое устройство в своем ответе так же посылает поле Адрес, кроме широковещательного запроса (когда ответа от ведомого быть вообще не должно).

Код функции содержит номер функции модбаса (о функциях будет сказано ниже). Функция может запрашивать данные или давать команду на определенные действия. Коды функций являются числами в диапазоне от 1 до 127. Функции с номерами от 128 до являются зарезервированными для пересылки в ответном сообщении информации об ошибках.

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

Поле Контрольная сумма является важным элементом протокола: в нем содержится информация, необходимая для проверки целостности сообщения и отсутствия ошибок передачи.

Максимальный размер пакета для сетей RS232/RS485 — 256 байт, для сетей TCP — 260 байт.

Существует три типа функций:

  1. Стандартные. Описание этих функций опубликовано и утверждено Modbus-IDA. Эта категория включает в себя как опубликованные, так и свободные в настоящее время коды.
  2. Пользовательские. Два диапазона кодов (от 65 до 72 и от 100 до 110), для которых пользователь может создать произвольную функцию. 
  3. Зарезервированные. В эту категорию входят коды функций, не являющиеся стандартными, но уже используемые в устройствах, производимых различными компаниями. К этим кодам относятся 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 и 127.

Modbus RTU

При использовании режима Modbus RTU сообщение начинается с так называемого интервала тишины, равного времени передачи 3.5 символов, при заданной скорости обмена. Первым полем передается адрес устройства. Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала. Фрейм сообщения передаётся непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство должно игнорировать этот фрейм как неполный. Если новое сообщение начнется раньше интервала 3.5 символа, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка CRC (несовпадение контрольной суммы).

Типы данных и стандартные функции Modbus

Типы данных протокола Modbus представлены в таблице:

  Тип данных Тип доступа Дискретные входы (Discrete Inputs) один бит только чтение Регистры флагов (Coils) один бит чтение и запись Регистры ввода (Input Registers) 16-битное слово только чтение Регистры хранения (Holding Registers) 16-битное слово чтение и запись

Для чтения значений из этих выше таблиц данных используются функции с кодами 1—4 (0x01—0x04):
1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status)
2 (0x02) — чтение значений из нескольких дискретных входов (Read Discrete Inputs)
3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers)
4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers)
Запрос состоит из адреса первого элемента таблицы, значение которого требуется прочитать, и количества считываемых элементов. Адрес и количество данных задаются 16-битными числами, старший байт каждого из них передается первым.
В ответе передаются запрошенные данные. Количество байт данных зависит от количества запрошенных элементов. Перед данными передается один байт, значение которого равно количеству байт данных.

Запись одного значения происходит при помощи следующих функций:
5 (0x05) — запись значения одного флага (Force Single Coil)
6 (0x06) — запись значения в один регистр хранения (Preset Single Register)
 Команда состоит из адреса элемента (2 байта) и устанавливаемого значения (2 байта). Если команда выполнена успешно, ведомое устройство возвращает копию запроса.

Запись нескольких значений задается функциями:
15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils)
16 (0x10) — запись значений в несколько регистров хранения (Preset Multiple Registers)
Команда состоит из адреса элемента, количества изменяемых элементов, количества передаваемых байт устанавливаемых значений и самих устанавливаемых значений.  В ответе ведомый передает начальный адрес и количество изменённых элементов.

Пример устройства Modbus

Рассмотрим работу протокола на примере контроллера шагового двигателя. В документации на контроллер описано назначение регистров Modbus, которые в нем использованы. Для управления двигателем необходимо задать параметры контроллера, параметры вращения и непосредственно команду. Вся работа с контроллером при использовании протокола Модбас сводится к работе с регистрами, то есть чтению и записи. Наш контроллер имеет всего один тип регистров: Holding Registers. Этот тип регистров предназначен как для чтения, так и для записи параметров. В контроллере использовано три типа регистров: 8, 16 и 32 бита. Таким образом, для работы с ним нам понадобится использование всего лишь нескольких функций: Read Holding Registers для чтения, Preset Single Register для записи регистров размерностью 8 и 16 бит, и Preset Multiple Registers для записи дначений в регистры длиной 32 бита.

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

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

Таким образом, использование протокола Modbus позволило сделать управление шаговым двигателем очень простым, качественным и надежным.

Для отладки устройств с протоколом Modbus нами разработана программа OSM Modbus Terminal. Данная программа позволяет быстро освоить основные принципы управления устройствами OSM MB по протоколу Modbus RTU, проверить корректную работу устройства и быст­рее написать собственное программное обеспечение. Скачать программу можно в разделе Программное обеспечение на нашем сайте.

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

Для начала работы с программой необходимо установить адрес порта ПК и адрес устройства, и нажать кнопку «Connect». После этого можно производить чтение и запись в требуемые регистры. При необходимости можно сохранить названия и адреса используемых регистров кнопкой «Save». Программа написана с использованием OsmModbusDriver_SDK и может служить примером использования SDK.

Все права защищены. Перепечатка материалов с сайта возможно только с разрешения администрации


Источник: http://onitex.ru/modbus-protokol


Закрыть ... [X]

Описание протокола Modbus Modbus RTU - Вяжем оригинальный коврик



Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей Описания шаговых двигателей