Вопрос: нужно отобразить перемещение механизма в горизонтальной плоскости. Рисую прямоугольник, задаю Motion absolute X_Offset и т.д. То есть в программе я могу задавать смещение прямоугольника относительно его начального положения. А как узнать из программы начальное (текущее) положение прямоугольника?
Не совсем понятен вопрос: после запуска программы или после перезагруза элемент будет находиться там где был помещен во время проектирования или будет смещен относительно исходного положения на инициализационное значение переменной чье значение присваивается параметру Motion absolute X_Offset. А уж как дальше сопоставить положение элемента на экране и реального механизма это дело хитрости разработчика. Или я чавото не понимаю?
Я создаю эмуляцию объекта. В зависимости от положения прямоугольника на экране нужно задавать значение концевых датчиков. Хотелось бы в программе знать текущие координаты прямоугольника (или хотя бы начальные). Если знаете как - ответьте!
Ну если очень хочетсая то начальные координаты можно узнать посмотрев Element List в контекстном меню, там указаны координаты относительно левого верхнего угла.
Я для иммитации вентиля использовал CTUD Функциональный блок ‘инкрементный / декрементный счетчик’. Очень удобно, взять шкалу в 100 единиц и сопоставить ее 100% хода устройства, т.е. при 0 на выходе CV срабатывает один датчик при 100 - другой. А далее переприсваиваем Motion absolute X_Offset. выход CV (если надо масштабируем). Помоему в таком варианте знать какие-либо координаты вообще не надо, оперируем смещением относительно начального положения.
JВы меня конечно извините, но выбранный Вами способ контроля положения выглядит так, как если бы вы повесили часы на внешней стене своего дома и спрашивали у соседа из дома через дорогу время на этих часах которые бы он наблюдал в бинокль.
У Вас есть переменная управляющая положением прямоугольника, она однозначно описывает его положение ее стартовое значение однозначно описывает состояние концевиков, зачем вам текущее положение прямоугольника, все данные у Вас уже есть работайте с этой переменной. Если шаг перемещения прямоугольника меньше длинны хода используйте уставки для переменной. В любом случае включение элемента визуализации непосредственно в математическую модель это изврат.
Энто делается так.
С каждым элементом визуализации можно связать переменную-об'ект. Пременная-об'ект назначается в свойствах элемента Programmability -> флажок Object name. Переменной дается глобальное имя, и отныне об'ект визуализации доступен для чтения и записи всех своих свойств, (через точечную ноиацию - Pramougolnuc1.PositionX. ....). Свойства перечислены в писании по CoDeSys.
P.S. Совет - не следует увлекаться и злоупотреблять созданием переменных-об'ектов по каждому поводу : кажный об'ект хавает приличный шматок ресурсов.
С уважением, SAN
Чтобы использовать Programmability нужно незабыть подключить библиотеку SysLibVisu.lib. И все равно определить текущие координаты не получится (только задать и уж потом прочитать). Советую прислушаться к Dismay.
Главная фишка в том, что при создании переменой-обек'та ситуация принципиально меняется : ЗАПИСЫВАЕТ свойства одна функция, а СЧИТЫВАЕТ уже другая (связанная например через драйвер устройства). Включаются, и на полную используются механизмы визуализации, и Кодеру уже не надо заботиться о записи свойств, которые он сам же потом и читает ! То, что сама HMI в CoDeSys несколько нуклюжая - вопрос уже другой, во многих случаях хватает.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме