Для чего нужна перестановка байт в CoDeSyS ? — АСУ ТП: сообщество инженеров

Для чего нужна перестановка байт в CoDeSyS ?

Коротко о статье

Статья объясняет, зачем в CoDeSyS нужна перестановка байт при обмене данными между устройствами с разным порядком байт. Показано, как через указатели в ST интерпретировать данные и преобразовывать два Word в Float.

Главное
  • Перестановка байт необходима для корректных показаний датчиков при сопряжении Master и Slave с разным порядком байт.
  • Число — абстрактное понятие, а данные — последовательность битов и байтов, хранимая в памяти.
  • Байт состоит из 8 битов, биты нумеруются справа налево: бит 0 младший, бит 7 старший.
  • Word — это два байта, Float — четыре байта.
  • Указатель — число, являющееся адресом в памяти; приведение указателя к типу задаёт интерпретацию данных.
  • С помощью указателей можно считывать по одному байту и преобразовать два Word в Float.
Термины и технологии
  • CoDeSyS
  • Master
  • Slave
  • Бит
  • Байт
  • Word
  • Float
  • ST
  • указатель

Кому полезно: Инженерам АСУ ТП, работающим с CoDeSyS и обменом данными между устройствами.

По теме на сайте

Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.

Xs6E4t7Vgos.jpg

В программной среде CoDeSyS перестановка байт требуется для правильных показаний датчиков при сопряжении двух устройств (Master и Slave), или когда на одном устройстве один порядок байт в слове, а втором другой. Компьютеры и оборудование, как и люди, разговаривают на разных языках. Одни хранят данные «слева направо», другие «справа налево». трудности возникают, когда требуется считать данные.

Всем привет!! Я решил написать небольшой минипост по теме перестановки байтов данных. Так как пытаюсь помочь себе разобраться в этом вопросе и считаю, что для вас эта информация будет не лишней. Честно говоря, я учился на энергетика, так что базовых знаний по программированию у меня к сожалению нет.

Всё приходится делать своими силами, и доходить приходится самому. Так что, где-то я могу ошибаться, но это ничего страшного. итак продолжим…

Циферки, числа, данные
Основная мысль заключается в понимании разницы между числами и данными вообще. Числа — это некие абстрактные понятия, исчисление чего-либо.

Возьмём число 10. Десять пальцев, десять яблок, десять корзинок, булочек и т.д. Понятие этого числа не изменяется, изменяется только его представление, римская цифра Х, машинная цифра в двоичной системе исчисления 1010 тоже «10».

А данные — это набор чисел, а так же и символов. Это некое машинное письмо. Ведь десять можно выразить и символами IO, и в форме записи на любом языке, или всё-таки значение в цифрах.

Другими словами данные — это последовательность битов и байтов, хранящихся на компьютере. Некая физическая величина. Процессор хранит данные в бинарной форме 0 и 1.

Процессоры говорят на разных языках, они имеют различные способы хранения абстрактного понятия числа «10».

Что хранит ПЛК?
В школе на уроках информатики нам говорили, что компьютер хранит данные в двоичной системе счисления. В виде нулей и единичек. Как происходит хранение данных.

  1. Самая первая и маленькая единица это Бит, он имеет два состояния 0 или 1.
  2. Байт это последовательность из 0 и 1. Байт состоит из 8 битов. То есть двоичная последовательность 10 является вот такой 00001010.

Биты нумеруются справа налево Бит 0 является младшим — это крайний правый, а бит 7 является старшим — это крайний левый.

А дальше мы с байтами поступаем как хотим, можно получить число Word — это два байта, или число Float — это 4 байта и т.д.

Машины отлично понимают, где находится «0» байт. И в каком порядке они начинают считаться. Ведь вроде бы все понятно с однобайтовыми системами. Но нет никакого соглашения в какой последовательности машины будут считать — в прямой или обратной.

Понятие указателя
Указатели являются ключевой частью программирования. Указатель представляет собой число, являющееся адресом в памяти. И это зависит только от нас (программистов), как интерпретировать данные по этому адресу.

В языке ST на CoDeSyS, когда вы приводите указатель к конкретному типу, это говорит компьютеру, как именно интерпретировать данные по этому адресу. Например, давайте объявим:

XVnrkbg-LAU.jpg

Это просто объявление указателя, теперь программист говорит ПЛК, что нужно указать на начало функции, и данные по этому адресу нужно интерпретировать как один символ (1 байт).

С помощью тех самых указателей мы можем проходиться по памяти считывать по одному байту за раз.

Таким образом мы можем преобразовать два Word’a (2 байта) в Float (4 байта).

Давайте сначала объявим переменные:

Re-I6auoEVA.jpg

Основная программа перестановки байт:

Re-I6auoEVA.jpg

В общем, как-то так. Если будут какие-то дополнения, пишите в комментариях.

Как я написал статью? Надеюсь понятно. Мне, честно говоря, тяжело даются эти понятия.

С уважением, Гридин Семён

Источник: http://kip-world.ru/dlya-chego-nuzhna-perestanovka-bajt-v-codesys.html

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

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.

Прокрутить вверх