概述
本文采用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 上位机效果
至此,测试过程全部结束。