Объявление

Свернуть
Пока нет объявлений.

Смена отображаемой композиции в скрипте

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Смена отображаемой композиции в скрипте

    Добрый день. Подскажите, в AgavaPLC, какой функцией через скрипт осуществить смену отображаемой композиции?

  • #2
    В текущей версии 1.2 смена композиций из скриптов пока не реализована. Эта возможность вместе с полной объектной моделью проекта будет реализована в версии 1.3.
    Полный перечень доступных функций доступен в описании: http://docs.kb-agava.ru/view/Описани...2B_в_AgavaPLC, см. раздел 8.
    Последний раз редактировалось Таушканов Константин; 03-05-2023, 05:05 AM.

    Комментарий


    • #3
      Спасибо, А подскажите еще, есть ли возможность произвольно останавливать или запускать операцию "Таймер", или изменять текущее значение таймера (обнулять или изменять значение счетчика)?

      Комментарий


      • #4
        Таймер можно перезапускать функцией StartNode или действием "Команда узлу". Получить текущее значение таймера можно функциями GetNodeValueAs<> или связав таймер (как любой другой источник) с виджетом.

        Комментарий


        • #5
          Суть вопроса как бы в смене отображаемой композиции через определенное время после совершения последнего события на экране (нажатие на кнопку, изображение и т.д.) я попробовал решить это следующим образом: каждое событие обновляет флаг и запускает Task (разовый) который запускает таймер. По выполнению таймера запускается смена композиции. Разовый Task запускается и останавливается как по скрипту (void StartNode(string strNodePath) так и через "действие "Команда узлу" . Таймер при этом запускается но счетчик дальше не считает и выполнения смены композиции не происходит. А при повторном вызове Task композиция меняется сразу. я предположил, что можно менять текущее значение счетчика, сдвигая его по каждому событию на время задержки, значение счетчика я получаю по GetNodeValueAs<> или связав таймер с виджетом "текстовая метка", но при попытке передать таймеру значение по SetNodeValueAs отслеживая значение в виджете, он новое значение отображает, но дальше продолжает отсчитывать по тому значению как было. При попытке запускать таймер по Task (периодический), если не останавливать Task то смена композиции происходит, Task один раз останавливается, и при попытке его снова запустить программа AgavaPLC закрывается.

          Комментарий


          • #6
            Попытка обратится напрямую к таймеру через StartNode или действием "Команда узлу" не запускает таймер (значение счетчика в виджете не отображается).

            Комментарий


            • #7
              А вот при обращении к таймеру через "Команда узлу", при работающем Task (Периодический) счетчик сбрасывается. Спасибо, это то, что нужно.

              Комментарий


              • #8
                А вот такой вопрос, конструкция типа Если значение Constant1 больше Constant2 то Constant3 равно например 50, может быть решена средствами операций в Signals или только через скрипт? и второй вопрос, в TaskPLC при попытке создать блок "Условие" отображается сообщение "Узел не создан". С чем это связано? Для создания такого блока требуются какие то условия?

                Комментарий


                • #9
                  Описанную вами конструкцию простым способом можно реализовать только через скрипт. Если вы хотите сделать ее через задачу ПЛК, тогда необходимо преобразовать значение Блока "Больше чем" в int с помощью Блока "Конвертер", затем умножить его на 50 и это подать на вход Блока "Установка значения". Это сложно и неудобно.
                  Блок "Условие" не предполагается к использованию в Задаче ПЛК. Рекомендую пользоваться только Панелью блоков, включить которую можно нажав ПКМ по надписи "Свойства" в правом верхнем углу экрана и отметив галочкой соответствующий пункт. Блоки из данной панели можно перетаскивать на поле задачи ПЛК.
                  Последний раз редактировалось Лазарев Михаил; 03-05-2023, 10:40 AM.

                  Комментарий


                  • #10
                    Понял, спасибо.

                    Комментарий

                    Обработка...
                    X