Exemplo n.º 1
0
 private void button_read_bool_Click(object sender, EventArgs e)
 {
     // 读取bool变量
     if (textBox12.Text == "1")
     {
         DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text), textBox3.Text, textBox4);
     }
     else
     {
         DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text, ushort.Parse(textBox12.Text)), textBox3.Text, textBox4);
     }
 }
Exemplo n.º 2
0
        public void ReadBool( )
        {
            #region ReadBool

            OmronFinsNet omronFinsNet = new OmronFinsNet("192.168.1.110", 6000);
            omronFinsNet.SA1 = 10;
            omronFinsNet.DA1 = 110;

            // 以下是简单的读取,没有仔细校验的方式
            bool   X1    = omronFinsNet.ReadBool("D100.1").Content;
            bool[] X1_10 = omronFinsNet.ReadBool("D100.1", 10).Content;

            // 如果需要判断是否读取成功
            OperateResult <bool> R_X1 = omronFinsNet.ReadBool("D100.1");
            if (R_X1.IsSuccess)
            {
                // success
                bool value = R_X1.Content;
            }
            else
            {
                // failed
            }


            OperateResult <bool[]> R_X1_10 = omronFinsNet.ReadBool("D100.1", 10);
            if (R_X1_10.IsSuccess)
            {
                // success
                bool x1 = R_X1_10.Content[0];
                bool x2 = R_X1_10.Content[1];
                bool x3 = R_X1_10.Content[2];
                bool x4 = R_X1_10.Content[3];
                bool x5 = R_X1_10.Content[4];
                bool x6 = R_X1_10.Content[5];
                bool x7 = R_X1_10.Content[6];
                bool x8 = R_X1_10.Content[7];
                bool x9 = R_X1_10.Content[8];
                bool xa = R_X1_10.Content[9];
            }
            else
            {
                // failed
            }


            #endregion
        }
Exemplo n.º 3
0
        public void ReadExample( )
        {
            #region ReadExample1


            OmronFinsNet omronFinsNet = new OmronFinsNet("192.168.1.110", 6000);
            omronFinsNet.SA1 = 10;
            omronFinsNet.DA1 = 110;

            // 此处以D寄存器作为示例
            bool   D100_7      = omronFinsNet.ReadBool("D100.7").Content;    // 读取D100.7是否通断,注意D100.0等同于D100
            short  short_D100  = omronFinsNet.ReadInt16("D100").Content;     // 读取D100组成的字
            ushort ushort_D100 = omronFinsNet.ReadUInt16("D100").Content;    // 读取D100组成的无符号的值
            int    int_D100    = omronFinsNet.ReadInt32("D100").Content;     // 读取D100-D101组成的有符号的数据
            uint   uint_D100   = omronFinsNet.ReadUInt32("D100").Content;    // 读取D100-D101组成的无符号的值
            float  float_D100  = omronFinsNet.ReadFloat("D100").Content;     // 读取D100-D101组成的单精度值
            long   long_D100   = omronFinsNet.ReadInt64("D100").Content;     // 读取D100-D103组成的大数据值
            ulong  ulong_D100  = omronFinsNet.ReadUInt64("D100").Content;    // 读取D100-D103组成的无符号大数据
            double double_D100 = omronFinsNet.ReadDouble("D100").Content;    // 读取D100-D103组成的双精度值
            string str_D100    = omronFinsNet.ReadString("D100", 5).Content; // 读取D100-D104组成的ASCII字符串数据

            // 读取数组
            short[]  short_D1000_array  = omronFinsNet.ReadInt16("D1000", 10).Content;         // 读取D1000的short值
            ushort[] ushort_D1000_array = omronFinsNet.ReadUInt16("D1000", 10).Content;        // 读取D1000的ushort值
            int[]    int_D1000_array    = omronFinsNet.ReadInt32("D1000", 10).Content;         // 读取D1000-D1001组成的int数据
            uint[]   uint_D1000_array   = omronFinsNet.ReadUInt32("D1000", 10).Content;        // 读取D1000-D1001组成的uint数据
            float[]  float_D1000_array  = omronFinsNet.ReadFloat("D1000", 10).Content;         // 读取D1000-D1001组成的float数据
            long[]   long_D1000_array   = omronFinsNet.ReadInt64("D1000", 10).Content;         // 读取D1000-D1003组成的long数据
            ulong[]  ulong_D1000_array  = omronFinsNet.ReadUInt64("D1000", 10).Content;        // 读取D1000-D1003组成的long数据
            double[] double_D1000_array = omronFinsNet.ReadDouble("D1000", 10).Content;        // 读取D1000-D1003组成的double数据

            #endregion
        }
