Показано с 1 по 10 из 25

Тема: Библиотеки сторонних разработчиков

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,108

    По умолчанию OSCATBasic CRC_GEN

    Функция CRC_GEN тип DWORD
    Входы
    PT : POINTER TO ARRAY OF BYTE (Пакет данных)
    SIZE : UINT (Размер массива)
    Настройки
    PL : UINT (Длина полинома)
    PN : DWORD (Полином)
    INIT : DWORD (Данные для инициализации)
    REV_IN : BOOL (Переставлять местами биты в байтах на входе)
    REV_OUT : BOOL (Переставлять местами биты в байтах на выходе)
    XOR_OUT : DWORD (Последнее XOR результата)
    Выходы
    CRC_GEN: DWORD (Вычисленное значение CRC)
    CRC_GEN генерирует контрольную сумму CRC для массива байтов произвольной длины. При вызове функции передаются указатель на обрабатываемый массив и его длина в байтах. В CoDeSys вызов производится как: CRC_GEN(ADR(Array), SIZEOF(Array),...), где Array - имя обрабатываемого массива. ADR является стандартной функцией, которая возвращает указатель на массив, а SIZEOF - стандартной функцией, вычисляющей размер массива. Полином PN может быть произвольным полиномом длиной максимум 32 бита.
    Полином X³ + X² + 1 представляется как 101 (1*X³ + 1*X² + 0*X¹ + 1* X⁰). Самый старший значащий бит, в данном случае 1*X³, в полиноме не задается, поскольку он всегда равен единице. Могут обрабатываться полиномы до X³² (CRC 32). С помощью значения INIT можно задать для CR начальное значение, обычно это 0000 или FFFF. Применяемое начальное значение в литературе обычно называют „Direct Initial Value“. Вход XOR_OUT задаёт последовательность битов, с которой контрольная сумма комбинируется операцией XOR в конце. Входы REV_IN и REV_OUT задают последовательность битов данных. Когда REV_IN = TRUE, каждый байт обрабатывается, начиная с LSB, а при REV_IN = FALSE - начиная с MSB. REV_OUT=TRUE соответствующим образом переворачивает последовательность битов в контрольной сумме. Для работы блока необходимо минимум 4 байта входных данных, верхним пределом является максимальная длина массива.
    Обыкновенно CRC_GEN вычисляет контрольную сумму, которая присоединеняется к оригинальному сообщению. Если теперь снова вычислить контрольную сумму сообщения вместе с присоединенной к нему контрольной суммой, то в результате получится 0.

    Для некоторых особых CRC, для которых это правило не выполняется, после приёма сообщения можно вычислить заново контрольную сумму всех полезных байтов без присланной контрольной суммы и затем сравнить с присланной контрольной суммой.
    Онлайн-вычисления для тестирования могут быть осуществлены следующей Java-утилитой: http://zorc.breitbandkatze.de/crc.html
    Большая таблица Распространенные CRC и полиномы:

    UPD
    Вложение можно скачать здесь
    https://drive.google.com/open?id=0B1...EJjVkI5NUEwOVU
    Вложения Вложения
    Последний раз редактировалось petera; 24.09.2018 в 13:41.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. Подключение к ЕКОН-134 сторонних приборов
    от pilot2 в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 13.01.2013, 11:23
  2. Ответов: 2
    Последнее сообщение: 30.06.2011, 09:45
  3. Ответов: 2
    Последнее сообщение: 16.01.2009, 00:32
  4. Opc-сервер сторонних разработчиков?
    от NSemenov в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 21.12.2007, 17:46
  5. Ответов: 5
    Последнее сообщение: 13.06.2007, 08:22

Ваши права

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