Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Микропроцессорные средства автоматизации энергетических систем. Сети автоматизации

.pdf
Скачиваний:
5
Добавлен:
12.11.2023
Размер:
20.13 Mб
Скачать

Ответ. Пример ответа на данный запрос представлен ниже.

Адрес

Функция

Кол-во

 

Дискретныевходы

 

Контроль-

байтовданных

10197–10204

10205–10212

10213–10218

наясумма

11

02

03

AC

 

DB

 

35

СRC

Младший бит первого байта содержит значение первого адресуемого входа, за которым следуют остальные. Если количество запрошенных входов не кратно восьми, то остальные биты заполняются нулями. Количество байтов данных всегда определяется как количество RTU-данных.

SL обслуживает запрос в конце рабочего цикла, данные в ответе отражают состояние входов на данный момент. Некоторые устройства имеют ограничение на количество входов, запрашиваемых за один запрос.

Статус входов 10197–10204 = ACh = 1010 1100. Читая слева направо, видим, что входы 10204, 10202, 10200 и 10199 в состоянии ON. Все остальные байты данных распаковываются аналогично.

Поскольку было запрошено 22 линии, последний байт данных

(35h = 0011 0101) содержит только шесть входов (10213–10218)

вместо восьми. Два последних бита заполняются нулями.

Функция 3. Чтение регистров

Запрос. Данная функция позволяет получить двоичное содержимое 16 разрядных регистров адресуемого SL. Адресация дает возможность получить за каждый запрос до 125 регистров. Однако некоторые устройства имеют ограничение на максимальное количество регистров, получаемых за один запрос. Регистры нумеруются с нуля (40001 = 0,40002 = 1 и т.д.). Широковещательный режим не поддерживается. Ниже представлен пример запроса на чтение реги-

стров 40108–40110 из SL с адресом 17.

 

 

Номер1-горегистра

Числорегистров

 

Адрес

Функция

длячтения(N)

Контрольная

 

 

Старший

Младший

Старший

Младший

сумма

 

 

байт

байт

байт

байт

 

11

03

00

6B

00

03

CRC

 

 

 

 

 

 

 

221

Ответ. Информационное поле содержит 2 байта, описывающих количество возвращаемых байтов данных. Длина каждого регистра данных – 2 байта. Первый байт данных в посылке является старшим байтом регистра, второй – младшим.

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

Ниже представлен пример ответного сообщения на чтение регистров 40108–40110, имеющих содержимое, соответственно, 555, 0, 100, из SL с адресом 17.

 

 

Коли-

Старший

Мл.

Ст. байт

Мл.

Ст. байт

Мл. байт

Кон-

Адрес

Функ-

чество

байт

байт

регистра

байт

регистра

регистра

троль

 

ция

байтов

регистра

регистра

40109

регистра

40110

40110

ная

 

 

данных

40108

40108

40109

сумма

 

 

 

 

 

11

03

06

02

2B

00

00

00

64

СRC

Функция 5. Запись одной ячейки

Запрос. Это сообщение модифицирует одну логическую ячейку. Ячейки нумеруются с нуля (ячейка 1 = 0, ячейка 2 = 1 и т.д.). Число 65280 (FF00H) устанавливает ячейку в 1, а число 0 – в 0. Другие числа не влияют на содержимое ячейки. Данная функция может использоваться в широковещательном режиме. Ниже приведен пример установкив1 ячейки0173 в SL 17.

Адрес

Функция

Ст. байт

Мл. байт

Индикатор

Всегда0

Контроль-

адреса

адреса

установкиили

наясумма

 

 

ячейки

ячейки

сбросячейки

 

 

11

05

00

AC

FF

00

СRC

Ответ. Нормальное ответное сообщение полностью совпадает с запросом.

Функция 6. Запись одного регистра

Запрос. Данная функция позволяет модифицировать содержимое одного регистра. Хотя запрос и является асинхронным, SL изменяет содержимое регистра только в конце рабочего цикла.

222

Когда в запросе указан адрес, равный 0 (широковещательный запрос), все SL, подключенные к шине, загрузят соответствующий регистр с указанным значением. Ниже приведен пример записи ре-

гистра 40136 со значением 926 = 0011 1001.1110 в SL с номером 17.

 

 

Старшийбайт

Младшийбайт

Старший

Младший

Контрольная

Адрес

Функция

