Exemplo n.º 1
0
 private void dgvPlcType_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     try
     {
         if (e.RowIndex > -1)
         {
             //当前客户端设备
             Config.PlcTypeItem plc = (Config.PlcTypeItem) this.dgvPlcType.CurrentRow.DataBoundItem;
             this.dgvPlcType_Focus(plc);
             //if (!this.chkShowAll.Checked)
             //{
             //    this.dgvPlcData.EndEdit();
             //    this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
             //    List<Config.PlcDataItem> checkItems = this.dgvPlcData.Rows.Cast<DataGridViewRow>().Where
             //        (x => (string)x.Cells["deviceName"].Value == plc.DevName)
             //        .Select(x => x.DataBoundItem).Cast<Config.PlcDataItem>().ToList();
             //    this.dgvPlcData.DataSource = checkItems;
             //    this.dgvPlcData.Refresh();
             //}
             //else
             //{
             //    //this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
             //}
         }
     }
     catch
     {
     }
 }
Exemplo 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);
        }
Exemplo n.º 3
0
        private void dgvPlcData_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex >= 0)
                {
                    //当前网络客户端
                    if (this.dgvPlcData.CurrentRow.DataBoundItem == null)
                    {
                        return;
                    }
                    Config.PlcDataItem plcdata = (Config.PlcDataItem) this.dgvPlcData.CurrentRow.DataBoundItem;
                    Config.PlcTypeItem devType = Logic.PlcHandle.Instance.GetPlcTypeItem(plcdata.DeviceName);
                    //Config.PlcTypeItem devType = (Config.PlcTypeItem)this.dgvPlcType.CurrentRow.DataBoundItem;
                    switch (dgvPlcData.Columns[e.ColumnIndex].Name)
                    {
                    case "btnDelData":
                        //删除
                        //  if (MessageBox.Show("是否删除该项设备?    ", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return;
                        Config.ConfigManager.Instance.ConfigPlc.PlcDataItems.Remove(plcdata);
                        this.dgvPlcType_Focus(devType);
                        break;

                    case "btnReadPlc":       //读值
                        Logic.PlcHandle.Instance.ReadValue(plcdata.PlcDevice);
                        this.dgvPlcData.CurrentRow.Cells["valueNewCol"].Value = plcdata.ValueNew;
                        //int i = this.dgvPlcData.CurrentRow.Index;
                        //this.dgvPlcData.InvalidateRow(i);
                        break;

                    case "btnWritePlc":       //写值
                        Logic.PlcHandle.Instance.WriteValue(plcdata.PlcDevice, plcdata.ValueWrite);
                        //if(!devType.IsConnected && Common.IsSimulator)
                        //{
                        //    //plcdata.ValueNew = false;
                        //    //plcdata.ValueNew = true;
                        //}
                        break;

                    default:
                        break;
                    }
                }
            }
            catch
            {   }
        }
Exemplo n.º 4
0
        //是否全部显示数据
        private void chkShowAll_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (this.chkShowAll.Checked)
                {
                    this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
                    this.txtCount.Text         = (this.dgvPlcData.Rows.Count - 1).ToString();
                }
                else
                {
                    Config.PlcTypeItem plc = (Config.PlcTypeItem) this.dgvPlcType.CurrentRow.DataBoundItem;
                    this.dgvPlcType_Focus(plc);
                }

                //Config.ConfigManager.Instance.ConfigPlc.ShowAllItem = this.chkShowAll.Checked;
            }
            catch { }
        }
Exemplo n.º 5
0
        // 读设备的值
        public object ReadValue(string itemName)
        {
            //try
            //{
            Config.PlcDataItem devData = this.GetPlcDataItem(itemName);
            Config.PlcTypeItem devType = this.GetPlcTypeItem(devData.DeviceName);

            switch (devType.DevType)
            {
            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));

            //break;

            case Common.DeviceType.ModbusTcp:
                ModbusTcpNet mTcpClient = (ModbusTcpNet)devType.Tag;
                return(this.ReadModTcpValue(devType, devData, mTcpClient));

            //break;

            case Common.DeviceType.ModbusRtu:
                ModbusRtu mRtuClinet = (ModbusRtu)devType.Tag;
                return(this.ReadModRtuValue(devType, devData, mRtuClinet));

            //break;

            default:
                return(null);
                //break;
            }
            //}
            //catch (Exception ex)
            //{

            //}
        }
Exemplo n.º 6
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);
            }
        }
