PDA

Просмотр полной версии : Запись значений. Ошибка: "имеет больше одного отношения передачи данных".



maxoptimizer
19.12.2019, 01:11
Здравствуйте.
Возникло недопонимание в записи двух разных значений по двум разным событиям.
Посмотрите информативный скриншот.
На скриншоте две программы ST(кнопки ПУСК и СТОП). Логика программ идентична друг другу, только в программе СТОП значения переменной "Управляющий_выход_ПУСК" меняются местами.
Налаживая связь переменных "Управляющий_выход_ПУСК"(ПУСК и СТОП) из дерева объектов с "Усп_Состояние установки_Выход" дерева системы получаю при компиляции ошибку: "имеет больше одного отношения передачи данных".

Вопросы:
1. Как реализовать запись значения в "Усп_Состояние установки_Выход" по событиям нажатий кнопок ПУСК и СТОП, чтобы записи этих значений не конфликтовали друг с другом?
2. Как сделать так, чтобы после перезапуска среды исполнения оставалось значение "Усп_Состояние установки_Выход", которое было до перезапуска?
3. Правильно ли я понимаю, что фиксированная кнопка держит значение на "Управляющий_выход_ПУСК" до того момента пока её не отожмут?; если это так, тогда получается, что для того чтобы использовать кнопку СТОП, нужно сначала отжать кнопку СТАРТ? И как вообще на практике тогда реализовываются подобные задачи не совсем понятно, ведь нужна визуальная информативность, что кнопка в данное время нажата!?
4. Как на практике интереснее и лучше всего на ваш взгляд реализовать данную задачу?

Можете просто выложить свои библиотечные объекты для реализации данной задачи, а я выберу наиболее приемлемый и мы его закрепим в теме как лучший для использования. Обязательно народу пригодится, и плюсы в карму полетят.
Благодарю всех за проявленный интерес и ваше время.
46261

maxoptimizer
19.12.2019, 12:42
Неужели из 37 человек, которые посмотрели данную тему нет человека знающего ответ хотя бы на первый из заданных мной вопросов?
UP

b_aleks
19.12.2019, 12:59
Здравствуйте.
Возникло недопонимание в записи двух разных значений по двум разным событиям.
Посмотрите информативный скриншот.
На скриншоте две программы ST(кнопки ПУСК и СТОП). Логика программ идентична друг другу, только в программе СТОП значения переменной "Управляющий_выход_ПУСК" меняются местами.
Налаживая связь переменных "Управляющий_выход_ПУСК"(ПУСК и СТОП) из дерева объектов с "Усп_Состояние установки_Выход" дерева системы получаю при компиляции ошибку: "имеет больше одного отношения передачи данных".

Вопросы:
1. Как реализовать запись значения в "Усп_Состояние установки_Выход" по событиям нажатий кнопок ПУСК и СТОП, чтобы записи этих значений не конфликтовали друг с другом?
2. Как сделать так, чтобы после перезапуска среды исполнения оставалось значение "Усп_Состояние установки_Выход", которое было до перезапуска?
3. Правильно ли я понимаю, что фиксированная кнопка держит значение на "Управляющий_выход_ПУСК" до того момента пока её не отожмут?; если это так, тогда получается, что для того чтобы использовать кнопку СТОП, нужно сначала отжать кнопку СТАРТ? И как вообще на практике тогда реализовываются подобные задачи не совсем понятно, ведь нужна визуальная информативность, что кнопка в данное время нажата!?
4. Как на практике интереснее и лучше всего на ваш взгляд реализовать данную задачу?

Можете просто выложить свои библиотечные объекты для реализации данной задачи, а я выберу наиболее приемлемый и мы его закрепим в теме как лучший для использования. Обязательно народу пригодится, и плюсы в карму полетят.
Благодарю всех за проявленный интерес и ваше время.
46261

1. Вы две переменных тянете на один и тот же канал. Так работать вроде бы не будет. Если я правильно понял вашу задачу, то вам надо использовать ФБ Триггер (RS). Соответственно, когда триггер сброшен, то присваивается одно значение, если установлен, то присваивается другое.
2. См. свойство Сохранять у параметров.
3. Да, на то она и фиксированная. Используйте обычные кнопки без фиксации и ФБ Триггер в программе. Для информативности можете настроить динамизацию кнопки.
4. См. п.1.

KrAssor
19.12.2019, 13:09
1. Вы две переменных тянете на один и тот же канал. Так работать вроде бы не будет. Если я правильно понял вашу задачу, то вам надо использовать ФБ Триггер (RS). Соответственно, когда триггер сброшен, то присваивается одно значение, если установлен, то присваивается другое.
2. См. свойство Сохранять у параметров.
3. Да, на то она и фиксированная. Используйте обычные кнопки без фиксации и ФБ Триггер в программе. Для информативности можете настроить динамизацию кнопки.
4. См. п.1.

Немного добавлю: на входы триггеров неплохо бы поставить детекторы фронта - тогда не будет зависимости от длительности импульса. И не напрямую заводить состояние кнопки на входной параметр триггера, а использовать событие "установить параметр" - это избавит от ложных несрабатываний кнопки. Особенно актуально при использовании контроллера с рантаймом MS4D.

KrAssor
19.12.2019, 13:15
Неужели из 37 человек, которые посмотрели данную тему нет человека знающего ответ хотя бы на первый из заданных мной вопросов?
UP

Просто не всем хочется объяснять такие вещи человеку, которому даже лень поглядеть первое обучающее видео (не говорю уж о демках в комплекте), где все это показано

Спорягин Кирилл
19.12.2019, 13:18
Немного добавлю: на входы триггеров неплохо бы поставить детекторы фронта - тогда не будет зависимости от длительности импульса. И не напрямую заводить состояние кнопки на входной параметр триггера, а использовать событие "установить параметр" - это избавит от ложных несрабатываний кнопки. Особенно актуально при использовании контроллера с рантаймом MS4D.

Присоединюсь.
Я тоже делаю так. Использую "установить параметр в true" в событиях.
А в коде сбрасываю его в false.
Никаких проблем с длительностью нажатия кнопки в таких случаях нет.