ИЗМЕРЕНИЕ - НАША СТИХИЯ!
EMAIL: BAZA-KIP@NAROD.RU ICQ: 321-259-580
FAX: 8(10-1-712)781-73-07 РУКОВОДИТЕЛЬ ГРУППЫ ТЕСТИРОВАНИЯ
TEL: 8-903-044-82-60 ООО НПФ "ПРОМПРИБОР" МИРОНОВ ВАСИЛИЙ
Приборы
line decor
line decor

Протокол обмена информацией RNet :

1. Общие положения.

Приборы типа МЕТАКОН рассчитаны на подключение к ним по последовательному каналу RS-485 устройств двух типов:

§  соединение одного или нескольких приборов с одним специализированным устройством (устройства с жестким алгоритмом).

§  соединение одного или нескольких приборов с компьютером (устройства с мягким алгоритмом).

Под специализированными понимаются устройства, имеющие стандартизированный протокол обмена (изменить который нельзя) и гарантирующие свое функционирование совместно с любыми (в том числе и вновь разработанными) подчиненными приборами. Например, это могут быть устройства вывода данных измерения на принтер, преобразования их в токовые сигналы различных стандартов и т.д. Стандартизация специализированных устройств подразумевает обязательную поддержку устройств данного типа во вновь разрабатываемых приборах серии МЕТАКОН.

Параметры работы специализированных устройств могут задаваться через приборы типа МЕТАКОН, для чего в меню конфигурирования предусматриваются соответствующие пункты.

2. Физические характеристики канала передачи данных:

§  способ передачи - асинхронный полудуплекс;

§  скорость передачи выбирается из значений 2.4, 4.8, 9.6, 19.2 Кбод;

§  формат посылки фиксирован - один стартовый бит., восемь бит данных без проверки на четность, один стоповый бит;

§  максимальное количество устройств в одной сети без повторителей – 32;

§  максимальное расстояние передачи без повторителей – не более 1 км.

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

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

Способ представления информации - двоичный побайтовый; адреса или параметры, длина которых превышает 1 байт, передаются младшими байтами вперед.

Максимальная длина пакета – 38 байт.

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

Таблица 1. Перечень командных и ответных пакетов (в порядке следования).

Название поля

Условное обозначение

Длина поля, (байт)

Примечания.

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

DEV

1

Устанавливается при конфигурации прибора.

Поле адреса канала прибора

CHA

1

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

Поле адреса регистра

REG

1

Регистр – переменная или константа канала.

Поле команды

CMD

1

Двоичный код команды:

00h – чтение регистра, далее RD,

01h – запись регистра, далее WR.

Поле типа данных

TYP

1

Младшая тетрада содержит условный тип регистра (см. табл. 2), а старшие два бита определяют права доступа к регистру:

TYP.7=1 – регистр доступен по записи (W);

TYP.6=1 – регистр доступен по чтению (R).

Поле данных

DATA

1…32

Может отсутствовать (в зависимости от назначения пакета)

Поле контрольной суммы

CRC

1

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

 

Модель прибора со стороны УУ представляет собой набор регистров (переменных и констант различной длины и формата), читая и записывая которые УУ имеет возможность сбора информации и инициирования различных действий приборов.

 

Таблица 2. Перечень типизированных форматов данных.

Характеристика типа

Обозначение

Длина (байт)

Диапазон возможных значений

TYP.0…3

Булева переменная

Bool

1

00h = False, FFh = True

0

Беззнаковое байтовое

Ubyte

1

0...255

1

Знаковое байтовое

Byte

1

-128...127

2

Беззнаковое целое

Uint

2

0...65535

3

Знаковое целое

Int

2

-32768...32767

4

Беззнаковое длинное

Ulong

4

0...4294967295

5

Знаковое длинное

Long

4

-2147483648...2147483647

6

С плавающей точкой (формат IEEE)

Float

4

±1.2E-38 ... ±3.4E+38

7

С плавающей точкой (формат IEEE)

Double

8

