使用C#上位机winform读写西门子S7-200SMART的IO信号

概述

本文采用winform制作上位机画面,通过西门子S7通信(S7.net)访问西门子PLC S7-200SMART的IO信号,实现简单的读写操作。

1 配置

1.1硬件要求

PC 操作电脑

CPU ST30 (6ES7288-1ST30-0AA1)

1.2软件要求

STEP 7-MicroWIN SMART V2.8

Visual Studio 2022

2 操作步骤

2.1 新建winform项目

2.2 添加S7.net库

2.3 编辑画面

2.4 新建PLC实例

2.5 添加定时器事件

3 测试结果

3.1 上位机源代码

using S7.Net;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Reflection.Emit;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace TestS7

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

Plc plc1 = new Plc(CpuType.S7200Smart, "192.168.2.1", 0, 1);


private void Form1_Load(object sender, EventArgs e)

{

try

{

plc1.Open();

textBox9.Text = "MES与PLC通讯成功";

textBox9.BackColor = Color.Green;

}

catch

{

textBox9.Text = "MES与PLC通讯失败";

textBox9.BackColor = Color.Red;

return;

}

}

private void timer1_Tick(object sender, EventArgs e)

{

if (plc1.IsConnected)

{

if (bool.Parse(plc1.Read("I0.0").ToString()))

{ textBox1.BackColor = Color.Green;}

else

{ textBox1.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.1").ToString()))

{ textBox2.BackColor = Color.Green; }

else

{ textBox2.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.2").ToString()))

{ textBox3.BackColor = Color.Green; }

else

{ textBox3.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.3").ToString()))

{ textBox4.BackColor = Color.Green; }

else

{ textBox4.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.4").ToString()))

{ textBox5.BackColor = Color.Green; }

else

{ textBox5.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.5").ToString()))

{ textBox6.BackColor = Color.Green; }

else

{ textBox6.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.6").ToString()))

{ textBox7.BackColor = Color.Green; }

else

{ textBox7.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("I0.7").ToString()))

{ textBox8.BackColor = Color.Green; }

else

{ textBox8.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.0").ToString()))

{ button1.BackColor = Color.Green; }

else

{ button1.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.1").ToString()))

{ button2.BackColor = Color.Green; }

else

{ button2.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.2").ToString()))

{ button3.BackColor = Color.Green; }

else

{ button3.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.3").ToString()))

{ button4.BackColor = Color.Green; }

else

{ button4.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.4").ToString()))

{ button5.BackColor = Color.Green; }

else

{ button5.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.5").ToString()))

{ button6.BackColor = Color.Green; }

else

{ button6.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.6").ToString()))

{ button7.BackColor = Color.Green; }

else

{ button7.BackColor = Color.Red; }

if (bool.Parse(plc1.Read("Q0.7").ToString()))

{ button8.BackColor = Color.Green; }

else

{ button8.BackColor = Color.Red; }

}

}

private void button4_Click(object sender, EventArgs e)

{

if (bool.Parse(plc1.Read("Q0.3").ToString()))

{

plc1.Write("Q0.3", 0);

button8.BackColor = Color.FromArgb(255, 0, 0, 200);

}

else

{

plc1.Write("Q0.3", 1);

button8.BackColor = Color.Green;

}

}

}

}

3.2 上位机效果

至此,测试过程全部结束。

原文链接:,转发请注明来源!