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 байта входных данных, верхним пределом является максимальная длина массива.