±2.2E-308 ... ±1.8E+308

8

Нуль – терминированная строка

ASCIIZ

1…32, включая завершающий 0

Любая последовательность ASCII кодов, заканчивающихся нулем

9

 

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

Типичные сеансы связи УУ с прибором могут выглядеть следующим образом:

Операция чтения состояния регистра:

От УУ:               DEV.CHA.REG.RD.CRC

От прибора:        DEV.CHA.REG.RD.TYP.DATA.CRC

Операция установки состояния регистра:

От УУ:               DEV.CHA.REG.WR.TYP.DATA.CRC

От прибора:        DEV.CHA.REG.WR.CRC

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

 

После завершения передачи последнего байта командного пакета УУ ожидает поступления ответа от запрашиваемого прибора в течении:

 

TIMEOUT = 2*ONE_TIME + SIZE*ONE_TIME + 25 мс

 

где:

ONE_TIME - время передачи одного байта при выбранной скорости. Байт посылается 10-ю битами (1 стартовый бит + 8 бит данных + 1 стоповый бит), следовательно ONE_TIME = 10 / (скорость обмена, в бод);

SIZE - ожидаемый размер ответного пакета (в байтах);

25 мс - максимальное время реакции регулятора.

 

Если через TIMEOUT [мс] ответный пакет не поступает, то производятся еще 2 попытки, если они также заканчиваются неудачей, сеанс связи считается несостоявшимся.

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

Пакеты с некорректной контрольной суммой отбрасываются (считаются не поступившими).

Контрольная сумма вычисляется сверткой всех битов пакета (начиная с младшего бита первого байта) с полиномом X8+X5+X4+1. Алгоритм вычисления CRC приведен в приложении.

4. Регистровая модель канала.

Логическая (регистровая) модель канала является совокупностью регистров различного назначения, которые могут иметь различную длину и формат.

Адресное пространство регистров делится на две половины:

§  Область с адресами 00h - 7Fh предназначена для размещения регистровых блоков общего назначения, структура которых может быть различна у разных приборов и разных каналов (используется в устройствах с мягким алгоритмом).

§  Область с адресами 7Fh - FFh - стандартизирована, и содержит блоки регистров, структура и адреса которых жестко закреплены за конкретными типами специализированных устройств (используется в устройствах с жестким алгоритмом). Иначе говоря любое специализированное управляющее устройство обращается только к закрепленным за устройствами этого типа регистрам.

На данный момент разработано только одно специализированное управляющее устройство - адаптер принтера МЕТАПРИНТ. Для устройств этого типа отведены следующие регистры (табл. 3).

 

Таблица 3. Интерфейсные регистры специализированного управляющего устройства типа адаптера принтера.

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

Доступ

Тип

Назначение регистра.

80h

R

Int

Содержит результат измерения данного канала (то, что печатается)

81h

R

Ubyte

Содержит код периода вывода на печать результата измерения

82h

R

Ubyte

Содержит код положения десятичной точки

 

Со стороны УУ (устройства с мягким алгоритмом) каждый канал со своей определенной регистровой структурой имеет свой индивидуальный код, по которому УУ определяет тип этого канала. Регистр с адресом 00h всегда содержит константу этого кода. Регистровые модели каналов приборов типа МЕТАКОН-5Х2-ХХ-1, МЕТАКОН-535-1, МЕТАКОН-5Х4-ХХ-1, МЕТАКОН-5Х3-ХХ-1, МЕТАКОН-613-ХХ-1, МЕТАКОН-614-ХХ-1, МЕТАКОН-515-Х-1 приведены в табл. 4 - 10.

 

Таблица 4. Регистровая модель одного канала приборов типа МЕТАКОН-5Х2-ХХ-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

00h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Параметр H

-999…9999

1,2,5,6,7

03h

RW

Int

Параметр h

-999…9999

1,2,5,6,7

04h

RW

Bool

Выход H

0h или FFh

4,7,8

05h

RW

Int

Параметр L

-999…9999

1,2,5,6,7

06h

RW

Int