адресареги-

адресарегистра

байтзна-

байтзна-

сумма

 

 

стра40136

40136

чения926

чения926

 

11

06

00

87

03

9E

СRC

Ответ. В случае успешного выполнения функции ответное сообщение идентично запросу.

Функция 8. Тестовая функция

Запрос. Данная функция (табл. 4.5) предназначена для проверки коммуникационной системы и не влияет на данные прибора.

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

Таблица 4 . 5

 

Коды тестовой функции

 

 

Код

Действие

00

Вернутьзапрос

01

Сброситьустановкисвязи(безответа)

02

Вернутьрегистрдиагностики

03

Изменитьсимволначалапакета

04

ПеревестиSL врежимпрослушиваниялиниибезпосылкиответныхсооб-

щений(Listen Only Mode)

05

Сброситьсчетчикиирегистрдиагностики

06

Вернутьсчетчиксообщений, полученныхсшиныModbus

07

Вернутьсчетчиксообщенийснеправильнымиконтрольнымисуммами

08

Вернутьсчетчиксообщений, вызвавшихисключительнуюситуацию

09

Вернутьсчетчиксообщений, адресованныхтолькоданномуSL

10

Вернуть счетчик сообщений, адресованных данному SL и оставленных

без ответа

11

Вернутьсчетчиксообщений, адресованныхданномуSL ивызвавшимис-

ключительнуюситуациюNACK

12

Вернутьсчетчиксообщений, адресованныхданномуSL ивызвавшимис-

ключительнуюситуациюBUSY

223

Ниже дан пример запроса вернуть эхо (диагностический код

«0») SL с номером 17.

Адрес

Функция

Старшийбайт

Младшийбайт

Старший

Младший

Контрольная

диагности-

диагности-

байт

байт

 

 

ческогокода

ческогокода

данных

данных

сумма

 

 

 

11

08

00

00

00

00

СRC

Ответ аналогичен запросу.

Функция 7. Чтение статуса

Запрос. Во многих случаях для быстрого получения статуса некоторых событий контроллера желательно иметь в протоколе сообщение, имеющее небольшой размер. Данная функция разработана именно для этой цели. Функция с номером 7 позволяет пользователю опрашивать состояние восьми ячеек контроллера. Эти ячейки могут программироваться для хранения информации состояния контроллера. Широковещательный режим не поддерживается. Назначение этих ячеек зависит от типа контроллера. Ниже представлен пример запроса статуса SL с номером 17.

Адрес

Функция

Контрольнаясумма

11

07

СRC

Ответ. Нормальный ответ содержит статус восьми ячеек, упакованных в один байт данных:

Адрес

Функция

Данныеячеек

Контрольнаясумма

11

07

6D

СRC

Например, в приборах ЗАО «Взлет» постоянно используются два младших разряда регистра статуса, которые отражают состояние прибора во время программирования памяти программ прибора.

Функция 16. Запись нескольких регистров

Запрос. Сообщение позволяет записывать регистры с максимальным логическим адресом до FFFFH. Неиспользуемые старшие

224

биты адреса регистра должны заполняться нулями. Если используется адрес SL, равный 0, то содержимое поля данных записывается во все устройства, подключенные к шине (широковещательный режим). Ниже представлен пример записи в SL с номером 17 двух регистров 40136, 40137 со значениями 0х00А0, 0х0102.

Адрес

Функция

Старшийбайт адреса1-горегистра

Младший байт адреса1-горегистра

Количество регистров

Количествобайтов вполеданных

Старшийбайт регистра40136

Младшийбайт регистра40136

Старшийбайт регистра40137

Младшийбайт регистра40137

Контрольнаясумма

 

 

 

 

 

 

 

 

 

 

 

 

11

10

00

87

00

02

04

00

0A

01

02

СRC

Ответ. Нормальное ответное сообщение возвращает адрес SL, функцию, адрес первого регистра и количество записанных регистров:

Адрес

Функция

Ст. байтадрес

Мл. байтадреса

Количество

Контрольная

1-горегистра

1-горегистра

регистров

сумма

11

10

00

87

00

02

СRC

Функция 17. Чтениеинформации обадресуемомустройстве

Запрос. Пример запроса прибору с адресом 17:

Адрес

Функция

Контрольнаясумма

11

11

СRC

Ответ. Общая форма ответного сообщения следующая:

