/// <summary> /// 查询PLC位地址状态 /// </summary> /// <param name="listip"></param> /// <param name="Value"></param> public static bool PLC_QueryBit(int listip, string Value) { //%01$RC021 string strValue = SocketHelper.SendAddress(SocketHelper.socketList[listip].socket, PLCAddressHelper.RAddressReadConvert(Value)); return(PLCAddressHelper.ValueInfo(strValue)); }
/// <summary> /// 解析多个寄存器解析出来拼接成字符串 例如条码解析 /// </summary> /// <param name="rev"></param> /// <returns></returns> public static string ReadDTValueToStr(string rev) { //地址 %01#RDD0030100309** string ss = PLCAddressHelper.DTValues(rev); string barcode = ""; for (int i = 0; i < ss.Length / 2; i++) { string str = ss.Substring(i * 2, 2); barcode += DecimalConversion.HexStringToASCII(str); } return(barcode); }
/// <summary> /// 解析寄存器读取的值 /// </summary> /// <param name="rev"></param> /// <returns></returns> public static List <string> ReadDTValue(string rev) { List <string> list = new List <string>(); //地址 %01#RDD0030100309** rev = PLCAddressHelper.DTValues(rev); for (int i = 0; i < rev.Length / 2; i++) { string str = rev.Substring(i * 2, 2); list.Add(DecimalConversion.HexStringToASCII(str)); } return(list); }
/// <summary> /// 查询PLC 例如温度, /// </summary> /// <param name="ListIp">list索引的ip</param> /// <param name="Address">PLC读取的寄存器</param> /// <returns></returns> public static Double TimeAddress(int ListIp, int Address) { string DataInfo = ""; string ss = ""; string strValue = SocketHelper.SendAddress(SocketHelper.socketList[ListIp].socket, PLCAddressHelper.DTAddressReadConvert(Address)); strValue = strValue.Replace("\r", ""); string highOrder = ""; string lowOrder = ""; if (!string.IsNullOrEmpty(strValue))//未读到了正确数据 { ss = HexStr(strValue); } for (int i = 0; i < ss.Length / 4; i++) { highOrder = ss.Substring((i * 4), 2); //高位数据 09100910 lowOrder = ss.Substring((i * 4) + 2, 2); //低位数据 DataInfo = HexToTen(lowOrder + highOrder).ToString(); } return(Convert.ToDouble(DataInfo)); }