Read and Write bytes - Kết nối C# với PLC S7-1200 bằng thư viện S7.Net - Communication C# with PLC S7-1200

Làm thế nào để kết nối C-Sharp với PLC S7-1200?


Bài viết này hướng dẫn các bạn kết nối C# với PLC S7-1200 sử dụng thư viện S7.Net ở chế độ "Read and Write Bytes".
Các bạn có thể tham khảo thêm chế độ:


  • Read from PLC using S7.net
  • Write to PLC using S7.net
  • Write Bit to PLC using S7.net
  • Read and Write Struct byte to PLC using S7.net
  • Read and Write Class byte to PLC using S7.net

Giao diện:

Communication C# with PLC S7-1200
Read and Write bytes 

Source code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using S7.Net;

namespace READ_AND_WRITE_BYTE
{
    public partial class Form1 : Form
    {
        Timer timer = new Timer();
        Plc plc_s7_1200;
        CpuType Cpu_Type = CpuType.S71200;
        string Ip = "192.168.1.197";
        short Rack = 0;
        short Slot = 1;
        int Time_Update = 100;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            plc_s7_1200 = new Plc(Cpu_Type, Ip, Rack, Slot);
            plc_s7_1200.Open();

            timer.Interval = Time_Update;
            timer.Start();
            timer.Tick += Timer_Tick;
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            if (plc_s7_1200.IsConnected)
                progressBar1.Value = 100;
            else
                progressBar1.Value = 0;
            if (plc_s7_1200.IsConnected)
            {
                byte[] Q01 = plc_s7_1200.ReadBytes(DataType.Output, 0, 0, 2);

                //------- Q0.0 -----------------------------
                if (Q01[0].SelectBit(0))
                    Q0_0.BackColor = Color.Green;
                else
                    Q0_0.BackColor = Color.Red;
                //------- Q0.1 -----------------------------
                if (Q01[0].SelectBit(1))
                    Q0_1.BackColor = Color.Green;
                else
                    Q0_1.BackColor = Color.Red;
                //------- Q0.2 -----------------------------
                if (Q01[0].SelectBit(2))
                    Q0_2.BackColor = Color.Green;
                else
                    Q0_2.BackColor = Color.Red;
                //------- Q0.3 -----------------------------
                if (Q01[0].SelectBit(3))
                    Q0_3.BackColor = Color.Green;
                else
                    Q0_3.BackColor = Color.Red;
                //------- Q0.4 -----------------------------
                if (Q01[0].SelectBit(4))
                    Q0_4.BackColor = Color.Green;
                else
                    Q0_4.BackColor = Color.Red;
                //------- Q0.5 -----------------------------
                if (Q01[0].SelectBit(5))
                    Q0_5.BackColor = Color.Green;
                else
                    Q0_5.BackColor = Color.Red;
                //------- Q0.6 -----------------------------
                if (Q01[0].SelectBit(6))
                    Q0_6.BackColor = Color.Green;
                else
                    Q0_6.BackColor = Color.Red;
                //------- Q0.7 -----------------------------
                if (Q01[0].SelectBit(7))
                    Q0_7.BackColor = Color.Green;
                else
                    Q0_7.BackColor = Color.Red;
                //------- Q1.0 -----------------------------
                if (Q01[1].SelectBit(0))
                    Q1_0.BackColor = Color.Green;
                else
                    Q1_0.BackColor = Color.Red;
                //------- Q1.1 -----------------------------
                if (Q01[1].SelectBit(1))
                    Q1_1.BackColor = Color.Green;
                else
                    Q1_1.BackColor = Color.Red;
                //------- Q1.2 -----------------------------
                if (Q01[1].SelectBit(2))
                    Q1_2.BackColor = Color.Green;
                else
                    Q1_2.BackColor = Color.Red;
                //------- Q1.3 -----------------------------
                if (Q01[1].SelectBit(3))
                    Q1_3.BackColor = Color.Green;
                else
                    Q1_3.BackColor = Color.Red;
                //------- Q1.4 -----------------------------
                if (Q01[1].SelectBit(4))
                    Q1_4.BackColor = Color.Green;
                else
                    Q1_4.BackColor = Color.Red;
                //------- Q1.5 -----------------------------
                if (Q01[1].SelectBit(5))
                    Q1_5.BackColor = Color.Green;
                else
                    Q1_5.BackColor = Color.Red;
                //------- Q1.6 -----------------------------
                if (Q01[1].SelectBit(6))
                    Q1_6.BackColor = Color.Green;
                else
                    Q1_6.BackColor = Color.Red;
                //------- Q1.1 -----------------------------
                if (Q01[1].SelectBit(7))
                    Q1_7.BackColor = Color.Green;
                else
                    Q1_7.BackColor = Color.Red;
            }
            
        }

