Просмотр полной версии : Помогите разобраться с блоком PUTBIT
Андрей 77
16.12.2022, 18:04
Добрый день.Я первый раз пишу небольшую программку для насосов.С блоками ознакомился все понятны.Кроме блоков битовые функции.
В связи с этим вопрос где они применяются эти блоки в сетевых переменных то есть передачи данных с пр200 по мотбас в скаду или облако овен клауд.Или их можно использовать в с булевыми переменными?
2.Вопрос как работает PUTBIT то что он записывает переписывает биты это понятно.Я не пойму как он физически может работать с булевыми переменными.Допустим как с помощью данного блока можно включить и выключить насос или включить и выключить лампочку.Операции с битами это как?Желательно на примере если можно.
Так справку прочтите. PUTBIT записывает бит в переменную INT. а EXTRACT извлекает, это обратное действие. Применять можно во многих случаях. Можете упаковать несколько дискретных сигналов (бит) в INT , передать одним регистром по сети , регистр 2 байта или иными словами 16 бит. А потом извлечь и использовать по назначению. Те же лампочки включать например. 1 вкл, 0 выкл.
Андрей 77
16.12.2022, 18:27
Так справку прочтите. PUTBIT записывает бит в переменную INT. а EXTRACT извлекает, это обратное действие. Применять можно во многих случаях. Можете упаковать несколько дискретных сигналов (бит) в INT , передать одним регистром по сети , регистр 2 байта или иными словами 16 бит. А потом извлечь и использовать по назначению.
Справку я читал там очень урезано написано.Пример не понятен.Как можно с помощью данных блоках управлять вкл и выключением насоса или дискретной логикой сменой насоса с 1го на 2й.
Я не могу видеть что Вы удумали, но можно например так 0-й бит управляет 1 насосом , 1 бит вторым. Вы разберитесь что такое байт и все понятно станет.
Справку я читал там очень урезано написано.Пример не понятен.Как можно с помощью данных блоках управлять вкл и выключением насоса или дискретной логикой сменой насоса с 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 - должны работать оба насоса
Андрей 77
16.12.2022, 23:41
Я же вам приводил картинку с примером.
А так, у нас есть некоторая целочисленная переменная А которая отвечает за то какой из насосов будет работать. Если хотим, чтобы работал первый насос, в бит №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 передать через блок ИЛИ ?
kondor3000
17.12.2022, 00:02
Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока 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.
Для этого и существует упаковка битов в Маску (целое число) и распаковка.
Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?
Вы разобрались с байтом? Применительно к ОЛ, в нем целочисленные переменные 32 разряда, т.е. 4 байта 32 бита с нумерацией от 0 младший, до 31 старший . PUBIT пишет значение бита в соответствующий разряд, совокупность всех 32 разрядов формирует число на выходе этого блока. Т.е. Вы можете упаковать 32 дискретных сигнала. Но в регистр, через который передается сетевая переменная в ПР 16 разрядный (сам регистр это не число, а ячейка памяти) в него 32 разряда не помещаются , это нужно учитывать.
Спасибо за ответ я просто тогда не понял вашу логику с битовыми функциями с насосами.А вы в своем примере взяли целочисленная переменная А может это не а в вход Х блока PUTBIT вместо А?А это Х блока?А почему вы используете блок чтения бита EXTRACT когда же можно сигнал 1 или 0 передать через блок ИЛИ ?
Вот еще раз картинка
64603
Андрей 77
17.12.2022, 10:11
Вот еще раз картинка
64603
Вы не подскажите где эту переменную вы взяли?64604Я сейчас скопировал ваш код и пробую его моделировать что бы понять что как работает.
Вы не подскажите где эту переменную вы взяли? Я сейчас скопировал ваш код и пробую его моделировать что бы понять что как работает.
это константа - если В меньше трех, то имеется авария
Сергей0308
17.12.2022, 10:40
Вот еще раз картинка
64603
Для аварий(в подобных случаях) я обычно инверсию на выходе ставлю для целочисленной переменной, тогда один элемент может заменить собой до 32 элементов на входе.
Андрей 77
17.12.2022, 19:22
это константа - если В меньше трех, то имеется авария
Немного начал понимать.А зачем в этой логики использовать битовые функции если это же самое можно построить на обычных булевский переменных?
2й вопрос.Почему при нажатие кнопки пуск мы записываем в переменную А 1 то понимаем что включен насос, но при включение второго насоса на выходе блока PUTBIT появляется число 2?Я так понимаю то что на входе этого блока стоит 1 он ее записывает в ячейку памяти переменной?Он их как бы складывает?
Андрей 77 0-й бит = цифра 1, 1-й бит = цифра 2, 2-й бит = цифра 4. 0-й и 1-й биты = цифра 3
Сергей0308
17.12.2022, 19:38
Немного начал понимать.А зачем в этой логики использовать битовые функции если это же самое можно построить на обычных булевский переменных?
2й вопрос.Почему при нажатие кнопки пуск мы записываем в переменную А 1 то понимаем что включен насос, но при включение второго насоса на выходе блока PUTBIT появляется число 2?Я так понимаю то что на входе этого блока стоит 1 он ее записывает в ячейку памяти переменной?Он их как бы складывает?
Это весовые коэффициенты битов, то что мелкий привёл, в смысле, каждый бит соответствует значению своего весового коэффициента!
С помощью целочисленной логики, в частности функций вставки-извлечения бит, можно гораздо проще выполнить логику(алгоритм). Вот когда-то коммутатор делал, подходящий вариант для демонстрации преимуществ работы этих функций, пост 264: https://owen.ru/forum/showthread.php?t=12691&page=27
В, смысле, намного меньше требуется элементов! В десятки раз проще!
Немного начал понимать.А зачем в этой логики использовать битовые функции если это же самое можно построить на обычных булевский переменных?
2й вопрос.Почему при нажатие кнопки пуск мы записываем в переменную А 1 то понимаем что включен насос, но при включение второго насоса на выходе блока PUTBIT появляется число 2?Я так понимаю то что на входе этого блока стоит 1 он ее записывает в ячейку памяти переменной?Он их как бы складывает?
Пример просто демонстрирует работу с так называемой битовой маской. При написании алгоритма вы сами определяете как будет лучше - работа с маской или булевые функции
Андрей 77
17.12.2022, 19:45
Андрей 77 0-й бит = цифра 1, 1-й бит = цифра 2, 2-й бит = цифра 4. 0-й и 1-й биты = цифра 3
Где можно об этом почитать как эти биты считаются?Извините за тупизм просто пытаюсь это все обдумать.
Сергей0308
17.12.2022, 20:12
То есть как я понимаю эта функция для оптимизации когда что бы меньше памяти занимал код так как он упростится.Правильно я понимаю что 4й бит записывается в сигнал 1 для числа 38 когда появляется логическая 1 на входе данного блока?Зачем нам записывать биты в числа?Допустим 5 или 10 бит мы будем записывать в число 50 или 60 зачем это нужно?Тем более на рисунки указана сетевая переменная что бы могли передать нужное нам значения по сети?64607
Весовой коэффициент бита находится как два в степени n, где n - номер бита, диапазон 0-31.
Вы попробуйте тот же мой коммутатор на элементах "ИЛИ", "И", "НЕ" сделать, чтобы понятно стало, на практике это будет очень доходчиво, в смысле, сразу все сомнения отпадут!
И, такое впечатление, что у Вас интернета нет или Вам кто-то запрещает об этом прочитать, у меня например при выделении любого текста в контекстном меню есть пункт найти в интернете!
64609
kondor3000
17.12.2022, 21:41
Где можно об этом почитать как эти биты считаются?Извините за тупизм просто пытаюсь это все обдумать.
Открыть 1 страницу и прочитать мой вчерашний пост #7
keysansa
17.12.2022, 21:50
Для аварий(в подобных случаях) я обычно инверсию на выходе ставлю для целочисленной переменной, тогда один элемент может заменить собой до 32 элементов на входе.
Для аварий, инверсию ставят не в программе.
Где можно об этом почитать как эти биты считаются?Извините за тупизм просто пытаюсь это все обдумать.
Почитайте про позиционую системы исчисления. Причем разбирайте именно 10-тичную и именно как систему. Разберете - будете хоть с битами хоть тритами, хоть 27-ритами на ты.
биты в числа?Допустим 5 или 10 бит мы будем записывать в число 50 или 60 зачем это нужно?
Вы пишете не "в числа". Вы пишете в бит который находится кучке независимых бит. Просто эта кучка почему-то похожа на число.
Разберитесь, то такое бит, байт , что такое двоичная , десятичная, шестнадцатеричная системы счисления, хотя бы .
Пытаться разобраться с остальным не понимая основ не даст результат.
Так давайте не будем про регистр пока, регистр это ячейка памяти . У нас есть применительно к ОЛ переменная INT 32 разряда, в двоичной системе счисления. Младший с номером 0 старший 31. Про вес каждого разряда выше люди изложили.N на входе блока это номер этого разряда двоичного. Туда вы можете записать 0 или 1 . Иными словами значение поданное на вход х в десятичной системе удобной нам людям ,представляется в двоичной 32 битами , и вот именно в цепочке этих бит изменяется бит под номером N . Эти биты в совокупности образуют какое-то значение, мы видим его на выходе блока в десятичном представлении. На компе включите калькулятор в режиме программист , как то так, и переключая системы счисления все наглядно увидите.
.Получается мы этит блоком пишем в нужный нам регистр значения 1 или 0 то есть вкл или выкл?
Далее надо четко представлять что такое регистр, это не число , это ячейка памяти в которой хранятся эти самые биты. Они (регистры ) бывают разные. Если иметь ввиду регистры для сетевых переменных, то они 2байта размером. Есть ещё другие , для других целей,РЭ почитайте.
Андрей 77
18.12.2022, 18:58
Так давайте не будем про регистр пока, регистр это ячейка памяти . У нас есть применительно к ОЛ переменная INT 32 разряда, в двоичной системе счисления. Младший с номером 0 старший 31. Про вес каждого разряда выше люди изложили.N на входе блока это номер этого разряда двоичного. Туда вы можете записать 0 или 1 . Иными словами значение поданное на вход х в десятичной системе удобной нам людям ,представляется в двоичной 32 битами , и вот именно в цепочке этих бит изменяется бит под номером N . Эти биты в совокупности образуют какое-то значение, мы видим его на выходе блока в десятичном представлении. На компе включите калькулятор в режиме программист , как то так, и переключая системы счисления все наглядно увидите.
Спасибо за ответ я так и делал.В режиме программиста считал.Но мне важно понять если мы в разряд 4 пишем 1 а в этом разряде был 0 и мы ее поменяем на 1 то понятно что цифра в десятичном формате на выходе будет другая.Но что нам на выходе этого блока даст это число?Я могу посчитать запись в числе Х и поставить допустим значения бита 16 и посчитаю заранее какое будет число на выходе.Если мы в числе 38 в его ячейки 4м разряде поставим вместо 0 1 то на выходе у нас будет 54 так как 110110 в десятичном формате будет как раз таки и 54 но как мы этим самый сможем включить или отключить устройство?Я так понимаю что в 4м разряде мы 0 меняем на 1 и тем самым вкл или выкл устройство?
Спасибо за ответ я так и делал.В режиме программиста считал.Но мне важно понять если мы в разряд 4 пишем 1 а в этом разряде был 0 и мы ее поменяем на 1 то понятно что цифра в десятичном формате на выходе будет другая.Но что нам на выходе этого блока даст это число?Я могу посчитать запись в числе Х и поставить допустим значения бита 16 и посчитаю заранее какое будет число на выходе.Если мы в числе 38 в его ячейки 4м разряде поставим вместо 0 1 то на выходе у нас будет 54 так как 110110 в десятичном формате будет как раз таки и 54 но как мы этим самый сможем включить или отключить устройство?Я так понимаю что в 4м разряде мы 0 меняем на 1 и тем самым вкл или выкл устройство?
ну так, функцией EXTRACT мы и вытаскиваем нужный бит из числа
Сергей0308
18.12.2022, 21:36
64635Я понял как работает блок EXTRACT, посмотрите правильно я все посчитал?Но так и не понял на практики для чего он нужен.Я понимаю что он вытаскивает нужный нам бит из числа и мы можем тем самым выдать 1 или 0 на выходе тем самым вкл или выкл нагрузку.Но не пойму зачем в булевской логики его использовать может это больше для сети нужно?Я правильно понимаю что когда сетевая переменная читает состояния бита в ячейки и в зависимости в каком состояние находится ячейка 1или 0 сетевая переменная передает это в скаду и говори что устройство или вкл или выкл так получается?
Вы смотрели мой проект с коммутатором, я ссылку давал, там входные и выходные сигналы - булевы, этот пример наглядно на практике демонстрирует и показывает все его премущества, на худой конец, можно просто посмотреть как всё происходит, может сознание прояснится!
64635Я понял как работает блок EXTRACT, посмотрите правильно я все посчитал?Но так и не понял на практики для чего он нужен.Я понимаю что он вытаскивает нужный нам бит из числа и мы можем тем самым выдать 1 или 0 на выходе тем самым вкл или выкл нагрузку.Но не пойму зачем в булевской логики его использовать может это больше для сети нужно?Я правильно понимаю что когда сетевая переменная читает состояния бита в ячейки и в зависимости в каком состояние находится ячейка 1или 0 сетевая переменная передает это в скаду и говори что устройство или вкл или выкл так получается?
Одну и ту же задачу можно решить разными способами. Как именно поступить решает автор. Вам ведь никто не сказал, что нужно использовать только связку PUTBIT - EXTRACT, а всякие AND и OR - это моветон. Как вам удобно и понятно, так и решайте задачу
Андрей 77
18.12.2022, 22:05
Вы смотрели мой проект с коммутатором, я ссылку давал, там входные и выходные сигналы - булевы, этот пример наглядно на практике демонстрирует и показывает все его премущества, на худой конец, можно просто посмотреть как всё происходит, может сознание прояснится!
Да ваш проект смотрел и изучаю пока разобрал ваш макрос коммутатор стало понятно как формируются цифры на выходе при чтение ячейки битов.То есть при подачи 1 на во вторую ячейку у нас цифра 4 при подачи 1 в ячейку 3 у нас 8 он суммируются и при нажатие одновременно двух входо на выходе 12.Тоесть он читает состояние ячейки.Я сформировал число 10 селектором выбрал 3ю ячейку бита там записана 1 ее EXTRACT прочитал и вывел 1 и когда я селекторе выбрал ячейку 2 там записана 0 и выход выключился. 64638
Андрей 77
18.12.2022, 22:08
Одну и ту же задачу можно решить разными способами. Как именно поступить решает автор. Вам ведь никто не сказал, что нужно использовать только связку PUTBIT - EXTRACT, а всякие AND и OR - это моветон. Как вам удобно и понятно, так и решайте задачу
А вообще битовые функции для чего нужны для сетевых переменных или их задачи применимы везде?
А вообще битовые функции для чего нужны для сетевых переменных или их задачи применимы везде?
один из примеров https://owen.ru/forum/showthread.php?t=37017&p=393985&viewfull=1#post393985
Сергей0308
19.12.2022, 00:37
Да ваш проект смотрел и изучаю пока разобрал ваш макрос коммутатор стало понятно как формируются цифры на выходе при чтение ячейки битов.То есть при подачи 1 на во вторую ячейку у нас цифра 4 при подачи 1 в ячейку 3 у нас 8 он суммируются и при нажатие одновременно двух входо на выходе 12.Тоесть он читает состояние ячейки.Я сформировал число 10 селектором выбрал 3ю ячейку бита там записана 1 ее EXTRACT прочитал и вывел 1 и когда я селекторе выбрал ячейку 2 там записана 0 и выход выключился. 64638
Надеюсь понимаете как можно использовать этот макрос?
Например дискретные входа и выхода ПР можно подключать как угодно(как удобно), не глядя, потом программно, например с экрана, настроить соответствие!
Вы же наверняка даже не прочитали зачем чел этот макрос хотел!
А вообще битовые функции для чего нужны для сетевых переменных или их задачи применимы везде?
Дополню немного, в части сетевого обмена, максимально упрощённо: скажем 16 бит если будете передавать по сети одним INT это одна история и Вы одной посылкой передаёте эти 16 бита, если же передавать их по 1 биту это 16 посылок , т.е передав один и тот же объем информации затратите значительно больше времени, подробнее посмотрите про протокол модбас в интернете. Поэтому упаковка -распаковка полезная тема в этих случаях.
kondor3000
19.12.2022, 08:44
Дополню немного, в части сетевого обмена, максимально упрощённо: скажем 16 бит если будете передавать по сети одним INT это одна история и Вы одной посылкой передаёте эти 16 бита, если же передавать их по 1 биту это 16 посылок , т.е передав один и тот же объем информации затратите значительно больше времени, подробнее посмотрите про протокол модбас в интернете. Поэтому упаковка -распаковка полезная тема в этих случаях.
Это не только потеря времени, но и занятых регистров будет 16 из 64, применительно к ПР и Лоджику. Если упаковать 16 бит, будет занят только 1 регистр !
Это не только потеря времени, но и занятых регистров будет 16 из 64, применительно к ПР и Лоджику. Если упаковать 16 бит, будет занят только 1 регистр !
Разумеется Вы правы, не все сразу. ;)
Пусть человек с этим разберётся. Если все сразу вывалить в т.ч про упаковку нескольких значений в Инты, насколько позволяет диапазон этих значений с целью экономии регистров, может запутаться совсем, видите вчера еще путал понятия регистр -значения переменных, сегодня надеюсь уже разобрался. Главное есть желание, остальное приложиться. Сейчас интернет есть, не надо ехать в техническую библиотеку что то прочесть.
Андрей 77
19.12.2022, 21:44
Друзья спасибо все вам за ответы на мои глупые вопросы, вы мне очень помогли своими примерами.Вроде бы разобрался как паковать биты в битовую маску блоком PUTBIT и распаковывать нужные мне биты функц блоком EXTRACT тут пришло небольшое понимание что я могу упаковать два дискретных входных сигнала в битовую маску это число на выходе из блока PUTBIT и по средством преобразования блоком EXTRACT из этого числа прочитать нужный мне бит ячейки.Тем самым приходит понимания что какой бит я могу вкл и выключить.Да и передать нужные состояние входов и выходов по модбас.Я сделал так как у меня на скриншоте вроде бы правильно понял логику.64664А помог мне понять данные элементы более детально парень из компании Овен на Ютубе видео есть работа с масками.Он смог донести для таких как я бестолковых, простым языком.Без применения теории квантового поля и сингулярного состояния вещества на межатомном уровни.Это чтения нужным не битов 64665
Друзья спасибо все вам за ответы на мои глупые вопросы, вы мне очень помогли своими примерами.Вроде бы разобрался как паковать биты в битовую маску блоком PUTBIT и распаковывать нужные мне биты функц блоком EXTRACT тут пришло небольшое понимание что я могу упаковать два дискретных входных сигнала в битовую маску это число на выходе из блока PUTBIT и по средством преобразования блоком EXTRACT из этого числа прочитать нужный мне бит ячейки.Тем самым приходит понимания что какой бит я могу вкл и выключить.Да и передать нужные состояние входов и выходов по модбас.Я сделал так как у меня на скриншоте вроде бы правильно понял логику.64664А помог мне понять данные элементы более детально парень из компании Овен на Ютубе видео есть работа с масками.Он смог донести для таких как я бестолковых, простым языком.Без применения теории квантового поля и сингулярного состояния вещества на межатомном уровни.Это чтения нужным не битов 64665
На верхней картинке какую цель при распаковке преследовали? Если узнать что число отлично от нуля (иными словами все входы отключены или хотя бы один включен), то можно сделать гораздо проще, преобразовать INT в BOOL.
Без применения теории квантового поля и сингулярного состояния вещества на межатомном уровни не просто будет, даже думаю не обойтись :) , в библиотеке еще много ф. и фб кроме PUTBIT и EXTRACT не говоря о их применении.
Андрей 77
20.12.2022, 07:36
На верхней картинке какую цель при распаковке преследовали? Если узнать что число отлично от нуля (иными словами все входы отключены или хотя бы один включен), то можно сделать гораздо проще, преобразовать INT в BOOL.
не просто будет, даже думаю не обойтись :) , в библиотеке еще много ф. и фб кроме PUTBIT и EXTRACT не говоря о их применении.
На верхний картинки я немного тупанул.Я хотел выбирать с каждого выхода блока XTRACT нужный мне выход понял что не правильно сделал и разделил их по отдельности. Пока остальные ф.б не вызвали вопросов кроме дешифраторов и пид рег.Ну к этому я подойду я только интегрируюсь в среду разработки OWEN Logic .Я вот еще хотел спросить если на входе есть дискретный сигнал 1 он находится во второй ячейки то число у нас 4 теперь это число битовая маска передает на выход прибора то принимающая сторона допустим панель оператора или плк как распакуют это число?Нужно на входе другого прибора ставить блок EXTRACT и прописывать в нем номер ячейки и он из числа прочитает номер ячейки и выдаст сигнал?
Я вот еще хотел спросить если на входе есть дискретный сигнал 1 он находится во второй ячейки то число у нас 4 теперь это число битовая маска передает на выход прибора то принимающая сторона допустим панель оператора или плк как распакуют это число?Нужно на входе другого прибора ставить блок EXTRACT и прописывать в нем номер ячейки и он из числа прочитает номер ячейки и выдаст сигнал?
Это смотря что будет у Вас на принимающей стороне если прибор поддерживает ОЛ , то нужно делать еще проект для этого прибора в ОЛ и извлекать EXTRACT. Но приборов множество может быть , так и средств разработки для них, и соответственно программа для каждого такого прибора разрабатывается в своей среде со своими командами.
прочитает номер ячейки и выдаст Вы постарайтесь правильно излагать , это Вы подразумевали номер бита.
kondor3000
20.12.2022, 09:49
На верхний картинки я немного тупанул.Я хотел выбирать с каждого выхода блока XTRACT нужный мне выход понял что не правильно сделал и разделил их по отдельности. Пока остальные ф.б не вызвали вопросов кроме дешифраторов и пид рег.Ну к этому я подойду я только интегрируюсь в среду разработки OWEN Logic .Я вот еще хотел спросить если на входе есть дискретный сигнал 1 он находится во второй ячейки то число у нас 4 теперь это число битовая маска передает на выход прибора то принимающая сторона допустим панель оператора или плк как распакуют это число?Нужно на входе другого прибора ставить блок EXTRACT и прописывать в нем номер ячейки и он из числа прочитает номер ячейки и выдаст сигнал?
Если в ПР вы упаковали биты в Маску, адрес регистра 512 и включили бит 2 (число в маске 4)
В ПЛК всё просто , адрес 512 Register Input (WORD, ПЛК мастер) называете Mask или 2 BYTE (ПЛК слейв), биты в маске пишутся через точку Mask.2 будет TRUE.
в панели в индикаторе (кнопке) адрес регистра WORD 4х512 бит 2, если панель Мастер или PSW512 бит 2, если панель Слейв.
Андрей 77
20.12.2022, 11:35
Если в ПР вы упаковали биты в Маску, адрес регистра 512 и включили бит 2 (число в маске 4)
В ПЛК всё просто , адрес 512 Register Input (WORD, ПЛК мастер) называете Mask или 2 BYTE (ПЛК слейв), биты в маске пишутся через точку Mask.2 будет TRUE.
в панели в индикаторе (кнопке) адрес регистра WORD 4х512 бит 2, если панель Мастер или PSW512 бит 2, если панель Слейв.
А если вместо плк использовать ops server Овен туда закинуть регистр и уже этот регистр закинуть в скаду так возможно?Я имею ввиду если плк нет под рукой вместо него скаду использовать?
Андрей 77
20.12.2022, 11:36
Это смотря что будет у Вас на принимающей стороне если прибор поддерживает ОЛ , то нужно делать еще проект для этого прибора в ОЛ и извлекать EXTRACT. Но приборов множество может быть , так и средств разработки для них, и соответственно программа для каждого такого прибора разрабатывается в своей среде со своими командами.
Вы постарайтесь правильно излагать , это Вы подразумевали номер бита.
А примеры есть похожие что бы глянуть?
А если вместо плк использовать ops server Овен туда закинуть регистр и уже этот регистр закинуть в скаду так возможно?Я имею ввиду если плк нет под рукой вместо него скаду использовать?
Конечно возможно, если будете использовать MasterScada, там даже ФБ такой есть.
Если вместо OWEN OPC будете использовать Modbus MasterOPC, то там выделение битов в отдельные булевые теги можно делать на уровне OPC.
kondor3000
20.12.2022, 13:08
А если вместо плк использовать ops server Овен туда закинуть регистр и уже этот регистр закинуть в скаду так возможно?Я имею ввиду если плк нет под рукой вместо него скаду использовать?
Если есть в наличии ПР и переходник типа АС-4, можно использовать например эмуляцию Панели в режиме Мастер, 64698 пример бита в панели64696
и ОРС сервер, скрин 64694 и Скаду конечно.
Если есть в наличии ПР и переходник типа АС-4, можно использовать например эмуляцию Панели в режиме Мастер, 64698 пример бита в панели64696
и ОРС сервер, скрин 64694 и Скаду конечно.
Не знал, что в OWEN OPC тоже можно указывать отдельный бит
Андрей 77
20.12.2022, 20:12
Если есть в наличии ПР и переходник типа АС-4, можно использовать например эмуляцию Панели в режиме Мастер, 64698 пример бита в панели64696
и ОРС сервер, скрин 64694 и Скаду конечно.
Отдельной панели нет.А вот с описи Овен с битами это тема.Ее и промоделирую.
kondor3000
20.12.2022, 20:15
Отдельной панели нет.А вот с описи Овен с битами это тема.Ее и промоделирую.
Это не панель, а Онлайн эмуляция в конфигураторе панели СП3хх, работает только в режиме Мастер, Модбас RTU,
порт PLC панели настраиваете на порт вашего адаптера в компе, прямо в эмуляции по ПКМ и по новой запускаете эмуляцию.64703
А свой ПР подключаете в режиме Слейв к переходнику в компе.
Так вы можете проверить не только работу бит, но и работу программы в Панели СП3ХХ и в ПР200, даже не имея панели в наличии.
Андрей 77
29.12.2022, 17:29
Это не панель, а Онлайн эмуляция в конфигураторе панели СП3хх, работает только в режиме Мастер, Модбас RTU,
порт PLC панели настраиваете на порт вашего адаптера в компе, прямо в эмуляции по ПКМ и по новой запускаете эмуляцию.64703
А свой ПР подключаете в режиме Слейв к переходнику в компе.
Так вы можете проверить не только работу бит, но и работу программы в Панели СП3ХХ и в ПР200, даже не имея панели в наличии.
Сейчас пытаюсь подключить пр200 к эмулятору панели.Не понял из вашего текста что значить переходник в компе?Я правильно понимаю что я могу создать мини проект в эмуляции панели и управлять этим в пр 200 вкл выкл входа дискретные.Когда пр в режиме слейв?Еще такой вопрос вроде просто но я задумался.Как лучше подключить выход релейный к катушки пускателя, через промежуточное реле, или на прямую?Советуют через промежуточное реле, но как то не хочется городить огород.Но с другой стороны у катушки пускателя болье ток самоиндукции вдруг выход реле пр 200 выйдет из строя. RC тоже не хочется ваять.
У ПР достаточно нежные релюшки внутри, им и RC может не помочь, ну проработает немного дольше, дальше результат может быть тем же самым.
kondor3000
29.12.2022, 18:04
Сейчас пытаюсь подключить пр200 к эмулятору панели.Не понял из вашего текста что значить переходник в компе?Я правильно понимаю что я могу создать мини проект в эмуляции панели и управлять этим в пр 200 вкл выкл входа дискретные.Когда пр в режиме слейв?Еще такой вопрос вроде просто но я задумался.Как лучше подключить выход релейный к катушки пускателя, через промежуточное реле, или на прямую?Советуют через промежуточное реле, но как то не хочется городить огород.Но с другой стороны у катушки пускателя болье ток самоиндукции вдруг выход реле пр 200 выйдет из строя. RC тоже не хочется ваять.
Переходник это преобразователь USB -RS 485 типа АС-4, комп с эмулятором панели мастер, ПР200 слейв, работа по 485 интерфейсу.
Хотя ПР 200 можно включить и по USB кабелю из комплекта, но режима отладки не будет.
Можно создать и тестовый и рабочий проект и отладить и не только дискретные входы, но и чтение и запись целочисленных и флоат.
Реле лучше ставить промежуточные, заменить внешнее реле копейки и быстро, а ремонт внутреннего гораздо дороже выйдет и намного дольше.
RС цепочки ставить надо в любом случае.
Для внешних реле в том числе, есть ПР с транзисторыми выходами, на них вешаются реле и управляй чем угодно.
Андрей 77
29.12.2022, 21:52
Переходник это преобразователь USB -RS 485 типа АС-4, комп с эмулятором панели мастер, ПР200 слейв, работа по 485 интерфейсу.
Хотя ПР 200 можно включить и по USB кабелю из комплекта, но режима отладки не будет.
Можно создать и тестовый и рабочий проект и отладить и не только дискретные входы, но и чтение и запись целочисленных и флоат.
Реле лучше ставить промежуточные, заменить внешнее реле копейки и быстро, а ремонт внутреннего гораздо дороже выйдет и намного дольше.
RС цепочки ставить надо в любом случае.
Для внешних реле в том числе, есть ПР с транзисторыми выходами, на них вешаются реле и управляй чем угодно.
А как в схему включить RC цепочку в паспорте к пр 200 есть описание?
А как в схему включить RC цепочку в паспорте к пр 200 есть описание?
В поисковике поищите и расчет тоже. Это к ПР отношения не имеет. Если ПР с питанием 24вольта , то релюшки с лучше с обмоткой на =24в ставьте , про диод не забудьте в этом случае .
А RC защитит контакты промежуточного реле и все прослужит долго.
К тому же значительно снизит уровень помех.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot