diff --git a/src/iec61850/server/mms_mapping/control.c b/src/iec61850/server/mms_mapping/control.c index 4867ae17..2a752b00 100644 --- a/src/iec61850/server/mms_mapping/control.c +++ b/src/iec61850/server/mms_mapping/control.c @@ -294,14 +294,16 @@ executeStateMachine: } if (dynamicCheckResult == CONTROL_RESULT_FAILED) { - if (isTimeActivatedControl) { + if ((self->errorValue != CONTROL_ERROR_NO_ERROR) || (self->addCauseValue != ADD_CAUSE_UNKNOWN)) { ControlObject_sendLastApplError(self, self->mmsConnection, "Oper", self->errorValue, self->addCauseValue, self->ctlNum, self->origin, false); } - else + + if (!isTimeActivatedControl) { MmsServerConnection_sendWriteResponse(self->mmsConnection, self->operateInvokeId, DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED, true); + } abortControlOperation(self); exitControlTask(self);