, xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= _stValveConfig, xOpenValve=> , xCloseValve=> ); // Valve should now be in manual mode and xRequest should have been reset AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode'); AssertFalse(Condition := _stHMIValve.stManualButton.xRequest, Message := 'Valve did not reset the manual mode button request'); TEST_FINISHED();]]> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= _stValveConfig, xOpenValve=> , xCloseValve=> ); AssertFalse(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was released but should not have been'); // Test release for HMI mode change _fbValve( xReleaseManualMode:= TRUE, wProcessINTLK:= _wInterlocks, wProcessINTLKUsed:= _wInterlocksUsed, stHMIInterface:= _stHMIValve, xError=> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= , xOpenValve=> , xCloseValve=> ); AssertTrue(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was not released but should have been'); TEST_FINISHED();]]> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= _stValveConfig, xOpenValve=> , xCloseValve=> ); // Valve should now be in manual mode AssertTrue(Condition := _fbValveOC.IsInManualMode, Message := 'Valve did not change to manual mode pre test'); // Request open from HMI and call valve block _stHMIValve.stOpenButton.xRequest := TRUE; _fbValveOC( xReleaseManualMode:= TRUE, wProcessINTLK:= _wInterlocks, wProcessINTLKUsed:= _wInterlocksUsed, stHMIInterface:= _stHMIValve, xError=> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= , xOpenValve=> , xCloseValve=> ); // test for valve state and HMI feedback AssertTrue(Condition := _fbValveOC.xOpenValve, Message := 'Valve did not open as requested by hmi button'); AssertFalse(Condition := _stHMIValve.stOpenButton.xRequest, Message := 'Valve did not reset open request'); _eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE; _eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE; AssertEquals(Expected := _eExpectedOpenButtonFeedback, Actual := _stHMIValve.stOpenButton.eFeedback, Message := 'Valve did not send correct open button feedback signal while open'); AssertEquals(Expected := _eExpectedCloseButtonFeedback, Actual := _stHMIValve.stCloseButton.eFeedback, Message := 'Valve did not send correct close button feedback signal while open'); // Request close from HMI and call valve block _stHMIValve.stCloseButton.xRequest := TRUE; _fbValveOC( xReleaseManualMode:= TRUE, wProcessINTLK:= _wInterlocks, wProcessINTLKUsed:= _wInterlocksUsed, stHMIInterface:= _stHMIValve, xError=> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= , xOpenValve=> , xCloseValve=> ); // test for valve state and HMI feedback AssertTrue(Condition := _fbValveOC.xCloseValve, Message := 'Valve did not close as requested by hmi button'); AssertFalse(Condition := _stHMIValve.stCloseButton.xRequest, Message := 'Valve did not reset close request'); _eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE; _eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE; AssertEquals(Expected := _eExpectedCloseButtonFeedback, Actual := _stHMIValve.stCloseButton.eFeedback, Message := 'Valve did not send correct close button feedback signal while closed'); AssertEquals(Expected := _eExpectedOpenButtonFeedback, Actual := _stHMIValve.stOpenButton.eFeedback, Message := 'Valve did not send correct open button feedback signal while closed'); TEST_FINISHED();]]> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= _stValveConfig, xOpenValve=> , xCloseValve=> ); // Valve should now be in manual mode AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode pre test'); // Valve should not realease open button with active interlock AssertFalse(Condition := _stHMIValve.stOpenButton.xRelease, Message := 'Valve did release open button but should not'); // Test if request is denied by valve with active interlocks _stHMIValve.stOpenButton.xRequest := TRUE; _fbValve( xReleaseManualMode:= TRUE, wProcessINTLK:= wInterlocks, wProcessINTLKUsed:= wInterlocksUsed, stHMIInterface:= _stHMIValve, xError=> , xOpenFeedback:= , xCloseFeedback:= , xReleaseErrors:= , xConfirmAlarms:= , stValveConfig:= , xOpenValve=> , xCloseValve=> ); AssertFalse(Condition := _fbValve.xOpenValve, Message := 'Valve did not block manual open command with active interlock'); TEST_FINISHED();]]>