Exemplo n.º 4
0
 public bool Connect()
 {
     if (omr != null)
     {
         omr.ConnectClose();
         omr = null;
     }
     omr = new OmronFinsNet(Properties.Settings.Default.PLC_IP, Properties.Settings.Default.PLC_PORT)
     {
         SA1 = 0,
         DA1 = 0
     };
     Task.Factory.StartNew(() =>
     {
         while (true)
         {
             var op      = omr.ConnectServer();
             IsConnected = op.IsSuccess;
             if (!op.IsSuccess)
             {
                 Events.Publish(new MsgItem {
                     Time = DateTime.Now, Level = "E", Value = op.Message
                 });
             }
             if (IsConnected)
             {
                 foreach (var v in AM.alarms)
                 {
                     var b = omr.ReadBool(v.Address);
                     if (b.IsSuccess)
                     {
                         if (v.Value != b.Content)
                         {
                             v.Value = b.Content;
                             Events.Publish(v);
                         }
                     }
                 }
                 omr.ConnectClose();
             }
             System.Threading.Thread.Sleep(10);
         }
     });
     return(IsConnected);
 }
Exemplo n.º 5
0
        private void test()
        {
            // 读取操作,这里的D100可以替换成C100,A100,W100,H100效果时一样的
            bool   D100_7      = omronFinsNet.ReadBool("D100.7").Content;         // 读取D100.7是否通断,注意D100.0等同于D100
            short  short_D100  = omronFinsNet.ReadInt16("D100").Content;          // 读取D100组成的字
            ushort ushort_D100 = omronFinsNet.ReadUInt16("D100").Content;         // 读取D100组成的无符号的值
            int    int_D100    = omronFinsNet.ReadInt32("D100").Content;          // 读取D100-D101组成的有符号的数据
            uint   uint_D100   = omronFinsNet.ReadUInt32("D100").Content;         // 读取D100-D101组成的无符号的值
            float  float_D100  = omronFinsNet.ReadFloat("D100").Content;          // 读取D100-D101组成的单精度值
            long   long_D100   = omronFinsNet.ReadInt64("D100").Content;          // 读取D100-D103组成的大数据值
            ulong  ulong_D100  = omronFinsNet.ReadUInt64("D100").Content;         // 读取D100-D103组成的无符号大数据
            double double_D100 = omronFinsNet.ReadDouble("D100").Content;         // 读取D100-D103组成的双精度值
            string str_D100    = omronFinsNet.ReadString("D100", 5).Content;      // 读取D100-D104组成的ASCII字符串数据

            // 写入操作,这里的D100可以替换成C100,A100,W100,H100效果时一样的
            omronFinsNet.Write("D100", (byte)0x33);                // 写单个字节
            omronFinsNet.Write("D100", (short)12345);              // 写双字节有符号
            omronFinsNet.Write("D100", (ushort)45678);             // 写双字节无符号
            omronFinsNet.Write("D100", (uint)3456789123);          // 写双字无符号
            omronFinsNet.Write("D100", 123.456f);                  // 写单精度
            omronFinsNet.Write("D100", 1234556434534545L);         // 写大整数有符号
            omronFinsNet.Write("D100", 523434234234343UL);         // 写大整数无符号
            omronFinsNet.Write("D100", 123.456d);                  // 写双精度
            omronFinsNet.Write("D100", "K123456789");              // 写ASCII字符串

            OperateResult <byte[]> read = omronFinsNet.Read("D100", 5);
            {
                if (read.IsSuccess)
                {
                    // 此处需要根据实际的情况来自定义来处理复杂的数据
                    short D100 = omronFinsNet.ByteTransform.TransInt16(read.Content, 0);
                    short D101 = omronFinsNet.ByteTransform.TransInt16(read.Content, 2);
                    short D102 = omronFinsNet.ByteTransform.TransInt16(read.Content, 4);
                    short D103 = omronFinsNet.ByteTransform.TransInt16(read.Content, 6);
                    short D104 = omronFinsNet.ByteTransform.TransInt16(read.Content, 7);
                }
                else
                {
                    // 发生了异常
                    //
                }
            }
        }