Параметр l

-999…9999

1,2,5,6,7

07h

RW

Bool

Выход L

0h или FFh

4,7,8

Таблица 5. Регистровая модель одного канала приборов типа МЕТАКОН-535-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

01h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Уставка

-999…9999

1,2,5,6,7

03h

RW

Int

Ширина гистерезиса

0…255

1,2,5,6

04h

RW

Bool

Выход управления

0h или FFh

4,7,8

 


 

Таблица 6. Регистровая модель одного канала приборов типа МЕТАКОН-5Х4-ХХ-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

02h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Уставка ПДД регулятора

-999…9999

1,2,5,6

03h

RW

Uint

Зона пропорциональности

1…9999

1,2,5,6

04h

RW

Uint

Постоянная интегрирования

1…30000

5,6,9

05h

RW

Ubyte

Постоянная дифференцирования

0…255

5,6,9

06h

RW

Byte

Сигнал управления

-100…100

4,6,8,13

07h

R

Bool

Выход “Больше”

0h или FFh

4

08h

R

Bool

Выход “Меньше”

0h или FFh

4

09h

RW

Int

Уставка Н

-999…9999

1,2,5,6,7

0Ah

RW

Ubyte

Ширина гистерезиса Н

0…255

1,2,5,6

0Bh

RW

Bool

Выход Н

0h или FFh

4,7,8

0Ch

RW

Int

Уставка L

-999…9999

1,2,5,6,7

0Dh

RW

Ubyte

Ширина гистерезиса L

0…255

1,2,5,6

0Eh

RW

Bool

Выход L

0h или FFh

4,7,8

 

Таблица 7. Регистровая модель одного канала приборов типа МЕТАКОН-5Х3-ХХ-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

03h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Уставка ПИД регулятора

-999…9999

1,2,5,6

03h

RW

Uint

Зона пропорциональности

1…9999

1,2,5,6

04h

RW

Uint

Постоянная интегрирования

1…30000

5,6,9

05h

RW

Ubyte

Постоянная дифференцирования

0…255

5,6,9

06h

RW

Byte

Выходная мощность

-100…100

4,6,8,14

07h

R

Bool

Выход ШИМ+

0h или FFh

4

08h

R

Bool

Выход ШИМ-

0h или FFh

4

09h

RW

Int

Уставка Н

-999…9999

1,2,5,6,7

0Ah

RW

Ubyte

Ширина гистерезиса Н

0…255

1,2,5,6

0Bh

RW

Bool

Выход Н

0h или FFh

4,7,8

0Ch

RW

Int

Уставка L

-999…9999

1,2,5,6,7

0Dh

RW

Ubyte

Ширина гистерезиса L

0…255

1,2,5,6

0Eh

RW

Bool

Выход L

0h или FFh

4,7,8

 

Таблица 8 Регистровая модель одного канала приборов типа МЕТАКОН-614-ХХ-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

04h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Уставка ПДД регулятора

-999…9999

1,2,5,6

03h

RW

Uint

Зона пропорциональности

1…9999

1,2,5,6

04h

RW

Uint

Постоянная интегрирования

1…30000

5,6,9

05h

RW

Ubyte

Постоянная дифференцирования

0…255

5,6,9

06h

RW

Byte

Сигнал управления

-100…100

4,6,8,13

07h

R

Bool

Выход “Больше”

0h или FFh

4

08h

R

Bool

Выход “Меньше”

0h или FFh

4

09h

RW

Int

Параметр Н

-999…9999

1,2,5,6,7

0Ah

RW

Int

Параметр h

-999…9999

1,2,5,6,7

0Bh

RW

Bool

Выход Н

0h или FFh

4,7,8

0Ch

RW

Int

Параметр L

-999…9999

1,2,5,6,7

0Dh

RW

Int

Параметр l

-999…9999

1,2,5,6,7

0Eh

RW

Bool

Выход L

0h или FFh

4,7,8

0Fh

RW

Ubyte

Режим работы

0,1,2,4,6,8

