End0 – Инструкция по эксплуатации Delta Electronics VFD-B

Страница 127

Advertising
background image

127

Руководство по эксплуатации

Глава 8. Параметры

данных

‘0’
‘1’
‘0’

Число данных

‘0’
‘0’
‘1’

LRC CHK 1

‘F’

LRC CHK 0

‘6’

END1

CR

END0

LF

01H+03H+04H+01H+00H+01H=0AH,
2-ух дополнений отрицание 0AH есть F6H.

RTU режим:

ADR

01H

CMD

03H

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

21H
02H

Число данных

00Н

(Индекс слова)

02H

CRC CHK Low

6FH

CRC CHK High

F7H

CRC (циклическая проверка по избыточности) рассчитанная следующими шагами:
Шаг 1 : Загрузка 16-bit регистра (называемого CRC регистром) с FFFFH;
Шаг 2: Исключающее ИЛИ первому 8-bit байту из командного сообщения с байтом млад-

шего порядка из 16-bit регистра CRC, помещение результата в CRC регистр.

Шаг 3: Сдвиг одного бита регистра CRC вправо с MSB нулевым заполнением. Извлече-

ние и исследование LSB.

Шаг 4: Если LSB CRC регистра равно 0, повторите шаг 3, в противном случае исключаю-

щее ИЛИ CRC регистра с полиномиальным значением A001H.

Шаг 5: Повторяйте шаг 3 и 4, до тех пор, пока восемь сдвигов не будут выполнены. Затем,

полный 8-bit байт будет обработан.

Шаг 6: Повторите шаг со 2 по 5 для следующих 8-bit байтов из командного сообщения.
Продолжайте пока все байты не будут обработаны. Конечное содержание CRC регистра

CRC значение. При передачи значения CRC в сообщении, старшие и младшие байты значе-
ния CRC должны меняться, то есть сначала будет передан младший байт.

На следующем примере приведена CRC генерация с использованием языка С. Функция

берет два аргумента:

Unsigned char* data <- a pointer to the message buffer
Unsigned char length <- the quantity of bytes in the message buffer
The function returns the CRC value as a type of unsigned integer.
Unsigned int crc_chk(unsigned char* data, unsigned char length){int j;
unsigned int reg cre=0xFFFF;
while(length--){

reg_crc ^= *data++;

for(j=0;j<8;j++){

Advertising