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

Тема: Активный пользователь в системе

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

    По умолчанию Активный пользователь в системе

    Всем привет, пытаюсь реализовать в проекте разграничение прав доступа между пользователями, с этим проблем нет, но мне необходимо еще отслеживать действия активного пользователя в системе. Например , пользователь залогинился, нажал кнопку, произошло какое либо действие , как это отследить и вывести в список аварии например в тот же Alarm manager, например авария N1, текущий пользователь : user1. Возможно ли такое вообще на CDS?

  2. #2

    По умолчанию

    В CODESYS Store есть пример подписки на изменение переменных с визуализации (ссылка) к сожалению он актуален только для CODESYS 3.5 SP9 и выше.
    Т.е. на СПК не заработает.

    Но, если у Вас изменение переменных подтверждается нажатием на кнопку (а-ля "Применить"), то можно использовать следующий подход:

    В визуализации есть неявная переменная
    pClientData типа VisuElems.VisuStructClientData, которая содержит информацию о текущем клиенте, визуализации и т.д.

    Пишем функцию, которая будет добавлять сообщения о событиях в лог. Добавляя к описанию события имя текущего пользователя
    Код:
    FUNCTION LogVisuEvent : BOOL
    VAR_INPUT
    	// Данные о текущем клиенте визуализации
    	pClient					: POINTER TO VisuElems.VisuStructClientData;
    	// Описание события
    	wsEventDescription		: WSTRING;
    END_VAR
    VAR 
    	_c_wsNoClient			: WSTRING := "Пользователь не указан";
    	_c_wsClientNamePrefix	: WSTRING := "Пользователь: ";
    	_c_wsEventPrefix		: WSTRING := ". Cобытие: ";
    END_VAR
    VAR
    	_wsEventWithClient		: WSTRING;
    	_wsCurrentUserName		: WSTRING;
    END_VAR
    Наполнение функции может быть примерно таким:
    Код:
    _wsCurrentUserName := "";
    IF pClient <> 0 THEN
    	_wsCurrentUserName := pClient^.GlobalData.CurrentUserName;
    END_IF
    
    // Добавляю имя клиента к сообщению
    IF _wsCurrentUserName = "" THEN
    	_wsEventWithClient := WCONCAT (_c_wsNoClient, _c_wsEventPrefix);
    	_wsEventWithClient := WCONCAT (_wsEventWithClient, wsEventDescription);
    ELSE
    	_wsEventWithClient := WCONCAT (_c_wsClientNamePrefix, _wsCurrentUserName);
    	_wsEventWithClient := WCONCAT (_wsEventWithClient, _c_wsEventPrefix);
    	_wsEventWithClient := WCONCAT (_wsEventWithClient, wsEventDescription);
    END_IF
    
    // Добавляю сообщение на 1ю позицию лога
    ShiftVisuEventLog();
    g_awsVisuEventLog[0] := _wsEventWithClient;
    Идем к кнопке, которая сохраняет настройки, и пишем в обработчике события OnMouseDown
    Код:
    LogVisuEvent (pClientData, "Какое-то событие");
    Все, что осталось сделать - сформировать описание события (что было изменено).


    В приложении к сообщению архив проекта с описанной функцией.
    (Добавил 3 пользователя с именами 1, 2, 3. Пароль соответствует имени)

    Цитата Сообщение от andrey96 Посмотреть сообщение
    в тот же Alarm manager, например авария N1, текущий пользователь : user1. Возможно ли такое вообще на CDS?
    AlarmManager не совсем подходит для этой цели т.к. нет возможности на лету менять описание события.
    Вложения Вложения
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

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

    По умолчанию

    Спасибо большое) буду пробовать!

Похожие темы

  1. ТРМ 32 в зависимой системе отопления 95/70
    от rusoks в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 19.11.2014, 12:24
  2. Резистор в системе TN-C
    от spinogryz57 в разделе Трёп (Курилка)
    Ответов: 12
    Последнее сообщение: 17.11.2014, 10:11
  3. Доступ к файловой системе СПК207
    от Андрей Косоротов в разделе СПК2хх
    Ответов: 2
    Последнее сообщение: 01.12.2012, 00:05
  4. ТРМ 133 в системе вентиляции
    от inovator в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 04.11.2011, 16:30
  5. терморегулирование в системе отопления
    от 207 в разделе Трёп (Курилка)
    Ответов: 12
    Последнее сообщение: 29.11.2010, 22:46

Ваши права

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