Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 52

Тема: Помогите разобраться с блоком PUTBIT

  1. #1

    По умолчанию Помогите разобраться с блоком PUTBIT

    Добрый день.Я первый раз пишу небольшую программку для насосов.С блоками ознакомился все понятны.Кроме блоков битовые функции.
    В связи с этим вопрос где они применяются эти блоки в сетевых переменных то есть передачи данных с пр200 по мотбас в скаду или облако овен клауд.Или их можно использовать в с булевыми переменными?
    2.Вопрос как работает PUTBIT то что он записывает переписывает биты это понятно.Я не пойму как он физически может работать с булевыми переменными.Допустим как с помощью данного блока можно включить и выключить насос или включить и выключить лампочку.Операции с битами это как?Желательно на примере если можно.

  2. #2

    По умолчанию

    Так справку прочтите. PUTBIT записывает бит в переменную INT. а EXTRACT извлекает, это обратное действие. Применять можно во многих случаях. Можете упаковать несколько дискретных сигналов (бит) в INT , передать одним регистром по сети , регистр 2 байта или иными словами 16 бит. А потом извлечь и использовать по назначению. Те же лампочки включать например. 1 вкл, 0 выкл.

  3. #3

    По умолчанию

    Цитата Сообщение от Sergej_ Посмотреть сообщение
    Так справку прочтите. PUTBIT записывает бит в переменную INT. а EXTRACT извлекает, это обратное действие. Применять можно во многих случаях. Можете упаковать несколько дискретных сигналов (бит) в INT , передать одним регистром по сети , регистр 2 байта или иными словами 16 бит. А потом извлечь и использовать по назначению.
    Справку я читал там очень урезано написано.Пример не понятен.Как можно с помощью данных блоках управлять вкл и выключением насоса или дискретной логикой сменой насоса с 1го на 2й.

  4. #4

    По умолчанию

    Я не могу видеть что Вы удумали, но можно например так 0-й бит управляет 1 насосом , 1 бит вторым. Вы разберитесь что такое байт и все понятно станет.

  5. #5
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,128

    По умолчанию

    Цитата Сообщение от Андрей 77 Посмотреть сообщение
    Справку я читал там очень урезано написано.Пример не понятен.Как можно с помощью данных блоках управлять вкл и выключением насоса или дискретной логикой сменой насоса с 1го на 2й.
    Я же вам приводил картинку с примером.
    А так, у нас есть некоторая целочисленная переменная А которая отвечает за то какой из насосов будет работать. Если хотим, чтобы работал первый насос, в бит №0 этой переменной записываем единичку, не хотим чтобы работал - пишем нолик. То же самое со вторым насосом, но там пишем 1 или 0 в бит №1 этой переменной. Далее, у нас есть целочисленная переменная В, которая отвечает за аварии. Если первый насос находится в аварии, то пишем в бит №0 нолик, иначе пишем 1. Тоже самое с аварией второго насоса, бит №1, 0 - авария, 1 - нет аварии. Дальше мы выполняем логическую операцию И с переменными А и В, пусть это будет С. Логические операции с целочисленными переменными выполняются побитово, т.е. бит №0 переменной А перемножится с битом №0 переменной В, бит №1 переменной А с битом №1 переменной В и т.д. В результате мы получим следующий результат: допустим насос 1 должен работать (бит №0 переменной А = 1), но он находится в аварии (бит №0 переменной В = 0), тогда в переменной С бит №0 будет равен 0, т.е. в итоге насос нельзя запускать. Насос 2 тоже должен работать (бит №1 переменной А = 1) и он не находится в аварии (бит №1 переменной В = 1), тогда в переменной С бит №1 будет равен 1, что дает разрешение на работу насоса. Ну а на выходе мы просто извлекаем из С бит №0 и результат присваиваем его к выходу Насос 1, а бит №1 присваиваем выходу Насос 2.
    Ну и общая обработка: если С больше 0, то один или оба насоса работают, если В меньше 3, то имеется авария. А=1 - должен работать Насос 1, А=2 - должен работать насос 2, А=3 - должны работать оба насоса
    Последний раз редактировалось Dimensy; 16.12.2022 в 19:33.

  6. #6

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Я же вам приводил картинку с примером.
    А так, у нас есть некоторая целочисленная переменная А которая отвечает за то какой из насосов будет работать. Если хотим, чтобы работал первый насос, в бит №0 этой переменной записываем единичку, не хотим чтобы работал - пишем нолик. То же самое со вторым насосом, но там пишем 1 или 0 в бит №1 этой переменной. Далее, у нас есть целочисленная переменная В, которая отвечает за аварии. Если первый насос находится в аварии, то пишем в бит №0 нолик, иначе пишем 1. Тоже самое с аварией второго насоса, бит №1, 0 - авария, 1 - нет аварии. Дальше мы выполняем логическую операцию И с переменными А и В, пусть это будет С. Логические операции с целочисленными переменными выполняются побитово, т.е. бит №0 переменной А перемножится с битом №0 переменной В, бит №1 переменной А с битом №1 переменной В и т.д. В результате мы получим следующий результат: допустим насос 1 должен работать (бит №0 переменной А = 1), но он находится в аварии (бит №0 переменной В = 0), тогда в переменной С бит №0 будет равен 0, т.е. в итоге насос нельзя запускать. Насос 2 тоже должен работать (бит №1 переменной А = 1) и он не находится в аварии (бит №1 переменной В = 1), тогда в переменной С бит №1 будет равен 1, что дает разрешение на работу насоса. Ну а на выходе мы просто извлекаем из С бит №0 и результат присваиваем его к выходу Насос 1, а бит №1 присваиваем выходу Насос 2.
    Ну и общая обработка: если С больше 0, то один или оба насоса работают, если В меньше 3, то имеется авария. А=1 - должен работать Насос 1, А=2 - должен работать насос 2, А=3 - должны работать оба насоса
    Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?

  7. #7

    По умолчанию

    Цитата Сообщение от Андрей 77 Посмотреть сообщение
    Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?
    Бит имеет только два состояния 0 (FALSE - Ложь) и 1 (TRUE- Истина),
    Регистр (целое число), состоит из 16 бит ( с 0 по 15),
    включен 0 бит- 1, включен 1 бит- 2, включен 2 бит- 4, включен 3 бит- 8, включен 4 бит- 16, 5-32, 6-64, 7-128, 8-256, 9-512 и т. д.
    Число 7 например включены биты 0,1,2, а 8 - уже включён только бит 3.
    В Лоджике всё упрощено, вместо Бит = TRUE показывает 1.
    Для этого и существует упаковка битов в Маску (целое число) и распаковка.
    Последний раз редактировалось kondor3000; 17.12.2022 в 00:20.

  8. #8

    По умолчанию

    Цитата Сообщение от Андрей 77 Посмотреть сообщение
    Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?
    Вы разобрались с байтом? Применительно к ОЛ, в нем целочисленные переменные 32 разряда, т.е. 4 байта 32 бита с нумерацией от 0 младший, до 31 старший . PUBIT пишет значение бита в соответствующий разряд, совокупность всех 32 разрядов формирует число на выходе этого блока. Т.е. Вы можете упаковать 32 дискретных сигнала. Но в регистр, через который передается сетевая переменная в ПР 16 разрядный (сам регистр это не число, а ячейка памяти) в него 32 разряда не помещаются , это нужно учитывать.

  9. #9
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,128

    По умолчанию

    Цитата Сообщение от Андрей 77 Посмотреть сообщение
    Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?
    Вот еще раз картинка

    Безымянный.png

  10. #10

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Вот еще раз картинка

    Безымянный.png
    Вы не подскажите где эту переменную вы взяли?Screenshot_3789.jpgЯ сейчас скопировал ваш код и пробую его моделировать что бы понять что как работает.

Страница 1 из 6 123 ... ПоследняяПоследняя

Похожие темы

  1. ПР200 и PUTBIT
    от Safron в разделе Программируемые реле
    Ответов: 14
    Последнее сообщение: 24.10.2018, 13:52
  2. PutBit
    от Keldish в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 21.09.2015, 17:07
  3. ТРМ 148.Помогите разобраться.
    от VVS_123 в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 18.08.2015, 09:48
  4. Ответов: 5
    Последнее сообщение: 21.12.2014, 13:24
  5. Ответов: 1
    Последнее сообщение: 08.04.2013, 14:18

Ваши права

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