5. CONFIGURATION
// If the point have ever been updated once ...
IF NOT QUALITY_PB_NX1005_I.FLAGS.FLAG_RESTART THEN
QUALITY_PB_NX1005_I.FLAGS.FLAG_OLD_DATA:= TRUE;
END_IF
END_IF
END_IF
// In PROFIBUS communication failure with the PROFIBUS slave ...
ELSE
QUALITY_PB_NX1005_I.VALIDITY:= VALIDITY_INVALID;
QUALITY_PB_NX1005_I.FLAGS.FLAG_COMM_FAIL:= TRUE;
QUALITY_PB_NX1005_I.FLAGS.FLAG_FAILURE:= FALSE;
// If the point have ever been updated once ...
IF NOT QUALITY_PB_NX1005_I.FLAGS.FLAG_RESTART THEN
QUALITY_PB_NX1005_I.FLAGS.FLAG_OLD_DATA:= TRUE;
END_IF
END_IF
5.1.5.1.7. PROFIBUS Digital Output Quality
// PROFIBUS digital output quality update, module NX1005
// In communication success case with PROFIBUS slave (address = 99) ...
IF DG_NX5001.tMstStatus.abySlv_State.bSlave_99 = TRUE THEN
// Waits the PROFIBUS slave become apt to exchange data and diagnostics
// (It is necessary to wait, avoiding invalid quality generation)
IF DG_NX5110.tPbusHeadA.tStatus1.bStation_Non_Existent = FALSE AND
DG_NX5110.tPbusHeadA.tStatus1.bStation_Not_Ready = FALSE AND
DG_NX5110.tPbusHeadA.wIdentNumber > 0 THEN
QUALITY_PB_NX1005_O.FLAGS.FLAG_COMM_FAIL:= FALSE;
// If there is a module present on the bus (slot = 2) and
// if there is no modules config problem (general) and
// if there is no config problem in that module (specific) and
// if there is no fatal error identification by the module and
// if there is no outputs short circuit indication and
// if there is no external power supply missing indication ...
IF (DG_NX5110.tPbusHeadA.dwModuleNotPresent AND SHL(1, 2)) = 0 AND
DG_NX5110.tPbusHeadA.tSummarized.bConfigMismatch = FALSE AND
DG_NX1005_24_Vdc_8_DO_Trans_8_DI.tGeneral.bConfigMismatch = FALSE AND
DG_NX1005_24_Vdc_8_DO_Trans_8_DI.tGeneral.bFatalError = FALSE AND
DG_NX1005_24_Vdc_8_DO_Trans_8_DI.tDetailed.bOutputShortCircuit = FALSE AND
DG_NX1005_24_Vdc_8_DO_Trans_8_DI.tDetailed.bNoExternalSupply = FALSE THEN
QUALITY_PB_NX1005_O.VALIDITY:= VALIDITY_GOOD;
QUALITY_PB_NX1005_O.FLAGS.FLAG_RESTART:= FALSE;
QUALITY_PB_NX1005_O.FLAGS.FLAG_FAILURE:= FALSE;
QUALITY_PB_NX1005_O.FLAGS.FLAG_OLD_DATA:= FALSE;
ELSE
QUALITY_PB_NX1005_O.VALIDITY:= VALIDITY_INVALID;
QUALITY_PB_NX1005_O.FLAGS.FLAG_FAILURE:= TRUE;
// If the point have ever been updated once ...
IF NOT QUALITY_PB_NX1005_O.FLAGS.FLAG_RESTART THEN
QUALITY_PB_NX1005_O.FLAGS.FLAG_OLD_DATA:= TRUE;
END_IF
82