Добрый день!
Уважаемые обитатели данного форума, надеюсь, что вы сможете помочь мне с моим вопросом.
Кратко опишу ситуацию - разрабатываю ПО панели Kinco GL100E и для вариативности ее использования были разработаны макросы, которые в зависимости от выбранного тех. объекта записывают в выделенные регистры адрес тега.
Теперь, собственно, вопрос - выше описанные выделенные регистры и использую как индексные регистры смещения адреса тега, при использовании регистра типа LW проблем никаких не возникает (например, атрибут компонента числа записывает значение, которое содержится в нужном адресе), НО если такую же операцию применить для регистра типа LW.B возникает проблема (выбранный бит, который известно что взведен, по факту не отображается).
Если что-то непонятно объяснил, могу дополнить в ответах. Скрины разных случаях прилагаю. Буду признателен всем, кто сможет помочь или хотя бы направить в нужном направлении!
З.Ы. В документации про индексные регистры описано очень кратко и пример приведен только целочисленного типа.
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
HMI Kinco GL100E Индексные регистры
Модераторы: Глоб.модераторы, специалисты по PLC
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 16 июл 2021, 11:39
- Имя: Денис
- Страна: Россия
- город/регион: Москва
HMI Kinco GL100E Индексные регистры
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 21 янв 2017, 07:46
- Имя: Лысенко Дмитрий Сергеевич
- город/регион: Самара
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
HMI Kinco GL100E Индексные регистры
Добрый день! Регистры LW.B это тоже регистры слово. Просто через функцию LW.B можно прочитать/записать определённый бит из регистра слово. Индексный регистр в этом случаи, будет работать, как для регистров слово. Компоненты будут обращаться к регистрам слово. Например, вы задали в LW9202 значение 5, и предполагаете, что LW.B 0.1 примет состояние бита LW.B 0.5, но LW.B 0.1 примет состояние LW.B 5.0. Попробуйте использовать регистр типа LB вместе с индексным регистром.
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 16 июл 2021, 11:39
- Имя: Денис
- Страна: Россия
- город/регион: Москва
HMI Kinco GL100E Индексные регистры
Здравствуйте, Дмитрий! Разве при использовании индексного регистра для LW.B 0.1, например LW9202 = 5, мы не должны смотреть на LW.B 5.1 в таком случае? Или я что-то не до конца понимаю?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 вместе с индексным регистром.
По поводу регистра LB, не хотелось бы его использовать, так как я кодирую битовые состояния тех. объекта в DINT и передаю упаковкой, с LB же придется каждый бит отдельно задавать, что приведет к увеличению библиотеки тегов, а таких состояний может быть довольно много.
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 21 янв 2017, 07:46
- Имя: Лысенко Дмитрий Сергеевич
- город/регион: Самара
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
HMI Kinco GL100E Индексные регистры
Добрый вечер, Денис!
Кстати, вопрос. Почему вы используете регистры внутренней памяти панели? У вас панель выступает как слейв устройство? Регистры LW, LW.B, LB - это локальные регистры панели.
Всё верно, мы смотрим на LW.B 5.1. Ошибся. Основную мысль, которую хотел донести, это то что при использовании индексного регистра для функции LW.B, так или иначе мы работаем с регистром слово, не с битом.Разве при использовании индексного регистра для LW.B 0.1, например LW9202 = 5, мы не должны смотреть на LW.B 5.1 в таком случае?
Можно передать состояние каждого бита регистра слово в регистр 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. Выше описанное актуально, если я правильно понял вашу задачу.По поводу регистра LB, не хотелось бы его использовать, так как я кодирую битовые состояния тех. объекта в DINT и передаю упаковкой, с LB же придется каждый бит отдельно задавать, что приведет к увеличению библиотеки тегов, а таких состояний может быть довольно много.
Кстати, вопрос. Почему вы используете регистры внутренней памяти панели? У вас панель выступает как слейв устройство? Регистры LW, LW.B, LB - это локальные регистры панели.