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:
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;elseprogressBar1.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;elseQ0_0.BackColor = Color.Red;//------- Q0.1 -----------------------------if (Q01[0].SelectBit(1))Q0_1.BackColor = Color.Green;elseQ0_1.BackColor = Color.Red;//------- Q0.2 -----------------------------if (Q01[0].SelectBit(2))Q0_2.BackColor = Color.Green;elseQ0_2.BackColor = Color.Red;//------- Q0.3 -----------------------------if (Q01[0].SelectBit(3))Q0_3.BackColor = Color.Green;elseQ0_3.BackColor = Color.Red;//------- Q0.4 -----------------------------if (Q01[0].SelectBit(4))Q0_4.BackColor = Color.Green;elseQ0_4.BackColor = Color.Red;//------- Q0.5 -----------------------------if (Q01[0].SelectBit(5))Q0_5.BackColor = Color.Green;elseQ0_5.BackColor = Color.Red;//------- Q0.6 -----------------------------if (Q01[0].SelectBit(6))Q0_6.BackColor = Color.Green;elseQ0_6.BackColor = Color.Red;//------- Q0.7 -----------------------------if (Q01[0].SelectBit(7))Q0_7.BackColor = Color.Green;elseQ0_7.BackColor = Color.Red;//------- Q1.0 -----------------------------if (Q01[1].SelectBit(0))Q1_0.BackColor = Color.Green;elseQ1_0.BackColor = Color.Red;//------- Q1.1 -----------------------------if (Q01[1].SelectBit(1))Q1_1.BackColor = Color.Green;elseQ1_1.BackColor = Color.Red;//------- Q1.2 -----------------------------if (Q01[1].SelectBit(2))Q1_2.BackColor = Color.Green;elseQ1_2.BackColor = Color.Red;//------- Q1.3 -----------------------------if (Q01[1].SelectBit(3))Q1_3.BackColor = Color.Green;elseQ1_3.BackColor = Color.Red;//------- Q1.4 -----------------------------if (Q01[1].SelectBit(4))Q1_4.BackColor = Color.Green;elseQ1_4.BackColor = Color.Red;//------- Q1.5 -----------------------------if (Q01[1].SelectBit(5))Q1_5.BackColor = Color.Green;elseQ1_5.BackColor = Color.Red;//------- Q1.6 -----------------------------if (Q01[1].SelectBit(6))Q1_6.BackColor = Color.Green;elseQ1_6.BackColor = Color.Red;//------- Q1.1 -----------------------------if (Q01[1].SelectBit(7))Q1_7.BackColor = Color.Green;elseQ1_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.7byte[] M0_0_On = { 1 }; // Array byte have 1 element | Number 1 => M0.0 = truebyte[] M0_0_Off = { 254 }; // Array byte have 1 element | Number 254 => M0.0 = falseM0_0_On[0] |= M0[0]; // Or M0.0 = trueM0_0_Off[0] &= M0[0]; // And Number 254 => M0.0 = falseif (plc_s7_1200.IsConnected){if (!M0[0].SelectBit(0))plc_s7_1200.WriteBytes(DataType.Memory, 0, 0, M0_0_On); // Write 1 byte to Memoryelseplc_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);elseplc_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);elseplc_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);elseplc_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);elseplc_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);elseplc_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);elseplc_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);elseplc_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 elementif (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)}}}}
Video hướng dẫn:
Chúc các bạn thành công!
No comments:
Post a Comment