public S7DataRow(string name, S7DataRowType datatype, Block plcblock) { this.CurrentBlock = plcblock; this.Name = name; this.DataType = datatype; if (datatype == S7DataRowType.S5_KC || datatype == S7DataRowType.S5_C) StringSize = 2; }
public S7DataRow(string name, S7DataRowType datatype, Block plcblock) { this.CurrentBlock = plcblock; this.Name = name; this.DataType = datatype; if (datatype == S7DataRowType.S5_KC || datatype == S7DataRowType.S5_C) { StringSize = 2; } }
public static object DefaultValueForType(S7DataRowType DataType) { if (DataType == S7DataRowType.WORD) return (UInt16)0; else if (DataType == S7DataRowType.BOOL) return false; else if (DataType == S7DataRowType.BYTE) return (byte)0; else if (DataType == S7DataRowType.DWORD) return (UInt32)0; else if (DataType == S7DataRowType.INT) return (Int16)0; else if (DataType == S7DataRowType.DINT) return (Int32)0; else if (DataType == S7DataRowType.REAL) return (double)0; else if (DataType == S7DataRowType.S5TIME) return new TimeSpan(); else if (DataType == S7DataRowType.TIME) return new TimeSpan(); else if (DataType == S7DataRowType.DATE) return new DateTime(1990, 1, 1, 0, 0, 0, 0); else if (DataType == S7DataRowType.TIME_OF_DAY) return new DateTime(1990, 1, 1, 0, 0, 0, 0); else if (DataType == S7DataRowType.CHAR) return ' '; else if (DataType == S7DataRowType.DATE_AND_TIME) return new DateTime(1990, 1, 1, 0, 0, 0, 0); else if (DataType == S7DataRowType.STRING) return ""; else if (DataType == S7DataRowType.STRUCT) return null; else if (DataType == S7DataRowType.UDT) return null; return null; }
public Block DataTypeBlock { get; set; } //When the Type is SFB, FB or UDT, this contains the Block! public TIADataRow(string name, S7DataRowType datatype, Block block) { this.Name = name; this.DataType = datatype; this.CurrentBlock = block; }
public static string ValueToString(object Value, S7DataRowType DataType) { if (DataType == S7DataRowType.S5_KY) return ((UInt16)Value / 256).ToString().PadLeft(3, '0') + "," + ((UInt16)Value % 256).ToString().PadLeft(3, '0'); else if (DataType == S7DataRowType.S5_KF) return ((Int16)Value > 0 ? "+" : "") + Value.ToString(); else if (DataType == S7DataRowType.S5_KH) return ((UInt16)Value).ToString("X", NumberFormatInfo.CurrentInfo).PadLeft(4, '0'); else if (DataType == S7DataRowType.S5_KG) return SingleExtensions.ToS5(((float)Value)); else if (DataType == S7DataRowType.S5_C || DataType == S7DataRowType.S5_KC) return "'" + ((string)Value) + "'"; //.PadLeft(4, ' ') else if (DataType == S7DataRowType.S5_KC) return "'" + ((string)Value).PadLeft(2, ' ') + "'"; else if (DataType == S7DataRowType.S5_KT) return Helper.GetS5TimeFromTimeSpan(((TimeSpan)Value)); else if (DataType == S7DataRowType.S5_KM) { var bt = BitConverter.GetBytes((UInt16)Value); string ret = ""; foreach (byte b in bt) { if (ret != "") ret = " " + ret; ret = libnodave.dec2bin(b) + ret; } return ret; } else if (DataType == S7DataRowType.WORD) return "W#16#" + ((UInt16)Value).ToString("X", NumberFormatInfo.CurrentInfo); else if (DataType == S7DataRowType.BYTE) return "B#16#" + ((byte)Value).ToString("X", NumberFormatInfo.CurrentInfo); else if (DataType == S7DataRowType.DWORD) return "DW#16#" + ((UInt32)Value).ToString("X", NumberFormatInfo.CurrentInfo); else if (DataType == S7DataRowType.INT) return ((Int16)Value).ToString(); else if (DataType == S7DataRowType.DINT) return "L#" + ((Int32)Value).ToString(); else if (DataType == S7DataRowType.REAL) return ((DateTime)Value).ToString(); else if (DataType == S7DataRowType.S5TIME) { var bt = new byte[2]; libnodave.putS5Timeat(bt, 0, (TimeSpan)Value); return Helper.GetS5Time(bt[0], bt[1]); } else if (DataType == S7DataRowType.TIME) { var tm = (TimeSpan)Value; var ret = new StringBuilder("T#"); if (tm.TotalMilliseconds < 0) ret.Append("-"); if (tm.Days != 0) ret.Append(tm.Days + "D"); if (tm.Hours != 0) ret.Append(tm.Hours + "H"); if (tm.Minutes != 0) ret.Append(tm.Minutes + "M"); if (tm.Seconds != 0) ret.Append(tm.Seconds + "S"); if (tm.Milliseconds != 0 || tm.Ticks == 0) ret.Append(tm.Milliseconds + "MS"); return ret.ToString(); } else if (DataType == S7DataRowType.DATE) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("D#"); sb.Append(ak.Year); sb.Append("-"); sb.Append(ak.Month); sb.Append("-"); sb.Append(ak.Day); return sb.ToString(); } else if (DataType == S7DataRowType.TIME_OF_DAY) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("TOD#"); sb.Append(ak.Hour); sb.Append(":"); sb.Append(ak.Minute); sb.Append(":"); sb.Append(ak.Second); sb.Append("."); sb.Append(ak.Millisecond.ToString().PadRight(3, '0')); return sb.ToString(); } else if (DataType == S7DataRowType.CHAR) return ((char)Value).ToString(); else if (DataType == S7DataRowType.DATE_AND_TIME) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("DT#"); sb.Append(ak.Year.ToString().Substring(2)); sb.Append("-"); sb.Append(ak.Month); sb.Append("-"); sb.Append(ak.Day); sb.Append("-"); sb.Append(ak.Hour); sb.Append(":"); sb.Append(ak.Minute); sb.Append(":"); sb.Append(ak.Second); sb.Append("."); sb.Append(ak.Millisecond.ToString().PadRight(3, '0')); return sb.ToString(); } else if (DataType == S7DataRowType.STRING) return Value.ToString(); else if (DataType == S7DataRowType.STRUCT) return null; else if (DataType == S7DataRowType.UDT) return null; if (Value != null) return Value.ToString(); return null; }
public static object StringValueToObject(string Value, S7DataRowType DataType) { if (DataType == S7DataRowType.WORD) return Convert.ToUInt16(Helper.GetIntFromHexString(Value)); else if (DataType == S7DataRowType.BOOL) return bool.Parse(Value); else if (DataType == S7DataRowType.DWORD) return Convert.ToUInt32(Helper.GetIntFromHexString(Value)); else if (DataType == S7DataRowType.BYTE) return Convert.ToByte(Helper.GetIntFromHexString(Value)); else if (DataType == S7DataRowType.INT) return Int16.Parse(Value); else if (DataType == S7DataRowType.DINT) return Int32.Parse(Value.Replace("L#", "")); else if (DataType == S7DataRowType.REAL) return double.Parse(Value); else if (DataType == S7DataRowType.S5TIME) return Helper.GetTimespanFromS5TimeorTime(Value); else if (DataType == S7DataRowType.TIME) return Helper.GetTimespanFromS5TimeorTime(Value); else if (DataType == S7DataRowType.DATE) return Helper.GetDateTimeFromDateString(Value); else if (DataType == S7DataRowType.TIME_OF_DAY) return Helper.GetDateTimeFromTimeOfDayString(Value); else if (DataType == S7DataRowType.CHAR) return Value.ToString()[1]; else if (DataType == S7DataRowType.DATE_AND_TIME) return Helper.GetDateTimeFromDateAndTimeString(Value); else if (DataType == S7DataRowType.STRING) return Value.ToString(); else if (DataType == S7DataRowType.STRUCT) return null; else if (DataType == S7DataRowType.UDT) return null; return null; }
/*internal static S7DataRow GetInterface(int Start, int Count, byte[] BD, DataTypes.PLCBlockType blkTP, bool isInstanceDB, S7Block myBlk) * { * S7DataRow parameterRoot = new S7DataRow("ROOTNODE", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterIN = new S7DataRow("IN", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterOUT = new S7DataRow("OUT", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterINOUT = new S7DataRow("IN_OUT", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterSTAT = new S7DataRow("STATIC", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterTEMP = new S7DataRow("TEMP", S7DataRowType.STRUCT, myBlk); * S7DataRow parameterRETVAL = new S7DataRow("RET_VAL", S7DataRowType.STRUCT, myBlk); * * * parameterRoot.Add(parameterIN); * parameterRoot.Add(parameterOUT); * parameterRoot.Add(parameterINOUT); * if (blkTP == DataTypes.PLCBlockType.FB || (blkTP == DataTypes.PLCBlockType.DB && isInstanceDB)) * parameterRoot.Add(parameterSTAT); * if (blkTP != DataTypes.PLCBlockType.DB) * parameterRoot.Add(parameterTEMP); * parameterRoot.Add(parameterRETVAL); * parameterRoot.ReadOnly = true; * * if (blkTP == DataTypes.PLCBlockType.DB && !isInstanceDB) * parameterRoot = parameterSTAT; * * //PLCDataRowsInterface retVal = new PLCDataRowsInterface(); * int INcnt = 0; * int OUTcnt = 0; * int IN_OUTcnt = 0; * int STATcnt = 0; * int TEMPcnt = 0; * int StackNr = 1; * * * int pos = Start + 4; * string parNm = ""; * * S7DataRow akParameter = parameterRoot; * * * while (pos <= (Start + Count)) * { * switch (BD[pos + 1]) * { * case 0x01: * case 0x09: //with start val * akParameter = parameterIN; * parNm = "IN"; * break; * case 0x02: * case 0x0A: //with start val * akParameter = parameterOUT; * parNm = "OUT"; * break; * case 0x03: * case 0x0b: //with start val * akParameter = parameterINOUT; * parNm = "IN_OUT"; * break; * case 0x04: * case 0x0C: //with start val * akParameter = parameterSTAT; * parNm = "STAT"; * break; * case 0x05: * akParameter = parameterTEMP; * parNm = "TEMP"; * break; * case 0x06: * akParameter = parameterRETVAL; * parNm = "RET_VAL"; * break; * } * * * pos += 2; * } * return parameterRoot; * }*/ //internal PLCDataRow GetInterfaceSubrows(PLCDataRow currRow) internal static void GetVarTypeEN(S7DataRow currPar, object startVal, byte b, bool Struct, bool Arry, string VarName, byte[] interfaceBytes, byte[] actualvalueBytes, ref int pos, ref List <string> ParaList, ref int StackNr, string VarNamePrefix, ref int VarCounter, ref int Valpos, S7Block myBlk) { int i, max, dim; S7DataRowType Result = S7DataRowType.BOOL; switch (b) { case 0x01: Result = S7DataRowType.BOOL; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x02: Result = S7DataRowType.BYTE; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x03: Result = S7DataRowType.CHAR; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x04: Result = S7DataRowType.WORD; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x05: Result = S7DataRowType.INT; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x06: Result = S7DataRowType.DWORD; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x07: Result = S7DataRowType.DINT; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x08: Result = S7DataRowType.REAL; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x09: Result = S7DataRowType.DATE; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x0A: Result = S7DataRowType.TIME_OF_DAY; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x0b: Result = S7DataRowType.TIME; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x0C: Result = S7DataRowType.S5TIME; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x0E: Result = S7DataRowType.DATE_AND_TIME; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x10: //Array... { dim = interfaceBytes[pos + 2]; List <int> arrStart = new List <int>(); List <int> arrStop = new List <int>(); for (i = 0; i <= dim - 1; i++) { arrStart.Add(BitConverter.ToInt16(interfaceBytes, pos + 3 + (i * 4))); arrStop.Add(BitConverter.ToInt16(interfaceBytes, pos + 5 + (i * 4))); } GetVarTypeEN(currPar, "", interfaceBytes[pos + 3 + (dim * 4)], true, true, VarName, interfaceBytes, actualvalueBytes, ref pos, ref ParaList, ref StackNr, VarNamePrefix, ref VarCounter, ref Valpos, myBlk); ((S7DataRow)currPar.Children[currPar.Children.Count - 1]).ArrayStart = arrStart; ((S7DataRow)currPar.Children[currPar.Children.Count - 1]).ArrayStop = arrStop; ((S7DataRow)currPar.Children[currPar.Children.Count - 1]).IsArray = true; pos += 3 + (dim * 4); } break; case 0x11: //Struct { if (Arry) { pos += 7; } Result = S7DataRowType.STRUCT; var akPar = new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { StartValue = startVal }; currPar.Add(akPar); VarCounter++; max = interfaceBytes[pos + 2] - 1; for (i = 0; i <= max; i++) { if ((interfaceBytes[pos + 3] == 0x11) || (interfaceBytes[pos + 3] == 0x10)) { pos += 3; if (Helper.IsWithStartVal(interfaceBytes[pos + 1])) { if (interfaceBytes[pos] != 0x10) //Datentyp == Array... { startVal = GetVarTypeVal(interfaceBytes[pos], actualvalueBytes, ref Valpos); } else { Valpos = Valpos + 6; startVal = GetVarTypeVal(interfaceBytes[pos + 3 + (interfaceBytes[pos + 2] * 4)], actualvalueBytes, ref Valpos); } } else { startVal = null; } GetVarTypeEN(akPar, startVal, interfaceBytes[pos], true, false, VarName + "." + VarNamePrefix + VarCounter.ToString(), interfaceBytes, actualvalueBytes, ref pos, ref ParaList, ref StackNr, VarNamePrefix, ref VarCounter, ref Valpos, myBlk); pos -= 3; } else { if (Helper.IsWithStartVal(interfaceBytes[pos + 4])) { if (interfaceBytes[pos] != 0x10) //Datentyp == Array... { startVal = GetVarTypeVal(interfaceBytes[pos + 3], actualvalueBytes, ref Valpos); } else { Valpos = Valpos + 6; startVal = GetVarTypeVal(interfaceBytes[pos + 6 + (interfaceBytes[pos + 2] * 4)], actualvalueBytes, ref Valpos); } } else { startVal = null; } GetVarTypeEN(akPar, startVal, interfaceBytes[pos + 3], true, false, VarName + "." + VarNamePrefix + VarCounter.ToString(), interfaceBytes, actualvalueBytes, ref pos, ref ParaList, ref StackNr, VarNamePrefix, ref VarCounter, ref Valpos, myBlk); } pos += 2; } if (Arry) { pos -= 7; } pos += 1; } break; case 0x13: { Result = S7DataRowType.STRING; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); if (Arry) { currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal, StringSize = interfaceBytes[pos + 9] }); } else { currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal, StringSize = interfaceBytes[pos + 2] }); } pos += 1; VarCounter++; } break; case 0x14: Result = S7DataRowType.POINTER; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x16: Result = S7DataRowType.ANY; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x17: Result = S7DataRowType.BLOCK_FB; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x18: Result = S7DataRowType.BLOCK_FC; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x19: Result = S7DataRowType.BLOCK_DB; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x1A: Result = S7DataRowType.BLOCK_SDB; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x1C: Result = S7DataRowType.COUNTER; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; case 0x1D: Result = S7DataRowType.TIMER; currPar.Add(new S7DataRow(VarNamePrefix + VarCounter.ToString(), Result, myBlk) { Value = startVal }); VarCounter++; break; //default: Result = "UNKNOWN (" + Convert.ToString(b) + ")"; break; } //if (!Struct || Arry) { ParaList.Add(VarName); //Result = Result + "(" + Convert.ToString(StackNr * 2) + ")"; StackNr = StackNr + 1; } //return Result; }
public static object StringValueToObject(string Value, S7DataRowType DataType) { if (DataType == S7DataRowType.WORD) { return(Convert.ToUInt16(Helper.GetIntFromHexString(Value))); } else if (DataType == S7DataRowType.BOOL) { return(bool.Parse(Value)); } else if (DataType == S7DataRowType.DWORD) { return(Convert.ToUInt32(Helper.GetIntFromHexString(Value))); } else if (DataType == S7DataRowType.BYTE) { return(Convert.ToByte(Helper.GetIntFromHexString(Value))); } else if (DataType == S7DataRowType.INT) { return(Int16.Parse(Value)); } else if (DataType == S7DataRowType.DINT) { return(Int32.Parse(Value.Replace("L#", ""))); } else if (DataType == S7DataRowType.REAL) { return(double.Parse(Value)); } else if (DataType == S7DataRowType.S5TIME) { return(Helper.GetTimespanFromS5TimeorTime(Value)); } else if (DataType == S7DataRowType.TIME) { return(Helper.GetTimespanFromS5TimeorTime(Value)); } else if (DataType == S7DataRowType.DATE) { return(Helper.GetDateTimeFromDateString(Value)); } else if (DataType == S7DataRowType.TIME_OF_DAY) { return(Helper.GetDateTimeFromTimeOfDayString(Value)); } else if (DataType == S7DataRowType.CHAR) { return(Value.ToString()[1]); } else if (DataType == S7DataRowType.DATE_AND_TIME) { return(Helper.GetDateTimeFromDateAndTimeString(Value)); } else if (DataType == S7DataRowType.STRING) { return(Value.ToString()); } else if (DataType == S7DataRowType.STRUCT) { return(null); } else if (DataType == S7DataRowType.UDT) { return(null); } return(null); }
public static string ValueToString(object Value, S7DataRowType DataType) { if (DataType == S7DataRowType.S5_KY) { return(((UInt16)Value / 256).ToString().PadLeft(3, '0') + "," + ((UInt16)Value % 256).ToString().PadLeft(3, '0')); } else if (DataType == S7DataRowType.S5_KF) { return(((Int16)Value > 0 ? "+" : "") + Value.ToString()); } else if (DataType == S7DataRowType.S5_KH) { return(((UInt16)Value).ToString("X", NumberFormatInfo.CurrentInfo).PadLeft(4, '0')); } else if (DataType == S7DataRowType.S5_KG) { return(SingleExtensions.ToS5(((float)Value))); } else if (DataType == S7DataRowType.S5_C || DataType == S7DataRowType.S5_KC) { return("'" + ((string)Value) + "'"); //.PadLeft(4, ' ') } else if (DataType == S7DataRowType.S5_KC) { return("'" + ((string)Value).PadLeft(2, ' ') + "'"); } else if (DataType == S7DataRowType.S5_KT) { return(Helper.GetS5TimeFromTimeSpan(((TimeSpan)Value))); } else if (DataType == S7DataRowType.S5_KM) { var bt = BitConverter.GetBytes((UInt16)Value); string ret = ""; foreach (byte b in bt) { if (ret != "") { ret = " " + ret; } ret = libnodave.dec2bin(b) + ret; } return(ret); } else if (DataType == S7DataRowType.WORD) { return("W#16#" + ((UInt16)Value).ToString("X", NumberFormatInfo.CurrentInfo)); } else if (DataType == S7DataRowType.BYTE) { return("B#16#" + ((byte)Value).ToString("X", NumberFormatInfo.CurrentInfo)); } else if (DataType == S7DataRowType.DWORD) { return("DW#16#" + ((UInt32)Value).ToString("X", NumberFormatInfo.CurrentInfo)); } else if (DataType == S7DataRowType.INT) { return(((Int16)Value).ToString()); } else if (DataType == S7DataRowType.DINT) { return("L#" + ((Int32)Value).ToString()); } else if (DataType == S7DataRowType.REAL) { return(((DateTime)Value).ToString()); } else if (DataType == S7DataRowType.S5TIME) { var bt = new byte[2]; libnodave.putS5Timeat(bt, 0, (TimeSpan)Value); return(Helper.GetS5Time(bt[0], bt[1])); } else if (DataType == S7DataRowType.TIME) { var tm = (TimeSpan)Value; var ret = new StringBuilder("T#"); if (tm.TotalMilliseconds < 0) { ret.Append("-"); } if (tm.Days != 0) { ret.Append(tm.Days + "D"); } if (tm.Hours != 0) { ret.Append(tm.Hours + "H"); } if (tm.Minutes != 0) { ret.Append(tm.Minutes + "M"); } if (tm.Seconds != 0) { ret.Append(tm.Seconds + "S"); } if (tm.Milliseconds != 0 || tm.Ticks == 0) { ret.Append(tm.Milliseconds + "MS"); } return(ret.ToString()); } else if (DataType == S7DataRowType.DATE) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("D#"); sb.Append(ak.Year); sb.Append("-"); sb.Append(ak.Month); sb.Append("-"); sb.Append(ak.Day); return(sb.ToString()); } else if (DataType == S7DataRowType.TIME_OF_DAY) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("TOD#"); sb.Append(ak.Hour); sb.Append(":"); sb.Append(ak.Minute); sb.Append(":"); sb.Append(ak.Second); sb.Append("."); sb.Append(ak.Millisecond.ToString().PadRight(3, '0')); return(sb.ToString()); } else if (DataType == S7DataRowType.CHAR) { return(((char)Value).ToString()); } else if (DataType == S7DataRowType.DATE_AND_TIME) { DateTime ak = (DateTime)Value; StringBuilder sb = new StringBuilder(); sb.Append("DT#"); sb.Append(ak.Year.ToString().Substring(2)); sb.Append("-"); sb.Append(ak.Month); sb.Append("-"); sb.Append(ak.Day); sb.Append("-"); sb.Append(ak.Hour); sb.Append(":"); sb.Append(ak.Minute); sb.Append(":"); sb.Append(ak.Second); sb.Append("."); sb.Append(ak.Millisecond.ToString().PadRight(3, '0')); return(sb.ToString()); } else if (DataType == S7DataRowType.STRING) { return(Value.ToString()); } else if (DataType == S7DataRowType.STRUCT) { return(null); } else if (DataType == S7DataRowType.UDT) { return(null); } if (Value != null) { return(Value.ToString()); } return(null); }
public static object DefaultValueForType(S7DataRowType DataType) { if (DataType == S7DataRowType.WORD) { return((UInt16)0); } else if (DataType == S7DataRowType.BOOL) { return(false); } else if (DataType == S7DataRowType.BYTE) { return((byte)0); } else if (DataType == S7DataRowType.DWORD) { return((UInt32)0); } else if (DataType == S7DataRowType.INT) { return((Int16)0); } else if (DataType == S7DataRowType.DINT) { return((Int32)0); } else if (DataType == S7DataRowType.REAL) { return((double)0); } else if (DataType == S7DataRowType.S5TIME) { return(new TimeSpan()); } else if (DataType == S7DataRowType.TIME) { return(new TimeSpan()); } else if (DataType == S7DataRowType.DATE) { return(new DateTime(1990, 1, 1, 0, 0, 0, 0)); } else if (DataType == S7DataRowType.TIME_OF_DAY) { return(new DateTime(1990, 1, 1, 0, 0, 0, 0)); } else if (DataType == S7DataRowType.CHAR) { return(' '); } else if (DataType == S7DataRowType.DATE_AND_TIME) { return(new DateTime(1990, 1, 1, 0, 0, 0, 0)); } else if (DataType == S7DataRowType.STRING) { return(""); } else if (DataType == S7DataRowType.STRUCT) { return(null); } else if (DataType == S7DataRowType.UDT) { return(null); } return(null); }
} //When the Type is SFB, FB or UDT, this contains the Block! public TIADataRow(string name, S7DataRowType datatype, Block block) { this.Name = name; this.DataType = datatype; this.CurrentBlock = block; }