Exemplo n.º 6
0
 private void button_read_bool_Click(object sender, EventArgs e)
 {
     // 读取bool变量
     DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text), textBox3.Text, textBox4);
 }
Exemplo n.º 7
0
        /// <summary>
        /// PLC 数据读取
        /// </summary>
        private void DataReload()
        {
            dispatcherTimer       = new DispatcherTimer();
            dispatcherTimer.Tick += (s, e) =>
            {
                try
                {
                    #region 提示Info
                    if (gwcode1.Text.Trim() != string.Empty)
                    {
                        if (entry1.Any())
                        {
                            remark1.Text = $"漏扫零件:{entry1.First().FCodeRule}";
                        }
                    }
                    if (gwcode2.Text.Trim() != string.Empty)
                    {
                        if (entry2.Any())
                        {
                            remark2.Text = $"漏扫零件:{entry2.First().FCodeRule}";
                        }
                    }
                    if (gwcode3.Text.Trim() != string.Empty)
                    {
                        if (entry3.Any())
                        {
                            remark3.Text = $"漏扫零件:{entry3.First().FCodeRule}";
                        }
                    }
                    #endregion

                    #region 获取气检数据

                    #endregion

                    #region 获取保存信号 -- 放行信号
                    // OP01
                    var singal1 = plc.ReadBool("");
                    if (singal1.IsSuccess)
                    {
                        if (singal1.Content)
                        {
                            if (!saveMark1)
                            {
                                var record1 = new RecordInfo();
                                record1.FGWID       = GwType.OP01;
                                record1.FAssemblyID = assemblyType.FInterID;
                                var bar1 = gwcode1.Text.Trim();
                                if (bar1 == string.Empty)
                                {
                                    remark1.Text = "装配条码为空!";
                                }
                                else
                                {
                                    record1.FBar = bar1;
                                    var recordEntry1 = new List <RecordInfoEntry>();
                                    if (barlist1 != null && barlist1.Any())
                                    {
                                        barlist1.ForEach(f =>
                                        {
                                            recordEntry1.Add(new RecordInfoEntry(f));
                                        });
                                    }
                                    record1.entries = recordEntry1;

                                    if (this.SaveData(record1, GwType.OP01)) // true
                                    {
                                        // write plc ??

                                        gwcode1.Text = "";
                                        barlist1.Clear();
                                        remark1.Text = "保存成功!";
                                        saveMark1    = true;
                                    }
                                }
                            }
                        }
                        else
                        {
                            saveMark1 = false;
                        }
                    }

                    // OP40
                    var singal2 = plc.ReadBool("");
                    if (singal2.IsSuccess)
                    {
                        if (singal2.Content)
                        {
                            if (!saveMark2)
                            {
                                var record2 = new RecordInfo();
                                record2.FGWID       = GwType.OP40;
                                record2.FAssemblyID = assemblyType.FInterID;
                                var bar2 = gwcode2.Text.Trim();
                                if (bar2 == string.Empty)
                                {
                                    remark2.Text = "装配条码为空!";
                                }
                                else
                                {
                                    record2.FBar = bar2;
                                    var recordEntry2 = new List <RecordInfoEntry>();
                                    if (barlist2 != null && barlist2.Any())
                                    {
                                        barlist2.ForEach(f =>
                                        {
                                            recordEntry2.Add(new RecordInfoEntry(f));
                                        });
                                    }
                                    record2.entries = recordEntry2;

                                    if (this.SaveData(record2, GwType.OP40)) // true
                                    {
                                        // write plc ??

                                        gwcode2.Text = "";
                                        barlist2.Clear();
                                        remark2.Text = "保存成功!";
                                        saveMark2    = true;
                                    }
                                }
                            }
                        }
                        else
                        {
                            saveMark2 = false;
                        }
                    }

                    // OP70
                    var singal3 = plc.ReadBool("");
                    if (singal3.IsSuccess)
                    {
                        if (singal3.Content)
                        {
                            if (!saveMark3)
                            {
                                var record3 = new RecordInfo();
                                record3.FGWID       = GwType.OP70;
                                record3.FAssemblyID = assemblyType.FInterID;
                                var bar3 = gwcode3.Text.Trim();
                                if (bar3 == string.Empty)
                                {
                                    remark3.Text = "装配条码为空!";
                                }
                                else
                                {
                                    record3.FBar     = bar3;
                                    record3.FCustBar = custcode.Text.Trim();
                                    //var recordEntry3 = new List<RecordInfoEntry>();
                                    //if (barlist3 != null && barlist3.Any())
                                    //{
                                    //    barlist3.ForEach(f =>
                                    //    {
                                    //        recordEntry3.Add(new RecordInfoEntry(f));
                                    //    });
                                    //}
                                    //record3.entries = recordEntry3;

                                    if (this.SaveData(record3, GwType.OP70)) // true
                                    {
                                        // write plc ??

                                        gwcode3.Text = "";
                                        barlist3.Clear();
                                        remark3.Text = "保存成功!";
                                        saveMark3    = true;
                                    }
                                }
                            }
                        }
                        else
                        {
                            saveMark3 = false;
                        }
                    }

                    // OP80
                    var singal4 = plc.ReadBool("");
                    if (singal4.IsSuccess)
                    {
                        if (singal4.Content)
                        {
                            if (!saveMark4)
                            {
                                var record4 = new RecordInfo();
                                record4.FGWID       = GwType.OP80;
                                record4.FAssemblyID = assemblyType.FInterID;
                                var bar4 = gwcode4.Text.Trim();
                                if (bar4 == string.Empty)
                                {
                                    remark4.Text = "客户条码为空!";
                                }
                                else
                                {
                                    record4.FCustBar = bar4;
                                    var recordEntry4 = new List <RecordInfoEntry1>();
                                    if (valuelist != null && valuelist.Any())
                                    {
                                        valuelist.ForEach(f =>
                                        {
                                            recordEntry4.Add(new RecordInfoEntry1(f));
                                        });
                                    }
                                    record4.entries1 = recordEntry4;

                                    if (this.SaveData(record4, GwType.OP80)) // true
                                    {
                                        // write plc ??

                                        gwcode4.Text = "";
                                        valuelist.Clear();
                                        remark4.Text = "保存成功!";
                                        saveMark4    = true;

                                        ShowDetail(bar4);
                                    }
                                }
                            }
                        }
                        else
                        {
                            saveMark4 = false;
                        }
                    }

                    #endregion

                    remark = true;
                }
                catch (Exception ex)
                {
                    log.Error("------PLC访问出错------");
                    log.Error(ex.Message);
                    dispatcherTimer.Stop();
                    remark = false;
                }
            };
            dispatcherTimer.Interval = TimeSpan.FromMilliseconds(10);
            dispatcherTimer.Start();
        }
 public override object ReadTag(Tag tag)
 {
     if (tag.AccessType == TagAccessType.Read || tag.AccessType == TagAccessType.ReadWrite)
     {
         try
         {
             if (tag.TagType == "bool")
             {
                 var res = PLC.ReadBool(tag.Address);
                 if (res.IsSuccess)
                 {
                     tag.TagValue = res.Content;
                     tag.Quality  = Quality.Good;
                 }
                 else
                 {
                     tag.TagValue = null;
                     tag.Quality  = Quality.Bad;
                 }
             }
             else if (tag.TagType == "string")
             {
                 OperateResult <string> res = new OperateResult <string>();
                 if (tag.Address.Contains("#"))
                 {
                     string[] adds    = tag.Address.Split('#');
                     string   address = adds[0];
                     ushort   len     = Convert.ToUInt16(adds[1]);
                     res = PLC.ReadString(tag.Address, len);
                 }
                 else
                 {
                     res = PLC.ReadString(tag.Address, 1);
                 }
                 if (res.IsSuccess)
                 {
                     tag.TagValue = res.Content;
                     tag.Quality  = Quality.Good;
                 }
                 else
                 {
                     tag.TagValue = null;
                     tag.Quality  = Quality.Bad;
                 }
             }
             else
             {
                 OperateResult <byte[]> res = PLC.Read(tag.Address, 1);
                 ConvertUtils.DecodeTagValue(tag, res);
             }
             return(tag.TagValue);
         }
         catch (Exception ex)
         {
             LOG.Error($"Datasource[{SourceName}] read error. Tag[{tag.TagName}] Address[{tag.Address}] Message[{ex.Message}]");
             tag.TagValue = null;
             tag.Quality  = Quality.Bad;
             return(tag.TagValue);
         }
     }
     else
     {
         return(null);
     }
 }