Адрес

Функция

Числобайтов

Поледанных

Контрольная

вполеданных

сумма

 

 

 

Информация в поле данных различна для каждого конкретного прибора и указана в протоколе на прибор. Например, для приборов фирмы «Взлет» в поле данных обязательно передается информация, приведенная в табл. 4.6.

225

 

 

Таблица 4 . 6

 

Информация при чтении информации

 

 

 

Названиепараметра

Формат

п/п

 

 

1

Версияприбора

ASCII-строка, завершающаясянулем

вформате: VZLJOTAA.BB.CC.DD

 

 

2

Названиеприбора

ASCII-строка, завершающаясянулем

3

Максимальноечислорегистров

Unsigned (2 байта)

втаблицерегистровприбора

В случае если какая-либо из строк в приборе не существует, на ее месте в ответном сообщении должен передаваться ноль. Остальная информация зависит от типа прибора и указывается в описании протокола прибора.

Функция 65 (пользовательская). Чтение массивов записей

Запрос. В запросе указываются адрес SL, номер функции, номер массива (индексация с нуля), количество запрашиваемых записей, тип запроса (0 – по индексу, 1 – по времени архивации) и данные запроса. Для запроса по индексу в поле данных указывается номер первой запрашиваемой записи. Для запроса по времени архивации в поле данных указывается время архивации первой запрашиваемой записи (с, мин, ч, день, мес., год). Ниже приведен пример запроса по времени архивации шести записей массива 1 с 10.12.2015 г. 13:12:00 из устройства с номером 17.

Адресустройства

Функция

Старшийбайт номермасссива

Младшийбайт номерамасссива

Старшийбайтколичествазапрашиваемыхзаписей

Младшийбайтколичествазапрашиваемыхзаписей

Типзапроса

Секунды

Минуты

Часы

День

Месяц

Год

Контрольная сумма

11

41

00

01

00

06

01

00

0D

0A

0C

15

СRC

Пример запроса по индексу шести записей массива 1, начиная с 100-й, из устройства с номером 17:

226

Адресустройства

Функция

Старшийбайт номерамассива

Младшийбайт номерамассива

Старшийбайткол-ва запрашиваемых записей

Младшийбайткол-ва запрашиваемых записей

Типзапроса

Старшийбайт индекса1-йзаписи

Младшийбайт индекса1-йзаписи

Контрольнаясумма

 

 

 

 

 

 

 

 

 

 

11

41

00

01

00

06

00

00

64

 

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

Адрес

Функция

Числобайтов

Данные

Контрольная

 

 

вполеданных(1 байт)

 

сумма

11

41

01

64

 

4.4. КОНТРОЛЬ ОШИБОК

Когда подчиненный отвечает главному, он использует поле кода функции для фиксации ошибки. В случае нормального ответа подчиненный повторяет оригинальный код функции. Если имеют место ошибка или исключительная ситуация (исключение), возвращается код функции с установленным в 1 старшим битом.

Например, сообщение от главного подчиненному «прочитать группу регистров» имеет следующий код функции:

0000 0011 (03 hex) – если подчиненный выполнил требуемое действие без ошибки, он возвращает такой же код, если имеет место ошибка, то он возвращает:

1000 0011 (83 hex) – в добавление к изменению кода функции подчиненный размещает в поле данных уникальный код, который сообщает главному, какая именно ошибка произошла или ее причину (код исключительных ответов).

227

Вовремяобменаданнымимогутвозникатьошибкидвухтипов:

1)ошибки, связанные с искажениями при передаче данных (коммуникационные ошибки);

2)логические ошибки программы (операторные).

Ошибки первого типа обнаруживаются при помощи проверки символов, контроля четности и контрольной суммы LRC или CRC. Результат передается в линию связи с младшего байта.

При ошибках программы в ответе ведомого появляется код исключительного ответа. Пример неправильного запроса представлен ниже.

Адрес

Функ-

 

Старший

Младший

Старший

 

Младший

Контрольная

SL

 

ция

байтадреса

байтадреса

байтчисла

 

байтчисла

сумма

 

 

 

 

 

 

 

ячеек

 

ячеек

 

0A

 

01

04

 

A1

00

 

01

4F

 

 

Код исключительного ответа следующий:

 

 

 

 

 

 

 

 

 

 

АдресSL

 

Функция

 

Кодисключительной

 

