TDM Electric ПЧ-00H75 SQ0749-0001 [6/12] Tdme ru

TDM Electric ПЧ-00H75 SQ0749-0001 [6/12] Tdme ru
tdme.ru
6
Проверка LRC – это значение, добавленное из Адреса в Содержание данных.
Например: проверка LRC приведенного в 3.3.1 запроса выглядит следующим образом:
01H + 03H + 21H + 02H + 00H + 02H = 29H, затем добавляется 2 (D7H).
Проверка CRC режима RTU
Проверка CRC из Адреса в Содержание данных, и ее правило работы выглядит следующим образом:
Шаг 1: Сделайте 16-битное временное хранилище (временное хранилище CRC) =FFFFH.
Шаг 2: Инструкция сообщения первого 8-битного байта операции исключающего ИЛИ, и временное
хранилище 16-битного CRC: Выполните операцию исключающего ИЛИ, и сохраните результат во вре-
менное хранилище CRC.
Шаг 3: Переместите временное хранилище CRC на один бит и введите 0 в позицию старшего бита.
Шаг 4: Проверьте значение сдвига вправо, если это 0, сохраните новое значение в Шаге 3 во времен-
ном хранилище CRC, или, в случае операции исключающего ИЛИ регистра со значением A001H и
временного хранилища CRC, сохраните результат во временном хранилище CRC.
Шаг 5: Повторите Шаги 3-4, и выполните полностью для 8 бит.
Шаг 6: Повторите Шаги 2-5 и возьмите инструкцию сообщения для следующих 8 битов, пока все ин-
струкции сообщений не будут полностью выполнены. В итоге, значение, полученное из временного
хранилища CRC будет являться Проверкой CRC. Стоит отметить, что проверка CRC должна быть по-
мещена взаимозаменяемо в режим проверки инструкции сообщения. Следующая информация явля-
ется примером работы Проверки CRC, написанной на языке С:
Беззнаковые символьные данные
//Указатель инструкции сообщения
Беззнаковая символьная длина
//Длина инструкции сообщения
{
int j;
unsigned int reg_crc=0XFFFF;
while( 1ength--) {
reg_crc^=*data;
for (j = 0; j<?; j ) {
if (reg_crc & Ox01) { /*LSB (b0) =1*/
reg_ere= (reg_crc>>1) ^OXa001;
}else{
reg_cre=reg_crc>>1;
}
}
retum reg_crc; //Finally feedback the value of CRC temporary storage
}
Скачать