Записки программиста Программирование и не только

30Окт/120

[Modbus] Функции 07, 11, 12, 15

  • 07 Read Exception Status
  • 11 (0B Hex) Fetch Comm Event Ctr
  • 12 (0C Hex) Fetch Comm Event Log
  • 15 (0F Hex) Force Multiple Coils

07 Read Exception Status
ОПИСАНИЕ
Чтение статусных выходов в подчиненном контроллере. Назначение некоторых выходов в контроллерах заранее определено. Другие же могут программироваться пользователем для вывода информации о контроллере, например «машина ВКЛ/ВЫКЛ» и др.

Функция обеспечивает простой метод доступа к данной информации, потому что адрес статусных выходов известен (нет необходимости указывать адрес выхода).

Статусные выходы имеют следующие предопределения:

Модель контроллера Выход Назначение
M84,184/384,584,984 1-8 Определяемые пользователем
484 257 Состояние батареи
258-264 Определяемые пользователем
884 761 Состояние батареи
762 Статус Защиты памяти
763 RIO Health Status
764-768 Определяемые пользователем

ЗАПРОС

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 07
Контрольная сумма

ОТВЕТ
Нормальный ответ содержит состояние восьми выходов статуса.

Пример ответа на запрос описанный выше:

Ответ

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 06
Данные выходов 6D
Контрольная сумма

В данном примере данные выходов равны 6Dh (0110 1101), что значит OFF-ON-ON-OFF-ON-ON-OFF-ON. Направление - от старшего к младшему.

11 (0B Hex) Fetch Comm Event Ctr
ОПИСАНИЕ
Возвращает слово состояния и счетчик событий из коммуникационного счетчика событий подчиненного устройства. Просматривая текущий счетчик перед и после серии сообщений , главный может увидеть какие сообщения были нормально приняты подчиненным.

Счетчик событий инкрементируется после каждого удачного приема сообщения. Он не инкрементируется после сообщений об ошибке, команд регистрации, или команд просмотра счетчика событий.

Счетчик событий может быть переустановлен посредством Диагностической функции (код 08), подфункциями Restart Communication Option (код 00 01) или Clear Counters and Diagnostic Register (код 00 0A).

ЗАПРОС
Ниже приведен пример запроса на чтение коммуникационного счетчика событий в подчиненном устройстве 17:

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 0B
Контрольная сумма

ОТВЕТ
Нормальный ответ содержит два байта слова состояния, и два байта счетчика событий. Слово состояния содержит все 1 если предыдущая команда еще выполняется. Иначе слово состояния содержит все нули.

Ниже приведен пример ответа на описанный выше запрос:

Ответ

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 0B
Состояние ст. FF
Состояние мл. FF
Счетчик событий ст. 01
Счетчик событий мл. 08
Контрольная сумма

В этом примере слово состояния содержит число FFFF Hex, что говорит о том, что в подчиненном все еще выполняется функция. Счетчик событий содержит число 264, что говорит о том, что на данный момент произошло 264 события.

12 (0C Hex) Fetch Comm Event Log
ОПИСАНИЕ
Возвращает слово состояния, счетчик событий, счетчик сообщений, и поле байтов событий.

Слово состояния и счетчик событий идентичны возвращаемым функцией 11 (0B Hex).

Счетчик сообщений обработанных подчиненным со времени последнего рестарта, операции очистки счетчиков или с момента включения питания. Этот счетчик идентичен возвращаемому функцией диагностики (код 08), подфункцией Return Bus Message Count (код 11).

Поле байтов событий содержит 0-64 байта, каждый байт содержит статус одной посылки или приема сообщения подчиненным. События размещаются подчиненным в поле в хронологическом порядке. Байт 0 содержит последнее по времени событие.

ЗАПРОС
Ниже приведен пример запроса на посылку коммуникационного журнала сообщений главному с подчиненного устройства 17:

Имя поля Пример (Hex)/td>
Адрес подчиненного 11/td>
Функция 0C/td>
Контрольная сумма

ОТВЕТ
Нормальный ответ содержит два байта слова состояния, два байта счетчика событий, два байта счетчика сообщений, и поля содержащего 0-64 байта описания событий. Поле счетчика данных определяет общую длину данных в четырех полях.

Это пример ответа на запрос представленный выше:

Ответ

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 0C
Счетчик байтов 08
Состояние ст. 00
Состояние мл. 00
Счетчик событий ст. 01
Счетчик событий мл. 08
Счетчик сообщений ст. 01
Счетчик сообщений мл. 21
Событие 0 20
Событие 1 00
Контрольная сумма

