Category Archives: modbus

ГЕНЕРАЦИЯ LRC/CRC в сообщении ModBUS

ГЕНЕРАЦИЯ LRC/CRC

Генерация LRC

Longitudinal Redundancy Check(LRC) это один байт. LRC вычисляется передающим устройством и добавляется к концу сообщения. Принимающее устройство также вычисляет LRC в процессе приема и сравнивает вычисленную величину с полем контрольной суммы пришедшего сообщения. Если суммы не совпали — то имеет место ошибка.

LRC вычисляется сложением последовательности байтов сообщения, отбрасывая все переносы, и затем двойным дополнением результата. LRC — это 8-ми битовое поле, где каждое новое прибавление символа, приводящее к результату более чем 255, приводит к простому перескакиванию через 0. Так как это поле не является 9-ти битовым, перенос отбрасывается автоматически.

Алгоритм генерации LRC:

1. Сложить все байты сообщения, исключая стартовый символ ‘:’ и конечные CRLF, складывая их так, чтобы перенос отбрасывался.

2. Отнять получившееся значение от числа FF(Hex) — это является первым дополнением.

3. Прибавить к получившемуся значению 1 — это второе дополнение.

РАЗМЕЩЕНИЕ LRC В СООБЩЕНИИ

Когда 8-ми битовое поле LRC (2 ASCII символа) передается в сообщении, то старший символ будет передан первым, а за ним — младший. Например, если значение LRC 61 hex(0110 0001):

 

‘:’ Адрес Функ ция Сч-к байт Байт Байт Байт Байт LRC Ст. LRC Мл. CR LF
6 1

 

Пример функции на языке C реализующей генерацию LRC приведен ниже. Функция принимает два аргумента:

unsigned char *auchMsg; Указатель на буфер данных

unsigned short usDataLen; Количество байт в буфере

Функция возвращает LRC как тип unsigned char.

ПРИМЕР

static unsigned char LRC(auchMsg, usDataLen)

unsigned char *auchMsg;/* Сообщение над которым */

/* вычисляется LRC */

unsigned char usDataLen; /* Количество байт в сообщении */

