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

Тема: Чтение битовой маски в коде c#

  1. #11
    Пользователь Аватар для k119_55524
    Регистрация
    24.04.2024
    Адрес
    Темиртау
    Сообщений
    7

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Что значит независимые? 32 битная переменная (два регистра по 16 бит) и есть "маска"



    Ну так data - это и есть маска в виде массива байт (два прочитанных 16 битных регистра)
    1. Если в конфигураторе отправить 1000(максимум) в коэффициент заполнения шим, то вход(ожидаемо) включится. Но при чтении из устройства бит маски регистра в 1 не переключается(скрин прилагаю). Подобную ситуацию можно назвать - не связаны, хотя по сути оба эти параметра управляют включением/отключением одного и тогоже физического выхода но разными путями. Тоесть я могу пользоваться управлением через параметры шим(вариант ReadHoldingRegisters). Понятно, что битовая маска более логична в использовании для простого управления выходами(шим какбы для другого)(вариант ReadCoils, но он как выше писали не поддерживается).
    Конфигуратор позволяет читать маску. Значит такая возможность есть, надеюсь она не секретная.
    Screenshot_10.png

    2. В моём случае(и других, рабочих, вариантов в интерфейсе библиотеки доступа к rs485 я не нашёл) ReadHoldingRegisters возвращает массив ushort размерностью 32(по количеству выходов на приборе). Это 16 х 32 = ..., тоесть больше чем 2 слова. И в массиве явно хранятся не битовые состояния маски а коэффициенты заполнения шим. Конечно, в итоге, можно интерпретировать этот массив в битовую маску но сдаётся мне что это не правильно. Правильно - прочитать битовую маску как есть. Я не знаю как это сделать. И в этом я прошу помощи.
    Последний раз редактировалось k119_55524; 25.04.2024 в 07:23.

  2. #12

    По умолчанию

    Цитата Сообщение от k119_55524 Посмотреть сообщение
    1. Если в конфигураторе отправить 1000(максимум) в коэффициент заполнения шим, то вход(ожидаемо) включится. Но при чтении из устройства бит маски регистра в 1 не переключается(скрин прилагаю). Подобную ситуацию можно назвать - не связаны, хотя по сути оба эти параметра управляют включением/отключением одного и тогоже физического выхода но разными путями. Тоесть я могу пользоваться управлением через параметры шим(вариант ReadHoldingRegisters). Понятно, что битовая маска более логична в использовании для простого управления выходами(шим какбы для другого)(вариант ReadCoils, но он как выше писали не поддерживается).
    Конфигуратор позволяет читать маску. Значит такая возможность есть, надеюсь она не секретная.
    Screenshot_10.png

    2. В моём случае(и других, рабочих, вариантов в интерфейсе библиотеки доступа к rs485 я не нашёл) ReadHoldingRegisters возвращает массив ushort размерностью 32(по количеству выходов на приборе). Это 16 х 32 = ..., тоесть больше чем 2 слова. И в массиве явно хранятся не битовые состояния маски а коэффициенты заполнения шим. Конечно, в итоге, можно интерпретировать этот массив в битовую маску но сдаётся мне что это не правильно. Правильно - прочитать битовую маску как есть. Я не знаю как это сделать. И в этом я прошу помощи.
    1. Насчет регистров параметров ШИМ - да, наверное они не связаны с регистром маски выходов.
    2. В запросе data = modbusMaster.ReadHoldingRegisters(addrDevice_MU110 _32, startAddress, countReg); вы что вообще указываете? Нужно указать startAddress = 50 (если я не ошибаюсь, это адрес 1-го регистра маски выходов) и countReg = 2 (два 16-битных регистра). Тогда вы получите data размером 4 со значением маски (тут не уверен, возможно будет размер 2 - надо смотреть библиотеку)
    Последний раз редактировалось 1exan; 25.04.2024 в 08:14.

  3. #13
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    стартадрес 97
    (32Р)

  4. #14

    По умолчанию

    Я же спрашивал: КАКОВ УРОВЕНЬ ЗНАНИЙ?!
    Нужно скачать самую свежую инструкцию на этот модуль и почитать её.
    Из этого узнаем, что:
    а) Если выставлено значение ШИМ - то управление по битовой маске не работает. Так сделано специально. Или ШИМ или Выкл-Выкл по маске, потому что это - разные действия.
    б) Модуль понимает команды протокола Modbus: Read Holding Registers (0x04) или Write Multiple Registers (0x16)
    в) Какие регистры модуля что означают (битовая маска - это регистры 97, 98 в десятичной системе счисления)

    Дальше надо реализовать это на нужном языке программирования. Всё.
    И вот тут не надо на меня за грубость ругаться. Я сначала спросил уровень знаний. Раз ничего явно не было сказано - то тогда уже получай ругань по полной. RTFM.
    Последний раз редактировалось Пантелеев Дмитрий; 25.04.2024 в 11:04.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

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

    По умолчанию

    k119_55524 иногда в приборах для работы через Coil надо посчитать под каким номером окажется bit в определенном регистре (применимо например в ПР). Но в плане модуля ввода/вывода скорее всего так нельзя, если маску положили в HoldingRegister то только так и можно прочитать. Дальше кодом сами уже гребете биты или записываете, и потом собранное отправляете в тот же Holding.

    поддержу Валенка, не надо строить гопника из себя, независимо от уровня знания. К тому же у человека нет проблем с C#, а есть непонимание других вещей.

  6. #16
    Пользователь Аватар для k119_55524
    Регистрация
    24.04.2024
    Адрес
    Темиртау
    Сообщений
    7

    По умолчанию

    Уважаемое сообщество - огромная благодарность Вам за помощь.

    1. История с чтением(записью) по адресам 97,98 работает. Там нашлась маска) Это то что я хотел получить и эти ответы максимально содержательны.
    2. Ни в коем случае не принижаю важность чтения документации. Тут вопрос целесообразности текущей ситуации. Думаю что вариант с форумом получился продуктивнее.
    3. Постараюсь оформить библиотеку для c# и выложить сюда ссылку на гит. Надеюсь наши знания пригодятся многим)

    Всем спасибо!!!

  7. #17
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Ни в коем случае не принижаю важность чтения документации. Тут вопрос целесообразности текущей ситуации.
    Причем в РЭ четко - 97..

    Думаю что вариант с форумом получился продуктивнее.
    Почти сутки ушли, продуктивнее...

  8. #18

    По умолчанию

    k119_55524 Всё, что надо было - ЧЁТКО сформулировать вопрос и свой уровень знаний!
    Жаль, что на это ушло так много времени, но хорошо, что понимание пришло!
    Так держать!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

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

Похожие темы

  1. Ответов: 15
    Последнее сообщение: 26.03.2023, 16:06
  2. Добавление выходных переменных в коде ST
    от Илья563 в разделе Программируемые реле
    Ответов: 10
    Последнее сообщение: 10.06.2022, 16:25
  3. Разбор битовой маски в ПР-200
    от Р.Александр в разделе Программируемые реле
    Ответов: 9
    Последнее сообщение: 31.12.2021, 13:20
  4. Чтение битовой маски TRM-1032
    от SergeyGushchin в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 15.12.2021, 08:44
  5. Распаковка битовой маски в Мастер скада
    от Александр N в разделе Master SCADA 3
    Ответов: 10
    Последнее сообщение: 02.09.2021, 08:04

Метки этой темы

Ваши права

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