Контрольная

 

 

 

ситуации

 

 

сумма

 

 

 

 

 

 

 

 

 

 

0A

 

81

 

 

02

 

 

 

73

Этот запрос требует состояние ячейки с номером 1245 в SL

сномером 10. Если этот контроллер имеет 1К ячеек, то этот адрес является ошибочным. Соответственно, будет сгенерировано следующее ответное сообщение.

Значение в поле функции равно оригинальному значению

сустановленным в единицу старшим битом. Код исключительной ситуации 02 указывает на ошибочный адрес данных.

Могут быть отправлены ответы о кодах ошибки, приведенных в табл. 4.7. Коммуникационные ошибки обычно состоят из измененного бита или битов внутри сообщения. Например, 0001 0100 может стать 0001 0110. Значительно менее частым может быть бит, добавленный или отнятый от сообщения. Наиболее частой причи-

228

ной коммуникационных ошибок является шум – нежелательные электрические сигналы в коммуникационном канале.

 

 

Таблица 4 . 7

 

Коды ошибок Modbus

 

 

 

Код

Название

Комментарий

01

Неправильнаяфункция

Команданереализована

ILLEGAL FUNCTION

(недопустимыйномерфункции)

 

02

Неправильныйадресданных

Некорректныйадрес

ILLEGAL DATA ADDRESS

 

 

03

Неправильноезначениеданных

Некорректныеданные

ILLEGAL DATA VALUE

 

 

04

Ошибкивприсоединяемомустройстве

Ведомыйконтроллер

 

FAILURE IN ASSOCIATED DEVICE

невсостоянииответить

05

ПодтверждениеACKNOWLEDGE

Запроспринят,

ноданныенеготовы

 

 

06

Занято, отраженноесообщение

Запроспринят, ноконтроллер

BUSY, REJECTED MESSAGE

выполняетдлиннуюкоманду

 

07

Негативноеподтверждение

Запрошеннаяпрограммнаяфункция

NAK-NEGATIVE

неможетбытьпредставлена

 

ACKNOWLEDGMENT

 

 

08

MEMORY PARITY ERROR

Эти сигналы вызваны электрическим наложением (интерференцией) от работы двигателей, повреждением коммуникационного канала, импульсными шумами (пики) и т.п. Коммуникационные ошибки выявляются символьными рамками, контролем паритета и избыточной контрольной суммой. Когда символьные рамки, паритет и избыточный контроль обнаруживают коммуникационные ошибки, процесс приема сообщения останавливается. Ведомый PC не будет исполнять или отвечать на сообщение (тот же результат будет в случае, если используется адрес не существующего ведомого устройства).

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

229

зависит от скорости передачи, типа сообщения и времени сканирования ведомого PC. Если это время не определено, то ведущий может быть запрограммирован для автоматического перезапуска сообщения. Оба режима передачи – RTU и ASCII – включают необязательный бит паритета в свой формат символа. В режиме RTU это девятый бит поля данных (8 бит данных и 1 бит паритета). Если паритет не используется, бит паритета не передается. Все устройства конфигурируются одинаково на четный, нечетный паритет или на его отсутствие во время инсталляции (установки) системы. Паритет помогает определить единичный бит коммуникационных ошибок.

Если в сообщении две ошибки, паритет будет не способен обнаружить изменения. Система Modbus обеспечивает несколько уровней контроля ошибок для того, чтобы с уверенностью обеспечить качество передачи данных. Чтобы определить многобитовые ошибки в случае, когда паритет не изменяется, система использует избыточный контроль.

Когда используется RTU-режим, поле контрольной суммы содержит 16-битовую величину. Контрольная сумма является результатом вычисления CRC-кода, сделанного над содержанием сообщения.

Контрольная сумма CRC состоит из двух байт. Она вычисляется передающим устройством перед передачей и добавляется в конец сообщения. Принимающее устройство вычисляет контрольную сумму в процессе приема и сравнивает ее с полем CRC принятого сообщения.

Счетчик контрольной суммы предварительно инициализируется числом FFFF hex. Только 8 бит данных используются для вычисления контрольной суммы CRC. Старт- и стоп-биты, бит паритета, если он используется, не учитываются в контрольной сумме.

Процедуру вычисления СRC-кода в данном пособии опустим: ее выполняют передающие и принимающие устройства.

230

Соседние файлы в папке книги