Автор | Сообщение |
---|---|
admin | |
В программной среде CoDeSyS перестановка байт требуется для правильных показаний датчиков при сопряжении двух устройств (Master и Slave), или когда на одном устройстве один порядок байт в слове, а втором другой. Компьютеры и оборудование, как и люди, разговаривают на разных языках. Одни хранят данные «слева направо», другие «справа налево». трудности возникают, когда требуется считать данные. Всем привет!! Я решил написать небольшой минипост по теме перестановки байтов данных. Так как пытаюсь помочь себе разобраться в этом вопросе и считаю, что для вас эта информация будет не лишней. Честно говоря, я учился на энергетика, так что базовых знаний по программированию у меня к сожалению нет. Всё приходится делать своими силами, и доходить приходится самому. Так что, где-то я могу ошибаться, но это ничего страшного. итак продолжим... Циферки, числа, данные Возьмём число 10. Десять пальцев, десять яблок, десять корзинок, булочек и т.д. Понятие этого числа не изменяется, изменяется только его представление, римская цифра Х, машинная цифра в двоичной системе исчисления 1010 тоже «10». А данные — это набор чисел, а так же и символов. Это некое машинное письмо. Ведь десять можно выразить и символами IO, и в форме записи на любом языке, или всё-таки значение в цифрах. Другими словами данные — это последовательность битов и байтов, хранящихся на компьютере. Некая физическая величина. Процессор хранит данные в бинарной форме 0 и 1. Процессоры говорят на разных языках, они имеют различные способы хранения абстрактного понятия числа «10». Что хранит ПЛК?
Биты нумеруются справа налево Бит 0 является младшим — это крайний правый, а бит 7 является старшим — это крайний левый. А дальше мы с байтами поступаем как хотим, можно получить число Word — это два байта, или число Float — это 4 байта и т.д. Машины отлично понимают, где находится «0» байт. И в каком порядке они начинают считаться. Ведь вроде бы все понятно с однобайтовыми системами. Но нет никакого соглашения в какой последовательности машины будут считать — в прямой или обратной. Понятие указателя В языке ST на CoDeSyS, когда вы приводите указатель к конкретному типу, это говорит компьютеру, как именно интерпретировать данные по этому адресу. Например, давайте объявим: Это просто объявление указателя, теперь программист говорит ПЛК, что нужно указать на начало функции, и данные по этому адресу нужно интерпретировать как один символ (1 байт). С помощью тех самых указателей мы можем проходиться по памяти считывать по одному байту за раз. Таким образом мы можем преобразовать два Word'a (2 байта) в Float (4 байта). Давайте сначала объявим переменные: Основная программа перестановки байт: В общем, как-то так. Если будут какие-то дополнения, пишите в комментариях. Как я написал статью? Надеюсь понятно. Мне, честно говоря, тяжело даются эти понятия. С уважением, Гридин Семён Источник: http://kip-world.ru/dlya-chego-nuzhna-perestanovka-bajt-v-codesys.html |
|
Сообщения: 463 |