示例#1
0
        /// <summary>
        /// 读单个位
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <returns></returns>
        public static bool ReadBit(OmronPLC_tcp omronPLC, string Address)
        {
            bool value;

            omronPLC.FinsCommand.BoolRead("2." + Address, out value);
            return(value);
        }
示例#2
0
 /// <summary>
 /// 写单个寄存器
 /// </summary>
 /// <param name="omronPLC"></param>
 /// <param name="Address">地址</param>
 /// <param name="value">值</param>
 public static bool WriteDM(OmronPLC_tcp omronPLC, int Address, int value)
 {
     lock (TengDa.Communication.PCLock.Locker)
     {
         return(omronPLC.WriteDM(Convert.ToUInt16(Address), Convert.ToUInt16(value)));
     }
 }
示例#3
0
        /// <summary>
        /// 读单个寄存器
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <returns></returns>
        public static string ReadDM(OmronPLC_tcp omronPLC, string Address)
        {
            short value = 0;

            omronPLC.ReadDM(Convert.ToUInt16(Address), ref value);
            return(value.ToString());
        }
        /// <summary>
        /// 读多个地址并解析
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static List <string> ReadMultiToErrorInfo(OmronPLC_tcp omronPLC, int Address, int value)
        {
            List <string> List   = new List <string> {
            };
            List <string> Binary = new List <string> {
            };
            string lowOrder      = "";

            ushort[] us = new ushort[value];
            omronPLC.ReadDMs(Convert.ToUInt16(Address), ref us, Convert.ToUInt16(value));
            foreach (var item in us)                                    // 将数值转2进制
            {
                Binary.Add(Convert.ToString(item, 2).PadLeft(16, '0')); //plc一个字里面包含16个位,读取不够16个位时,自动添加
            }
            for (int i = 0; i < Binary.Count; i++)
            {
                if (Binary[i].Contains("1"))//字节里有报警位
                {
                    //0000 0001 0000 1000
                    lowOrder = HeightToLow(Binary[i]);//二进制反转
                    //0001 0000 1000 0000
                    int ii = lowOrder.IndexOf("1");
                    //一个字的排序方式 高位 0000 0001 0000 0110 低位
                    while (ii >= 0 && ii < lowOrder.Length)
                    {
                        List.Add("D" + (Address + i).ToString() + Convert.ToString(ii).PadLeft(2, '0'));
                        ii = lowOrder.IndexOf("1", ii + 1);
                    }
                }
            }
            return(List);
        }
示例#5
0
 /// <summary>
 /// 写单个位
 /// </summary>
 /// <param name="omronPLC"></param>
 /// <param name="Address">地址</param>
 /// <param name="value">值</param>
 public static bool WriteBit(OmronPLC_tcp omronPLC, string Address, bool value)
 {
     lock (TengDa.Communication.PCLock.Locker)
     {
         return(omronPLC.WriteBit("2." + Address, value));
     }
 }
示例#6
0
        /// <summary>
        /// 读单个位
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <returns></returns>
        public static bool ReadBit(OmronPLC_tcp omronPLC, string Address)
        {
            bool value;

            lock (TengDa.Communication.PCLock.Locker)
            {
                omronPLC.FinsCommand.BoolRead("2." + Address, out value);
            }
            return(value);
        }
示例#7
0
        /// <summary>
        /// 读单个寄存器
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <returns></returns>
        public static string ReadDM(OmronPLC_tcp omronPLC, string Address)
        {
            short value = 0;

            lock (TengDa.Communication.PCLock.Locker)
            {
                omronPLC.ReadDM(Convert.ToUInt16(Address), ref value);
            }
            return(value.ToString());
        }
示例#8
0
        /// <summary>
        /// 读多个寄存器
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <param name="value">值</param>
        /// <returns></returns>
        public static List <string> ReadMulti(OmronPLC_tcp omronPLC, int Address, int value)
        {
            List <string> List = new List <string> {
            };

            ushort[] us = new ushort[value];
            omronPLC.ReadDMs(Convert.ToUInt16(Address), ref us, Convert.ToUInt16(value));
            foreach (var item in us)
            {
                List.Add(item.ToString());
            }
            return(List);
        }
示例#9
0
 /// <summary>
 /// 写多个寄存器(list第0个就是开始地址的第0个  list[0]的值=7000   list[1]的值=7001)
 /// </summary>
 /// <param name="omronPLC"></param>
 /// <param name="list"></param>
 /// <param name="Address"></param>
 public static bool WriteMulti(OmronPLC_tcp omronPLC, List <string> list, int Address)
 {
     byte[] bytes1 = new byte[2];
     byte[] bytes2 = new byte[2];
     byte[] bytes3 = new byte[list.Count * 2];
     for (int i = 0; i < list.Count; i++)
     {
         string str = list[i];
         bytes2            = BitConverter.GetBytes(int.Parse(list[i]));
         bytes1[0]         = bytes2[1];
         bytes1[1]         = bytes2[0];
         bytes3[i * 2]     = bytes1[0];
         bytes3[i * 2 + 1] = bytes1[1];
     }
     return(omronPLC.finsMemoryAreadWrite(MemoryArea.DM, Convert.ToUInt16(Address), Convert.ToUInt16(list.Count), bytes3));
 }
示例#10
0
        /// <summary>
        /// 读多个寄存器转换温度
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <param name="value">值</param>
        /// <returns></returns>
        public static List <string> ReadMultiTem(OmronPLC_tcp omronPLC, int Address, int value)
        {
            List <string> List = new List <string> {
            };

            ushort[] us = new ushort[value];
            lock (TengDa.Communication.PCLock.Locker)
            {
                omronPLC.ReadDMs(Convert.ToUInt16(Address), ref us, Convert.ToUInt16(value));
            }
            foreach (var item in us)
            {
                List.Add(((double)item / 10).ToString("0.0"));
            }
            return(List);
        }
示例#11
0
        /// <summary>
        ///  读多个寄存器转换状态
        /// </summary>
        /// <param name="omronPLC"></param>
        /// <param name="Address">地址</param>
        /// <param name="value">值</param>
        /// <returns></returns>
        public static List <string> ReadMultiToEnum(OmronPLC_tcp omronPLC, int Address, int value)
        {
            List <string> List = new List <string> {
            };

            ushort[] us = new ushort[value];
            lock (TengDa.Communication.PCLock.Locker)
            {
                omronPLC.ReadDMs(Convert.ToUInt16(Address), ref us, Convert.ToUInt16(value));
            }
            foreach (var item in us)
            {
                TengDa.Common.SystemEnum.MacChuStatus ss = (TengDa.Common.SystemEnum.MacChuStatus)Convert.ToInt16(item);
                string description = TengDa.Common.EnumHelper.GetDescription(ss);
                List.Add(description);
            }
            return(List);
        }
示例#12
0
 /// <summary>
 /// 写单个寄存器
 /// </summary>
 /// <param name="omronPLC"></param>
 /// <param name="Address">地址</param>
 /// <param name="value">值</param>
 public static bool WriteDM(OmronPLC_tcp omronPLC, int Address, int value)
 {
     return(omronPLC.WriteDM(Convert.ToUInt16(Address), Convert.ToUInt16(value)));
 }
示例#13
0
 /// <summary>
 /// 写单个位
 /// </summary>
 /// <param name="omronPLC"></param>
 /// <param name="Address">地址</param>
 /// <param name="value">值</param>
 public static bool WriteBit(OmronPLC_tcp omronPLC, string Address, bool value)
 {
     return(omronPLC.WriteBit("2." + Address, value));
 }