Esempio n. 1
0
        public void ReadExample2( )
        {
            #region ReadExample2

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

            OperateResult <byte[]> read = omronFinsNet.Read("D100", 4);
            if (read.IsSuccess)
            {
                float temp  = omronFinsNet.ByteTransform.TransInt16(read.Content, 0) / 10f;
                float press = omronFinsNet.ByteTransform.TransInt16(read.Content, 2) / 100f;
                int   count = omronFinsNet.ByteTransform.TransInt32(read.Content, 2);

                // do something
            }
            else
            {
                // failed
            }


            #endregion
        }
Esempio n. 2
0
 private void button25_Click(object sender, EventArgs e)
 {
     try
     {
         OperateResult <byte[]> read = omronFinsNet.Read(textBox6.Text, ushort.Parse(textBox9.Text));
         if (read.IsSuccess)
         {
             textBox10.Text = "结果:" + HslCommunication.BasicFramework.SoftBasic.ByteToHexString(read.Content);
         }
         else
         {
             MessageBox.Show("读取失败:" + read.ToMessageShowString( ));
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("读取失败:" + ex.Message);
     }
 }
Esempio n. 3
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
                {
                    // 发生了异常
                    //
                }
            }
        }
 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);
     }
 }