You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

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



  • Open the Library Manager and add the following libraries:
    CmpApp
    SysTypes2 interfaces



  • Activate the automatic generation of the project information in Project/Project information:



  • Create a persistent variable named PersistentVars.

    Adapt PersistentVars as follows:



    Declaration

    {attribute 'qualified_only'}
    VAR_GLOBAL PERSISTENT RETAIN
        xAutoRestart     : BOOL;
        udiCnt            : UDINT;    
    END_VAR





  • Adapt the POU PLC_PRG as follows:


    Declaration

    VAR
    	sAppName      :    STRING := 'Application';
        result        :    RTS_IEC_RESULT;
        
        instPrjInfo   :    CmpApp.PROJECT_INFO;
        pPrjInfo      :    POINTER TO CmpApp.PROJECT_INFO := ADR(instPrjInfo);
        pApp          :    POINTER TO CmpApp.APPLICATION;
        udiState      :    UDINT;
        udiOpState    :    UDINT;
        xInit         :    BOOL := TRUE;
        xReset        :    BOOL;
    END_VAR

    Implementation

    IF xInit THEN
        pApp := CmpApp.AppFindApplicationByName(pszString := sAppName, pResult := ADR(result));    
        // Flag "Automatically generate 'Project Information' POU's must be set
        CmpApp.AppGetProjectInformation(pApp := pApp, pInfo :=pPrjInfo);
        xInit := False;
        PersistentVars.xAutoRestart := False;
    END_IF
    
    IF xReset THEN
        xReset := FALSE;
        PersistentVars.xAutoRestart := True;        
        CmpApp.AppReset(pApp := pApp, usResetOption := CmpApp.RTS_RESET);
    END_IF


  • Create a new function named taskev_StopDone with the return type DWORD.



    Then adapt the function as follows:



    Declaration

    FUNCTION taskev_StopDone : DWORD
    VAR_INPUT
        EventPrm: CmpApp.EVTPARAM_CmpAppStop;
    END_VAR
    VAR
    END_VAR

    Implementation

    IF PersistentVars.xAutoRestart THEN
    	PersistentVars.udiCnt := PersistentVars.udiCnt + 1;
    	CmpApp.AppStartApplication(PLC_PRG.pApp);
    END_IF







  • No labels