• Create a "Standard project" and select CODESYS Control Win V3 as the device.
  • Define the target system by means of the Network scan.



  • Insert a visualization in the device tree.
    Then the Visualization Manager is inserted automatically with the visu types TargetVisu and WebVisu.
    In addition, a VISU_TASK is also created automatically.



  • Create a user management in the Visualization Manager with the default groups and users.



    Then adapt the passwords of the users:



  • Create a new FB named FB_UserMgmtEventHandler and implement the VisuElems.IUserMgmtEventHandler interface.



    The following methods are created automatically with the FB:
    HandleLogin
    HandleLoginFailed
    HandleLogout
    HandlePasswordChange




  • Adapt the FB_UserMgmtEventHandler function block as follows:


    Declaration

    FUNCTION_BLOCK FB_UserMgmtEventHandler IMPLEMENTS VisuElems.IUserMgmtEventHandler
    VAR_INPUT
    END_VAR
    VAR_OUTPUT
    END_VAR
    VAR
    	udiHandleLogin	:    UDINT;
    	udiHandleLogout	:    UDINT;
    END_VAR


  • Adapt the HandleLogin method as follows:


    Declaration

    (* This method will be called when a login to the visu user management is performed 
     :return: 
     TRUE  - When the handler has handled this event and it should not be handled by someone else
     FALSE - When the event is not handled by this handler*)
    METHOD HandleLogin : BOOL
    VAR_INPUT
        (* A pointer to the client structure were the event occurred.
     The name of the user, that logged in, is stored in pClient^.GlobalData.CurrentUserName*)
        pClient    : POINTER TO VisuElems.VisuStructClientData;
    END_VAR

    Implementation

    udiHandleLogin := udiHandleLogin + 1;


  • Proceed in the same way with the HandleLogout method.

  • Make sure that the VisuElems prefix is also used in the HandleLoginFailed and HandlePasswordChange methods; and that the line "{warning 'add method implementation '}" is deleted.
  • Adapt the POU PLC_PRG as follows:


    Declaration

    VAR
        fbUserMgmtEventHandler    :    FB_UserMgmtEventHandler;
    END_VAR


  • Assign the EventHandler to the visualization as follows.

    Versions < V3.5.SP10

    In old versions, the following approach is not possible, because the assignment of a program from the visualization manager was not possible.
    For these versions, an initialization must take place in the program code.


    Create a new POU of type "Program". Name it VisuInit, for example, and adapt the program code as follows:


    Declaration

    PROGRAM VisuInit
    VAR
    END_VAR

    Implementation

    VisuElems.Visu_Globals.g_VisuEventManager.SetUserMgmtEventHandler(PLC_PRG.fbUserMgmtEventHandler);


    Assign the VisuInit program to your project as the start procedure within the Visualization Manager:



  • Open the Visualization, add a box, and assign the following properties to it:



  • Repeat the steps as for a button for logging out.

  • Load the project to the controller and start it.
    The variables are increased at each successful "Login" and "Logout".