Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: Номер бита в регистре при адресации к нему. Как указать номер бита в виде переменной?

  1. #11

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Daedal, вам надо сделать так: Проект - Опции - Генератор кода - поставить галочку Замена констант. И повторно выполнить компиляцию.
    Спасибо, для случая подстановки константы в качестве номера бита - помогло.

    А как сделать, чтобы :

    (* Индивидуальные настройки, полученные с modbus tcp *)
    FOR i:= 0 TO VDNUM DO
    VDARRAY[i].CmdIn.Hact := ACTUATORS_CMDIN_H.j; (* ACTUATORS_CMDIN_H - VD1..VD3 | KDYVD1..KDYVD3 | OZK1..OZK5 *)
    j:=j+1;
    END_FOR
    - ошибка 4027: требуется целое число или символьная константа
    j - была переменной и было без ошибок, подскажите, пожалуйста.

    Если инициализировать j в разделе:
    VAR_GLOBAL
    j : INT := 0;
    END_VAR
    , то ошибка остаётся.

    Как вообще в цикле перебирать номер бита в регистре? Детский вопрос, я не понимаю, почему так неочевидно-то всё это в codesys?!

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

    По умолчанию

    Цитата Сообщение от Daedal Посмотреть сообщение
    неочевидно-то всё это в codesys?!
    очень даже очевидно, написано же в выводе ошибки, целое число, либо переменная из области объявлений констант. Если в коде написать целое число, это тоже будет константа, и ни какая другая переменная, значение которой можно изменить из вне с нумерацией бит работать не будет.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #13

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    очень даже очевидно, написано же в выводе ошибки, целое число, либо переменная из области объявлений констант. Если в коде написать целое число, это тоже будет константа, и ни какая другая переменная, значение которой можно изменить из вне с нумерацией бит работать не будет.
    Т.е. в цикле не перебрать биты никак?!

  4. #14
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,317

    По умолчанию

    Цитата Сообщение от Daedal Посмотреть сообщение
    Т.е. в цикле не перебрать биты никак?!
    Посмотрите в библиотеке Util папку bit/byte functions.
    Описание доступно в справке Codesys.
    Изображения Изображения

  5. #15

    По умолчанию

    Цитата Сообщение от Daedal Посмотреть сообщение
    Т.е. в цикле не перебрать биты никак?!
    Чего вы зациклились на этой точке?
    Двоичную арифметику запретили что-ли?

    Подсказка: бит с номером j у BYTE/WORD/DWORD можно узнать с помощью операции SHR (операция побитового сдвига).

    Т.е. вам нужно не ACTUATORS_CMDIN_H.j , а SHR(ACTUATORS_CMDIN_H, j).0;

  6. #16

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Посмотрите в библиотеке Util папку bit/byte functions.
    Описание доступно в справке Codesys.


    Спасибо.Всё.Теперь я знаю.

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Чего вы зациклились на этой точке?
    Двоичную арифметику запретили что-ли?

    Подсказка: бит с номером j у BYTE/WORD/DWORD можно узнать с помощью операции SHR (операция побитового сдвига).

    Т.е. вам нужно не ACTUATORS_CMDIN_H.j , а SHR(ACTUATORS_CMDIN_H, j).0;
    арифметика арифметикой, но использование именованных констант, гораздо удобнее для той же отладки. В той же Яве с этим проблем нет, мало кто использует цвет цифровым представлением, все предпочитаютимя, например Color.GREY
    Поэтому смещение конечно надо знать, но и с именованием констант тоже не плохо получить практический опыт
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. ПЛК100-32 [М02] Номер сервиса:47, Номер ошибки 80
    от Allmax в разделе ПЛК1хх [М02]
    Ответов: 41
    Последнее сообщение: 27.12.2021, 20:02
  2. Адрес бита в панели
    от Stas в разделе Панели оператора (HMI)
    Ответов: 8
    Последнее сообщение: 19.02.2013, 14:21
  3. Слайдер и 32 бита
    от Columbariy в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 26.10.2012, 15:45
  4. Отображение состояния бита в слове
    от GSK в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 11.09.2012, 19:52
  5. изменение бита с панели и орс
    от николай72 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 28.05.2010, 21:17

Ваши права

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