sharp7读写PLC数据

下面是PLC中的數據,根據一下類型進行數據的讀寫練習,以及多值的讀寫练习。

 1、首先进行PLC的连接

//PLC的连接 
private void ConnectBtn_Click(object sender, EventArgs e)      // 连接PLC
        {
            int Result = 1;
            int Rack = System.Convert.ToInt32(TxtRack.Text);
            int Slot = System.Convert.ToInt32(TxtSlot.Text);
            Result = Client.ConnectTo(TxtIP.Text, Rack, Slot);   // 0 表示Success
            ShowResult(Result);   //  状态栏结果显示
            if (Result == 0)
            {
                TextError.Text = TextError.Text + "协商PDU[PDU Negotiated]" + Client.PduSizeNegotiated.ToString();//状态栏结果追加文本,返回协商的PDU大小
                TxtIP.Enabled = false;
                TxtRack.Enabled = false;
                TxtSlot.Enabled = false;
                ConnectBtn.Enabled = false;
                DisconnectBtn.Enabled = true;
                readBox.Enabled = true;
                //MessageBox.Show("  ===》》连接PLC成功!《《=== ");

            }
            else MessageBox.Show("连接PLC失败!");
        }

2、从PLC中读取值,单值与多值的读取

private void button2_Click(object sender, EventArgs e)
        {
            var Buffert = new byte[680];
            string int_1_0 = Client.ReadArea(S7Consts.S7AreaDB, 1, 0, 2, 0x04, Buffert).ToString();
            string Real_6_0 = Client.ReadArea(S7Consts.S7AreaDB, 1, 6, 4, 0x08, Buffert).ToString();
            string Byte_18_0 = Client.ReadArea(S7Consts.S7AreaDB, 1, 18, 1, 0x02, Buffert).ToString();
            string Bool_21_0 = Client.ReadArea(S7Consts.S7AreaDB, 1, 168, 1, 0x01, Buffert).ToString();
            //DBRead读数据

            var intbuffer = new byte[688];
            int readResult = Client.DBRead(1,0,688,intbuffer);          //DBRead读四个字节   位0101 0000 ——》1010 0000-》0A 00->10 0
            if (readResult == 0)
            {
                MessageBox.Show("Read Success !");
            }
            else { MessageBox.Show("Read Fail!"); }
            //Read int
            string intValue1 = Convert.ToString(Sharp7.S7.GetIntAt(intbuffer,0));  //有符号的256进位
            string intValue2 = Convert.ToString(Sharp7.S7.GetIntAt(intbuffer, 2)); 
            string intValue3 = Convert.ToString(Sharp7.S7.GetIntAt(intbuffer, 4));
            //Read Real
            string RealValue4 = Convert.ToString(Sharp7.S7.GetRealAt(intbuffer, 6));
            string RealValue5 = Convert.ToString(Sharp7.S7.GetRealAt(intbuffer, 10));
            string RealValue6 = Convert.ToString(Sharp7.S7.GetRealAt(intbuffer, 14));
            //Read Byte
            string ByteValue7 = Convert.ToString(Sharp7.S7.GetByteAt(intbuffer, 18));
            string ByteValue8 = Convert.ToString(Sharp7.S7.GetByteAt(intbuffer, 19));
            string ByteValue9 = Convert.ToString(Sharp7.S7.GetByteAt(intbuffer, 20));
            //Read Bool
            string BoolValue10 = Convert.ToString(Sharp7.S7.GetBitAt(intbuffer, 21,0));
            string BoolValue11 = Convert.ToString(Sharp7.S7.GetBitAt(intbuffer, 21,1));
            string BoolValue12 = Convert.ToString(Sharp7.S7.GetBitAt(intbuffer, 21,2));
            //Read Char
            string CharValue = Sharp7.S7.GetCharsAt(intbuffer, 22, 2);  //2为读两个字符
            string CharValue1 = Sharp7.S7.GetCharsAt(intbuffer, 22, 1);
            string CharValue2 = Sharp7.S7.GetCharsAt(intbuffer, 23, 1);

            //Read String           
            string StringValue12 = S7.GetStringAt(intbuffer, 24).ToString();
            string StringValue13 = S7.GetStringAt(intbuffer, 536).ToString();
           
        }
        private void button4_Click(object sender, EventArgs e)
        {
            //------Read Multi vars
            S7MultiVar s7MultiVal = new S7MultiVar(Client);
            byte[] db1 = new byte[21];
            s7MultiVal.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 1, 0, db1.Length, ref db1);

            var db2 = new byte[18];
            s7MultiVal.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 1, 21, db1.Length, ref db2);

            var db3 = new byte[24];
            s7MultiVal.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 1, 280, db2.Length, ref db3);
            
            int resultmul = s7MultiVal.Read();
            
            if (resultmul != 0)
            { //Fail}
                TextError.Text = "Error" + resultmul;
            }
            int db1dbw1 = S7.GetIntAt(db1, 0);
            int db1dbw2 = S7.GetIntAt(db1, 2);
            int db1dbw3 = S7.GetIntAt(db1, 4);

            float f1 = S7.GetRealAt(db1, 6);
            float f2 = S7.GetRealAt(db1, 10);
            float f3 = S7.GetRealAt(db1, 14);

            byte b1 = S7.GetByteAt(db1, 18);
            byte b2 = S7.GetByteAt(db1, 19);
            byte b3 = S7.GetByteAt(db1, 20);

            bool bo0 = S7.GetBitAt(db2, 0, 0);
            bool bo1 = S7.GetBitAt(db2, 0, 1);
            bool bo2 = S7.GetBitAt(db2, 0, 2);

            string c1 = S7.GetCharsAt(db2, 1, 1);
            string c2 = S7.GetCharsAt(db2, 2, 1);

            string s1 = S7.GetStringAt(db2, 3).ToString();

            string s2 = S7.GetStringAt(db3, 0).ToString();


            //string s3 = S7.GetStringAt(db2, 512).ToString();
        }
      

 3、写入PLC数据,单值写入与多值写入

  //写数据
        private void button3_Click(object sender, EventArgs e)
        {
            //数据写DBWrite
            byte[] dbWBuffer = new byte[1244];
            // Write Int
            S7.SetIntAt(dbWBuffer, 0, Int16.Parse("24"));//1.0
            S7.SetIntAt(dbWBuffer, 2, Int16.Parse("66"));//1.1
            S7.SetIntAt(dbWBuffer, 4, Int16.Parse("99"));//1.2
            //Write Real
            S7.SetRealAt(dbWBuffer, 6, 21.3f);
            S7.SetRealAt(dbWBuffer, 10, 21.3f);
            S7.SetRealAt(dbWBuffer, 14, 21.3f);
            //Write Byte
            S7.SetByteAt(dbWBuffer, 18, 99);
            S7.SetByteAt(dbWBuffer, 19, 99);
            S7.SetByteAt(dbWBuffer, 20, 99);
            //Write Bool
            S7.SetBitAt(ref dbWBuffer, 21, 0, true);
            S7.SetBitAt(ref dbWBuffer, 21, 1, true);
            S7.SetBitAt(ref dbWBuffer, 21, 2, true);
            //Write Char
            S7.SetCharsAt(dbWBuffer, 22, "F");
            S7.SetCharsAt(dbWBuffer, 23, "G");
            //Write String
            S7.SetStringAt(dbWBuffer, 24, 20, "wlll");
            S7.SetStringAt(dbWBuffer, 280, 20, "fu222");
            int reasult3 = Client.DBWrite(1, 0, dbWBuffer.Length, dbWBuffer);  //写入成功


            特定的写某一位
            //var bufferInt = new byte[4];
            //S7.SetIntAt(bufferInt, 0, 77);  // 0是数组的位置
            //Client.DBWrite(1, 2, 2, bufferInt);  //2是DB的偏移量 
            if (reasult3 != 0)
            {
                TextError.Text = "Error:" + Client.ErrorText(reasult3);
            }
            else
            { TextError.Text = "Success Write:" + Client.ErrorText(reasult3); }


        }
        private void button5_Click(object sender, EventArgs e)
        {
            //write Mulvalue
            S7MultiVar s7MulWrite = new S7MultiVar(Client);
            var db1 = new byte[4];
            S7.SetIntAt(db1, 0, 77);
            S7.SetIntAt(db1, 2, 77);
            s7MulWrite.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 1, 0, 4, ref db1);

            var db2 = new byte[8];
            S7.SetRealAt(db2, 0, (float)44.4);
            S7.SetRealAt(db2, 4, (float)44.4);
            s7MulWrite.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 1, 6, 8, ref db2);
            int rea = s7MulWrite.Write();
            if (rea != 0)
            {
                //Fail
            }

        }

 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值