Страница 30 из 275 ПерваяПервая ... 2028293031324080130 ... ПоследняяПоследняя
Показано с 291 по 300 из 3049

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,995

    По умолчанию

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

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

    По умолчанию

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

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

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

  3. #3

    По умолчанию

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

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

    По умолчанию

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

  5. #5

    По умолчанию

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

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

    По умолчанию

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

  7. #7

    По умолчанию

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

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

    По умолчанию

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

  9. #9

    По умолчанию

    Спасибо, Евгений, буду ждать

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

    По умолчанию

    Цитата Сообщение от gecha Посмотреть сообщение
    Спасибо, Евгений, буду ждать
    Вот вариация примера на CFC. Принцип работы: оператор (в примере под этим подразумевается пользователь сервисной визуализации - которая открыта при отладке в редакторе CODESYS) нажимает на кнопку Старт, запуская таймер TON с задержкой 10 секунд. Спустя это время загорается лампа и логический выход таймера поступает на вход экземпляра ФБ SwitchFrame, который открывает для оператора (и только для него) в фрейме данный экран. После этого оператор лишается возможности переключать экраны фрейма кнопками, пока не квитирует таймер нажатием кнопки Сброс. Если были запущены два таймера, то после квитирования таймера, сработавшего последним, в фрейме автоматически откроется экран с предыдущим сработавшим таймером. При этом клиенты веб-визуализации могут свободно переключать экраны кнопками - даже при сработавших таймерах.

    На что стоит обратить внимание:
    1. Пример сделан для SP6.
    2. В ФБ есть константа SwitchClient. Она влияет на кол-во клиентов, для которых ФБ переключает фреймы. При этом индекс 0 должен соответствовать сервисной визуализации, 1 - таргет-визуализации, и начиная с 2 идут веб-клиенты. Если что-то будет происходить не так, то при отладке на СПК смотрите значение переменной CURRENTCLIENTID и меняйте соответствующим образом значение константы.
    3. Поскольку экраны фрейма однотипны, то при наличии их в значительном количестве рекомендуется использовать один экран с интерфейсом (см. п. 11.3.3).

    Вложения Вложения

Страница 30 из 275 ПерваяПервая ... 2028293031324080130 ... ПоследняяПоследняя

Похожие темы

  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, 03:53
  4. Визуализация Codesys
    от Slipknot в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 31.10.2008, 11:36
  5. Визуализация в CoDeSys 2.3
    от Slawa в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 29.08.2008, 17:30

Ваши права

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