public bool ConectaPLC() { try { this.keyence_net = (KeyenceMcNet)null; this.keyence_net = new KeyenceMcNet(); IPAddress address; if (!IPAddress.TryParse("192.168.0.160", out address)) { this.PrimaryLog("Conexión a PLC", "IP no valida", EventLogEntryType.Error, true); return(false); } else { this.keyence_net.IpAddress = "192.168.0.160"; int result; if (!int.TryParse("5000", out result)) { this.PrimaryLog("Conexión a PLC", "Puerto Erroneo", EventLogEntryType.Error, true); return(false); } else { this.keyence_net.Port = Convert.ToInt32(result); this.keyence_net.ConnectClose(); } } } catch (Exception ex) { this.PrimaryLog("Conexion PLC", "Error al conectar", EventLogEntryType.Error, true); } try { if (this.keyence_net.ConnectServer().IsSuccess) { this.PrimaryLog("Conexión a PLC", "Conexion OK", EventLogEntryType.Error, true); return(true); } else { this.PrimaryLog("Conexión a PLC", "No se logro conectar", EventLogEntryType.Error, true); return(false); } } catch (Exception ex) { this.PrimaryLog("Conexión a PLC", ((object)ex.Message).ToString(), EventLogEntryType.Error, true); return(false); } }
// 写设备的值 public bool WriteValue(Common.PlcDevice plcDevice, object value) { bool IsOk = false; try { Config.PlcDataItem devData = this.GetPlcDataItem(plcDevice); Config.PlcTypeItem devType = this.GetPlcTypeItem(devData.DeviceName); switch (devType.DevType) { //Keyence case Common.DeviceType.Keyence: KeyenceMcNet kPlcClient = (KeyenceMcNet)devType.Tag; IsOk = this.WriteSieTcpValue(devType, devData, kPlcClient, value); break; //Melsec case Common.DeviceType.Qseries: MelsecMcNet mPlcClient = (MelsecMcNet)devType.Tag; IsOk = this.WriteSieTcpValue(devType, devData, mPlcClient, value); break; case Common.DeviceType.S1200: case Common.DeviceType.S300: case Common.DeviceType.S400: case Common.DeviceType.S1500: case Common.DeviceType.S200Smart: case Common.DeviceType.S200: SiemensS7Net sPlcClient = (SiemensS7Net)devType.Tag; IsOk = this.WriteSieTcpValue(devType, devData, sPlcClient, value); break; case Common.DeviceType.ModbusTcp: ModbusTcpNet mTcpClient = (ModbusTcpNet)devType.Tag; IsOk = this.WriteModTcpValue(devType, devData, mTcpClient, value); break; case Common.DeviceType.ModbusRtu: ModbusRtu mRtuClinet = (ModbusRtu)devType.Tag; IsOk = this.WriteModRtuValue(devType, devData, mRtuClinet, value); break; default: break; } } catch { } return(IsOk); }
public override void DeviceConn(KeyenceMcNetConfig config) { KeyenceMcNet keyenceMc = new KeyenceMcNet(); keyenceMc.IpAddress = config.IP; keyenceMc.Port = config.Port; OperateResult connect = keyenceMc.ConnectServer(); NetworkDevice = keyenceMc; if (!connect.IsSuccess) { throw new Exception("Connect Failed"); } }
// 读设备的值 public object ReadValue(Common.PlcDevice plcDevice) { Config.PlcDataItem devData = this.GetPlcDataItem(plcDevice); if (devData == null) { return(null); } Config.PlcTypeItem devType = this.GetPlcTypeItem(devData.DeviceName); switch (devType.DevType) { //Keyence case Common.DeviceType.Keyence: KeyenceMcNet kPlcClient = (KeyenceMcNet)devType.Tag; return(this.ReadSieTcpValue(devType, devData, kPlcClient)); //Melsec 三菱PLC case Common.DeviceType.Qseries: MelsecMcNet mPlcClient = (MelsecMcNet)devType.Tag; return(this.ReadSieTcpValue(devType, devData, mPlcClient)); //Siemens case Common.DeviceType.S1200: case Common.DeviceType.S300: case Common.DeviceType.S400: case Common.DeviceType.S1500: case Common.DeviceType.S200Smart: case Common.DeviceType.S200: SiemensS7Net sPlcClient = (SiemensS7Net)devType.Tag; return(this.ReadSieTcpValue(devType, devData, sPlcClient)); case Common.DeviceType.ModbusTcp: ModbusTcpNet mTcpClient = (ModbusTcpNet)devType.Tag; return(this.ReadModTcpValue(devType, devData, mTcpClient)); case Common.DeviceType.ModbusRtu: ModbusRtu mRtuClinet = (ModbusRtu)devType.Tag; return(this.ReadModRtuValue(devType, devData, mRtuClinet)); default: return(null); } }
//KeyencePLC初始化 void DoInitKeyencePlc(LD.Config.PlcTypeItem item) { KeyenceMcNet KeyencePLC = new KeyenceMcNet(item.IP, item.Port); KeyencePLC.ConnectTimeOut = item.ConnectOutTime; item.Tag = KeyencePLC; if (KeyencePLC != null) { KeyencePLC.ConnectClose(); } OperateResult connect = KeyencePLC.ConnectServer(); if (connect.IsSuccess) { item.IsConnected = true; } else { item.IsConnected = false; } }
public FormKeyenceBinary( ) { InitializeComponent( ); keyence_net = new KeyenceMcNet( ); }
//PLC写入 private bool WriteSieTcpValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, KeyenceMcNet plc, object value) { HslCommunication.OperateResult rlt = new HslCommunication.OperateResult(); rlt.IsSuccess = false; try { //string[] strAdrss = plcdata.Address.Split('.'); //string Address = strAdrss[0] + "." + Regex.Replace(strAdrss[1], @"^[A-Za-z]+", string.Empty); if (plctype == null || !plctype.IsConnected || plcdata == null || plc == null) { return(rlt.IsSuccess); } switch (plcdata.DataType) { case Common.DataTypes.Bool: //Bool rlt = plc.Write(plcdata.Address, Convert.ToBoolean(value)); break; case Common.DataTypes.Byte: //Byte rlt = plc.Write(plcdata.Address, Convert.ToChar(value)); break; case Common.DataTypes.Short: rlt = plc.Write(plcdata.Address, Convert.ToInt16(value)); break; case Common.DataTypes.Ushort: rlt = plc.Write(plcdata.Address, Convert.ToUInt16(value)); break; case Common.DataTypes.Int: rlt = plc.Write(plcdata.Address, Convert.ToInt32(value)); break; case Common.DataTypes.UInt: rlt = plc.Write(plcdata.Address, Convert.ToUInt32(value)); break; case Common.DataTypes.Long: long lValue = 0; if (long.TryParse(value.ToString(), out lValue)) { long lValueNew = BpLong.SwapInt64(lValue); rlt = plc.Write(plcdata.Address, lValueNew); } //plc.Write(plcdata.Address, Convert.ToInt64(value)); break; case Common.DataTypes.ULong: rlt = plc.Write(plcdata.Address, Convert.ToUInt64(value)); break; case Common.DataTypes.Float: rlt = plc.Write(plcdata.Address, float.Parse(value.ToString())); break; case Common.DataTypes.Double: rlt = plc.Write(plcdata.Address, Convert.ToDouble(value)); break; case Common.DataTypes.String: if (value != null) { byte[] btValue = System.Text.Encoding.ASCII.GetBytes(value.ToString()); byte[] arrData = new byte[btValue.Length + 2]; arrData[0] = 50; arrData[1] = (byte)btValue.Length; btValue.CopyTo(arrData, 2); rlt = plc.Write(plcdata.Address, arrData); } break; default: break; } return(rlt.IsSuccess); } catch { //MessageBox.Show(ex.Message); return(rlt.IsSuccess); } }
//PLC读取 private object ReadSieTcpValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, KeyenceMcNet plc) { try { if (plctype == null || !plctype.IsConnected || plcdata == null || plc == null) { return(null); } switch (plcdata.DataType) { case Common.DataTypes.Bool: //Bool plcdata.ValueNew = plc.ReadBool(plcdata.Address).Content; break; case Common.DataTypes.Byte: //Byte plcdata.ValueNew = plc.Read(plcdata.Address, 1).Content; break; case Common.DataTypes.Short: plcdata.ValueNew = plc.ReadInt16(plcdata.Address).Content; break; case Common.DataTypes.Ushort: plcdata.ValueNew = plc.ReadUInt16(plcdata.Address).Content; break; case Common.DataTypes.Int: plcdata.ValueNew = plc.ReadInt32(plcdata.Address).Content; break; case Common.DataTypes.UInt: plcdata.ValueNew = plc.ReadUInt32(plcdata.Address).Content; break; case Common.DataTypes.Long: long lValueNew = 0; if (long.TryParse(plc.ReadInt64(plcdata.Address).Content.ToString(), out lValueNew)) { long temp = BpLong.SwapInt64(lValueNew); plcdata.ValueNew = temp; } // plcdata.ValueNew = plc.ReadInt64(plcdata.Address).Content; break; case Common.DataTypes.ULong: plcdata.ValueNew = plc.ReadUInt64(plcdata.Address).Content; break; case Common.DataTypes.Float: plcdata.ValueNew = plc.ReadFloat(plcdata.Address).Content; break; case Common.DataTypes.Double: plcdata.ValueNew = plc.ReadDouble(plcdata.Address).Content; break; case Common.DataTypes.String: HslCommunication.OperateResult <byte[]> data = (HslCommunication.OperateResult <byte[]>)plc.Read(plcdata.Address, 50); if (data != null && data.Content != null && data.Content.Length > 2) { List <byte> lstData = new List <byte>(); int nLen = data.Content[1]; for (int i = 2; i < nLen + 2; i++) { lstData.Add(data.Content[i]); } plcdata.ValueNew = System.Text.Encoding.ASCII.GetString(lstData.ToArray()); } break; default: break; } } catch { //MessageBox.Show(ex.Message); } return(plcdata.ValueNew); }