5,7,8,10,11

10h

RW

Ubyte

Номер циклограммы

0…9

5,6

11h

RW

Ubyte

Номер участка циклограммы

0…9

5,6

12h

RW

Int

Начальное значение циклограммы

-999…9999

1,2,5,6

13h

RW

Ubyte

Условие начала циклограммы

0,1,2,3,4

5,10

14h

RW

Uint

Время текущего участка

0…9999

5,6,12

15h

RW

Int

Значение текущего участка

-999…9999

1,2,5,6

16h

RW

Ubyte

Состояние выходов d текущего участка

0…7

5,6,10

17h

R

Bool

Выход d0

0h или FFh

4

18h

R

Bool

Выход d1

0h или FFh

4

19h

R

Bool

Выход d2

0h или FFh

4

 

Таблица 9. Регистровая модель одного канала приборов типа МЕТАКОН-613-ХХ-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

05h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,4

02h

RW

Int

Уставка ПИД регулятора

-999…9999

1,2,5,6

03h

RW

Uint

Зона пропорциональности

1…9999

1,2,5,6

04h

RW

Uint

Постоянная интегрирования

1…30000

5,6,9

05h

RW

Ubyte

Постоянная дифференцирования

0…255

5,6,9

06h

RW

Byte

Выходная мощность

-100…100

4,6,8,14

07h

R

Bool

Выход ШИМ+

0h или FFh

4

08h

R

Bool

Выход ШИМ-

0h или FFh

4

09h

RW

Int

Уставка Н

-999…9999

1,2,5,6,7

0Ah

RW

Ubyte

Ширина гистерезиса Н

0…255

1,2,5,6

0Bh

RW

Bool

Выход Н

0h или FFh

4,7,8

0Ch

RW

Int

Уставка L

-999…9999

1,2,5,6,7

0Dh

RW

Ubyte

Ширина гистерезиса L

0…255

1,2,5,6

0Eh

RW

Bool

Выход L

0h или FFh

4,7,8

0Fh

RW

Ubyte

Режим работы

0,1,2,4,6,8

5,7,8,10,11

10h

RW

Ubyte

Номер циклограммы

0…9

5,6

11h

RW

Ubyte

Номер участка циклограммы

0…9

5,6

12h

RW

Int

Начальное значение циклограммы

-999…9999

1,2,5,6

13h

RW

Ubyte

Условие начала циклограммы

0,1,2,3,4

5,10

14h

RW

Uint

Время текущего участка

0…9999

5,6,12

15h

RW

Int

Значение текущего участка

-999…9999

1,2,5,6

16h

RW

Ubyte

Состояние выходов d текущего участка

0…7

5,6,10

17h

R

Bool

Выход d0

0h или FFh

4

18h

R

Bool

Выход d1

0h или FFh

4

19h

R

Bool

Выход d2

0h или FFh

4

 

Таблица 10. Регистровая модель одного канала приборов типа МЕТАКОН-515-Х-1.

Адрес

Доступ

Тип

Название регистра.

Диапазон допустимых значений

Примечание

00h

R

Ubyte

Код канала данного типа

64h

--

01h

R

Int

Результат измерения

-999…9999

1,2,3,15

02h

RW

Int

Основная уставка ПИД регулятора

-999…9999

1,2,5,6,16

03h

RW

Uint

Зона пропорциональности

1…9999

1,2,5,6

04h

RW

Uint

Постоянная интегрирования

1…9999

5,6,17

05h

RW

Uint

Постоянная дифференцирования

0…9999

5,6,20

06h

RW

Uint

Скорость изменения задания (рампа)

0…9999

5,6,18

07h

RW

Ubyte

Выходная мощность

0…100

5,6,15,19

08h

RW

Int

Уставка H компаратора H

-999…9999

1,2,5,6,7

09h

RW

Int

Уставка h компаратора H

-999…9999

1,2,5,6,7

0Ah

RW

Int

Уставка H компаратора L

-999…9999

1,2,5,6,7

0Bh

RW

Int

