Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: 8- битные регистры типа Byte

  1. #1

    По умолчанию 8- битные регистры типа Byte

    Для управления шаговым приводом с по протоколу Модбас требуется использование 8 битных регистров типа (unsigned 8). Видимо, применительно к ПЛК-110 имеются в виду 8 битные регистры типа Byte.
    Вопрос - как ведется их счет при программировании? Никогда не приходилось применять их в таком виде.

  2. #2

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Выравниваются как и везде.
    word + byte = 2 regs //с неявным старшим байтом регистра 1
    word + byte + byte = 2 regs
    byte + word + byte = 3 regs //неявн. старшие байты регистров 0 и 2
    dword + byte + dword = 6 regs //неявн. старш. байт регистра 2 и целиком неявный регистр 3
    ...
    Спасибо. Видимо, я не совсем точно выразился - мне нужна адресация таких регистров в Modbus. как то - 0х300, 4х300 и так далее. Поскольку (применительно к СП300 ) они относятся к области памяти панели PSB, должны идти как 0х..., но тогда возникает путаница с однобитовыми флагами.
    Или когда поставлена функция записи для одних 0х0f, для других 0х71, они читаются по разному ? Но тогда как в самой панели их различить, если они будут проходить как PSB?

  3. #3

    По умолчанию

    Схема такая - в панель СП-307 вводятся данные , которые оттуда считывает ПЛК по одному Сом-порту и по другому в зависимости от сработавших датчиков передает в контроллер ШД по протоколу Моdbus RTU
    Контроллеру ШД требуются данные в 8 битном формате. В панели таких не предусмотрено.

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    речь скорее всего об 5 функции где различие как раз в одном байте (8 бит), тогда в панели можно посылать либо ноль либо 255
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    я имел ввиду это описание пятой функции: "Для флагов значение 0xFF00 означает включённое состояние, 0x0000 — выключенное, другие значения недопустимы. " Поэтому хоть речь и идет об одном бите но меняется байт в слове в самой посылке
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #6

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Да это я понял. Говорю что сама форма посылки для пользователя условно неизвестна. Этот 0000/FF00 не имеет никакого отношения к 8-битному формату данных на концах. Поэтому и спросил автора : WTF 8-битный формат ? В модбасе нет такого понятия. Есть 1 бит, много бит, регистр и много регистров. Всё. Если он скажет что только 5 и 15-ая, тогда понятно. А если бит за ради бита - то на кой ?
    Ну и причем тут биты в панели если на девайс отправляет плк ? (его слова ж)
    ПЛК , прежде чем отправить что то в девайс, должен получить это из панели.
    Разьясняю - есть девайс, который управляется по Modbus RTU с ПК, есть номера его регистров, в которые записываются команды и данные. Команды передаются битами, данные, естественно, Word и Dword. Все было бы нормально, но команды - не однобитовые, обозначаются номерами, которые в двоичном виде могут занимать несколько бит, и передаются восьмибитовыми регистрами , указано - типа Byte. Получается :
    1. Для каждой команды необходимо использовать один восьмибитовый регистр полностью, а не побитно.
    2. У ПЛК есть восьмибитовые регистры как раз типа Byte, которые обычно используются для передачи переменных типа BOOL в каждом бите, однако здесь нужно делать запись именно в целый 8 битный регистр - данные имеют вид числа от 0 до 100.
    При этом в описании написано, что используются функции 0х03, 0х06 и 0х10.
    Поэтому и возникает вопрос не о битах, много битах, а о регистре из 8 бит и как его считать в памяти панели и ПЛК.
    С панелью более менее ясно, оттуда можно забрать в Word , и уже в ПЛК преобразовать в Byte, там есть такая функция.
    Но вот как его считать в ПЛК - например, 4х25.1 и 4х 25.2 или что то подобное ?
    Видимо, нужно будет просто поэкспериментировать, и если не получиться напрямую , писать макрос.
    Последний раз редактировалось Р.Александр; 03.04.2019 в 19:07.

  7. #7

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Да это я понял. Говорю что сама форма посылки для пользователя условно неизвестна. Этот 0000/FF00 не имеет никакого отношения к 8-битному формату данных на концах. Поэтому и спросил автора : WTF 8-битный формат ? В модбасе нет такого понятия. Есть 1 бит, много бит, регистр и много регистров. Всё. Если он скажет что только 5 и 15-ая, тогда понятно. А если бит за ради бита - то на кой ?
    Ну и причем тут биты в панели если на девайс отправляет плк ? (его слова ж)
    ПЛК , прежде чем отправить что то в девайс, должен получить это из панели.
    Разьясняю - есть девайс, который управляется по Modbus RTU с ПК, есть номера его регистров, в которые записываются команды и данные. Команды передаются битами, данные, естественно, Word и Dword. Все было бы нормально, но команды - не однобитовые, обозначаются номерами, которые в двоичном виде могут занимать несколько бит, и передаются восьмибитовыми регистрами , указано - типа Byte. Получается :
    1. Для каждой команды необходимо использовать один восьмибитовый регистр полностью, а не побитно.
    2. У ПЛК есть восьмибитовые регистры как раз типа Byte, которые обычно используются для передачи переменных типа BOOL в каждом бите, однако здесь нужно делать запись именно в целый 8 битный регистр - данные имеют вид числа от 0 до 100.
    При этом в описании написано, что используются функции 0х03, 0х06 и 0х10.
    Поэтому и возникает вопрос не о битах, много битах, а о регистре из 8 бит и как его считать в памяти панели и ПЛК.
    Видимо, нужно будет просто поэкспериментировать, и если не получиться напрямую , писать макрос.

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Цитата Сообщение от Р.Александр Посмотреть сообщение
    ПЛК , прежде чем отправить что то в девайс, должен получить это из панели.
    Разьясняю - есть девайс, который управляется по Modbus RTU с ПК, есть номера его регистров, в которые записываются команды и данные. Команды передаются битами, данные, естественно, Word и Dword. Все было бы нормально, но команды - не однобитовые, обозначаются номерами, которые в двоичном виде могут занимать несколько бит, и передаются восьмибитовыми регистрами , указано - типа Byte. Получается :
    1. Для каждой команды необходимо использовать один восьмибитовый регистр полностью, а не побитно.
    2. У ПЛК есть восьмибитовые регистры как раз типа Byte, которые обычно используются для передачи переменных типа BOOL в каждом бите, однако здесь нужно делать запись именно в целый 8 битный регистр - данные имеют вид числа от 0 до 100.
    При этом в описании написано, что используются функции 0х03, 0х06 и 0х10.
    Поэтому и возникает вопрос не о битах, много битах, а о регистре из 8 бит и как его считать в памяти панели и ПЛК.
    Видимо, нужно будет просто поэкспериментировать, и если не получиться напрямую , писать макрос.
    как то Вы странно понимаете протокол модбас. Регистр это двухбайтовое слово, других типов данных у него быть не может
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  9. #9

    По умолчанию

    Да знаю я это все, не впервые . Не работает ничего, если брать как обычно. С собственного терминала от ПК работает, от ПЛК-110 не хочет. Причем посылки от терминала обычные, соответствуют Modbusу, я смотрел COM монитором. Остается, что регистры вообще ни при чем, у девайса капризный RS485, не через всякий адаптер работает, возможно, с портом ПЛК то же самое - он его просто не видит. Завтра попробую взять свободный ПЛК сваять что нибудь на RS-232, проверю так.

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    надо просто учитывать что проблема может скрываться как размещены байты в регистре
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 9
    Последнее сообщение: 03.08.2021, 22:27
  2. Собрать 5 BYTE в один REAL
    от ZPavel в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 06.01.2018, 19:46
  3. Склейка byte в int с редактированием
    от Атаман в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 09.12.2015, 17:11
  4. регистры
    от кубанец в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 13.05.2010, 15:17
  5. Ответов: 4
    Последнее сообщение: 25.12.2007, 10:56

Ваши права

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