{

unsigned char uchLRC=0; /* Инициализация LRC */

while(usDataLen)

uchLRC+=*auchMsg++;

return((unsigned char)(-((char uchLRC)));

}

Генерация CRC

CRC это 16-ти разрядная величина т.е. два байта. CRC вычисляется передающим устройством и добавляется к сообщению.Принимающее устройство также вычисляет CRC в процессе приема и сравнивает вычисленную величину с полем контрольной суммы пришедшего сообщения. Если суммы не совпали — то имеет место ошибка.

16-ти битовый регистр CRC предварительно загружается числом FF hex. Процесс начинается с добавления байтов сообщения к текущему содержимому регистра. Для генерации CRC используются только 8 бит данных. Старт и стоп биты, бит паритета, если он используется, не учитываются в CRC.

В процессе генерации CRC, каждый 8-ми битовый символ складывается по ИСКЛЮЧАЮЩЕМУ ИЛИ с содержимым регистра. Результата сдвигается в направлении младшего бита, с заполнением 0 старшего бита. Младший бит извлекается и проверяется. Если младший бит равен 1, то содержимое регистра складывается с определенной ранее, фиксированной величиной, по ИСКЛЮЧАЮЩЕМУ ИЛИ. Если младший бит равен 0, то ИСКЛЮЧАЮЩЕЕ ИЛИ не делается.

Этот процесс повторяется пока не будет сделано 8 сдвигов. После последнего (восьмого) сдвига, следующий байт складывается с содержимым регистра и процесс повторяется снова. Финальное содержание регистра, после обработки всех байтов сообщения и есть контрольная сумма CRC.

Алгоритм генерации CRC:

1. 16-ти битовый регистр загружается числом FF hex (все 1), и используется далее как регистр CRC.

2. Первый байт сообщения складывается по ИСКЛЮЧАЮЩЕМУ ИЛИ с содержимым регистра CRC. Результат помещается в регистр CRC.

3. Регистр CRC сдвигается вправо(в направлении младшего бита) на 1 бит, старший бит заполняется 0.

4. (Если младший бит 0): Повторяется шаг 3 (сдвиг)

(Если младший бит 1): Делается операция ИСКЛЮЧАЮЩЕЕ ИЛИ регистра CRC и полиномиального числа A001 hex.

5. Шаги 3 и 4 повторяются восемь раз.

6. Повторяются шаги со 2 по 5 для следующего сообщения. Это повторяется до тех пор пока все байты сообщения не будут обработаны.

7. Финальное содержание регистра CRC и есть контрольная сумма.

РАЗМЕЩЕНИЕ CRC В СООБЩЕНИИ

При передаче 16 бит контрольной суммы CRC в сообщении, сначала передается младший байт, затем старший. Например, если CRC равна 1241 hex :

 

Адрес Функция Счетчикк байт Данные Данные Данные Данные CRC Ст. CRC Мл.
41 12

ПРИМЕР

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

Функция принимает два аргумента:

unsigned char *puchMsg; /* Указатель на буфер */

unsigned short usDataLen; /* Количество байтов в буфере */

Функция возвращает CRC как тип unsigned short.

static unsigned char auchCRCHi[] = { 0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00, 0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1, 0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81, 0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40, 0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01, 0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0, 0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80, 0x22,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41, 0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00, 0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0, 0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80, 0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41, 0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01, 0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1, 0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81, 0x40,0x01,0xC0,0x80,0x41,0x00,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40, 0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01, 0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1, 0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80, 0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40

}

static char auchCRCLo[] = { 0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05, 0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA, 0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA, 0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15, 0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0, 0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35, 0x34,0xF4,0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B, 0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA, 0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27, 0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60, 0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64, 0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB, 0x69,0xA9,0xA8,0x68,0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE, 0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,0x77,0xB7, 0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,0x50,0x90,0x91, 0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54, 0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99, 0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E, 0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,0x44,0x84,0x85,0x45,0x87,0x47,0x46, 0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40

}

unsigned short CRC16(puchMsg, usDataLen)

unsigned char *puchMsg;

unsigned short usDataLen;

{

unsigned char uchCRCHi = 0xFF;

unsigned char uchCRCLo = 0xFF;

while (usDataLen—)

{

uIndex = uchCRCHi

*puchMsg++;

uchCRCHi = uchCRCLo

auchCRCHi[uIndex];

uchCRCLo = auchCRCLo[uIndex];

}

return (uchCRCHi << 8 | uchCRCLo);

}

 

    ОЦЕНКА ВРЕМЕНИ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ModBUS

    ПОСЛЕДОВАТЕЛЬНОСТЬ ПЕРЕДАЧИ

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

    1. Главное устройство Modbus Формирует сообщение.

    2. Проверяются статусы RTS и CTS модема главного. (A)

    3. Сообщение запроса передается подчиненному.(B)

    4. Подчиненный принимает сообщение запроса. (C)(D)

    5. Подчиненный вычисляет контрольную сумму. (E)

    6. Проверяются статусы RTS и CTS модема подчиненного. (F)

    7. Ответное сообщение передается главному. (B)

    8. Главный производит необходимые действия над принятым отве-

    том и данными.

    ПРИМЕЧАНИЯ

    (A) Если выводы RTS и CTS соединены вместе, то это время незначительно. Для модема J478, это время около 5 мс.

    (B) Следующая формула оценивает время передачи:

    1000 Х (счетчик символов) Х (битов в символе)

    Время = —————————————————

    Скорость передачи

    (C) Modbus сообщение обрабатывается в конце скана контроллера. В худшем случае задержка будет равна времени одного скана. В среднем задержка составляет 0.5 скана.

    Время, выделяемое для обслуживания портов Modbus в конце каждого скана контроллера(перед началом нового), зависит от модели контроллера. Время для каждой модели описано ниже.Для 484 контроллера это время составляет приблизительно 1.5 мс.

    Для 584 и 984 контроллера время составляет приблизительно 1.5 мс. Порты обслуживаются последовательно, начиная с порта 1.

    Для 184/384 контроллеров время зависит от количества принимаемых данных. Это время варьируется от минимального 0.5 мс до максимального около 6.0 мс (для 100 регистров), или 7.0 мс (для 800 выходов).Если с контроллером используется программная панель, то Modbus порт отключается.

    (D) Modbus Функции с 1 по 4, 15 и 16 позволяет главному устройству запросить больше данных чем то количество, которое может обработать контроллер в течении времени выделяемого на обслуживание портов. Если подчиненный не успел обработать все данные, он может буферизировать их и обработать позже.

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

    Дискреты Регистры
    Micro 84 16 4
    184/384 800 100
    484 32 16
    584 64 32
    984A/B/X 64 32
    984-X8X 1000 125

    Примечание: ‘984-X8X’ ссылается на slot-mount модели(984-385, -685 и т.д.).

    Для 884, время обработки множественных данных следующее: Чтение 700 выходов: 14 сканов             Установка единич. выхода: 3 скана Чтение 256 входов: 7 сканов               Установка регистра: 3 скана Чтение 125 вых. рег-ов: 5 сканов Установка 768 выходов: 18 сканов Чтение 125 вх. рег-ов: 8 сканов Установка 100 рег.: 10 сканов

    (E) Вычисление контрольной суммы LRC — около 1 мс. Вычисление контрольной суммы CRC — около 0.3 мс для каждых 8-ми бит данных возвращаемых в ответе.

    ПРИМЕЧАНИЯ ДЛЯ 584 И 984A/B/X

    Это примечание касается только 584 и 984A/B/X контроллеров.

    СКОРОСТЬ ПЕРЕДАЧИ: Когда используются оба Modbus порта 1 и 2, максимальная доступная скорость передачи — 19 200 бод.

    БЛОКИРОВКА ПОРТА: Когда вы используете ASCII режим, избегайте посылки сообщений с ‘нулевой длиной данных’, или сообщений без адреса устройства. Например, это неправильное сообщение:

    : CR LF

    При использовании такого рода сообщений может иметь место случайная блокировка порта.

    ПРИЗНАК КОНЦА ASCII СООБЩЕНИЯ: Нормальное ASCII сообщение должно заканчиваться парой CRLF. При использовании контроллеров 584 и 984A/B/X, ASCII сообщение может заканчиваться после поля контрольной суммы LRC (без установки символов CRLF), если после поля LRC имеет место интервал по крайней мере 1 сек. Если это случилось, контроллер считает что сообщение закончилось нормально.

     

      МАКСИМАЛЬНЫЕ ПАРАМЕТРЫ ДЛЯ ЗАПРОСА/ОТВЕТА ModBUS

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

      184/384  Функция Описание Запрос Ответ
      1 Read Coil Status 800 Выходов 800 Выходов
      2 Read Input Status 800 Входов 800 Входов
      3 Read Holding Registers 100 Регистров 100 Регистров
      4 Read Input Registers 100 Регистров 100 Регистров
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 Не поддерживается Не поддерживается
      10 Poll 484 Не поддерживается Не поддерживается
      11 Fetch. Comm. Event Ctr. Не доступна Не доступна
      12 Fetch. Comm. Event Log Не доступна 70 байтов данных
      13 Program Controller 32 байта данных 32 байта данных
      14 Poll Controller Не доступна 32 байта данных
      15 Force Multiply Coils 800 Выходов 800 Выходов
      16 Preset Multiply Regs 100 Регистров 100 Регистров
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 Не поддерживается Не поддерживается
      19 Preset Comm. Link Не поддерживается Не поддерживается
      20 Read General Reference Не поддерживается Не поддерживается
      21 Write General Reference Не поддерживается Не поддерживается
      484 Функция Описание Запрос Ответ
      1 Read Coil Status 512 Выходов 512 Выходов
      2 Read Input Status 512 Входов 512 Входов
      3 Read Holding Registers 254 Регистра 254 Регистра
      4 Read Input Registers 32 Регистра 32 Регистра
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 16 байтов данных 16 байтов данных
      10 Poll 484 Не доступна 16 байтов данных
      11 Fetch. Comm. Event Ctr. Не поддерживается Не поддерживается
      12 Fetch. Comm. Event Log Не поддерживается Не поддерживается
      13 Program Controller Не поддерживается Не поддерживается
      14 Poll Controller Не поддерживается Не поддерживается
      15 Force Multiply Coils 800 Выходов 800 Выходов
      16 Preset Multiply Regs 60 Регистров 60 Регистров
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 Не поддерживается Не поддерживается
      19 Preset Comm. Link Не поддерживается Не поддерживается
      20 Read General Reference Не поддерживается Не поддерживается
      21 Write General Reference Не поддерживается Не поддерживается
      584 Функция Описание Запрос Ответ
      1 Read Coil Status 2000 Выходов 2000 Выходов
      2 Read Input Status 2000 Входов 2000 Входов
      3 Read Holding Registers 125 Регистров 125 Регистров
      4 Read Input Registers 125 Регистров 125 Регистров
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 Не поддерживается Не поддерживается
      10 Poll 484 Не поддерживается Не поддерживается
      11 Fetch. Comm. Event Ctr. Не доступна Не доступна
      12 Fetch. Comm. Event Log Не доступна 70 байтов данных
      13 Program Controller 33 байта данных 33 байта данных
      14 Poll Controller Не доступна 33 байта данных
      15 Force Multiply Coils 800 Выходов 800 Выходов
      16 Preset Multiply Regs 100 Регистров 100 Регистров
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 Не поддерживается Не поддерживается
      19 Preset Comm. Link Не поддерживается Не поддерживается
      20 Read General Reference (1) (1)
      21 Write General Reference (1) (1)

      Примечание:

      (1) Максимальная длина сообщения не должна превышать 256.

      884 Функция Описание Запрос Ответ
      1 Read Coil Status 2000 Выходов 2000 Выходов
      2 Read Input Status 2000 Входов 2000 Входов
      3 Read Holding Registers 125 Регистров 125 Регистров
      4 Read Input Registers 125 Регистров 125 Регистров
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 Не поддерживается Не поддерживается
      10 Poll 484 Не поддерживается Не поддерживается
      11 Fetch. Comm. Event Ctr. Не поддерживается Не поддерживается
      12 Fetch. Comm. Event Log Не поддерживается Не поддерживается
      13 Program Controller Не поддерживается Не поддерживается
      14 Poll Controller Не поддерживается Не поддерживается
      15 Force Multiply Coils 800 Выходов 800 Выходов
      16 Preset Multiply Regs 100 Регистров 100 Регистров
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 (1) (1)
      19 Preset Comm. Link (1) (1)
      20 Read General Reference Не поддерживается Не поддерживается
      21 Write General Reference Не поддерживается Не поддерживается

      Примечание:

      (1) Максимальная длина сообщения не должна превышать 256.

      M84 Функция Описание Запрос Ответ
      1 Read Coil Status 64 Выхода 64 Выхода
      2 Read Input Status 64 Входа 64 Входа
      3 Read Holding Registers 32 Регистра 32 Регистра
      4 Read Input Registers 4 Регистров 4 Регистров
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 Не поддерживается Не поддерживается
      10 Poll 484 Не поддерживается Не поддерживается
      11 Fetch. Comm. Event Ctr. Не поддерживается Не поддерживается
      12 Fetch. Comm. Event Log Не поддерживается Не поддерживается
      13 Program Controller Не поддерживается Не поддерживается
      14 Poll Controller Не поддерживается Не поддерживается
      15 Force Multiply Coils 64 Выхода 64 Выхода
      16 Preset Multiply Regs 32 Регистра 64 Регистра
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 (1) (1)
      19 Preset Comm. Link Не доступна Не доступна
      20 Read General Reference Не поддерживается Не поддерживается
      21 Write General Reference Не поддерживается Не поддерживается

      Примечание:

      (1) Максимальная длина сообщения не должна превышать 256.

      984 Функция Описание Запрос Ответ
      1 Read Coil Status 2000 Выходов 2000 Выходов
      2 Read Input Status 2000 Входов 2000 Входов
      3 Read Holding Registers 125 Регистров 125 Регистров
      4 Read Input Registers 125 Регистров 125 Регистров
      5 Force Single Coil 1 Выход 1 Выход
      6 Preset Single Register 1 Регистр 1 Регистр
      7 Read Exeption Status Не доступна 8 Выходов
      8 Diagnostics Не доступна Не доступна
      9 Program 484 Не поддерживается Не поддерживается
      10 Poll 484 Не поддерживается Не поддерживается
      11 Fetch. Comm. Event Ctr. Не доступна Не доступна
      12 Fetch. Comm. Event Log Не доступна 70 байтов данных
      13 Program Controller 33 байта данных 33 байта данных
      14 Poll Controller Не доступна 33 байта данных
      15 Force Multiply Coils 800 Выходов 800 Выходов
      16 Preset Multiply Regs 100 Регистров 100 Регистров
      17 Report Slave ID Не доступна Не доступна
      18 Program 884/M84 Не поддерживается Не поддерживается
      19 Preset Comm. Link Не поддерживается Не поддерживается
      20 Read General Reference (1) (1)
      21 Write General Reference (1) (1)

      Примечание:

      (1) Максимальная длина сообщения не должна превышать 256.

       

      P.S. Нужно помнить, что техническое обслуживание пластиковых окон, ремонт заключается не столько в щадящей очистке профильных систем, фурнитуры и стеклопакета от пыли и грязи, сколько в регулярном смазывании подвижных деталей фурнитурных узлов.

        СООБЩЕНИЯ ОБ ОШИБКАХ ModBUS

        Одна из четырех ситуаций может иметь место при запросе главного к подчиненному:

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

        — Если подчиненное устройство не приняло запрос, ответ не возвращается. Главный ожидает ответа на запрос в течении определенного таймаута.

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

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

        Сообщение об ошибке имеет два поля которые отличаются от полей нормального ответа:

        ПОЛЕ КОДА ФУНКЦИИ: В нормальном ответе, подчиненный повторяет код функции содержащийся в поле кода функции запроса. Во всех кодах функций старший значащий бит установлен в 0. При возврате сообщения об ошибке подчиненный устанавливает этот бит в 1.

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

        ПОЛЕ ДАННЫХ: В нормальном ответе, подчиненный может может возвращать данные или статистику в поле данных(любую информацию которая затребована в запросе). В сообщении об ошибке, подчиненный возвращает код ошибки в поле данных.

        Ниже показан пример запроса главного и сообщения об ошибке подчиненного:

        ЗАПРОС

        Имя поля                                                                                             Пример

        (Hex)

        Адрес подчиненного                                                                           0A

        Функция                                                                                              01

        Начальный адрес ст.                                                                            04

        Начальный адрес мл.                                                                           A1

        Кол-во входов ст.                                                                 00

        Кол-во входов мл.                                                                               01

        Контрольная сумма (LRC)                                                  4F

        СООБЩЕНИЕ ОБ ОШИБКЕ

        Адрес подчиненного                                                                           0A

        Функция                                                                                              81

        Код ошибки                                                                                          02

        Контрольная сумма (LRC)                                                  73

        Вданном примере главный адресует подчиненное устройство 10. Код функции (01) — Read Coil Status. В запросе требуется прочитать выход с адресом 1245.

        Если указанный выход не существует подчиненный возвращает сообщение об ошибке с кодом ошибки (02). Этот код специфицирует несуществующий адрес данных в подчиненном. Например если подчиненный это 984-385 с 512 выходами, то этот код ошибки будет возвращаться при обращении к несуществующим выходам.

        Список кодов ошибок представлен ниже.

        Код Название Описание
        01 ILLEGAL FUNCTION Принятый код функции не может быть обработан на подчиненном.
        02 ILLEGAL DATA ADDRESS Адрес данных указанный в запросе не доступен данному подчиненному.
        03 ILLEGAL DATA VALUE Величина содержащаяся в поле данных запроса является не допустимой величиной для подчиненного.
        04 SLAVE DEVICE FAILURE Невосстанавливаемая ошибка имела место пока подчиненный пытался выполнить затребованное действие.
        05 ACKNOWLEDGE Подчиненный принял запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет главного от генерации ошибки таймаута. Главный может выдать команду Poll Program Complete для обнаружения завершения обработки команды.
        06 SLAVE DEVICE BUSY Подчиненный занят обработкой команды. Главный должен повторить сообщение позже, когда подчиненный освободится.
        07 NEGATIVE ACKNOWLEDGE Подчиненный не может выполнить программную функцию, принятую в запросе. Этот код возвращается для неудачного программного запроса, использующего функции с номерами 13 или 14. Главный должен запросить диагностическую информацию или информацию обошибках с подчиненного.
        08 MEMORY PARITY ERROR Подчиненный пытается читать расширенную память, но обнаружил ошибку паритета. Главный может повторить запрос, но обычно в таких случаях требуется ремонт.

         

          ФУНКЦИЯ ДИАГНОСТИКИ 08

          Функция 08 — Диагностическая

          ОПИСАНИЕ

          Функция 08 обеспечивает серию тестов для проверки системы коммуникации между главным и подчиненным, или проверку на различные внутренние ошибки в подчиненном. Широкое вещание не поддерживается.

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

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

          ЭФФЕКТ ДИАГНОСТИКИ НА ПОДЧИНЕННОМ

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

          КАК ОРГАНИЗОВАНА ИНФОРМАЦИЯ В ДАННОМ РУКОВОДСТВЕ

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

          Список кодов подфункций поддерживаемых различными контроллерами приведен ниже после примера ответа на запрос.

          ЗАПРОС

          Это пример запроса подчиненному устройству на возврат данных переданных в запросе. Здесь используется код подфункции 0.

          Запрос

          Имя поля                                                                                              Пример (Hex)

          Адрес подчиненного                                                                           11

          Функция                                                                                              08

          Подфункция ст.                                                                                  00

          Подфункция мл.                                                                                 00

          Данные ст.                                                                                            A5

          Данные мл.                                                                                           37

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

           

          ОТВЕТ

          Нормальный ответ возвращает те же данные.

          Имя поля                                                                                              Пример (Hex)

          Адрес подчиненного                                                                           11

          Функция                                                                                              08

          Подфункция ст.                                                                                  00

          Подфункция мл.                                                                                 00

          Данные ст.                                                                                            A5

          Данные мл.                                                                                           37

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

           

          ДИАГНОСТИЧЕСКИЕ КОДЫ ПОДДЕРЖИВАЕМЫЕ КОНТРОЛЛЕРАМИ

          Код Имя                                                               383          484          584         884         M84       984

          00            Return Query Data                                               Y             Y             Y             Y             Y             Y

          01            Restart Comm Option                                           Y             Y             Y             Y             Y             Y

          02            Return Diagnostic Register                                   Y             Y             Y             Y             Y             Y

          03            Change ASCII Input Delimiter                              Y             Y             Y             N                            Y

          04            Force Listen Only Mode                                       Y             Y             Y             Y             Y             Y

          05-09      Зарезервированы

          10            Clear Ctrs and Diagnostic Reg.                             Y             Y             (1)           N             N             (1)

          11            Return Bus Message Count                   Y             Y             Y             N             N             Y

          12            Return Bus Comm. Error Count                           Y             Y             Y             N             N             Y

          13            Return Bus Exeption Error Count                        Y             Y             Y             N             N             Y

          14            Return Slave Message Count                 Y             Y             Y             N             N             Y

          15            Return Slave No Response Cnt                             Y             Y             Y             N             N             Y

          16            Return Slave NAK Count                                     Y             Y             Y             N             N             Y

          17            Return Slave Busy Count                                      Y             Y             Y             N             N             Y

          18            Return Bus Char. Overrun Cnt                             Y             Y             Y             N             N             Y

          19            Return Overrun Error Count                 N             N             N             Y             N             N

          20            Clear Overrun Counter and Flag                            N             N             N             Y             N             N

          21            Get/Clear Modbus Plus Statistic                           N             N             N             N             N             Y

          22 и далее Зарезервированы

          Примечание:

          (1) Только очистка счетчиков.

          ДИАГНОСТИЧЕСКИЕ ПОДФУНКЦИИ

          00 Return Query Data

          Данные расположенные в поле данных запроса должны быть возвращены в ответе. Ответ должен быть идентичен запросу.

          Подфункция         Поле данных(Запрос)           Поле данных(Ответ)

          00 00                      Любое значение                    Повтор данных запроса

          01 Restart Communication Option

          Периферийный порт подчиненного инициализируется и перезапускается, все коммуникационные счетчики очищаются. Если порт находится в режиме ‘Listen Only Mode’, ответ не возвращается. Если порт не находится в данном режиме, то возвращается нормальный ответ. Это делается перед рестартом.

          Когда подчиненный принимает запрос, он делает рестарт и запускает тесты, которые проводятся при включении питания. После удачного прохождения тестов порт переходит в режим готовности.

          Поле данных запроса содержит FF 00 Hex для очистки Коммуникационного Журнала Событий. Содержимое поля данных 00 00 оставляет журнал без изменений.

          Подфункция         Поле данных(Запрос)          Поле данных(Ответ)

          00 01                      00 00                                       Повтор данных запроса

          00 01                      FF 00                                      Повтор данных запроса

          02 Return Diagnostic Register

          Содержимое регистра диагностики подчиненного возвращается в ответе.

          Подфункция         Поле данных(Запрос)           Поле данных(Ответ)

          00 02                      00 00                                      Содержимое регистра диагностики

          КАК ОРГАНИЗОВАНЫ ДАННЫЕ РЕГИСТРА

          Назначение битов регистра диагностики показано ниже.

          184/384 Регистр диагностики

          Бит                         Описание

          0                             Continue on Error

          1                             Run Light Filed

          2                             T-Bus Test Filed

          3                             Asynchronous Bus Test Failed

          4                             Force Listen Only Mode

          5                             Не используется

          6                             Не используется

          7                             ROM Chip 0 Test Failed

          8                             Continuos ROM Cheksum Test in Execution

          9                             ROM Chip 1 Test Failed

          10                           ROM Chip 2 Test Failed

          11                           ROM Chip 3 Test Failed

          12                           RAM Chip 5000-53FF Test Failed

          13                           RAM Chip 6000-67FF Test Failed, Even Adresess

          14                           RAM Chip 6000-67FF Test Failed, Odd Adresess

          15                           Timer Chip Test Filed

          484 Регистр диагностики

          Бит                         Описание

          0                             Continue on Error

          1                             CPU Test or Run Light Failed

          2                             Parallel Port Test Failed

          3                             Asynchronous Bus Test Failed

          4                             Timer 0 Test Filed

          5                             Timer 1 Test Filed

          6                             Timer 2 Test Filed

          7                             ROM Chip 0000-07FF Test Failed

          8                             Continuous ROM Checksum Test in Execution

          9                             ROM Chip 0800-0FFF Test Failed

          10                           ROM Chip 1000-17FF Test Failed

          11                           ROM Chip 1800-1FFF Test Failed

          12                           RAM Chip 4000-40FF Test Failed

          13                           RAM Chip 4100-41FF Test Failed

          14                           RAM Chip 4200-42FF Test Failed

          15                           RAM Chip 4300-43FF Test Failed

          584/984 Регистр диагностики

          Бит                         Описание

          0                             Illegal Configuration

          1                             Backup Cheksum Error in High-Speed RAM

          2                             Logic Checksum Error

          3                             Invalid Node Type

          4                             Invalid Traffic Cop Type

          5                             CPU/Solve Diagnostic Failed

          6                             Real Time Clock Failed

          7                             Watchdog Timer Failed-Scan Time exeeded 250ms

          8                             No End of Logic Node detected, or quantity of end of segment words (DOIO) does not match quantity

          of segments configured

          9                             Sate RAM Test Failed

          10                            Start of Network (SON) did not begin network

          11                           Bad Order of Solve Table

          12                           Illegal Peripherial Intervention

          13                           Dim Awareness Flag

          14                           Не используется

          15                           Peripherial Port Stop Executed, not an error

          884 Регистр диагностики

          Бит                         Описание

          0                             Modbus IOP Overrun Errors Flag

          1                             Modbus Option Overrun Errors Flag

          2                             Modbus IOP Failed

          3                             Modbus Option Failed

          4                             Ourbus IOP Failed

          5                             Remote IO Failed

          6                             Main CPU Failed

          7                             Table RAM Checksum Failed

          8                             Scan Task exceeded its time limit-too much user logic

          9                             Не используется

          10                           Не используется

          11                           Не используется

          12                           Не используется

          13                           Не используется

          14                           Не используется

          15                           Не используется

          03 Change ASCII Input Delimeter

          Символ ‘CHAR’ Размещенный в поле данных запроса становится признаком конца сообщения в последующих обменах (заменяя символ LF).

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 03                      CHAR 00                               Повтор данных запроса

          04 Force Listen Only Mode

          Установка адресуемого подчиненного в режим Listen Only Mode. Это изолирует его от других устройств сети, позволяя иметь связь без прерывания с адресуемого подчиненного.

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

          Только одна функция может быть выполнена — это функция Restart Communication Option (код функции 8, подфункция 1).

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 04                      00 00                                       Ответ не возвращается

          10 (0A Hex) Clear Counters and Diagnostic Register

          Для контроллеров кроме 584 или 984, очищаются все счетчики и регистр диагностики. Для 584 или 984 очищаются только счетчики. Счетчики также очищаются при включении питания.

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 0A                     00 00                                       Повтор данных запроса

          11 (0B Hex) Return Bus Message Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 0B                      00 00                                      Повтор данных запроса

          12 (0C Hex) Return Bus Communication Error Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 0C                      00 00                                      Счетчик ошибок контр. суммы

          13 (0D Hex) Return Bus Exeption Error Count

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

          Сообщения об ошибках описаны в приложении А.

          Подфункция         Поле данных (Запрос)         Поле данных (Ответ)

          00 0D                     00 00                                      Счетчик ошибок

          14 (0E Hex) Return Slave Message Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 0E                      00 00                                      Счетчик сообщений подчиненного

          15 (0F Hex) Return Slave No Response Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 0F                      00 00                                      Счетчик сообщений подчиненного

          16 (10 Hex) Return Slave NAK Count

          Поле данных ответного сообщения содержит количество сообщений адресованных подчиненному, для которых был возвращен ответ с сообщением об ошибке типа Negative Acknowledge (NAK), после последнего рестарта, операции очистки счетчиков, или включения питания.

          Подфункция         Поле данных (Запрос)         Поле данных (Ответ)

          00 10                      00 00                                       Счетчик NAK сообщений

          17 (11 Hex) Return Slave Busy Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 11                      00 00 Счетчик ответов »      Устройство занято»

          18 (12 Hex) Return Bus Character Overrun Count

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 12                      00 00                                      Счетчик Slave Overrun

          19 (13 Hex) Return IOP Overrun Count (884)

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

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 13                      00 00                                       Счетчик Slave IOP Overrun

          20 (14 Hex) Clear Overrun Counter and Flag (884)

          Очищает счетчик 884-го Overrun Counter и сбрасывает флаг ошибки. Текущее значение флага располагается в бите 0 регистра диагностики (смотри подфункцию 02). Эта функция специфична для 884.

          Подфункция         Поле данных (Запрос)          Поле данных (Ответ)

          00 14                      00 00                                      Повтор данных запроса

          21 (15 Hex) Get/Clear Modbus Statistic

          Возвращает последовательность из 54 слов (108 байтов) в поле данных ответа. Данные содержат статистику Modbus Plus процессора подчиненного.

          В добавление к коду функции (08) и коду подфункции (00 15 Hex) следующие два байта в запросе специфицируют тип операции: ‘Взять статистику’ или ‘Очистить статистику’. Статистика может бать также очищена выключением питания.

          Поле типа операции:

          — 00 03 специфицирует операцию ‘Взять Статистику’

          — 00 04 специфицирует операцию ‘Очистить Статистику’

          ЗАПРОС: Это последовательность полей в запросе:

          Функция                Подфункция         Операция

          08                           00 15                      00 03       (Get Statistic)

          08                           00 15                      00 04       (Clear Statistic)

          ОТВЕТ НА ОПЕРАЦИЮ ВЗЯТЬ СТАТИСТИКУ: Это последовательность полей нормального ответа на операцию ‘Взять статистику’:

          Функция                Подфункция         Операция               Данные(108 байт)

          08                           00 15                      00 03                      Слова 00-53

          ОТВЕТ НА ОПЕРАЦИЮ ОЧИСТИТЬ СТАТИСТИКУ: Нормальный ответ на эту операцию повторяет запрос.

          Функция                Подфункция         Операция

          08                           00 15                      00 04

          Сетевая статистика Modbus Plus

          Слово     Биты                       начение

          00                                           Тип Узла

          0                             Незнакомый тип узла

          1                             Программируемый контроллер

          2                             Modbus Brige

          3                             Host — компьютер

          4                             Brige Plus

          5                             I/O узел

          01            0..11                       Номер версии программного обеспечения

          12..14                     Зарезервировано

          15                           Определяет значение слова 15

          (см. слово 15)

          02                                           Сетевой адрес для данной станции

          03                                           Установки MAC переменных

          0                             Состояние питания

          1                             Monitor offline state

          2                             Duplicate offline state

          3                             Состояние простоя

          4                             Use token state

          5                             Work response state

          6                             Pass token state

          7                             Solicit response state

          8                             Check pass state

          9                             Claim token state

          10                           Claim response state

          04                                           Peer status(LED code); определяет статус  данного блока относительно сети.

          0                             Monitor link operation

          32                           Normal link operation

          64                           Never getting token

          96                           Sole station

          128                         Duplicate station

          05                                           Счетчик символов; инкрементируется каждый раз когда станция принимает символ.

          06                                           Token rotation time in ms.

          07            Мл                         Data master failed during token owership bit map

          Ст                           Program master failed during token owership bit map

          08            Мл                         Data master token owner work bit map

          Ст                           Program master token owner work bit map

          09            Мл                         Data slave token owner work bit map

          Ст                           Program slave token owner work bit map

          10            Ст                           Data slave/get slave command transfer request bit map

          11            Мл                         Program master/get master rsp transfer request bit map

          Ст                           Program slave/get slave command transfer request bit map

          12            Мл                         Program master connect status bit map

          Ст                           Program slave automatic logout request bit map

          13            Мл                         Pretransmit deferral error counter

          Ст                           Receive buffer DMA overrun error counter

          14            Мл                         Repeated command received counter

          Ст                           Frame size error counter

          15            Если бит 15 слова 1 не установлен, содержание слова 15 следующее:

          Мл                         Receiver collision-abort error counter.

          Ст                           Receiver alignment error counter

          Если бит 15 слова 1 установлен, содержание слова 15 следующее:

          Мл                         Cable A framing error

          Ст                           Cable B framing error

          16            Мл                         Receiver CRC error counter

          Ст                           Bad packet-lenght error counter

          17            Мл                         Bad link-address error counter

          Ст                           Transmit buffer DMA-underrun error counter

          18            Мл                         Bad internal packet lenght error counter

          Ст                           Bad MAC function error counter

          19            Мл                         Communication retry counter

          Ст                           Communication failed error counter

          20            Мл                         Good receive packet error counter

          Ст                           No response received error counter

          21            Мл                         Exeption response received error counter

          Ст                           Unexpected path error counter

          22            Мл                         Unexpected response error counter

          Ст                           Forgotten transaction error counter

          23            Мл                         Active station table bit map, nodes 1..8

          Ст                           Active station table bit map, nodes 9..16

          24            Мл                         Active station table bit map, nodes 17..24

          Ст                           Active station table bit map, nodes 25..32

          25            Мл                         Active station table bit map, nodes 33..40

          Ст                           Active station table bit map, nodes 41..48

          26            Мл                         Active station table bit map, nodes 49..56

          Ст                           Active station table bit map, nodes 57..64

          27            Мл                         Token station table bit map, nodes 1..8

          Ст                           Token station table bit map, nodes 9..16

          28            Мл                         Token station table bit map, nodes 27..24

          Ст                           Token station table bit map, nodes 25..32

          29            Мл                         Token station table bit map, nodes 33..40

          Ст                           Token station table bit map, nodes 41..48

          30            Мл                         Token station table bit map, nodes

          Ст                           Token station table bit map, nodes 49..56

          31            Мл                         Global data present table bit map, nodes 1..8

          Ст                           Global data present table bit map, nodes 9..16

          32            Мл                         Global data present table bit map, nodes 17..24

          Ст                           Global data present table bit map, nodes 25..32

          33            Мл                         Global data present table bit map, nodes 33..40

          Ст                           Global data present table bit map, nodes 41..48

          34            Мл                         Global data present table bit map, nodes 49..56

          Ст                           Global data present table bit map, nodes 57..64

          35            Мл                         Receive buffer in use bit map, buffer 1..8

          Ст                           Receive buffer in use bit map, buffer 9..16

          36            Мл                         Receive buffer in use bit map, buffer 17..24

          Ст                           Receive buffer in use bit map, buffer 25..32

          37            Мл                         Receive buffer in use bit map, buffer 33..40

          Ст                           Station managment command processed initiation counter

          38            Мл                         Data master output path 1 command initiation counter

          Ст                           Data master output path 2 command initiation counter

          39            Мл                         Data master output path 3 command initiation counter

          Ст                           Data master output path 4 command initiation counter

          40            Мл                         Data master output path 5 command initiation counter

          Ст                           Data master output path 6 command initiation counter

          41            Мл                         Data master output path 7 command initiation counter

          Ст                           Data master output path 8 command initiation counter

          42            Мл                         Data slave input path 41 command processed counter

          Ст                           Data slave input path 42 command processed counter

          43            Мл                         Data slave input path 43 command processed counter

          Ст                           Data slave input path 44 command processed counter

          44            Мл                         Data slave input path 45 command processed counter

          Ст                           Data slave input path 46command processed counter

          45            Мл                         Data slave input path 47 command processed counter

          Ст                           Data slave input path 48 command processed counter

          46            Мл                         Program master output path 81 command initiation counter

          Ст                           Program master output path 82 command initiation counter

          47            Мл                         Program master output path 83 command initiation counter

          Ст                           Program master output path 84 command initiation counter

          48            Мл                         Program master output path 85 command initiation counter

          Ст                           Program master output path 86 command initiation counter

          49            Мл                         Program master output path 87 command initiation counter

          Ст                           Program master output path 88 command initiation counter

          50            Мл                         Program slave input path C1 command processed counter

          Ст                           Program slave input path C2 command processed counter

          51            Мл                         Program slave input path C3 command processed counter

          Ст                           Program slave input path C4 command processed counter

          52            Мл                         Program slave input path C5 command processed counter

          Ст                           Program slave input path C6 command processed counter

          53            Мл                         Program slave input path C7 command processed counter

          Ст                           Program slave input path C8 command processed counter

           

            Функция ModBUS 24

            24 (18 Hex) Read FIFO Queue

            ОПИСАНИЕ

            Чтение содержимого очереди FIFO (регистры 4ХХХХ). Функция возвращает счетчик регистров в очереди, следом идут данные очереди. До 32 регистров могут быть считаны: счетчик, плюс 31 регистр данных очереди.

            Функция читает содержимое очереди, но не очищает ее.

            Функция поддерживается только на 984-785 контроллерах.

            ЗАПРОС

            Запрос специфицирует начальный регистр 4ХХХХ для чтения FIFO очереди. Это адрес регистра указателя использующегося в функциональных блоках FIN и FOUT контроллеров.

            Ниже показан пример чтения FIFO очереди с подчиненного устройства 17. Чтение очереди начинается с регистра указателя 41247 (04DE Hex).

            Запрос

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              18

            Адрес указателя FIFO ст.                                                                  04

            Адрес указателя FIFO мл.                                                                 DE

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

             

            ОТВЕТ

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

            Счетчик байтов очереди содержит количество регистров данных в очереди (не включая счетчик).

            Если счетчик очереди содержит число больше 31, то в ответе возвращается код ошибки 03 (Недопустимая величина данных).

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

            Ответ

            Имя поля                                                                                             Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              18

            Счетчик байт ст.                                                                                  00

            Счетчик байт мл.                                                                  08

            Счетчик FIFO ст.                                                                                00

            Счетчик FIFO мл.                                                                03

            Регистр данных FIFO 1 ст.                                                 01

            Регистр данных FIFO 1 мл.                                                B8

            Регистр данных FIFO 2 ст.                                                 12

            Регистр данных FIFO 2 мл.                                                84

            Регистр данных FIFO 3 ст.                                                 13

            Регистр данных FIFO 3 мл.                                                22

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

             

            P.S. dr web security space 5 – антивирус, который лечит от вирусов. Комплексное противодействие интернет-угрозам в сочетании с дополнительной защитой от сетевых атак благодаря встроенному брандмауэру.

             

            Функция ModBUS 23

            23 (17 Hex) Read/Write 4X Registers

            ОПИСАНИЕ

            Производит операцию чтения и записи за одну MODBUS транзакцию. Функция может записывать новое содержание регистров 4ХХХХ и возвращать содержание другой группы регистров 4ХХХХ. Эта функция поддерживается только на 984-785 контроллерах.

            ЗАПРОС

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

            В примере, приведенном ниже требуется прочитать шесть регистров начиная с пятого, и записать три регистра начиная с 16, в подчиненном устройстве 17:

            Запрос

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           17

            Функция                                                                                              17

            Начальный регистр чтения ст.                                                          00

            Начальный регистр чтения мл.                                                         04

            Кол-во регистров для чтения ст.                                                       00

            Кол-во регистров для чтения мл.                                                      06

            Начальный регистр записи ст.                                                           00

            Начальный регистр записи мл.                                                          0F

            Кол-во регистров для записи ст.                                                       00

            Кол-во регистров для записи мл.                                                      03

            Счетчик байтов                                                                                   06

            Данные для записи 1 ст.                                                                     00

            Данные для записи 1 мл.                                                                    FF

            Данные для записи 2 ст.                                                                     00

            Данные для записи 2 мл.                                                                    FF

            Данные для записи 3 ст.                                                                     00

            Данные для записи 3 мл.                                                                    FF

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

             

            ОТВЕТ

            Нормальный ответ содержит данные прочитанных регистров.

            Ответ

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           17

            Функция                                                                                              17

            Счетчик байт                                                                                       0C

            Считанные данные 1 ст.                                                                      00

            Считанные данные 1 мл.                                                                     FE

            Считанные данные 2 ст.                                                                      0A

            Считанные данные 2 мл.                                                                     CD

            Считанные данные 3 ст.                                                                      00

            Считанные данные 3 мл.                                                                     01

            Считанные данные 4 ст.                                                                      00

            Считанные данные 4 мл.                                                                     03

            Считанные данные 5 ст.                                                                      00

            Считанные данные 5 мл.                                                                     0D

            Считанные данные 6 ст.                                                                      00

            Считанные данные 6 мл.                                                                     FF

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

             

            Функция ModBUS 22

            22 (16 Hex) Mask Write 4X Register

            Описание

            Модифицирует содержание регистров 4ХХХХ используя комбинацию OR-маску, AND-маску и текущего содержимого регистра. Функция может использоваться для установки или сброса отдельного бита в регистре.

            Функция поддерживается только 984-785 контроллерами.

            ЗАПРОС

            Алгоритм функции следующий:

            Результат=(Текущ. знач. AND Маска_И) OR (Маска_ИЛИ AND ~Маска_И)

            Например:                                             Hex                                         Двоичное

            Текущее значение                 12                                            0001 0010

            Маска_И                                               F2                                           1111 0010

            Маска_ИЛИ                                          25                                            0010 0101

            ~Маска_И                                             0D                                           0000 1101

            Результат                                              17                                            0001 0111

            Пример записи с маской в регистр 5 в подчиненное устройство 17, с приведенной выше маской описан ниже.

            Запрос

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           17

            Функция                                                                                              16

            Адрес ссылки ст.                                                                                 00

            Адрес ссылки мл.                                                                04

            Маска_И ст.                                                                                        00

            Маска_И мл.                                                                                       F2

            Маска_ИЛИ ст.                                                                                   00

            Маска_ИЛИ мл.                                                                                  25

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

             

            ОТВЕТ

            Нормальный ответ повторяет запрос. Ответ возвращается после записи в регистр.

            Ответ

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           17

            Функция                                                                                              16

            Адрес ссылки ст.                                                                                 00

            Адрес ссылки мл.                                                                 04

            Маска_И ст.                                                                                         00

            Маска_И мл.                                                                                        F2

            Маска_ИЛИ ст.                                                                                   00

            Маска_ИЛИ мл.                                                                                  25

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

            Функция ModBUS 21

            21 (15 Hex) Write general reference

            Описание

            Запись содержимого регистров в файл расширенной память (6ХХХХ).

            ЗАПРОС

            Запрос специфицирует группу или группы для записи, и данные которые содержатся в них.

            Запрос специфицирует группу или группы для чтения. Каждая группа определяется в поле «суб-запроса» которое содержит 7 байт:

            — Тип ссылки : 1 байт (должен быть специфицирован как 6)

            — Номер файла расширенной памяти: 2 байта (от 1 до 10)

            — Начальный адрес регистра внутри файла: 2 байта

            — Количество регистров для чтения: 2 байта.

            Количество регистров для записи, вместе с другими полями в ответе, не должно превышать допустимую длину MODBUS-сообщения: 256 байт.

            Доступное количество файлов расширенной памяти зависит от установленного размера расширенной памяти в подчиненном контроллере. Каждый файл, исключая последний, содержит 10000 регистров, адресуемых как 0000-270F Hex (0000-9999).

            Для контроллеров кроме 984-785:

            Размер расш. памяти                            Кол-во файлов                      Остаточные регистры

            16К                                                        2                                             6383

            32К                                                        4                                             2767

            64К                                                        7                                             5535

            96К                                                         10                                           8303

            Для контроллеров 984-785:

            984-785 с картриджем AS-M785-032:

            Польз.    Статич.

            логика    ОЗУ        Размер расш. пам  . Кол. файлов                        Ост. рег.

            32К         32К                         0                                             0                             0

            16К         64К                         72К                                        8                             3727

            984-785 c картриджем AS-M785-048:

            Польз.    Статич.

            логика    ОЗУ        Размер расш. пам.                Кол. файлов                          Ост. рег.

            48К         32К                         24К                                        3                             4575

            32К         64К                         96К                                        10                            8303

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

            В данном примере требуется записать одну группу в подчиненное устройство 17.

            Группа состоит из трех регистров в файле 4, начиная с регистра 8 (адрес 0007).

            Запрос

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              15

            Счетчик байт                                                                                        0D

            Суб-запрос 1, тип ссылки                                                                  06

            Суб-запрос 1, Номер файла ст.                                                         00

            Суб-запрос 1, Номер файла мл.                                                         04

            Суб-запрос 1, Начальный адрес ст.                                   00

            Суб-запрос 1, Начальный адрес мл.                                  07

            Суб-запрос 1, Кол-во регистров ст.                                  00

            Суб-запрос 1, Кол-во регистров мл.                                                03

            Суб-запрос 1, Данные регистра ст.                                                   06

            Суб-запрос 1, Данные регистра мл.                                  AF

            Суб-запрос 1, Данные регистра ст.                                                   04

            Суб-запрос 1, Данные регистра мл.                                  BE

            Суб-запрос 1, Данные регистра ст.                                                   10

            Суб-запрос 1, Данные регистра мл.                                  0D

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

             

            Ответ

            Нормальный ответ повторяет запрос.

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              15

            Счетчик байт                                                                                        0D

            Суб-ответ 1, тип ссылки                                                                    06

            Суб-ответ 1, Номер файла ст.                                                           00

            Суб-ответ 1, Номер файла мл.                                                          04

            Суб-ответ 1, Начальный адрес ст.                                                     00

            Суб-ответ 1, Начальный адрес мл.                                    07

            Суб-ответ 1, Кол-во регистров ст.                                                    00

            Суб-ответ 1, Кол-во регистров мл.                                                   03

            Суб-ответ 1, Данные регистра ст.                                                     06

            Суб-ответ 1, Данные регистра мл.                                                    AF

            Суб-ответ 1, Данные регистра ст.                                                     04

            Суб-ответ 1, Данные регистра мл.                                                    BE

            Суб-ответ 1, Данные регистра ст.                                                     10

            Суб-ответ 1, Данные регистра мл.                                                    0D

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

             

            Функция ModBUS 20

            20 (14 Hex) Read General Reference

            ОПИСАНИЕ

            Возвращает содержание регистров файла расширенной памяти (6ХХХХ). Широкое вещание не поддерживается.

            Функция может читать несколько групп. Группы могут быть разделены, но посылка внутри каждой группы должна быть непрерывной.

            ЗАПРОС

            Запрос специфицирует группу или группы для чтения. Каждая группа определяется в поле «суб-запроса» которое содержит 7 байт:

            — Тип ссылки : 1 байт (должен быть специфицирован как 6)

            — Номер файла расширенной памяти: 2 байта (от 1 до 10)

            — Начальный адрес регистра внутри файла: 2 байта

            — Количество регистров для чтения: 2 байта.

            Количество регистров для чтения, вместе с другими полями в ответе, не должно превышать допустимую длину MODBUS-сообщения: 256 байт.

            Доступное количество файлов расширенной памяти зависит от установленного размера расширенной памяти в подчиненном контроллере. Каждый файл, исключая последний, содержит 10000 регистров, адресуемых как 0000-270F Hex (0000-9999).

            Для контроллеров кроме 984-785:

            Размер расш. памяти                            Кол-во файлов                                     Остаточные регистры

            16К                                                        2                                             6383

            32К                                                        4                                             2767

            64К                                                        7                                             5535

            96К                                                        10                                           8303

            Для контроллеров 984-785:

            984-785 с картриджем AS-M785-032:

            Польз.    Статич.

            логика    ОЗУ        Размер расш. пам. Кол. файлов                          Ост. рег.

            32К         32К                         0                                             0                             0

            16К         64К                         72К                                        8                             3727

            984-785 c картриджем AS-M785-048:

            Польз.    Статич.

            логика    ОЗУ        Размер расш. пам. Кол. файлов                         Ост. рег.

            48К         32К                         24К                                        3                             4575

            32К         64К                         96К                                         10                           8303

            Пример чтения двух групп с подчиненного устройства 17 показан ниже.

            Группа 1 состоит из двух регистров из файла 4, начиная с регистра 2 (адрес 0001).

            Группа 2 состоит из двух регистров из файла 3, начиная с регистра 10 (адрес 0009).

            Запрос

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              14

            Счетчик байт                                                                                       0E

            Суб-запрос 1, Тип ссылки                                                  06

            Суб-запрос 1, Номер файла ст.                                                         00

            Суб-запрос 1, Номер файла мл.                                                        04

            Суб-запрос 1, Стартовый адрес ст                                    .               00

            Суб-запрос 1, Стартовый адрес мл.                                  01

            Суб-запрос 1, Кол-во регистров ст.                                  00

            Суб-запрос 1, кол-во регистров мл.                                 02

            Суб-запрос 2, тип ссылки                                                                  06

            Суб-запрос 2, Номер файла ст.                                                         00

            Суб-запрос 2, Номер файла мл.                                                        03

            Суб-запрос 2, Стартовый адрес ст.                                                   00

            Суб-запрос 2, Стартовый адрес мл.                                  09

            Суб-запрос 2, Кол-во регистров ст.                                  00

            Суб-запрос 2, кол-во регистров мл.                                 02

            Контрольная сумма (LRC или CRC)                                 —

             

            ОТВЕТ

            Нормальный ответ состоит из серии суб-ответов, один на каждый суб-запрос.

            Имя поля                                                                                              Пример (Hex)

            Адрес подчиненного                                                                           11

            Функция                                                                                              14

            Счетчик байт                                                                                        0E

            Суб-ответ 1, Счетчик байт                                                 0C

            Суб-ответ 1, Тип ссылки                                                                   06

            Суб-ответ 1, Данные регистра ст.                                                     0D

            Суб-ответ 1, Данные регистра мл.                                                    FE

            Суб-ответ 1, Данные регистра ст.                                                     00

            Суб-ответ 1, Данные регистра мл.                                                    20

            Суб-ответ 2, Счетчик байт                                                 05

            Суб-ответ 2, Тип ссылки                                                                   06

            Суб-ответ 2, Данные регистра ст.                                                     33

            Суб-ответ 2, Данные регистра мл.                                                    CD

            Суб-ответ 2, Данные регистра ст.                                                     00

            Суб-ответ 2, Данные регистра мл.                                                    40

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

             

            P.S. В настоящее время полотенцесушитель купить можно практически любой — от стандартного змеевика из толстостенной «чёрной», оцинкованной стали до моделей оригинальных форм с удобным креплением на стену. Наиболее популярными из них являются модели из нержавеющей стали.