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

Тема: Работа с регистрами

  1. #1

    По умолчанию Работа с регистрами

    Здравствуйте. Возник вопрос:
    Есть СОМ порт 2 - мастер, протокол Modbus-RTU на СПК-107, к нему подключены 2 частотника ПЧ. Считываем в WORD-переменную один из регистров, в этом регистре зашиты первые 8бит это одно значение, вторые 8бит это другое значение.
    Как выделить из регистра только первые 8бит в переменную типа BYTE ?

  2. #2

    По умолчанию

    Our_Word:=Our_Word;(*Это наше слово*)
    (*Разбиваем его побитно*)
    IF (Our_Word AND 1)<>0 THEN bit_0:=TRUE; ELSE bit_0:=FALSE; END_IF;
    IF (Our_Word AND 2)<>0 THEN bit_1:=TRUE; ELSE bit_1:=FALSE; END_IF;
    IF (Our_Word AND 4)<>0 THEN bit_2:=TRUE; ELSE bit_2:=FALSE; END_IF;
    IF (Our_Word AND 8)<>0 THEN bit_3:=TRUE; ELSE bit_3:=FALSE; END_IF;
    и т д
    Our_BYTE:=Our_BYTE;(*Это наш байт*)
    (*Зашиваем наши биты в наш байт*)
    Our_BYTE:=0;(*Обнуляем чтоб сам сбрасывался в 0, когда нет выполнения условий*)
    IF bit_0 THEN Our_BYTE:=Our_BYTE OR 1; END_IF;
    IF bit_1 THEN Our_BYTE:=Our_BYTE OR 2; END_IF;
    IF bit_2 THEN Our_BYTE:=Our_BYTE OR 4; END_IF;
    IF bit_3 THEN Our_BYTE:=Our_BYTE OR 8; END_IF;
    +79104444236
    С уважением,
    Лапшин Вячеслав

  3. #3

    По умолчанию

    Не слишком понятно.

    По Modbus считываем регистр, состоящий из 16ти бит, в этих 16битах зашиты 2 значения, а нам нужно считать не 16, а первые 8 бит. И вот как это реализовать?

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

    По умолчанию

    Цитата Сообщение от REOLINE Посмотреть сообщение
    Не слишком понятно.

    По Modbus считываем регистр, состоящий из 16ти бит, в этих 16битах зашиты 2 значения, а нам нужно считать не 16, а первые 8 бит. И вот как это реализовать?
    вернитесь к урокам информатики и вспомните
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вернитесь к урокам информатики и вспомните
    Ваш инфрмативный ответ очень помог, спасибо!

  6. #6

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

    По умолчанию

    krollcbas какой-то извращенный метод определять все 8 бит побитно да еще и с эльзами и ифами....

  8. #8

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    krollcbas какой-то извращенный метод определять все 8 бит побитно да еще и с эльзами и ифами....
    Код получается компактным, легко модифицируемым и самодокументируемым.
    Я не делаю как Вы и это значит извращение?
    У каждого творческого человека (программиста) может существовать свой собственный стиль, лишь бы это приводило к желаемому результату.
    +79104444236
    С уважением,
    Лапшин Вячеслав

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

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Код получается компактным, легко модифицируемым и самодокументируемым.
    Я не делаю как Вы и это значит извращение?
    У каждого творческого человека (программиста) может существовать свой собственный стиль, лишь бы это приводило к желаемому результату.
    наверное он хотел сказать, что требовалось получить сразу байт, а не через биты, обычного смещения и маски было бы достаточно
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  10. #10
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    В третьем кодесисе операторы преобразования уже не работают?
    Код:
    VAR
    	LoBYTE: BYTE;
    	WordVal: WORD;
    END_VAR
    
    LoBYTE:= WORD_TO_BYTE(WordVal);
    ЗЫ
    Ну, и старший байт слова
    Код:
    VAR
    	LoBYTE, HiBYTE: BYTE;
    	WordVal: WORD;
    END_VAR
    
    LoBYTE:= WORD_TO_BYTE(WordVal);
    HiBYTE:= WORD_TO_BYTE(SHR(WordVal,8));
    Последний раз редактировалось petera; 26.12.2017 в 10:26.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

Похожие темы

  1. Проблема с регистрами ModBus (slave) ПЛК150
    от Silwer в разделе Помощь Разработчикам
    Ответов: 4
    Последнее сообщение: 12.02.2014, 11:25
  2. Помощь начинающему с регистрами ТРМ202
    от Дмитрий М в разделе Эксплуатация
    Ответов: 11
    Последнее сообщение: 18.05.2013, 09:48
  3. помогите с регистрами, запутался :)
    от anatolys в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 16.02.2012, 19:58
  4. проблема с регистрами плк - ип320
    от Сергей_Cyber в разделе Панели оператора (HMI)
    Ответов: 10
    Последнее сообщение: 15.09.2009, 08:32

Ваши права

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