22
5) если сдвигаемый бит = 0, повторить шаг 3;
6) повторять шаги 3, 4, 5, пока не будут выполнены 8 сдвигов;
7) исключающее ИЛИ со следующими 8 битами байта сообщения и содержимым CRC регистра;
8) повторять шаги 3 – 7, пока все байты сообщения не будут обработаны;
9) конечное содержимое регистра будет содержать контрольную сумму.
Пример программы CRC генерации кода с использованием языка С. Функция имеет два аргумента:
- Unsigned char
*
data - указатель на буфер сообщения
- Unsigned char length - количество байт в буфере
Функция возвращает значение CRC как (unsigned int).
Unsigned int crc_chk(unsigned char* data, unsigned char length)
{int j; unsigned int reg_crc=0xFFFF;
while(length--)
{ reg_crc ^= *data++;
for(j=0;j<8;j++)
{ if(reg_crc & 0х01) reg_crc=(reg_crc>>1) ^ 0xA001; // LSB(b0)=1
else reg_crc=reg_crc>>1;
}
}
return reg_crc;
}
2.4.4.6 Адреса регистров
Адреса регистров измеряемых и вычисляемых параметров ОМ-310 приведены в таблице 1.4. Адреса ре-
гистров программируемых параметров приведены в таблице 1.5.
Дополнительные регистры и их назначение приведены в таблице 2.5.
Таблица 2.5
Наименование
Адрес Назначение
Примечание
Регистр состояния
ОМ-310 240
Bit 0 0-нет аварии
1-авария (код аварии в регистрах 241,
242)
Bit 1 0 - реле нагрузки выключено
1 - реле нагрузки включено
Bit 2 0–функциональное реле выключено
1 - функциональное реле включено
Bit 3 0 – повторного пуска не будет
1 – ожидается АПВ
Bit 6-
4
Режим работы функционального реле
000 - реле сигнализации
001 - реле времени
010 – дополнительной нагрузки
011 – реле сигнализации превышения
реактивной мощности
100 – реле сигнализации превышения
активной мощности
Bit 7 0 – режим РМКУП выключен
1 – режим РМКУП включен
Регистр аварии 1
241
назначение битов в таблицe 2.8
0-нет аварии
1-авария
Регистр аварии 2
242
назначение битов в таблицe 2.8
Журнал аварий
код аварии 1
243
код аварии по табл. 2.8
значение параметра 1
244
значение параметра по табл. 2.8
время аварии 1
245
старшие два байта
246
младшие два байта
код аварии 2
247
код аварии по табл. 2.8
значение параметра 2
248
значение параметра по табл. 2.8
время аварии 2
249
старшие два байта
250
младшие два байта
код аварии 3
251
код аварии по табл. 2.8
значение параметра 3
252
значение параметра по табл. 2.8
время аварии 3
253
старшие два байта
254
младшие два байта