/// <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); }
/// <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))); } }
/// <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); }
/// <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)); } }
/// <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); }
/// <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()); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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))); }
/// <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)); }