using System; using System.Text; using System.Windows.Forms; using ZJ_BYD.Untils; namespace ZJ_BYD.Common { public class PlcHelper { /// /// 获取PLC值 /// /// /// /// /// public static (bool ok, string val) GetPlcVal(string dataType, string address, string length = "1") { var strVal = string.Empty; try { switch (dataType) { case "bool": if (Program.siemensS7Net == null) { Program.communicationstatus = "异常"; return (false, strVal); } else { var operateBoolResult = Program.siemensS7Net.ReadBool(address); if (!operateBoolResult.IsSuccess) { return (false, strVal); } else { var boolVal = operateBoolResult.Content; strVal = boolVal.ToString(); return (true, strVal); } } case "short": if (Program.siemensS7Net == null) { Program.communicationstatus = "异常"; return (false, strVal); } else { var operateShortResult = Program.siemensS7Net.ReadInt16(address); if (!operateShortResult.IsSuccess) { return (false, strVal); } else { var shortVal = operateShortResult.Content; strVal = shortVal.ToString(); return (true, strVal); } } case "ushort": if (Program.siemensS7Net == null) { Program.communicationstatus = "异常"; return (false, strVal); } else { var operateShortResult = Program.siemensS7Net.ReadUInt16(address); if (!operateShortResult.IsSuccess) { return (false, strVal); } else { var shortVal = operateShortResult.Content; strVal = shortVal.ToString(); return (true, strVal); } } case "float": if (Program.siemensS7Net == null) { Program.communicationstatus = "异常"; return (false, strVal); } else { var operateFloatResult = Program.siemensS7Net.ReadFloat(address); if (!operateFloatResult.IsSuccess) { return (false, strVal); } else { var floatVal = operateFloatResult.Content; strVal = floatVal.ToString("f3"); return (true, strVal); } } case "string": if (Program.siemensS7Net == null) { Program.communicationstatus = "异常"; return (false, strVal); } else { var operateFloatResult = Program.siemensS7Net.ReadString(address, ushort.Parse(length), Encoding.UTF8); if (!operateFloatResult.IsSuccess) { return (false, strVal); } else { strVal = operateFloatResult.Content; return (true, strVal); } } default: LogHelper.WriteLog("未知数据类型!"); return (false, strVal); } } catch (Exception ex) { var errMsg = ex == null ? "未知异常" : ex.Message; MessageBox.Show($"GetPlcVal方法出发异常:{errMsg},请联系管理员!"); return (false, strVal); } } } }