Warm Resetting and Restarting a Wago PLC via the Reset PB at the Visualization screen

Hello,
Personally I’m using a different approach:
First I’ve declared this event:
image
Which call this function:

FUNCTION FuSystemResetDone : DWORD
VAR_IN_OUT
	{attribute 'analysis' := '-33'}
	EventPrm: CmpApp.EVTPARAM_CmpAppReset;
	{attribute 'analysis' := '+33'}
END_VAR
VAR
END_VAR
-----------------------------------------------------------------------------
GVL_SYSTEM.oWagoAppCtrl.AttachToApplication(''); // attach to own application
IF GVL_SYSTEM.oWagoAppCtrl.xIsAttached THEN
	GVL_SYSTEM.oWagoAppCtrl.StartApplication();
END_IF;

The Reset itself is done by this program:

PROGRAM prgSystemReset
VAR
	_xInitialized				: BOOL;
		_sAppName				: STRING;
END_VAR
---------------------------------------------------------------------------------
GVL_SYSTEM.oWagoAppCtrl(); // cyclic operation for updating outputs

IF NOT(_xInitialized) THEN
	GVL_SYSTEM.oWagoAppCtrl.AttachToApplication(''); // attach to own application
	IF GVL_SYSTEM.oWagoAppCtrl.xIsAttached THEN
		_xInitialized := TRUE;
	END_IF;
ELSE
	_sAppName := GVL_SYSTEM.oWagoAppCtrl.getAppName(); // find out your own name
	IF GVL_SYSTEM.xReset THEN
		IF GVL_SYSTEM.xFactory_Reset_Cold THEN
			GVL_SYSTEM.oWagoAppCtrl.ResetApplicationCold();
		ELSE
			GVL_SYSTEM.oWagoAppCtrl.ResetApplicationWarm();
		END_IF;
	END_IF;
END_IF;

Edit: Add the GVL_SYSTEM list

{attribute 'qualified_only'}
VAR_GLOBAL
	oWagoAppCtrl				: WagoAppControl.FbWagoApplicationControl;
	xReset						: BOOL;
	xFactory_Reset_Cold			: BOOL;
END_VAR