        private void M0_0_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 0, 1);  // Read M0.0 to M0.7
            byte[] M0_0_On = { 1 };  // Array byte have 1 element | Number 1 => M0.0 = true
            byte[] M0_0_Off = { 254 };  // Array byte have 1 element | Number 254 => M0.0 = false
            M0_0_On[0] |= M0[0]; // Or M0.0 = true
            M0_0_Off[0] &= M0[0]; // And Number 254 => M0.0 = false
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(0))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_0_On); // Write 1 byte to Memory
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_0_Off); // Write 1 byte Memory
            }
        }

        private void M0_1_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 0, 1);          
            byte[] M0_1_On = { 2 };
            byte[] M0_1_Off = { 253 };
            M0_1_On[0] |= M0[0];
            M0_1_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(1))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_1_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_1_Off);
            }
        }

        private void M0_2_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 0, 1);
            byte[] M0_2_On = { 4 };
            byte[] M0_2_Off = { 251 };
            M0_2_On[0] |= M0[0];
            M0_2_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(2))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_2_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_2_Off);
            }
        }

        private void M0_3_Click(object sender, EventArgs e)
        {            
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 0, 1);
            byte[] M0_3_On = { 8 };
            byte[] M0_3_Off = { 247 };
            M0_3_On[0] |= M0[0];
            M0_3_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(3))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_3_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_3_Off);
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 1, 1);
            byte[] M1_0_On = { 1 };
            byte[] M1_0_Off = { 254 };
            M1_0_On[0] |= M0[0];
            M1_0_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(0))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_0_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_0_Off);
            }
        }

        private void M1_1_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 1, 1);
            byte[] M1_1_On = { 2 };
            byte[] M1_1_Off = { 253 };
            M1_1_On[0] |= M0[0];
            M1_1_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(1))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_1_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_1_Off);
            }
        }

        private void M1_2_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 1, 1);
            byte[] M1_3_On = { 4 };
            byte[] M1_3_Off = { 251 };
            M1_3_On[0] |= M0[0];
            M1_3_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(3))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_3_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_3_Off);
            }
        }

        private void M1_3_Click(object sender, EventArgs e)
        {
            byte[] M0 = plc_s7_1200.ReadBytes(DataType.Memory, 0, 1, 1);
            byte[] M1_4_On = { 8 };
            byte[] M1_4_Off = { 247 };
            M1_4_On[0] |= M0[0];
            M1_4_Off[0] &= M0[0];
            if (plc_s7_1200.IsConnected)
            {
                if (!M0[0].SelectBit(4))
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_4_On);
                else
                    plc_s7_1200.WriteBytes(DataType.Memory, 0, 1, M1_4_Off);
            }
        }

        private void On_All_Click(object sender, EventArgs e)
        {
            byte[] On_All = { 255, 255 }; // Array have 2 element
            if (plc_s7_1200.IsConnected)
            {
                plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, On_All); // Write 2 byte (M0.0 to M0.7 And M1.0 to M1.7)                   
            }
        }

        private void Off_All_Click(object sender, EventArgs e)
        {
            byte[] Off_All = { 0, 0 };
            if (plc_s7_1200.IsConnected)
            {
                plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, Off_All); // Write 2 byte (M0.0 to M0.7 And M1.0 to M1.7)     
            }
        }
    }
}


Các bạn có thể download source code bằng link phía dưới:

Link Source: Download

Video hướng dẫn:



Chúc các bạn thành công!

No comments:

Post a Comment