Уставка h компаратора L

-999…9999

1,2,5,6,7

0Ch

RW

Int

Уставка H компаратора F

-999…9999

1,2,5,6,7

0Dh

RW

Int

Уставка h компаратора F

-999…9999

1,2,5,6,7

0Eh

RW

Int

Дополнительная уставка 0 ПИД регулятора

-999…9999

1,2,5,6

0Fh

RW

Int

Дополнительная уставка 1 ПИД регулятора

-999…9999

1,2,5,6

10h

RW

Int

Дополнительная уставка 2 ПИД регулятора

-999…9999

1,2,5,6

11h

RW

Int

Дополнительная уставка 3 ПИД регулятора

-999…9999

1,2,5,6

12h

R

Bool

Выход H/ШИМ

0h или FFh

15

13h

R

Bool

Выход L

0h или FFh

15

14h

R

Bool

Выход F/АВАРИЯ

0h или FFh

15

Прибор МЕТАКОН-515-Х-1 дополнительно поддерживает скорости передачи 38.4, 57.6 и 115.2 Кбод.

 

Следующие примечания относятся ко всем вышеуказанным таблицам:

Примечание 1.          Физический смысл значения регистра зависит от типа используемого в приборе датчика и настроек прибора. Диапазон изменения может быть ограничен допустимыми значениями для конкретного типа датчика (см. Руководство по эксплуатации на данный прибор).

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

Примечание 3.          В случае возникновения аварийной ситуации в приборе (см. Руководство по эксплуатации на данный прибор) этот регистр содержит число -32768.

Примечание 4.          Содержимое регистра обновляется прибором 1 раз в секунду.

Примечание 5.          Значение регистра сохраняется в энергонезависимой памяти при отключении питания прибора.

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

Примечание 7.          Значение, записываемое в данный регистр, может быть изменено прибором в случае его несогласованности с другими параметрами прибора (см. Руководство по эксплуатации на данный прибор). При этом прибор не сигнализирует об ошибке.

Примечание 8.          Запись в данный регистр допустима, но прибор может изменить записанное значение в соответствии со своим алгоритмом и режимом работы (см. Руководство по эксплуатации на данный прибор).

Примечание 9.          Значение регистра задается в секундах.

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

Примечание 11.       Регистр 0Fh (Режим работы) в модификациях МЕТАКОН 61Х может принимать следующие значения: 0 - автоматический режим, 1 - ручной режим, 2 - режим автонастройки, 4 - режим однократного исполнения циклограммы, 6 - режим циклического исполнения циклограммы, 8 - режим паузы в циклограмме. Все остальные значения сигнализируют о режиме аварии. Прибор может быть в любой момент переведен в один из указанных режимов (кроме режима аварии) путем записи в регистр соответствующего значения.

Примечание 12.       Значение регистра измеряется в десятых долях минуты. Само значение регистра не содержит десятичной точки.

Примечание 13.       Содержимое регистра отображает длительность текущего выходного импульса в процентах от периода ШИМ.

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

Примечание 15.       Значение параметра обновляется 4 раза в секунду.

Примечание 16.       При включенной функции переключения уставок (см. Руководство по эксплуатации на данный прибор) регистр доступен только для чтения. Уровень задания ПИД регулятора в этом режиме определяется дополнительными уставками и комбинацией сигналов управления.

Примечание 17.       Значение регистра задается в 0.1*минут.

Примечание 18.       Значение регистра измеряется в 0.01*ед.изм./мин. При задании регистру значения 0 функция рампы отключена.

Примечание 19.       Запись в регистр происходит только при работе прибора в режиме ручного управления.

Примечание 20.       Значение регистра задается в 0.1*секунд.

5. Приложение.

 

Алгоритм расчета контрольной суммы.


Условные обозначения:

§  CRC - текущее значение контрольной суммы;

§  BYTES_CTR - счетчик байтов

§  BITES_CTR - счетчик битов;

§  BYTES - указатель на текущий обрабатываемый байт;

§  A, B, C - вспомогательные переменные;

