资源简介
C#和西门子CPU进行S7通讯
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.Threading;
using System.Windows.Forms;
using S7.Net;
namespace S7_Test
{
public partial class Form1 : Form
{
public Plc s7_plc;
byte[] data = new byte[2];
public Form1()
{
InitializeComponent();
}
private void btn_Connect_Click(object sender, EventArgs e)
{
s7_plc = new Plc(CpuType.S71500, txt_PLC_IP.Text, 0, 1);
//开辟一个后台线程
Task task = Task.Run(() =>
{
Communicaton();
});
}
private void Communicaton()
{
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("正在连接到PLC……")
));
s7_plc.Open();
bool temp1 = true;
while (true)
{
try
{
if (s7_plc.IsConnected & temp1)
{
temp1 = false;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("PLC连接成功!")
));
}
else
{
if (!s7_plc.IsConnected)
{
temp1 = true;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("PLC连接中断!")
));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Thread.Sleep(1000);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_Read_Click(object sender, EventArgs e)
{
if (s7_plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);//检查PLC是否连接;
}
else
{
try
{
string[] arr = (txt_read_addr.Text.ToUpper()).Split('.');//将txt_read_addr文本框中的数据转为大写字母,并用“.”拆分后存放到arr数组中
string valuetype = arr[1].Substring(0, 3);//取数组中的第二个元素的前三位,用以确认读取的PLC数据类型
//西门子PLC数据类型:DBX(位,bool)DBB(字节,byte)DBW(字,word)DBD(双字,dword)
//以下是按不同的数据类型,对PLC数据进行读取
if (valuetype == "DBX")
{
bool test1 = (bool)s7_plc.Read(txt_read_addr.Text.ToUpper());
ShowMsg(txt_read_addr.Text ":" test1.ToString());
}
else if (valuetype == "DBB")
{
//short test2 = ((ushort)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToShort();
byte test2 = Convert.ToByte(s7_plc.Read(txt_read_addr.Text.ToUpper()));
ShowMsg(txt_read_addr.Text ":" test2.ToString());
}
else if (valuetype == "DBW")
{
short test3 = ((ushort)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToShort();
ShowMsg(txt_read_addr.Text ":" test3.ToString());
}
else if (valuetype == "DBD")
{
//double test5 = ((uint)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToFloat();
double test5 = ((uint)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToFloat();
ShowMsg(txt_read_addr.Text ":" test5.ToString());
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
//listBox1.Items.Add("读取结果B0:" data[0].ToString());
//listBox1.Items.Add("读取结果B1:" data[1].ToString());
}
catch (Exception ex)
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
}
private void btn_Write_Click(object sender, EventArgs e)
{
if (s7_plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);
}
else
{
try
{
string[] arr = (txt_write_addr.Text.ToUpper()).Split('.');
string valuetype = arr[1].Substring(0, 3);
if (valuetype == "DBX")
{
s7_plc.Write(txt_write_addr.Text.ToUpper(), Convert.ToBoolean(txt_value.Text));
}
else if (valuetype == "DBB")
{
var value = byte.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBW")
{
var value = short.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBD")
{
//double value = double.Parse(txt_value.Text);
Double value = Double.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
catch (Exception Ex)
{
MessageBox.Show("请检查输入的“地址”或“值”是否错误!", "输入提示", MessageBoxButtons.OK);
}
}
}
private void btn_Disconnect_Click(object sender, EventArgs e)
{
s7_plc.Close();
}
private void ShowMsg(string v)
{
//txt_result.AppendText(v "\r\n");//将读取的PLC数据追加到“结果”文本框中
listBox1.Items.Add("读取结果:" v);
}
private void btn_clear_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void Mouse_down(object sender, EventArgs e)
{
}
}
}
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.Threading;
using System.Windows.Forms;
using S7.Net;
namespace S7_Test
{
public partial class Form1 : Form
{
public Plc s7_plc;
byte[] data = new byte[2];
public Form1()
{
InitializeComponent();
}
private void btn_Connect_Click(object sender, EventArgs e)
{
s7_plc = new Plc(CpuType.S71500, txt_PLC_IP.Text, 0, 1);
//开辟一个后台线程
Task task = Task.Run(() =>
{
Communicaton();
});
}
private void Communicaton()
{
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("正在连接到PLC……")
));
s7_plc.Open();
bool temp1 = true;
while (true)
{
try
{
if (s7_plc.IsConnected & temp1)
{
temp1 = false;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("PLC连接成功!")
));
}
else
{
if (!s7_plc.IsConnected)
{
temp1 = true;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add("PLC连接中断!")
));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Thread.Sleep(1000);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_Read_Click(object sender, EventArgs e)
{
if (s7_plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);//检查PLC是否连接;
}
else
{
try
{
string[] arr = (txt_read_addr.Text.ToUpper()).Split('.');//将txt_read_addr文本框中的数据转为大写字母,并用“.”拆分后存放到arr数组中
string valuetype = arr[1].Substring(0, 3);//取数组中的第二个元素的前三位,用以确认读取的PLC数据类型
//西门子PLC数据类型:DBX(位,bool)DBB(字节,byte)DBW(字,word)DBD(双字,dword)
//以下是按不同的数据类型,对PLC数据进行读取
if (valuetype == "DBX")
{
bool test1 = (bool)s7_plc.Read(txt_read_addr.Text.ToUpper());
ShowMsg(txt_read_addr.Text ":" test1.ToString());
}
else if (valuetype == "DBB")
{
//short test2 = ((ushort)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToShort();
byte test2 = Convert.ToByte(s7_plc.Read(txt_read_addr.Text.ToUpper()));
ShowMsg(txt_read_addr.Text ":" test2.ToString());
}
else if (valuetype == "DBW")
{
short test3 = ((ushort)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToShort();
ShowMsg(txt_read_addr.Text ":" test3.ToString());
}
else if (valuetype == "DBD")
{
//double test5 = ((uint)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToFloat();
double test5 = ((uint)s7_plc.Read(txt_read_addr.Text.ToUpper())).ConvertToFloat();
ShowMsg(txt_read_addr.Text ":" test5.ToString());
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
//listBox1.Items.Add("读取结果B0:" data[0].ToString());
//listBox1.Items.Add("读取结果B1:" data[1].ToString());
}
catch (Exception ex)
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
}
private void btn_Write_Click(object sender, EventArgs e)
{
if (s7_plc.IsConnected == false)
{
MessageBox.Show("未连接PLC!", "连接提示", MessageBoxButtons.OK);
}
else
{
try
{
string[] arr = (txt_write_addr.Text.ToUpper()).Split('.');
string valuetype = arr[1].Substring(0, 3);
if (valuetype == "DBX")
{
s7_plc.Write(txt_write_addr.Text.ToUpper(), Convert.ToBoolean(txt_value.Text));
}
else if (valuetype == "DBB")
{
var value = byte.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBW")
{
var value = short.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else if (valuetype == "DBD")
{
//double value = double.Parse(txt_value.Text);
Double value = Double.Parse(txt_value.Text);
s7_plc.Write(txt_write_addr.Text.ToUpper(), value);
}
else
{
MessageBox.Show("请检查地址是否输入错误!", "输入提示", MessageBoxButtons.OK);
}
}
catch (Exception Ex)
{
MessageBox.Show("请检查输入的“地址”或“值”是否错误!", "输入提示", MessageBoxButtons.OK);
}
}
}
private void btn_Disconnect_Click(object sender, EventArgs e)
{
s7_plc.Close();
}
private void ShowMsg(string v)
{
//txt_result.AppendText(v "\r\n");//将读取的PLC数据追加到“结果”文本框中
listBox1.Items.Add("读取结果:" v);
}
private void btn_clear_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void Mouse_down(object sender, EventArgs e)
{
}
}
}
代码片段和文件信息
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.Threading;
using System.Windows.Forms;
using S7.Net;
namespace S7_Test
{
public partial class Form1 : Form
{
public Plc s7_plc;
byte[] data = new byte[2];
public Form1()
{
InitializeComponent();
}
private void btn_Connect_Click(object sender EventArgs e)
{
s7_plc = new Plc(CpuType.S71500 txt_PLC_IP.Text 0 1);
//开辟一个后台线程
Task task = Task.Run(() =>
{
Communicaton();
});
}
private void Communicaton()
{
listBox1.Invoke(new Action(() =>
listBox1.Items.Add(“正在连接到PLC……“)
));
s7_plc.Open();
bool temp1 = true;
while (true)
{
try
{
if (s7_plc.IsConnected & temp1)
{
temp1 = false;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add(“PLC连接成功!“)
));
}
else
{
if (!s7_plc.IsConnected)
{
temp1 = true;
listBox1.Invoke(new Action(() =>
listBox1.Items.Add(“PLC连接中断!“)
));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Thread.Sleep(1000);
}
}
private void Form1_Load(object sender EventArgs e)
{
}
private void btn_Read_Click(object sender EventArgs e)
{
if (s7_plc.IsConnected == false)
{
MessageBox.Show(“未连接PLC!“ “连接提示“ MessageBoxButtons.OK);//检查PLC是否连接;
}
else
{
try
{
string[] arr = (txt_read_addr.Text.ToUpper()).Split(‘.‘);//将txt_read_addr文本框中的数据转为大写字母,并用“.”拆分后存放到arr数组中
string valuetype = arr[1].Substring(0 3);//取数组中的第二个元素的前三位,用以确认读取的PLC数据类型
//西门子PLC数据类型:DBX(位,bool)DBB(字节byte)DBW(字word)DBD(双字dword)
//以下是按不同的数据类型,对PLC数据进行读取
if (valuetype == “DBX“)
{
bool test1 = (bool)s7_plc.Read(txt_read_addr.Text.ToUpper());
ShowMsg(txt_read_addr.Text +
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 189 2020-11-14 15:38 S7_Test\App.config
文件 80384 2020-09-04 18:55 S7_Test\bin\Debug\S7.Net.dll
文件 14848 2021-03-12 11:32 S7_Test\bin\Debug\S7_Test.exe
文件 189 2020-11-14 15:38 S7_Test\bin\Debug\S7_Test.exe.config
文件 40448 2021-03-12 11:32 S7_Test\bin\Debug\S7_Test.pdb
文件 7380 2021-03-12 11:32 S7_Test\Form1.cs
文件 12981 2020-11-14 22:59 S7_Test\Form1.Designer.cs
文件 5817 2020-11-14 22:58 S7_Test\Form1.resx
文件 214 2020-11-14 15:39 S7_Test\obj\Debug\.NETfr
文件 1435 2020-11-14 21:45 S7_Test\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 7373 2020-11-14 15:50 S7_Test\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 0 2021-03-12 11:32 S7_Test\obj\Debug\S7_Test.csproj.CopyComplete
文件 42 2020-12-19 14:40 S7_Test\obj\Debug\S7_Test.csproj.CoreCompileInputs.cache
文件 2164 2020-12-19 15:00 S7_Test\obj\Debug\S7_Test.csproj.FileListAbsolute.txt
文件 1012 2020-11-14 23:00 S7_Test\obj\Debug\S7_Test.csproj.GenerateResource.cache
文件 4560 2021-03-12 11:32 S7_Test\obj\Debug\S7_Test.csprojAssemblyReference.cache
文件 14848 2021-03-12 11:32 S7_Test\obj\Debug\S7_Test.exe
文件 180 2020-11-14 23:00 S7_Test\obj\Debug\S7_Test.Form1.resources
文件 40448 2021-03-12 11:32 S7_Test\obj\Debug\S7_Test.pdb
文件 180 2020-11-14 15:51 S7_Test\obj\Debug\S7_Test.Properties.Resources.resources
文件 137 2020-11-14 15:50 S7_Test\packages.config
文件 519 2020-11-14 15:39 S7_Test\Program.cs
文件 1306 2020-11-14 15:39 S7_Test\Properties\AssemblyInfo.cs
文件 2846 2020-11-14 15:39 S7_Test\Properties\Resources.Designer.cs
文件 5612 2020-11-14 15:38 S7_Test\Properties\Resources.resx
文件 1092 2020-11-14 15:39 S7_Test\Properties\Settings.Designer.cs
文件 249 2020-11-14 15:38 S7_Test\Properties\Settings.settings
文件 3867 2020-11-14 15:50 S7_Test\S7_Test.csproj
目录 0 2020-11-14 15:39 S7_Test\obj\Debug\TempPE
目录 0 2020-12-19 14:39 S7_Test\bin\Debug
............此处省略8个文件信息
- 上一篇:C#实现登录注册(SQL)
- 下一篇:winform分页控件
相关资源
- c#与西门子s7-200 smart 通讯 S7TCPDLL.dll
- C# Modbus TCP通讯(S7200PLC)
- VS开发S7-1200PLC上位机软件(案例源码
- C#与西门子1500通讯59060
- 西门子网络RFID
- C#-与西门子1200-1500-S7通讯(源码+文档
- C# SHAP7与西门子PLC通讯及模拟
- C# 通过S7.NET方式实现与西门子PLC通信
- 上位机语音识别控制PLC源码(附西门
- C#调用delphi生成的dll获取CPU序列号
- 用C#实现PC与西门子PLC串行通讯
- C# 监测服务器使用情况CPU、内存、硬
- C#与西门子PLC通讯测试DOME.rar
- 西门子 S7-200 PLC 通信DLL
- S7.NET-EXE.rar
- C#用S7.net
- PLC通讯实现-C#访问三菱PLCCPU-R04-MxCom
- C#实时获取CPU温度及其它硬件信息非
- VB通过dll建立S7-200Smart通讯。亲测简易
- OPC&Snap7;.zip
- C#使用ModbusTcp协议与西门子1200PLC通讯
- CefSharp63 WPF 支持mp3、mp4、flansh、anyc
- 最全的s7.net合集
- C#和西门子1200PLC通讯.zip
- C#和西门子PLC1200 以太网通讯
- C#读取电脑CPU温度winform程序VS2012使用
- TIA openness 开发教程
- 西门子PRODAVE6中文接口类库
- cpu,内存使用,硬盘读写,网络监控
- c# 任务管理器 查看内存,CPU,进程
评论
共有 条评论