internal void SetSecurityviolationValue(string name, SecurityViolation?value, IedModel iedModel, IedServer iedServer) { if (value != null) { var namePath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(name); var val = Convert.ToInt32(value); iedServer.UpdateInt32AttributeValue(namePath, val); } }
private static void UpdateInt(string path, string value, IedServer iedServer, IedModel iedModel) { iedServer.LockDataModel(); try { int str = Convert.ToInt32(value); iedServer.UpdateInt32AttributeValue((DataAttribute)iedModel.GetModelNodeByShortObjectReference(path), str); } catch { // ignored } iedServer.UnlockDataModel(); }
public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel) { QualityCheckClass(); var stValPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".stVal"); var stValVal = Convert.ToInt32(stVal); iedServer.UpdateInt32AttributeValue(stValPath, stValVal); var tPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".t"); var tVal = Convert.ToDateTime(t); iedServer.UpdateUTCTimeAttributeValue(tPath, tVal); var qPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".q"); var qVal = Convert.ToUInt16(q.Validity); iedServer.UpdateQuality(qPath, qVal); }
public void UpdateValue(IedServer server, object DataValue) { if (DataValue == null) { return; } if (server == null) { return; } if (mmsValue == null) { mmsValueInit(); } switch (mmsType) { /** array type (multiple elements of the same type) */ case MmsType.MMS_ARRAY: // not supported break; /** structure type (multiple elements of different types) */ case MmsType.MMS_STRUCTURE: // not supported break; /** boolean */ case MmsType.MMS_BOOLEAN: server.UpdateBooleanAttributeValue(this, Convert.ToBoolean(DataValue)); break; /** bit string */ case MmsType.MMS_BIT_STRING: if (DataValue is uint) { server.UpdateBitStringAttributeValue(this, Convert.ToUInt32(DataValue)); } break; case MmsType.MMS_INTEGER: if (daType == DataAttributeType.INT8 || daType == DataAttributeType.INT16 || daType == DataAttributeType.INT32) { server.UpdateInt32AttributeValue(this, Convert.ToInt32(DataValue)); } else if (daType == DataAttributeType.INT64) { server.UpdateInt64AttributeValue(this, Convert.ToInt64(DataValue)); } else if (daType == DataAttributeType.ENUMERATED) { server.UpdateInt32AttributeValue(this, Convert.ToInt32(DataValue)); } break; /** unsigned integer */ case MmsType.MMS_UNSIGNED: if (daType == DataAttributeType.INT8U || daType == DataAttributeType.INT16U || daType == DataAttributeType.INT32U) { server.UpdateUnsignedAttributeValue(this, Convert.ToUInt32(DataValue)); } break; /** floating point value (32 or 64 bit) */ case MmsType.MMS_FLOAT: if (daType == DataAttributeType.FLOAT32) { server.UpdateFloatAttributeValue(this, (float)DataValue); } else if (daType == DataAttributeType.FLOAT64) { // !!! Attention does not generate reports !!! mmsValue.SetDouble((double)DataValue); } break; /** octet string */ case MmsType.MMS_OCTET_STRING: // !!! Attention does not generate reports !!! mmsValue.setOctetString((byte[])DataValue); break; /** visible string - ANSI string */ case MmsType.MMS_VISIBLE_STRING: server.UpdateVisibleStringAttributeValue(this, (string)DataValue); break; /** Generalized time */ case MmsType.MMS_GENERALIZED_TIME: // not supported break; case MmsType.MMS_BINARY_TIME: // !!! Attention does not generate reports !!! mmsValue.SetBinaryTime((ulong)DataValue); break; /** Binary coded decimal (BCD) - not used */ case MmsType.MMS_BCD: // Not supported break; /** object ID - not used */ case MmsType.MMS_OBJ_ID: // Not supported break; /** Unicode string */ case MmsType.MMS_STRING: // Not supported //mmsValue.SetMmsString((string)DataValue); break; /** UTC time */ case MmsType.MMS_UTC_TIME: if (DataValue is ulong) { server.UpdateUTCTimeAttributeValue(this, Convert.ToUInt64(DataValue)); } else if (DataValue is DateTime) { server.UpdateUTCTimeAttributeValue(this, Util.ConvertDateTime((DateTime)DataValue)); } //mmsValue.SetUtcTimeMs((ulong)DataValue); break; /** will be returned in case of an error (contains error code) */ case MmsType.MMS_DATA_ACCESS_ERROR: // Not supported break; } }