Exemplo n.º 7
0
        //添加新行数据
        private void btnAddNew_Click(object sender, EventArgs e)
        {
            try
            {
                Config.PlcTypeItem plc = (Config.PlcTypeItem) this.dgvPlcType.CurrentRow.DataBoundItem;

                Config.PlcDataItem newData = new Config.PlcDataItem();
                newData.DeviceName = plc.DevName;
                newData.ItemName   = plc.DevName + "_";
                newData.MachineID  = plc.MachineID;
                Config.ConfigManager.Instance.ConfigPlc.PlcDataItems.Add(newData);
                //this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
                //this.dgvPlcData.Refresh();
                this.dgvPlcType_Focus(plc);
            }
            catch
            {
                //throw;
            }
        }
Exemplo n.º 8
0
        // 写设备的值
        public bool  WriteValue(string itemName, object value)
        {
            bool IsOK = false;

            try
            {
                Config.PlcDataItem devData = this.GetPlcDataItem(itemName);
                Config.PlcTypeItem devType = this.GetPlcTypeItem(devData.DeviceName);

                switch (devType.DevType)
                {
                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);
        }
Exemplo n.º 9
0
        private void dgvPlcType_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex >= 0)
                {
                    //当前客户端设备
                    Config.PlcTypeItem plc = (Config.PlcTypeItem) this.dgvPlcType.CurrentRow.DataBoundItem;

                    switch (dgvPlcType.Columns[e.ColumnIndex].Name)
                    {
                    case "btnDelPlcType":
                        //删除
                        if (MessageBox.Show("是否删除该项设备?    ", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                        {
                            return;
                        }
                        Config.ConfigManager.Instance.ConfigPlc.PlcTypeItems.Remove(plc);
                        break;

                    case "devName":
                        //Config.PlcDataItem newData = new Config.PlcDataItem();
                        //newData.DeviceName = plc.DevName;
                        //newData.ItemName = plc.DevName + "_";
                        //Config.ConfigManager.Instance.ConfigPlc.PlcDataItems.Add(newData);
                        ////this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
                        //this.dgvPlcData.Refresh();
                        break;

                    default:
                        break;
                    }
                }
            }
            catch
            {    }
        }