В данном примере, слово состояния содержит 00 00 Hex, это говорит о том, что подчиненный не занят выполнением программной функции. Счетчик событий содержит 264. Счетчик сообщений показывает, что 289 сообщений было обработано.

Последнее коммуникационное событие показано в 0-ом байте событий. Его содержимое говорит о том, что подчиненный был введен в режим Listen Only Mode.

Предыдущее событие показано в 1-ом байте событий. Его содержимое (00) говорит о том, что подчиненный принял Communications Restart.

Содержимое байтов событий описано ниже.

ЧТО СОДЕРЖАТ БАЙТЫ СОБЫТИЙ
Байты событий, возвращаемые функцией Fetch Communication Event Log, могут быть одним из четырех типов. Тип определяется старшим битом в каждом байте. Кроме того, он может определятся битом 6.

Slave Modbus Receive Event
Этот тип байта события сохраняется подчиненным когда сообщение-запрос было принято. Он сохраняется перед тем как подчиненный обработает сообщение. Этот тип события определяется установкой бита 7 в «1?. Остальные биты устанавливаются в «1? если произошли описанные ниже события:

Бит Описание
0 Не используется
1 Коммуникационная ошибка
2 Не используется
3 Не используется
4 Character Overrun
5 Currently in Listen Only Mode
6 Широковещательный прием
7 1

Slave Modbus Send Event
Этот тип байта события сохраняется подчиненным когда он закончил обработку сообщения запроса. Он сохраняется если подчиненный возвращает нормальный ответ или возвращает сообщение об ошибке, или не отвечает на запрос. Это событие определяется установкой бита 7 в 0, с установкой бита 6 в 1. Остальные биты устанавливаются в 1 если произошли описанные ниже события:

Бит Описание
0 Read Exeption Sent (Код ошибки 1-3)
1 Slave Abort Exeption Sent (Код ошибки 4)
2 Slave Busy Exeption Sent (Код ошибки 5-6)
3 Slave Program NAK Exeption Sent (Код ошибки 7)
4 Write Timeout Error Occured
5 Currently in Listen Mode
6 1
7 0

Slave Entered Listen Only Mode
Этот тип байта события сохраняется подчиненным когда он вводится в режим Listen Only Mode.

Описание битов:

Бит Описание
0 0
1 0
2 1
3 0
4 0
5 0
6 0
7 0

Slave Initiated Communication Restart
Этот тип байта события сохраняется подчиненным когда был сделан рестарт коммуникационного порта. Рестарт подчиненного может быть сделан посредством диагностической функции (код 08 Hex) подфункция Restart Communication Option (код 00 01).

Эта функция также может переводить подчиненного в режим ‘Continue on Error’ или ‘Stop on Error’. Если подчиненный находится в режиме ‘Continue on Error Mode’, байт события добавляется к существующему журналу событий. Если подчиненный находится в режиме ‘Stop on Error’ байт добавляется в журнал и остаток журнала сбрасывается в 0.

Описание битов

Бит Содержание
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0

15 (0F Hex) Force Multiple Coils
ОПИСАНИЕ
Устанавливает каждый выход (ссылка 0Х) последовательности выходов в одно из состояний ON или OFF. При широковещательной передаче функция устанавливает подобные выходы на всех всех подчиненных.

ЗАМЕЧАНИЕ
Функция может пересекаться с установкой защиты памяти и установкой недоступности выходов.

ЗАПРОС
Запрос специфицирует выходы для установки. Выходы адресуются начиная с 0.

Ниже показан пример запроса на установку последовательности выходов начиная с 20 (адресуется как 19) в подчиненном устройстве 17.

Поле данных запроса содержит 2 байта: CD 01 Hex (1100 1101 0000 0001 двоичное). Соответствие битов и выходов представлено ниже:

Бит: 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1
Выход: 27 26 25 24 23 22 21 20 - - - - - - 29 28

Запрос

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 0F
Адрес выхода ст. 00
Адрес выхода мл. 13
Кол-во выходов ст. 00
Кол-во выходов мл. 0A
Счетчик байт 02
Данные для установки (Выходы 27-20) CD
Данные для установки (Выходы 29-28) 01
Контрольная сумма

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

Это пример ответа на представленный выше запрос.

Ответ

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 0F
Адрес выхода ст. 00
Адрес выхода мл. 13
Кол-во выходов ст. 00
Кол-во выходов мл. 0A
Контрольная сумма

Функция

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.