End0 – Инструкция по эксплуатации Delta Electronics VFD-B
Страница 127
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++){