Страница 26 из 252 ПерваяПервая ... 1624252627283676126 ... ПоследняяПоследняя
Показано с 251 по 260 из 2512

Тема: CODESYS V3.5. Визуализация

  1. #251
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    В примере 11.2.2 все переключения происходят по нажатию кнопок, а мне надо, чтобы экраны переключались как по нажатию кнопок, так и с помощью переменной по окончании какого либо процесса в программе
    Да, извините. Для начала предложил бы попробовать совместить использование параметра Переключение переменной фрейма и CURRENTCLIENTID (см. 11.4.4, пп. 2). Т.е. привязять к фрейму что-то типа arrFrameIndex[CURRENTCLIENTID] и уже с ним работать в коде кнопок и самой программы.

    Завтра утром постараюсь сделать для вас какой-нибудь мини-пример.

    Я правильно понимаю, что говоря о многопользовательском доступе, вы имеете в виду несколько клиентов веб-визуализации? Их можно как-то идентифицировать в программе? (по логину/паролю, например)

  2. #252

    По умолчанию

    Честно говоря проект работает уже на предприятии, но как всегда хочется его со временем усовершенствовать, т. е. это называется "с жиру бесится". Многопользовательский доступ пока не осуществлён, пользователь один - оператор. В дальнейшем намечается возможность подключения других пользователей, буду убеждать руководство, чтобы эти пользователи не могли бы своими шаловливыми ручками вносить изменения в ход программы, но посмотреть как идёт процесс они имеют право, соответственно они должны иметь возможность переключать экраны, не знаю, может будут конфликты между оператором и пользователем, скажем так: оператор включил один экран, а удалённый пользователь захотел посмотреть другой.
    На экранах фреймов у меня находятся кнопки "ПУСК" и "СТОП", допустим оператор включил в работу экран №2, а на экране №0 процесс закончился, оператор должен переключится на экран №0 путём нажатия соответствующей кнопки и затем нажать "СТОП", но дело в том что если он забыл переключится, то "СТОП" будет нажат на экране №2, поэтому я хотел бы сделать так, чтобы по окончании процесса на экране №0 включился именно он и оператор не задумываясь нажал кнопку "СТОП". Я конечно же сделал предупреждение, что при нажатии кнопки "СТОП" при не завершённом процессе выскакивает подсказка, что процесс не окончен и если Вы хотите его закончить, то надо удерживать кнопку нажатой более 5 сек, но это как то немного раздражает.

  3. #253
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Честно говоря проект работает уже на предприятии, но как всегда хочется его со временем усовершенствовать, т. е. это называется "с жиру бесится". Многопользовательский доступ пока не осуществлён, пользователь один - оператор. В дальнейшем намечается возможность подключения других пользователей, буду убеждать руководство, чтобы эти пользователи не могли бы своими шаловливыми ручками вносить изменения в ход программы, но посмотреть как идёт процесс они имеют право, соответственно они должны иметь возможность переключать экраны, не знаю, может будут конфликты между оператором и пользователем, скажем так: оператор включил один экран, а удалённый пользователь захотел посмотреть другой.
    На экранах фреймов у меня находятся кнопки "ПУСК" и "СТОП", допустим оператор включил в работу экран №2, а на экране №0 процесс закончился, оператор должен переключится на экран №0 путём нажатия соответствующей кнопки и затем нажать "СТОП", но дело в том что если он забыл переключится, то "СТОП" будет нажат на экране №2, поэтому я хотел бы сделать так, чтобы по окончании процесса на экране №0 включился именно он и оператор не задумываясь нажал кнопку "СТОП". Я конечно же сделал предупреждение, что при нажатии кнопки "СТОП" при не завершённом процессе выскакивает подсказка, что процесс не окончен и если Вы хотите его закончить, то надо удерживать кнопку нажатой более 5 сек, но это как то немного раздражает.
    Задачу понял, завтра подумаю, что можно сделать в такой ситуации.

  4. #254
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    gecha, как и обещал, выкладываю простейший пример (запускать в SP6 или выше).

    В проекте два фрейма. Пользователи независимо переключают их кнопками Экран 0 и Экран 1, расположенными под фреймом. По переднему фронту триггера из программы (для его запуска нажмите на кнопку, расположенную в фрейме или имитируйте сигнал в отладчике) для всех пользователей открывается соответствующий триггеру фрейм.

    Вопрос в том, для всех ли пользователей должен открываться фрейм завершившегося процесса. Для оператора это логично, но кто-то может зайти по вебу с целью посмотреть информацию о каком-нибудь протекающем процессе - вполне возможно, что им такая смена фреймов не понравится. Но тогда надо как-то идентифицировать пользователей - например, по логину/паролю - ну и дальнейшее, думаю, понятно: IF bSwitchFrame0 AND CurrentUserName... и т.д.
    Вложения Вложения

  5. #255

    По умолчанию

    Добрый вечер, Евгений.
    К своему стыду хочу сказать, что в ST я не силён ни как, поэтому, если конечно можно, то в CFC.
    И ещё, если в каждом фрейме разместить, ну например лампочку и кнопку, кнопка будет включать таймер ТР и когда он срабатывает, то загорается лампочка и эта же команда переключает на соответствующий экран фрейма, допустим был включён экран 0, а таймер сработал на экране 1 и как только он сработал, то произошло переключение на экран 1

  6. #256
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Добрый вечер, Евгений.
    К своему стыду хочу сказать, что в ST я не силён ни как, поэтому, если конечно можно, то в CFC.
    И ещё, если в каждом фрейме разместить, ну например лампочку и кнопку, кнопка будет включать таймер ТР и когда он срабатывает, то загорается лампочка и эта же команда переключает на соответствующий экран фрейма, допустим был включён экран 0, а таймер сработал на экране 1 и как только он сработал, то произошло переключение на экран 1
    Я постараюсь в понедельник адаптировать пример под ваши пожелания. В то же время, если есть возможность, сформулируйте, что вам показалось непонятным в примере в данный момент.

  7. #257

    По умолчанию

    Мне не понятно "По переднему фронту триггера из программы (для его запуска нажмите на кнопку, расположенную в фрейме или имитируйте сигнал в отладчике) для всех пользователей открывается соответствующий триггеру фрейм", в ST я не вижу триггера, точно так же Вы мне приводили пример таймера в ST, честно говоря я ему долго искал аналог на CFC, но когда нашёл, то был удивлён как всё просто, ну и т. д.

  8. #258
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Мне не понятно "По переднему фронту триггера из программы (для его запуска нажмите на кнопку, расположенную в фрейме или имитируйте сигнал в отладчике) для всех пользователей открывается соответствующий триггеру фрейм", в ST я не вижу триггера, точно так же Вы мне приводили пример таймера в ST, честно говоря я ему долго искал аналог на CFC, но когда нашёл, то был удивлён как всё просто, ну и т. д.
    А, так триггером в данном контексте я называю переменные bSwitchFrame. По переднему фронту такой переменной происходит переключение фрейма. Когда вы нажимаете на кнопку, переменная bSwitchFrame переключается в TRUE, программа это отлавливает и переключает фрейм, после чего сбрасывает переменную обратно в FALSE. Кнопки - для наглядности, вы можете переключать эту переменную из программы по своим условиям (т.е. по факту окончания процесса).

  9. #259

    По умолчанию

    Хорошо, вот я запускаю таймер, он отработал, передний фронт этого таймера подаю на R TRIG и его короткий импульс должен открыть соответствующий экран? Так?

  10. #260
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Хорошо, вот я запускаю таймер, он отработал, передний фронт этого таймера подаю на R TRIG и его короткий импульс должен открыть соответствующий экран? Так?
    Мне кажется, лучше логический выход таймера цеплять на вход EN блока MOVE, производить присваивание, выход ENO цеплять на еще один MOVE, который сбросит триггер. Основной проблемой, как мне видится, может быть компактная реализация на CFC цикла FOR. Самым разумным решением было бы написать на ST функциональный блок из нескольких строк кода, который бы принимал на вход номер экрана, который надо открыть в фрейме. В общем, в понедельник сделаю версию примера на CFC.

Страница 26 из 252 ПерваяПервая ... 1624252627283676126 ... ПоследняяПоследняя

Похожие темы

  1. Визуализация CoDeSys
    от Newcomer в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 24.04.2018, 15:26
  2. Визуализация в CoDeSys
    от Newcomer в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 10.05.2017, 21:11
  3. Визуализация CodeSys
    от DanJer в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 30.08.2012, 04:53
  4. Визуализация Codesys
    от Slipknot в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 31.10.2008, 11:36
  5. Визуализация в CoDeSys 2.3
    от Slawa в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 29.08.2008, 18:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •