1.Подскажите как правильно обратится к тегам FTView из VBA. При наличии в текущем окне около 500 memory тегов TagGroup.add(tag name) напрочь вешает проект. Как быть?
2.В окне есть несколько ComboBox. Создаю массив CB_Mass(10) as combobox и сопоставляю его combobox в окне Set CB_Mass(0)=CB_name0 и т.д. А при использовании свойств массива, например CB_Mass.Item(0).text VBA вылетает. Как еще неявно обратится к элементам окна?
При наличии в текущем окне около 500 memory тегов TagGroup.add(tag name) напрочь вешает проект. Как быть?
Не знаю, для чего Вам на экране 500 тэгов, и как Вы собираетесь их использовать, но что-то говорит мне, что Вам необходимо изменить системную концепцию.
Честно говоря, не представляю себе 500 тэгов на одном экране. Если предположить, что экран имеет разрешение 1024 на 768 пикселей, то 500 тэгов на экране - это полный экран прямоугольников размером примерно 40 на 40 пикселей, по одному на тэг, без промежутков. Ничто другое на экран больше не помещается. Что Вы такое проектируете?
Если же Вы используете экран просто для хранения и обработки тэгов, то не проще ли держать эти тэги в контроллере, и там же и обрабатывать? _________________ Обращайтесь к профессионалам.
Экран предназначен для идентификации заготовок подвергаемых обработке. Всего 30 заготовок у которых 7 текстовых параметров и на этом же экране растаскивая мышкой задается положение заготовок на участке обработки - это еще 5 параметров для каждой из 30(ширина, высота, положение по Х , по Y, и rotation. Плюс теги для visible и теги для задания общих параметров для всех заготовок. Вот и набралось. Для ввода используются элементы Microsoft Forms, поэтому есть необходимость перебора их значений в цикле в VBA. После ввода задания на обработку данные вставляются в форму и сохраняются в графический файл. Вот такой подход. Вводить все это в контроллер смысла нет-для технологии эти параметры не нужны, только для отчета. Может что-то посоветуете. Заранее спасибо!
... но что-то говорит мне, что Вам необходимо изменить системную концепцию.
"Одобрям"
Sandy, поставь себя на место пользователя - все ли параметры нужно видеть?
Sandy писал(а):
Экран предназначен для идентификации заготовок подвергаемых обработке. Всего 30 заготовок у которых 7 текстовых параметров и на этом же экране растаскивая мышкой задается положение заготовок на участке обработки...
Оставь один параметр, например номер в очереди на обработку.
Для ввода параметров создай отдельный экран и вызывай его с нужным файлом параметров.
Вызов этого экрана можно сделать по анимации Touch, но обязательно с горячей кнопкой (см. Client Key), чтобы не было конфликта с расстаскиванием мышкой.
Sandy писал(а):
Может что-то посоветуете.
Сведи к нулю использование: VBA и Microsoft Forms, все можно сделать штатными средствами.
Зарегистрирован: Nov 01, 2011 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Вт 06 Мар, 2012 17:05:37 Заголовок сообщения:
У меня задача попроще. В ftalk se есть два device тега op_man и op_auto.которые в контроллере устанавливают через rs триггер выходной тег auto. Те простая установка оператором ручного или автоматического режима работы, с запоминанием его в контроллере. Решил сделать так: предоставить оператору кнопку которая будетпоочередно по нажатию устанавливать op_man и сбрасывать op_auto, потом наоборот. Обратная связь : вывел на дисплей выходной тег auto. Использовал обычную кнопку и vba срипт, все работает. Но обращение к тегам через vba какое то не очевидное, можно ли сделать тоже самое с помощью стандартных средств ftalk?Спасибо.
П.с. Запоминать режим прямо в ftalk я не стал, хотя такая возможность разумеется есть(maintained push), тк при нештатной пере загрузке сервера все такие команды по идее обнулятся, вот и обрабатываю их в контроллере.
Добавлено: Ср 07 Мар, 2012 9:39:07 Заголовок сообщения:
Rolex писал(а):
У меня задача попроще. В ftalk se есть два device тега op_man и op_auto.которые в контроллере устанавливают через rs триггер выходной тег auto. Те простая установка оператором ручного или автоматического режима работы, с запоминанием его в контроллере. Решил сделать так: предоставить оператору кнопку которая будетпоочередно по нажатию устанавливать op_man и сбрасывать op_auto, потом наоборот. Обратная связь : вывел на дисплей выходной тег auto. Использовал обычную кнопку и vba срипт, все работает. Но обращение к тегам через vba какое то не очевидное, можно ли сделать тоже самое с помощью стандартных средств ftalk?Спасибо.
П.с. Запоминать режим прямо в ftalk я не стал, хотя такая возможность разумеется есть(maintained push), тк при нештатной пере загрузке сервера все такие команды по идее обнулятся, вот и обрабатываю их в контроллере.
Смени подход:
1. В контроллере один тег auto
2. В FTView сделай две кнопки Interlocked на этот тег:
- первая устанавливает 0.
- вторая устанавливает 1.
- задай нужный цвет (текст) для State 0 и State 1.
Использовать одну (maintained) кнопку не рекомендую.
Rolex писал(а):
П.с. Запоминать режим прямо в ftalk я не стал, хотя такая возможность разумеется есть(maintained push), тк при нештатной пере загрузке сервера все такие команды по идее обнулятся, вот и обрабатываю их в контроллере.
Не бойся, FTView сам этого не сделает (для Device тегов - только контроллер помнит).
Зарегистрирован: Nov 01, 2011 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Ср 14 Мар, 2012 6:43:48 Заголовок сообщения:
А если я хочу послать импульсную команду??, можно использовать обычную кнопку -и в свойствах, обработчике нажатия- выставлять тег, при отжатии сбрасывать его..?вроде работает,но ведь я не могу быть уверенным что обработанный бит гарантированно дошел до контроллера, а потом сбросился.
Добавлено: Чт 15 Мар, 2012 12:13:08 Заголовок сообщения:
Rolex писал(а):
А если я хочу послать импульсную команду??, можно использовать обычную кнопку -и в свойствах, обработчике нажатия- выставлять тег, при отжатии сбрасывать его..?вроде работает,но ведь я не могу быть уверенным что обработанный бит гарантированно дошел до контроллера, а потом сбросился.
Зарегистрирован: Nov 01, 2011 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Вс 18 Мар, 2012 21:46:20 Заголовок сообщения:
Не получается заполнители тегов в глобальных объектах применять, например мне нужно десять пиктограмм задвижек, вместо того чтобы рисовать их в таком количестве по отдельности - делаю 1 глобальный базовый объект, прописываю нужное количество заместителей тегов(#1-#10) которые использую в скрипте, и после копирования в папку Displays и соответственно запуске, облом:
1. «expression contains a tag that has an error value: if (#9) then0! Errorselse if not (#1) and not (#2) then1…..» Это он ругается на скрипт прописанный в глобальном объекте пиктограммы задвижки, т.к. не может работать с тегами (device) которые я по наивности пытаюсь туда передать
2. Далее дебаггер пишет «Failed to resolve items ID #1 because it does not exists on any server»-и так про каждый… мне не ясно почему тег не найден, он доступен, если без танцев с базовыми объектами с ним можно работать.
Все глобальные заместители тегов объявляю как в мануале написано, потом после копирования привязываю к ним теги…, LinkAnimation - Link with expressions, LinkConnections - True. а он че то тупит и пишет что их нет…Как так, ну вот как??2?
Скрипт самый обычный, вкладка “Color”
Код:
if #9 then
0 ! Errors
else if not #1 and not #2 then
1 ! power off…..а так далее
Следующий вопрос – по Touch на каждой пиктограмке запускаю командой «Display <panel_name>....» панельку оборудования, с указанием файла параметров. Панелька это например простой дисплей с кнопками открыть закрыть и статусом. Так вот если все прописывать не в базовом объекте а копиях по отдельности– надо будет наверно ставить «Do not link» и так далее…а можно ли прописать вызов панели и файла параметров с помощью «display» в базовом глобальном объекте ? тогда не придется делать это из каждого объекта ссылки в отдельности. Много букв, если слишком много – то просто подскажите как это делается в этой среде по нормальному?)
Зарегистрирован: Nov 01, 2011 Сообщения: 34 Рейтинг: +0/-0
Добавлено: Вт 20 Мар, 2012 19:52:47 Заголовок сообщения:
Все заняты, понимаю,я вот тоже =) Перефразирую и уменьшу количество текста, может поможет:
шаг1. Созданию глобальный объект
шаг2.Определение заполнителей тегов глобального базового объекта (#1-#10)
шаг3. создание объекта-ссылки путем простого копирования базового объекта
шаг4.Задать значение заполнителей тега в объекте-ссылке (привязывание к тегам контроллера)
шаг5. Настройка свойств связи объектов-ссылок (LinkAnimation, LinkConnections....)
шаг6. Запуск на выполнение, облом : " «expression contains a tag that has an error value", "Failed to resolve items ID #1"....
Ясно, "С такими вопросами добро пожаловать на наши курсы Rockwell Automation"
Ну а если мне просто нужно чтобы дисплей управления задвижкой появился по нажатию на картинку задвижки, НО рядом с курсором, а не в каком нить углу или посередине, как тут быть?в параметрах дисплеев или команды display можно задать лишь постоянное положение.
нужно чтобы дисплей управления задвижкой появился по нажатию на картинку задвижки, НО рядом с курсором
Эта функциональность может быть относительно легко реализована с помощью несложного VBA-скрипта, принадлежащего дисплею на клиенте. Скажем, в общих чертах, как-то так:
Получите текущее положение курсора, например, используя user32:
Код:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type
Dim CursorPos As POINTAPI
Call GetCursorPos(CursorPos)
' --- "CursorPos.X" und "CursorPos.Y" содержат положение курсора
Затем можно, например, вычислить желаемые координаты окна DesiredTop и DesiredTop и передать эти значения окну, которое Вы откроете в этом месте, например:
Все заняты, понимаю,я вот тоже =) Перефразирую и уменьшу количество текста, может поможет:
шаг1. Созданию глобальный объект
шаг2.Определение заполнителей тегов глобального базового объекта (#1-#10)
шаг3. создание объекта-ссылки путем простого копирования базового объекта
шаг4.Задать значение заполнителей тега в объекте-ссылке (привязывание к тегам контроллера)
шаг5. Настройка свойств связи объектов-ссылок (LinkAnimation, LinkConnections....)
шаг6. Запуск на выполнение, облом : " «expression contains a tag that has an error value", "Failed to resolve items ID #1"....
Полагаю что вы запускаете дисплей в "тест" режиме, в данном случае действительно метки заполнители не заменяются соответствующими значениями, тестируйте в клиенте
Переношу проект из RSView32 в FTView SE 6.1.
Много кода написано на VBA, причём как процедуры, так и VBA-формы, вызываются в совершенно разных местах проекта, с разных дисплеев.
Вопрос по FTView SE 6.1:
1. Вызвать процедуру VBA, прописанную в др. дисплее, в коде VBA текущего дисплея.
2. Вызвать процедуру VBA, приписанную в одном из дисплеев, через макрос.
3. Есть ли возможность создания глобальных переменных/объектов/классов/отдельных процедур VBA, видимых и доступных из любого места проекта, будь то код VBA дисплея, макрос и прочее?
4. Куда делась команда VbaExec???
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.134 секунды