Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: Контрольная сумма DCON

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Контрольная сумма DCON

    День добрый, пытаюсь считать значения входов МВА8 использую протокол DCON проблема с контрольной суммой, подскажите плиз по какому алгоритму она рассчитывается?

  2. #2

    По умолчанию

    2 алгоритма. Либо сумма всех символов, либо 8-битная CRC по алгоритму Dallas-semiconductors (используется в 1-wire)

  3. #3

    По умолчанию

    Большое спасибо. И еще один вопрос, символ # и завершающий (/х0D) в расчет не берутся?
    Последний раз редактировалось Vitto; 23.02.2009 в 06:09.

  4. #4

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    2 алгоритма. Либо сумма всех символов, либо 8-битная CRC по алгоритму Dallas-semiconductors (используется в 1-wire)
    Скажите, а результат применения обоих этих алгоритмов разве будет один и тот же?

    Вот немного непонятно тут, ведь контрольная сумма проверяется при получении на устройстве slave и если она не совпадает с указанной в пакете, то пакет просто игнорируется. Значит master каким-то образом сообщает slave'ам, по какому алгоритму он рассчитывает контрольную сумму. Сообщать slave'ам об используемом алгоритме не требуется только в случае, если результат применения обоих алгоритмов будет одинаковым.
    Последний раз редактировалось light_finder; 04.03.2009 в 19:03.

  5. #5
    Пользователь
    Регистрация
    08.01.2011
    Адрес
    Брянск
    Сообщений
    196

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    2 алгоритма. Либо сумма всех символов, либо 8-битная CRC по алгоритму Dallas-semiconductors (используется в 1-wire)
    я пока сам не полез в мануал, ничего из ответов форумчан не понял))

    по-простому: перевести все символы в код ASCII, а потом всё просуммировать (возврат каретки не суммировать)
    Если получился результат в котором три цифры, взять последние две цифры.

    Пример.

    КОД: @10FF (это замкнуть все выхода на релле МВ110-8Р)

    @ - 40
    1 - 31
    0 - 30
    F - 46

    имеем: 40+31+30+46+46 = 12D. Контрольная сумма 2D

    Итого: @10FF2D

    Если в сумме двухзначное число, брать двухзначное.

    Это под делфи (Delphi)...

  6. #6

    По умолчанию

    Начальный символ берётся, 0x0D нет.

  7. #7

    По умолчанию

    На будещее. Вдруг кто искать будет

    addrHex$ - адрес в HEX

    Код:
    For i = 1 To Len(addrHex$)
    
        chkSumInt = chkSumInt + Asc(Mid(addrHex$, i))
    
    Next i
    
    chkSumHex$ = Hex(chkSumInt Mod 256)
    в итоге в chkSumHex$ будем иметь контрольную сумму

  8. #8

    По умолчанию

    Ок. Большое всем спасибо! Буду пробовать.

  9. #9

    По умолчанию

    Всем день добрый. Все-таки решил работать с МВА8 по modbus. Все заработала с полпинка ))). Но теперь у меня другая проблема. Для начала приведу схему подключения МВА8 к SCADA системе в диспетчерской. МВА8(485)->(TCP/IP)GPRS->Internet<-диспетчер. Т.е. пишу сервер сбора данных расположенный на стороне диспетчера. Суть проблемы в том, что мне нужно идентифицировать МВА при первом его подключении. К примеру, у многих железяк есть возможность считать заводской номер и привязаться к нему. В случае с МВА придется отправлять запрос на чтение с перебором сетевого адреса. А это лишний трафик, да и время теряется… Может, у кого есть какие либо соображения по данной проблеме?

  10. #10

    По умолчанию

    Так заводской номер все равно надо читать с какого-то адреса. Может можно отвести под МВА заранее известные адреса и пользоваться только ими.

Страница 1 из 3 123 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •