kazelee
1 天以前 f8d23dcf8d6501482db1a5180325194232afe96c
device/S7Helper.cs
@@ -18,7 +18,7 @@
    /// </summary>
    public class S7Helper
    {
        public static Dictionary<string, Plc> ip_Plc = new Dictionary<string, Plc>();//内存,连接上的PLC通讯对象
        public static Dictionary<string, Plc> ip_Plc = new Dictionary<string, Plc>();//内存,连接上的PLC通讯对象
        public S7Helper(string ip, short rack, short slot)
        {
@@ -93,12 +93,12 @@
        }
        /// <summary>
        /// 批量读取或单独读取DB块数据(8位byte),并转换成字符串形式
        /// 批量读取或单独读取DB块数据 (8位byte) ,并转换成字符串形式
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="count">读取的个数,1个=8位十六进制数</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="count">读取的个数,1个=8位十六进制数</param>
        /// <returns></returns>
        public static string ReadString(string deviceIp, int dbNo, int startByteAdr, int count)
        {
@@ -111,15 +111,15 @@
                    if (plc.IsConnected)
                    {
                        var data = plc.ReadBytes(DataType.DataBlock, dbNo, startByteAdr, count);
                        result = System.Text.Encoding.UTF8.GetString(data).TrimEnd('\0').TrimEnd('\n').TrimEnd('\r'); ;//此方法可以把byte数组转换成字符串,但是会造成\0\u结束符不显示,需要下位机正确的数据
                        result = System.Text.Encoding.UTF8.GetString(data).TrimEnd('\0').TrimEnd('\n').TrimEnd('\r'); ;//此方法可以把byte数组转换成字符串,但是会造成\0\u结束符不显示,需要下位机正确的数据
                        if (result == string.Empty)
                        {
                            Link(plc);//设备发送的数据为空,重连
                            Link(plc);//设备发送的数据为空,重连
                        }
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -136,11 +136,11 @@
        }
        /// <summary>
        /// 批量写入或单独写入DB块数据(8位byte),以字符串转换byte形式写入
        /// 批量写入或单独写入DB块数据 (8位byte) ,以字符串转换byte形式写入
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="data">要写入的数据</param>
        /// <returns></returns>
        public static bool WriteString(string deviceIp, int dbNo, int startByteAdr, string data)
@@ -165,7 +165,7 @@
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -182,12 +182,12 @@
        }
        /// <summary>
        /// 批量读取或单独读取DB块数据(8位byte)
        /// 批量读取或单独读取DB块数据 (8位byte)
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="count">读取的个数,1个=8位十六进制数</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="count">读取的个数,1个=8位十六进制数</param>
        /// <returns></returns>
        public static byte[] ReadBytes(string deviceIp, int dbNo, int startByteAdr, int count)
        {
@@ -203,12 +203,12 @@
                        if (result.Length == 0)
                        {
                            Link(plc);//设备发送的数据为空,重连
                            Link(plc);//设备发送的数据为空,重连
                        }
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -225,11 +225,11 @@
        }
        /// <summary>
        /// 批量写入或单独写入DB块数据(8位byte)
        /// 批量写入或单独写入DB块数据 (8位byte)
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="data">要写入的数据</param>
        /// <returns></returns>
        public static bool WriteBytes(string deviceIp, int dbNo, int startByteAdr, byte[] data)
@@ -253,7 +253,7 @@
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -270,11 +270,11 @@
        }
        /// <summary>
        /// 批量读取或单独读取DB块数据(1位bit)
        /// 批量读取或单独读取DB块数据 (1位bit)
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="count">要读取多少位</param>
        /// <param name="bitAdr">从第几位开始读取</param>
        /// <returns></returns>
@@ -299,12 +299,12 @@
                        }
                        if (result.Length == 0)
                        {
                            Link(plc);//设备发送的数据为空,重连
                            Link(plc);//设备发送的数据为空,重连
                        }
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -321,12 +321,12 @@
        }
        /// <summary>
        /// 批量写入或单独写入DB块数据(1位bit)
        /// 批量写入或单独写入DB块数据 (1位bit)
        /// </summary>
        /// <param name="deviceIp">plc设备通讯地址</param>
        /// <param name="dbNo">DB块号</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="biteAdr">起始bit地址,从第几位开始写k</param>
        /// <param name="startByteAdr">起始byte地址,最小值0,1=8位=1个Block</param>
        /// <param name="biteAdr">起始bit地址,从第几位开始写k</param>
        /// <param name="bitValue">要写入的数据</param>
        /// <returns></returns>
        public static bool WriteBits(string deviceIp, int dbNo, int startByteAdr, byte biteAdr, BitArray bitValue)
@@ -353,7 +353,7 @@
                    }
                    else
                    {
                        Link(plc);//设备未连接,重连
                        Link(plc);//设备未连接,重连
                    }
                }
                else
@@ -409,7 +409,7 @@
        }
        /// <summary>
        /// 通过S7协议连接下位机时需要的model,应该放在model层,这里我懒了
        /// 通过S7协议连接下位机时需要的model,应该放在model层,这里我懒了
        /// </summary>
        public class S7ConfigModel
        {