§  P_LENGTH - длинна пакета без байта контрольной суммы;

§  Å - операция поразрядного сложения по модулю 2;

§  SHR - операция поразрядного сдвига на 1 бит в право;

§  A.0 - самый младший бит переменной A.

 

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

§  обнаруживает наличие любого нечетного количества ошибок;

§  все двойные ошибки;

§  любой блок ошибок длиной до 8 бит;

§  подавляющее большинство прочих более сложно распределенных ошибок.

 

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

 

На языке Basic

crc = &HFF                ;Принять контрольную сумму равной &HFF

For i = 1 To p_length     ;Цикл пока не обработаны все байты,

                          ; (p_length - длина сообщения в байтах)

 b = buffer(i)            ;Взять текущий байт сообщения

 For j = 1 To 8           ;Цикл по количеству битов в байте (8)

   a = b Xor crc          ;Логически сложить текущий байт с текущим значением crc

   c = (a And &H1)*128    ;Выделить младший бит результата

   If c = &H80 Then       ;Младший бит результата равен 1?

     crc = crc Xor &H18   ;Да. Логически сложить текущую crc с &H18

   End If

   crc = (crc / 2) Or c   ;Сдвинуть crc вправо на 1 бит с заполнением

                          ; старшего бита результатом предыдущих вычислений

   b = b / 2              ;Сдвинуть текущий байт на 1 бит вправо

                          ; с заполнением старшего бита нулем

 Next j                   ;Завершение цикла по количеству битов в байте

Next i                    ;Завершение цикла по длине сообщения.

 

На языке Pascal (Turbo Pascal, Delphi)

I,J: Integer;                        //Счетчики циклов

CRC: Byte;                           //Контрольная сумма

AUX,DAT: Byte;                       //Временные переменные

Frame: array [0..39] of Byte         //Сообщение

Length: Integer;                     //Длина сообщения (без контрольной суммы!)

 

CRC := $FF;                          //Инициализация контрольной суммы

for I := 0 to Length-1 do            //Цикл по длине сообщения

begin

  DAT := Frame[I];                   //Заполнение DAT символом из сообщения

  for J := 0 to 7 do                 //Цикл по байту сообщения (8 бит в байте)

  begin

    AUX := (DAT xor CRC) and 1;         //Вычисление контрольной суммы:

    if AUX = 1 then CRC := CRC xor $18; // xor – Исключающее ИЛИ

    CRC := CRC shr 1;                   // and/or – Логическое И/ИЛИ

    CRC := CRC or (AUX shl 7);          // shl/shr – Сдвиг влево/вправо, не

    DAT := DAT shr 1;                   // циклический, без переноса-заема

  end;                                  //Конец цикла по байту сообщения

end;                                    //Конец цикла по длине сообщения

 

На языке C (ANSI)

int I,J;                    //Счетчики циклов

unsigned char CRC;          //Контрольная сумма

unsigned char AUX,DAT;      //Временные переменные

unsigned char Frame[40]     //Сообщение

int Length;                 //Длина сообщения (без контрольной суммы!)

 

CRC=0xFF;                   //Инициализация контрольной суммы

for(I=0; I

{ DAT=Frame[I];             //Заполнение DAT символом из сообщения

 for(J=0; J<8; J++)         //Цикл по байту сообщения (8 бит в байте)

 { AUX=(DAT^CRC)&1;         //Вычисление контрольной суммы:

   if(AUX==1) CRC=CRC^0x18; // ^ – Исключающее ИЛИ

   CRC=CRC>>1;              // & / | – Логическое И/ИЛИ

   CRC=CRC|(AUX<<7);        // << / >> – Сдвиг влево/вправо, не

   DAT=DAT>>1;              // циклический, без переноса-заема

 }                          //Конец цикла по байту сообщения

}                           //Конец цикла по длине сообщения

В следующей таблице представлены результаты расчета контрольной суммы по указанному алгоритму (в HEX - формате) для однобайтовых сообщений. Поле “Байт” содержит сообщение, поле “CRC” – его контрольную сумму.

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

Байт

CRC

Байт

CRC

Байт

CRC

Байт

CRC

Байт

CRC

Байт

CRC

Байт

CRC

Байт

CRC

00

35

20

16

40

73

60

50

80

B9

A0

9A

C0

FF

E0

DC

01

6B

21

48

41

2D

61

0E

81

E7

A1

C4

C1

A1

E1

82

02

89

22

AA

42

CF

62

EC

82

05

A2

26

C2

43

E2

60

03

D7

23

F4

43

91

63

B2

83

5B

A3

78

C3

1D

E3

3E

04

54

24

77

44

12

64

31

84

D8

A4

FB

C4

9E

E4

BD

05

0A

25

29

45

4C

65

6F

85

86

A5

A5

C5

C0

E5

E3

06

E8

26

CB

46

AE

66

8D

86

64

A6

47

C6

22

E6

1

07

B6

27

95

47

F0

67

D3

87

3A

A7

19

C7

7C

E7

5F

08

F7

28

D4

48

B1

68

92

88

7B

A8

58

C8

3D

E8

1E

09

A9

29

8A

49

EF

69

CC

89

25

A9

06

C9

63

E9

40

0A

4B

2A

68

4A

0D

6A

2E

8A

C7

AA

E4

CA

81

EA

A2

0B

15

2B

36

4B

53

6B

70

8B

99

AB

BA

CB

DF

EB

FC

0C

96

2C

B5

4C

D0

6C

F3

8C

1A

AC

39

CC

5C

EC

7F

0D

C8

2D

EB

4D

8E

6D

AD

8D

44

AD

67

CD

02

ED

21

0E

2A

2E

09

4E

6C

6E

4F

8E

A6

AE

85

CE

E0

EE

C3

0F

74

2F

57

4F

32

6F

11

8F

F8

AF

DB

CF

BE

EF

9D

10

A8

30

8B

50

EE

70

CD

90

24

B0

07

D0

62

F0

41

11

F6

31

D5

51

B0

71

93

91

7A

B1

59

D1

3C

F1

1F

12

14

32

37

52

52

72

71

92

98

B2

BB

D2

DE

F2

FD

13

4A

33

69

53

0C

73

2F

93

C6

B3

E5

D3

80

F3

A3

14

C9

34

EA

54

8F

74

AC

94

45

B4

66

D4

03

F4

20

15

97

35

B4

55

D1

75

F2

95

1B

B5

38

D5

5D

F5

7E

16

75

36

56

56

33

76

10

96

F9

B6

DA

D6

BF

F6

9C

17

2B

37

08

57

6D

77

4E

97

A7

B7

84

D7

E1

F7

C2

18

6A

38

49

58

2C

78

0F

98

E6

B8

C5

D8

A0

F8

83

19

34

39

17

59

72

79

51

99

B8

B9

9B

D9

FE

F9

DD

1A

D6

3A

F5

5A

90

7A

B3

9A

5A

BA

79

DA

1C

FA

3F

1B

88

3B

AB

5B

CE

7B

ED

9B

04

BB

27

DB

42

FB

61

1C

0B

3C

28

5C

4D

7C

6E

9C

87

BC

A4

DC

C1

FC

E2

1D

55

3D

76

5D

13

7D

30

9D

D9

BD

FA

DD

9F

FD

BC

1E

B7

3E

94

5E

F1

7E

D2

9E

3B

BE

18

DE

7D

FE

5E

1F

E9

3F

CA

5F

AF

7F

8C

9F

65

BF

46

DF

23

FF

00

 

Еще один пример - типичный запрос на получение измеренного значения второго канала у прибора с адресом 1 выглядит в HEX – формате так:

Таблица 12.

DEV

CHA

REG

RD

CRC

01

01

01

00

0B

То же самое, но для прибора с адресом 2:

Таблица 13.

DEV

CHA

REG

RD

CRC

02

01

01

00

83

 

 

 

Hosted by uCoz