Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2010 15:10:41

krasoffski
От:
Зарегистрирован: 2010-03-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

MODBUS или заморочки с CRC

Настройки ком порта на обоих сторонах должны быть идентичны.
1) скорость
2) четность нечетность (pariry)
3) стоповые биты

Еще есть вероятность, неправильно считаешь CRC16 (не тот полином используешь)
В мадбасе есть команда для проверки связи с устройством. Код не помню, но смысл такой устройство отправляет то, что приняло, если CRC верен.
Если не секрет, что за прибор???

Я всегда высчитывал CRC по данной проге, если не оговаривалось исключений. Програ писалась для контроллера на с, но интерпретировать на python думаю не составит труда.

WORD CRC (BYTE *data, INT lenght)
{
INT i, j;
WORD CRC = 0xFFFF, bit;

for(i=0; i<lenght; i++)
{
CRC ^= (WORD)data[i];

for(j=0; j<8; j++)
{
bit = CRC & 0x0001;
CRC >>= 1;
if(bit) CRC ^= 0xA001;
}
}
return CRC;
}



Отредактировано (Дек. 9, 2010 15:12:29)

Офлайн

#2 Дек. 9, 2010 20:21:20

CryptSpirit
От:
Зарегистрирован: 2010-05-05
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

MODBUS или заморочки с CRC

pyuser спасибо завтра буду пробовать.

krasoffski
Настройки ком порта на обоих сторонах должны быть идентичны.
1) скорость
2) четность нечетность (pariry)
3) стоповые биты
Все делал как написано в документации к прибору.
krasoffski
Если не секрет, что за прибор???
Не секрет. UA-112
krasoffski
(не тот полином используешь)
Да черт его знает. Как понять то.
На осциллографе вроде галяк. Скорее всего разъем не так паяем.



Офлайн

#3 Дек. 10, 2010 08:28:31

CryptSpirit
От:
Зарегистрирован: 2010-05-05
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

MODBUS или заморочки с CRC

У меня вопрос. Будет ли работать тот код который я нацарапал?
pyuser, если можно то ссылки на документацию к МАК2000 (хочу сравнить описание к протаколам) либо пример использования класса mak2k()



Отредактировано (Дек. 10, 2010 08:31:41)

Офлайн

#4 Дек. 15, 2010 05:51:22

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

MODBUS или заморочки с CRC

документация у меня была в печатном виде и я вернул ее вместе с девайсом :(
использовать класс очень просто:
в конструктор передаются объект типа serial.Serial иID девайса (на одной шине может быть не один девайс)
метод append добавляет регистры, которые будут читаться (по сути важен только параметр item_register)
метод read читает в цикле каждый регистр
метод group_read читает все регистры сразу
соответственно для чтения используется или один или другой (group_read, понятно, более предпочтителен)
атрибут registers - результат чтения



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version