Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
        // 写设备的值
        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);
        }
Esempio n. 3
0
        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");
            }
        }
Esempio n. 4
0
        // 读设备的值
        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);
            }
        }
Esempio n. 5
0
File: DevicePlc.cs Progetto: Gz1d/Gz
        //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( );
 }
Esempio n. 7
0
        //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);
            }
        }
Esempio n. 8
0
        //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);
        }