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

Тема: ПР102+ МВ110-32 H/W v2.0

  1. #1

    По умолчанию ПР102+ МВ110-32 H/W v2.0

    Здравствуйте коллеги.
    Столкнулся с обновленными модулями ввода.
    На старых модулях ПР опрашивал модуль по двум регистрам 99, входа 1-16 и 100, входа 17-37 соответсвенно.
    А вот теперь опрос идет по сдвоенному регистру, т.е. DWORD 99, входа 1-32, а иначе связи с модулем нет, модуль ввода уходит в аварию (нет опроса).

    Моя проблема заключается в том, как теперь, по битово разобрать DWORD?
    Ранее я пользовался макросом WORD IN BOOL, в основу которого входит макрос EXTRACT но он рассчитан на 16 бит.
    Я пробовал модернизировать подставляя 16, 17... 31, получался какой то бред.
    Изображения Изображения

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

    По умолчанию

    сдвиг + add

    так вы же читаете, а не пишите

  3. #3

    По умолчанию

    Цитата Сообщение от Serjay Посмотреть сообщение
    Здравствуйте коллеги.
    Столкнулся с обновленными модулями ввода.
    На старых модулях ПР опрашивал модуль по двум регистрам 99, входа 1-16 и 100, входа 17-37 соответсвенно.
    А вот теперь опрос идет по сдвоенному регистру, т.е. DWORD 99, входа 1-32, а иначе связи с модулем нет, модуль ввода уходит в аварию (нет опроса).

    Моя проблема заключается в том, как теперь, по битово разобрать DWORD?
    Ранее я пользовался макросом WORD IN BOOL, в основу которого входит макрос EXTRACT но он рассчитан на 16 бит.
    Я пробовал модернизировать подставляя 16, 17... 31, получался какой то бред.
    Что за ерунда, EXTRACT может извлекать все с 0 по 31 бит. У вас где то ошибка, если не работает.
    На языке ST ещё проще, , биты извлекаются через точку из Маски DWORD. Сделать ФБ и записать в одну, две строки можно.
    b0:=Mask.0; b1:=Mask.1; b2:=Mask.2;.........b31:=Mask.31;
    Последний раз редактировалось kondor3000; 25.05.2024 в 10:46.

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

    По умолчанию

    Чтобы не создавать лишних макросов и т.д. ставите два Word_To_Bool, на первый (0-15) просто подаете число, на второй перед подачей числа сдвиньте его вправо на 16 бит SHR и получите на выходе 16-31 биты.

    зачем все усложнять созданием лишних макросов, когда в системе для таких вещей вполне все предусмотрено?

  5. #5

    По умолчанию

    Спасибо.
    Ранее просто так тесно не работал с битами.

  6. #6

    По умолчанию

    Вот блин, я забыл, что ПРка поддерживает ST.

  7. #7

    По умолчанию

    Проверил, можно и не писать новый блок, а на 2 экземпляр подать Маску DWORD (Udint) через функцию. 1 Биты в ПР.jpg
    Или просто вставить строку W:=SHR(W1,16); в ФБ на ST. Всё работает
    Код:
    function SHR16: udint; //имя функции и тип данных выхода
        var_input 
          W : udint; //входная переменная с типом данных udint       
        end_var       
        
        SHR16:=SHR(W,16);
    end_function
    Последний раз редактировалось kondor3000; 25.05.2024 в 12:42.

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

    По умолчанию

    лучше сделайте блок на 8 выходов и дополнительный вход для сдвига. А сдвиг встройте внутрь.

  9. #9
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,434

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    лучше сделайте блок на 8 выходов и дополнительный вход для сдвига. А сдвиг встройте внутрь.
    У меня настройки имеются в свойствах макроса, в смысле, настраивается какой бит извлекать на каждом выходе!
    И, сдвиг не нужен!

    Аварийный стоп с блокировкой + безопасное состояние выходов_2.owle
    Последний раз редактировалось Сергей0308; 25.05.2024 в 14:27.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  10. #10

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Что за ерунда, EXTRACT может извлекать все с 0 по 31 бит. У вас где то ошибка, если не работает.
    На языке ST ещё проще, , биты извлекаются через точку из Маски DWORD. Сделать ФБ и записать в одну, две строки можно.
    b0:=Mask.0; b1:=Mask.1; b2:=Mask.2;.........b31:=Mask.31;
    Не получается создать массив с udint.
    Изображения Изображения

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

Похожие темы

  1. Ответов: 7
    Последнее сообщение: 05.12.2022, 09:20
  2. ИПП 120 и ПР102
    от Работникк в разделе Программируемые реле
    Ответов: 4
    Последнее сообщение: 27.05.2022, 18:23
  3. ОЗУ ПР102
    от batur в разделе Программируемые реле
    Ответов: 18
    Последнее сообщение: 31.01.2022, 07:03
  4. Цикличная запись команды между ПР102-1 (Master) и ПР102-2 (Slave)
    от shprot в разделе Программируемые реле
    Ответов: 19
    Последнее сообщение: 10.05.2021, 11:33
  5. Ответов: 4
    Последнее сообщение: 11.09.2020, 14:33

Ваши права

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