public OneDasModule(OneDasDataType dataType, DataDirection dataDirection, Endianness endianness, int size) { this.DataType = dataType; this.DataDirection = dataDirection; this.Endianness = endianness; this.Size = size; }
public static Type GetTypeFromOneDasDataType(OneDasDataType oneDasDataType) { switch (oneDasDataType) { case OneDasDataType.BOOLEAN: return(typeof(bool)); case OneDasDataType.UINT8: return(typeof(Byte)); case OneDasDataType.INT8: return(typeof(SByte)); case OneDasDataType.UINT16: return(typeof(UInt16)); case OneDasDataType.INT16: return(typeof(Int16)); case OneDasDataType.UINT32: return(typeof(UInt32)); case OneDasDataType.INT32: return(typeof(Int32)); case OneDasDataType.FLOAT32: return(typeof(Single)); case OneDasDataType.FLOAT64: return(typeof(Double)); default: throw new NotSupportedException(); } }
public DataPort(string name, OneDasDataType dataType, DataDirection dataDirection, Endianness endianness) { this.Name = name; this.DataType = dataType; this.DataDirection = dataDirection; this.Endianness = endianness; this.BitOffset = -1; // i.e. bool is treated as byte-oriented }
public static byte GetBitLength(OneDasDataType oneDasDataType, bool expandedBoolean) { if (!expandedBoolean && oneDasDataType == OneDasDataType.BOOLEAN) { return(1); } else { return(Convert.ToByte((int)oneDasDataType & 0xff)); } }
public override void EvaluateSettings() { Contract.Requires(SelectedModuleSet != null); if (!(0 < this.StationNumber && this.StationNumber < 127)) { throw new Exception(ExtensionErrorMessage.EL6731_0010Settings_StationNumberInvalid); } this.SlaveInfo.DynamicData.PdoSet.Clear(); foreach (EL6731_0010Module el6731_0010_Module in this.SelectedModuleSet) { ushort pdoIndex = 0; ushort syncManager = 0; ushort variableIndex = 0; ushort arrayLength = 0; OneDasDataType dataType = default; DataDirection dataDirection = default; List <SlaveVariable> ecSlaveVariableSet = new List <SlaveVariable>(); if ((int)el6731_0010_Module == 0x50) // word ouput { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Output; arrayLength = (ushort)(el6731_0010_Module - 0x50 + 1); } else if (0xd1 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0xdf) { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Output; arrayLength = (ushort)(el6731_0010_Module - 0xd1 + 2); } else if (0x40d0 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0x40ff) { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Output; arrayLength = (ushort)(el6731_0010_Module - 0x40d0 + 16 + 1); } else if ((int)el6731_0010_Module == 0x60) // word input { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Input; arrayLength = (ushort)(el6731_0010_Module - 0x60 + 1); } else if (0xe1 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0xef) { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Input; arrayLength = (ushort)(el6731_0010_Module - 0xe1 + 2); } else if (0x80d0 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0x80fff) { dataType = OneDasDataType.UINT16; dataDirection = DataDirection.Input; arrayLength = (ushort)(el6731_0010_Module - 0x80d0 + 16 + 1); } else if (0x10 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0x1f) // byte output { dataType = OneDasDataType.UINT8; dataDirection = DataDirection.Output; arrayLength = (ushort)(el6731_0010_Module - 0x10 + 1); } else if (0x20 <= (int)el6731_0010_Module && (int)el6731_0010_Module <= 0x2f) // byte input { dataType = OneDasDataType.UINT8; dataDirection = DataDirection.Input; arrayLength = (ushort)(el6731_0010_Module - 0x20 + 1); } else { throw new Exception(ExtensionErrorMessage.EL6731_0010Settings_ModuleInvalid); } // improve, implicit? switch (dataDirection) { case DataDirection.Output: pdoIndex = 0x1600; syncManager = 2; variableIndex = 0x7000; break; case DataDirection.Input: pdoIndex = 0x1a00; syncManager = 3; variableIndex = 0x6000; break; } SlavePdo slavePdo = new SlavePdo(this.SlaveInfo, el6731_0010_Module.ToString(), pdoIndex, 0, true, true, syncManager); ushort offset = (ushort)this.SlaveInfo.DynamicData.PdoSet.SelectMany(x => x.VariableSet).Where(x => x.DataDirection == dataDirection).Count(); for (ushort i = (ushort)(offset + 0); i <= offset + arrayLength - 1; i++) { ecSlaveVariableSet.Add(new SlaveVariable(slavePdo, i.ToString(), variableIndex, Convert.ToByte(i + 1), dataDirection, dataType)); } slavePdo.SetVariableSet(ecSlaveVariableSet); this.SlaveInfo.DynamicData.PdoSet.Add(slavePdo); } // 1A80 improve! include Variables SlavePdo slavePdo2 = new SlavePdo(this.SlaveInfo, "Diagnostics", 0x1a80, 0, true, true, 3); slavePdo2.SetVariableSet(new List <SlaveVariable>()); this.SlaveInfo.DynamicData.PdoSet.Add(slavePdo2); }
public SlaveVariable(SlavePdo parent, string name, ushort index, byte subIndex, DataDirection dataDirection, OneDasDataType dataType, byte bitLength = 0) : base(name, dataType, dataDirection, Endianness.LittleEndian) { Contract.Requires(parent != null); this.Parent = parent; this.Index = index; this.SubIndex = subIndex; if (bitLength == 0) { this.BitLength = OneDasUtilities.GetBitLength(dataType, false); } else { this.BitLength = bitLength; } }
public VariableDescription(Guid guid, string variableName, string datasetName, string group, OneDasDataType dataType, ulong samplesPerDay, string unit, List <TransferFunction> transferFunctionSet, Type dataStorageType) { this.Guid = guid; this.VariableName = variableName; this.DatasetName = datasetName; this.Group = group; this.DataType = dataType; this.SamplesPerDay = samplesPerDay; this.Unit = unit; this.TransferFunctionSet = transferFunctionSet; this.DataStorageType = dataStorageType; if (!typeof(IDataStorage).IsAssignableFrom(dataStorageType)) { throw new ArgumentException(ErrorMessage.VariableContext_DataStorageTypeInvalid); } }
public static int SizeOf(OneDasDataType dataType) { return(OneDasUtilities.SizeOf(OneDasUtilities.GetTypeFromOneDasDataType(dataType))); }