Показано с 1 по 6 из 6

Тема: Время до выхода в СПК207 (CurrentRemainingAutoLogoutTime)

  1. #1
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    996

    По умолчанию Время до выхода в СПК207 (CurrentRemainingAutoLogoutTime)

    Добрый день, уважаемые форумчане!

    Как следует из руководства по СПК ("СПК. Визуализация. Руководство для начинающих и продвинутых пользователей", стр. 394)
    для пользователя "None" в параметре CurrentRemainingAutoLogoutTime отражается "некорректное значение, поскольку сам параметр в контексте
    отсутствия пользователя не имеет смысла". Все верно, но хочется, чтобы данный параметр не отображался для данного пользователя.
    Нашел такой естественный выход из положения, как прописать в программе следующий код:
    Код:
    AutoLogOutTimeVisible := WSTRING_TO_STRING(VisuElems.CurrentUserGroupName) <> 'None';
    Теперь к полю "Невидимый" элемента отображения я привязываю переменную AutoLogOutTimeVisible (инвертированную) и все успешно работает.
    А именно, на экране СПК207 время до выхода отображается только для пользователей не принадлежащих к группе "None".

    Проблема начинается, когда одновременно с работой СПК207, я подключаюсь к нему браузером. В этом случае, если текущий пользователь на одном из устройств принадлежит группе "None", а на другом устройстве выполнен вход, например, под пользователем из группы Admin, переменная отображающая время до выхода начинает мигать, то отображая время, то исчезая с экрана, причем на обоих устройствах. Если залогинится к панели через CoDeSys, то видно, что переменная VisuElems.CurrentUserGroupName принимает, то значение "None", то значение "Admin".

    Как это поправить?

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

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Добрый день, уважаемые форумчане!

    Как следует из руководства по СПК ("СПК. Визуализация. Руководство для начинающих и продвинутых пользователей", стр. 394)
    для пользователя "None" в параметре CurrentRemainingAutoLogoutTime отражается "некорректное значение, поскольку сам параметр в контексте
    отсутствия пользователя не имеет смысла". Все верно, но хочется, чтобы данный параметр не отображался для данного пользователя.
    Нашел такой естественный выход из положения, как прописать в программе следующий код:
    Код:
    AutoLogOutTimeVisible := WSTRING_TO_STRING(VisuElems.CurrentUserGroupName) <> 'None';
    Теперь к полю "Невидимый" элемента отображения я привязываю переменную AutoLogOutTimeVisible (инвертированную) и все успешно работает.
    А именно, на экране СПК207 время до выхода отображается только для пользователей не принадлежащих к группе "None".

    Проблема начинается, когда одновременно с работой СПК207, я подключаюсь к нему браузером. В этом случае, если текущий пользователь на одном из устройств принадлежит группе "None", а на другом устройстве выполнен вход, например, под пользователем из группы Admin, переменная отображающая время до выхода начинает мигать, то отображая время, то исчезая с экрана, причем на обоих устройствах. Если залогинится к панели через CoDeSys, то видно, что переменная VisuElems.CurrentUserGroupName принимает, то значение "None", то значение "Admin".

    Как это поправить?
    Вопрос несколько специфический, поэтому сходу ответить не могу. Если есть возможность, отправьте архив вашего проекта на e.kislov@owen.ru - так мне будет легче предложить вам какое-то решение.

  3. #3
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    996

    По умолчанию

    Отправил письмом архив проекта.

  4. #4
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    996

    По умолчанию

    Для тех кто столкнется с подобной задачей предлагаю решение (переработанное решение Евгения Кислова).
    Суть метода состоит в использовании переменной CURRENTCLIENTID, которая возвращает номер текущего клиента.
    Для использования переменной необходимо в проект добавить библиотеку VisuGlobalClientManager.
    К сожалению, тестовый проект подгрузить почему-то не получается, поэтому привожу код. В PLC_PRG следует написать, следующее:
    Код:
    (* Время до выхода *)
    IF VisuElems.CurrentUserGroupName="None" THEN
    	asAutoLogoutTime[CURRENTCLIENTID] :='';	
    ELSE
    	AutoLogoutTime := TIME_TO_DINT(VisuElems.CurrentRemainingAutoLogoutTime/1000);
    	adSeconds[CURRENTCLIENTID] := AutoLogoutTime MOD 60;
    	adMinutes[CURRENTCLIENTID] := AutoLogoutTime / 60;
    			
    	asSeconds[CURRENTCLIENTID] := DIntTimeToStrTime(DIntTime:= adSeconds[CURRENTCLIENTID]);
    	asMinutes[CURRENTCLIENTID] := DIntTimeToStrTime(DIntTime:= adMinutes[CURRENTCLIENTID]);
    	asAutoLogoutTime[CURRENTCLIENTID] := concat(concat(asMinutes[CURRENTCLIENTID],' : '),asSeconds[CURRENTCLIENTID]);
    END_IF
    Код функции DIntTimeToStrTime выглядит следующим образом:
    Код:
    if DIntTime < 10 then
    	DIntTimeToStrTime := concat('0', dint_to_string(DIntTime));
    else
    	DIntTimeToStrTime :=  dint_to_string(DIntTime);		
    end_if;
    Теперь к полю вывода привязываем переменную: asAutoLogoutTime[CURRENTCLIENTID].
    В этом случае для каждого пользователя будет отображаться свое время до выхода.

    Спасибо, за подробный пример Евгению Кислову.

  5. #5
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    996

    По умолчанию

    Нашел более простой способ. Необходимо использовать переменную CurrentUseAutoLogoutTime, класса VisuElems.
    Привязываем ее к полю "Невидимый" и все работает без дополнительного кода.

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

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Нашел более простой способ. Необходимо использовать переменную CurrentUseAutoLogoutTime, класса VisuElems.
    Привязываем ее к полю "Невидимый" и все работает без дополнительного кода.
    Спасибо за информацию.

    Внесу дополнение - использовать надо инвертированное значение переменной.

Похожие темы

  1. Ответов: 16
    Последнее сообщение: 15.02.2017, 11:39
  2. Время остановилось СПК207
    от Пьер в разделе СПК2xx (архив)
    Ответов: 17
    Последнее сообщение: 18.03.2016, 09:26
  3. Время выхода на уставку.
    от Artem в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.03.2011, 23:29
  4. Ответов: 21
    Последнее сообщение: 03.03.2009, 16:27

Ваши права

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