PDA

Просмотр полной версии : Управление битами переменной с экрана ПР200



ShmoninEN
15.04.2021, 07:28
Всем привет. Есть проект где задействованы почти все регистры сетевых переменных. Для управления процессами в проекте используется несколько булевских переменных. Эти булевские переменные реализованы как "Целочисленная сетевая переменная" -> "блок Extract с указанием № бита" -> "Внутренняя булевская переменная". Кроме возможности управления по сети мне необходимо управлять и с экрана, причём, если я изменил бит по сети и на экране он должен поменяться тоже и наоборот. Есть ли возможность управлять отдельными битами сетевой переменной с экрана? Как это сделать? Насколько я смог разобраться, в штатных элементах управления это не реализовано? Есть ли возможность как-то обойти это ограничение?

Сергей0308
15.04.2021, 08:16
Всем привет. Есть проект где задействованы почти все регистры сетевых переменных. Для управления процессами в проекте используется несколько булевских переменных. Эти булевские переменные реализованы как "Целочисленная сетевая переменная" -> "блок Extract с указанием № бита" -> "Внутренняя булевская переменная". Кроме возможности управления по сети мне необходимо управлять и с экрана, причём, если я изменил бит по сети и на экране он должен поменяться тоже и наоборот. Есть ли возможность управлять отдельными битами сетевой переменной с экрана? Как это сделать? Насколько я смог разобраться, в штатных элементах управления это не реализовано? Есть ли возможность как-то обойти это ограничение?

С экрана я так управляю:

54564

54566

Ревака Юрий
15.04.2021, 09:11
Всем привет. Есть проект где задействованы почти все регистры сетевых переменных. Для управления процессами в проекте используется несколько булевских переменных. Эти булевские переменные реализованы как "Целочисленная сетевая переменная" -> "блок Extract с указанием № бита" -> "Внутренняя булевская переменная". Кроме возможности управления по сети мне необходимо управлять и с экрана, причём, если я изменил бит по сети и на экране он должен поменяться тоже и наоборот. Есть ли возможность управлять отдельными битами сетевой переменной с экрана? Как это сделать? Насколько я смог разобраться, в штатных элементах управления это не реализовано? Есть ли возможность как-то обойти это ограничение?

Это наверное самый распространенный вариант, есть много примеров https://youtu.be/YibiaUavC20

ShmoninEN
15.04.2021, 09:24
Я правильно понимаю, переменные 1-32 это булевские биты, которые я могу задействовать в программе как мне нужно, в том числе и на экранах, для возможности изменения. А переменная А - целочисленная, неважно, внутренняя или сетевая, 2 или 4 байта, которую я могу менять по сети (или так же с экрана) побитово или целиком. И всё будет синхронно меняться?

petera
15.04.2021, 09:48
Я правильно понимаю, переменные 1-32 это булевские биты, которые я могу задействовать в программе как мне нужно, в том числе и на экранах, для возможности изменения. А переменная А - целочисленная, неважно, внутренняя или сетевая, 2 или 4 байта, которую я могу менять по сети (или так же с экрана) побитово или целиком. И всё будет синхронно меняться?

Я уже устал ссылку приводить :rolleyes:
Ваш вариант -3 из этого поста Обмен битовыми (BOOL) переменными с ПР Slave (https://owen.ru/forum/showthread.php?t=32194&p=318916&viewfull=1#post318916)

Здесь в качестве макросов упаковки/ распаковки можно использовать любые

Сергей0308
15.04.2021, 09:53
В отличии от внутренней целочисленной переменной, сетевая целочисленная переменная (один регистр) имеет не 32, а всего 16 бит! чтобы менять из двух(и более) мест есть специальные макросы(решения), если не ошибаюсь Пётр и Минска предлагал хороший вариант решения этой задачи, посмотрите(поищите), это много раз обсуждалось!