Функции, реализуемые протоколом MODBUS.
Протокол MODBUS имеет ярко выраженный характер “Ведущий – ведомый”, то есть при его использовании всегда существует ведущее устройство, которое управляет как процессом обмена данными, так и поведением второго, ведомого устройства (иногда его называют сервером). По существу каждый пакет, передаваемый от ведущего устройства к ведомому, является командой на выполнение того или иного действия. Тип действия определяет код функции, содержащейся в поле “Код функции” пакета. Каждый пакет может содержать код только одной функции. Код функции может принимать значения от 0 до 127.
Существуют три стандартные категории кодов функций MODBUS:
8. Коды стандартных функций.
Это коды функций, уникальность которых гарантирована. Данные коды утверждены сообществом modbus.org, имеют документальное подтверждение в MB IETF RFC. Использовать их в целях, отличных от стандартных, нельзя.
9. Коды функций, определяемых пользователем.
Данные функции могут создаваться пользователем и не являются стандартными для всех устройств. Коды данных функций могут располагаться в диапазонах 65¸72 и 100¸110.
10. Коды функций, зарезервированные в настоящее время некоторыми компаниями для наследования свойств своей продукции.
Кроме поля “Код функции”пакет прикладного уровня MODBUS содержит поле данных, несущее дополнительную информацию, необходимую для выполнения функции, либо возвращающее запрашиваемую информацию от сервера. Протокол MODBUS предполагает, что внутреннее устройство сервера MODBUS может быть подразделено на 4 стандартных типа данных типа устройств памяти и ввода/вывода:
1) Discretes Input – дискретные входные линии, предназначенные для считывания входных логических сигналов. Данная линия представляет собой цифровой бит (то есть может принимать только два значения – 0 и 1), недоступна для записи. Реально в устройстве это могут быть не только входные линии, но и любые внутренние битовые флаги, доступные только для чтения.
2) Coils – дискретные линии ввода/вывода или внутренние битовые флаги. Отличие от типа Discretes Input – в том, что данные линии доступны не только для чтения, но и для записи.
3) Input Registers – 16-битовые регистры, доступные только для чтения. В качестве таковых могут выступать как входные цифровые порты устройства, так и внутренние регистры состояния.
4) Holding Registers – (дословно – регистры с защелками) – 16 битовые регистры, отличающиеся от Input Registers только тем, что они доступны и для записи.
Вследствие такой структуры стандартных данных поле данных пакета MODBUS может содержать либо битовые флаги, либо 16-битовые слова. В последнем случае первым в пакете располагается старший, а вторым – младший байт.
Некоторые стандартные функции MODBUS представлены в таблице:
Табл. 4.1. Некоторые стандартные функции MODBUS
Описание функции | Код функции (HEX) | Субкод функции (HEX) |
Чтение внешних дискретных линий и внутренних битовых флагов системы управления | 01h | |
Побитовое чтение дискретных внешних входных линий системы управления | 02h | |
Чтение 16-битных регистров внешних входных сигналов или внутренних 16-битных регистров системы управления | 03h | |
Чтение 16-битовых регистров внешних входных сигналов системы управления | 04h | |
Вывод битового значения во внешнюю выходную дискретную линию или во внутренний битовый флаг системы управления | 05h | |
Запись значения в один 16-битный регистр внешних сигналов или 16-битный внутренний регистр системы управления | 06h | |
Запись нескольких внешних выходных дискретных линий или внутренних битовых флагов системы управления, сгруппированных в 8-битовые регистры | 0Fh | |
Запись значений в 16-битные регистры внешних входных сигналов или внутренние 16-битные регистры системы управления | 10h | |
Побитовая модификация 16-битного регистра внешних входных сигналов или внутреннего 16-битового регистра системы управления | 16h | |
Чтение/Запись внутренних 16-битных регистров внешних сигналов или 16-битных регистров системы управления | 17h | |
Чтение идентификатора устройства | 2Bh | 0Eh |
Дата добавления: 2016-04-19; просмотров: 998;