26 марта 2010 г.

CoDeSys/TwinCAT: Функция ROR

Число 12345, отправленное с ПК с использованием, например, протокола Modbus TCP, принимается на удалённом ПЛК как 809041920? Если исключить возможные ошибки в реализации протокола связи, то проблему следует искать в различном аппаратном обеспечении, а именно в архитектуре процессоров двух обменивающихся данными устройств. Если речь идёт о промышленном компьютере, то это, вероятнее всего, — i86 или Arm. В случае с ПЛК — также i86 и Arm, или Motorola, Hitachi, Infineon и т.д.

Для решения проблемы приведения полученных данных к нормальному виду необходимо и достаточно применить стандартную функцию ROR(IN, N) — побитовый сдвиг IN право на N бит. Как это выглядит "на пальцах" — можно увидеть на картинке ниже. В нашем случае DWORD сдвигается на 16 бит, цифры принимают человеческий вид.

Комментариев нет:

Отправить комментарий