1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

HMI Kinco GL100E Индексные регистры

Модератор: специалисты Weintek

Ответить

Автор темы
DosyaAN
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 16 июл 2021, 11:39
Имя: Денис
Страна: Россия
город/регион: Москва

HMI Kinco GL100E Индексные регистры

Сообщение DosyaAN »

Добрый день!
Уважаемые обитатели данного форума, надеюсь, что вы сможете помочь мне с моим вопросом.
Кратко опишу ситуацию - разрабатываю ПО панели Kinco GL100E и для вариативности ее использования были разработаны макросы, которые в зависимости от выбранного тех. объекта записывают в выделенные регистры адрес тега.

Теперь, собственно, вопрос - выше описанные выделенные регистры и использую как индексные регистры смещения адреса тега, при использовании регистра типа LW проблем никаких не возникает (например, атрибут компонента числа записывает значение, которое содержится в нужном адресе), НО если такую же операцию применить для регистра типа LW.B возникает проблема (выбранный бит, который известно что взведен, по факту не отображается).

Если что-то непонятно объяснил, могу дополнить в ответах. Скрины разных случаях прилагаю. Буду признателен всем, кто сможет помочь или хотя бы направить в нужном направлении!

З.Ы. В документации про индексные регистры описано очень кратко и пример приведен только целочисленного типа.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Dmitry_081191
здесь недавно
здесь недавно
Сообщения: 13
Зарегистрирован: 21 янв 2017, 07:46
Имя: Лысенко Дмитрий Сергеевич
город/регион: Самара
Благодарил (а): 1 раз
Поблагодарили: 3 раза

HMI Kinco GL100E Индексные регистры

Сообщение Dmitry_081191 »

Добрый день! Регистры LW.B это тоже регистры слово. Просто через функцию LW.B можно прочитать/записать определённый бит из регистра слово. Индексный регистр в этом случаи, будет работать, как для регистров слово. Компоненты будут обращаться к регистрам слово. Например, вы задали в LW9202 значение 5, и предполагаете, что LW.B 0.1 примет состояние бита LW.B 0.5, но LW.B 0.1 примет состояние LW.B 5.0. Попробуйте использовать регистр типа LB вместе с индексным регистром.

Автор темы
DosyaAN
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 16 июл 2021, 11:39
Имя: Денис
Страна: Россия
город/регион: Москва

HMI Kinco GL100E Индексные регистры

Сообщение DosyaAN »

Dmitry_081191 писал(а): 16 июл 2021, 19:02 Добрый день! Регистры LW.B это тоже регистры слово. Просто через функцию LW.B можно прочитать/записать определённый бит из регистра слово. Индексный регистр в этом случаи, будет работать, как для регистров слово. Компоненты будут обращаться к регистрам слово. Например, вы задали в LW9202 значение 5, и предполагаете, что LW.B 0.1 примет состояние бита LW.B 0.5, но LW.B 0.1 примет состояние LW.B 5.0. Попробуйте использовать регистр типа LB вместе с индексным регистром.
Здравствуйте, Дмитрий! Разве при использовании индексного регистра для LW.B 0.1, например LW9202 = 5, мы не должны смотреть на LW.B 5.1 в таком случае? Или я что-то не до конца понимаю?
По поводу регистра LB, не хотелось бы его использовать, так как я кодирую битовые состояния тех. объекта в DINT и передаю упаковкой, с LB же придется каждый бит отдельно задавать, что приведет к увеличению библиотеки тегов, а таких состояний может быть довольно много.

Dmitry_081191
здесь недавно
здесь недавно
Сообщения: 13
Зарегистрирован: 21 янв 2017, 07:46
Имя: Лысенко Дмитрий Сергеевич
город/регион: Самара
Благодарил (а): 1 раз
Поблагодарили: 3 раза

HMI Kinco GL100E Индексные регистры

Сообщение Dmitry_081191 »

Добрый вечер, Денис!
Разве при использовании индексного регистра для LW.B 0.1, например LW9202 = 5, мы не должны смотреть на LW.B 5.1 в таком случае?
Всё верно, мы смотрим на LW.B 5.1. Ошибся. Основную мысль, которую хотел донести, это то что при использовании индексного регистра для функции LW.B, так или иначе мы работаем с регистром слово, не с битом.
По поводу регистра LB, не хотелось бы его использовать, так как я кодирую битовые состояния тех. объекта в DINT и передаю упаковкой, с LB же придется каждый бит отдельно задавать, что приведет к увеличению библиотеки тегов, а таких состояний может быть довольно много.
Можно передать состояние каждого бита регистра слово в регистр LB, например, при помощи компонента "таймер", в нём выбираете функцию передача данных, указываете адрес источника, допустим регистр LW.B 10.0, выбираете длину данных, например, вам нужно передать 10 битов и выбираете адрес назначения регистр LB 0. Состояния битов начиная LW 10.0 и заканчивая LW 10.9 будут переданы в регистры LB. LW 10.0 > LB 0, LW 10.1 > LB 1, LW 10.2 > LB 2... LW 10.9 > LB 9. После вы можете применить индексные регистры для адресов LB. Условно для каждого регистра слово вы выделяете область памяти LB, передавайте данные и работайте уже с регистрами LB. Выше описанное актуально, если я правильно понял вашу задачу.
Кстати, вопрос. Почему вы используете регистры внутренней памяти панели? У вас панель выступает как слейв устройство? Регистры LW, LW.B, LB - это локальные регистры панели.
Ответить

Вернуться в «Операторские панели»