Exemplo n.º 10
0
        //清空数据
        private void btnClear_Click(object sender, EventArgs e)
        {
            //this.dgvPlcData.DataSource = null;
            if (MessageBox.Show("是否删除该项设备?    ", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
            {
                return;
            }
            if (!this.chkShowAll.Checked)
            {
                Config.PlcTypeItem plc = (Config.PlcTypeItem) this.dgvPlcType.CurrentRow.DataBoundItem;
                IEnumerable        ie  = from lst in Config.ConfigManager.Instance.ConfigPlc.PlcDataItems
                                         where lst.DeviceName == plc.DevName
                                         select lst;
                List <Config.PlcDataItem> ioLst = ie.Cast <Config.PlcDataItem>().ToList();

                foreach (Config.PlcDataItem item in ioLst)
                {
                    Config.ConfigManager.Instance.ConfigPlc.PlcDataItems.Remove(item);
                }
                this.dgvPlcType_Focus(plc);
                return;
            }
            Config.ConfigManager.Instance.ConfigPlc.PlcDataItems.Clear();
        }
Exemplo n.º 11
0
 private void dgvPlcType_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
 {
     try
     {
         if (this.dgvPlcType.Columns[e.ColumnIndex].Name.Equals("isConnectedPLC"))
         {
             Config.PlcTypeItem item = (Config.PlcTypeItem) this.dgvPlcType.Rows[e.RowIndex].DataBoundItem;
             if (item == null)
             {
                 e.Value = this.imageList1.Images[3];
             }
             else if (item.IsActive)
             {
                 e.Value = (item.IsConnected == true) ? this.imageList1.Images[1] : this.imageList1.Images[2];
             }
             else
             {
                 e.Value = this.imageList1.Images[0];
             }
         }
     }
     catch
     { }
 }
Exemplo n.º 12
0
        //聚焦设备项
        private void dgvPlcType_Focus(Config.PlcTypeItem plc)
        {
            if (!this.chkShowAll.Checked)
            {
                //this.dgvPlcData.EndEdit();
                //this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
                //List<Config.PlcDataItem> checkItems = this.dgvPlcData.Rows.Cast<DataGridViewRow>().Where
                //    (x => (string)x.Cells["deviceName"].Value == plc.DevName)
                //    .Select(x => x.DataBoundItem).Cast<Config.PlcDataItem>().ToList();

                IEnumerable <Config.PlcDataItem> ie = from lst in Config.ConfigManager.Instance.ConfigPlc.PlcDataItems
                                                      where lst.DeviceName == plc.DevName
                                                      select lst;
                List <Config.PlcDataItem> ioLst = ie.Cast <Config.PlcDataItem>().ToList();
                this.dgvPlcData.DataSource = ioLst;
                this.dgvPlcData.Refresh();
                this.txtCount.Text = dgvPlcData.Rows.Count.ToString();
            }
            else
            {
                //this.dgvPlcData.DataSource = Config.ConfigManager.Instance.ConfigPlc.PlcDataItems;
                this.txtCount.Text = (dgvPlcData.Rows.Count - 1).ToString();
            }
        }
Exemplo n.º 13
0
        //modbusRtu write
        private bool  WriteModRtuValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, ModbusRtu mod, 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 || mod == null)
                {
                    return(rlt.IsSuccess);
                }

                switch (plcdata.DataType)
                {
                case Common.DataTypes.Bool:    //Bool
                    rlt = mod.WriteCoil(plcdata.Address, Convert.ToBoolean(value));
                    break;

                case Common.DataTypes.Short:
                    rlt = mod.Write(plcdata.Address, Convert.ToInt16(value));
                    break;

                case Common.DataTypes.Ushort:
                    rlt = mod.Write(plcdata.Address, Convert.ToUInt16(value));
                    break;

                case Common.DataTypes.Int:
                    rlt = mod.Write(plcdata.Address, Convert.ToInt32(value));
                    break;

                case Common.DataTypes.UInt:
                    rlt = mod.Write(plcdata.Address, Convert.ToUInt32(value));
                    break;

                case Common.DataTypes.Long:
                    rlt = mod.Write(plcdata.Address, Convert.ToInt64(value));
                    break;

                case Common.DataTypes.ULong:
                    rlt = mod.Write(plcdata.Address, Convert.ToUInt64(value));
                    break;

                case Common.DataTypes.Float:
                    rlt = mod.Write(plcdata.Address, float.Parse(value.ToString()));
                    break;

                case Common.DataTypes.Double:
                    rlt = mod.Write(plcdata.Address, Convert.ToDouble(value));
                    break;

                case Common.DataTypes.String:
                    rlt = mod.Write(plcdata.Address, Convert.ToString(value));
                    break;

                default: break;
                }
            }
            catch
            {
                //MessageBox.Show(ex.Message);
            }
            return(rlt.IsSuccess);
        }
Exemplo n.º 14
0
        //modbusRtu read
        private object ReadModRtuValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, ModbusRtu mod)
        {
            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 || mod == null)
                {
                    return(null);
                }

                switch (plcdata.DataType)
                {
                case Common.DataTypes.Bool:    //Coil
                    plcdata.ValueNew = mod.ReadCoil(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Discrete:    //Discrete
                    plcdata.ValueNew = mod.ReadDiscrete(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Short:
                    plcdata.ValueNew = mod.ReadInt16(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Ushort:
                    plcdata.ValueNew = mod.ReadUInt16(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Int:
                    plcdata.ValueNew = mod.ReadInt32(plcdata.Address).Content;
                    break;

                case Common.DataTypes.UInt:
                    plcdata.ValueNew = mod.ReadUInt32(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Long:
                    plcdata.ValueNew = mod.ReadInt64(plcdata.Address).Content;
                    break;

                case Common.DataTypes.ULong:
                    plcdata.ValueNew = mod.ReadUInt64(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Float:
                    plcdata.ValueNew = mod.ReadFloat(plcdata.Address).Content;
                    break;

                case Common.DataTypes.Double:
                    plcdata.ValueNew = mod.ReadDouble(plcdata.Address).Content;
                    break;

                case Common.DataTypes.String:
                    plcdata.ValueNew = mod.ReadString(plcdata.Address, 10).Content;
                    break;

                default:
                    break;
                }
            }
            catch
            {
                //MessageBox.Show(ex.Message);
            }
            return(plcdata.ValueNew);
        }
Exemplo n.º 15
0
        //PLC写入
        private bool  WriteSieTcpValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, SiemensS7Net 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;
                }
            }
            catch
            {
                //MessageBox.Show(ex.Message);
            }
            return(rlt.IsSuccess);
        }
Exemplo n.º 16
0
        //PLC读取
        private object ReadSieTcpValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, SiemensS7Net 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.ReadByte(plcdata.Address).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);
        }