『7x24小时有问必答』
  要:
C#通过以太网访问西门子S7300系列的PLC的变量,实现了基本的变量读取和写入。这里是Eric.Zhou的微信公众号“常州电气工程师”。

1.  硬件版本

1.1.  西门子

1.1.1.  控制器硬件

S7-300系列,CPU314C-2 PN/DP,订货号6ES7 314-6EH04-0AB0

1.1.2.  控制软件

TIA博图软件,V15.1

1.2.  上位机

1.2.1.  普通电脑硬件

带有Windows系统的普通电脑,带有RJ45网口

1.2.2.  C#软件

Visual Studio 2019 Community(免费的)

2.  准备工作

2.1.  通讯接线与电源

CPU314C-2 PN/DP24V供电,和普通电脑之间,通过普通网线相连。  
1.png

2.2.  IP地址设定

已知PLCIP地址是192.168.0.1,将普通电脑的IP地址设定为同网段的IP地址,比如192.168.0.2
PLCIP地址设定路径为:博图-->设备和网络-->设备视图-->PROFINET接口[X2]-->以太网地址。
电脑的IP地址设定路径为:控制面板-->网络和共享中心-->以太网-->属性-->网络选项卡-->Internet协议版本4(TCP/IPv4)-->属性-->使用下面的IP地址(S)

2.3.  PLC的设置

记住PLC的机架号和插槽号,这个在C#程序中会用到。如下图,机架号为0,插槽号为2.
2.png
PLC的时钟存储器中的存储器字节,设定为0,这个设置在PLC编程中有用到。因为设定为0了,那么M0.5代表1Hz脉冲。为了方便观察,我们需要让PLC的某个输出,闪烁显示,所以需要M0.5作为1Hz脉冲。
3.png
PLC变量中,定义3个变量,M10.0定义为启动,M10.1定义为停止,M10.2定义为输出。硬件组态中,配置第一个输出地址为Q0.0,定义为指示灯。

3.  编程操作

C#中,编写一个画面,含有1方形指示灯,2个按钮。两个按钮定义分别为启动和停止。最终实现的效果是,当按下启动按钮后,指示灯闪烁;当按下停止按钮后,指示灯熄灭。这里是Eric.Zhou的微信公众号“常州电气工程师”。
4.png
3.1.  PLC的编程
博图TIA编程软件中,在OB1中,用梯形图,编写程序如下:
5.png
6.png
因为指示灯呈现闪烁状态时,更容易观察,所以在Q0.0前面,添加了M0.51Hz脉冲。

3.2.  C#的编程

C#中创建新项目,项目类型是Windows窗体应用(.Net Framework),语言为C#Windows桌面应用。
7.png
“解决方案资源管理器”中,右击新建的项目,右键快捷菜单中选中“管理NuGet程序包(N)...
8.png
9.png
S7netplus版本为0.20.0,点击安装。S7netplus是一个开源、免费的.Net库,专门用于C#与西门子PLC通讯。
C#界面,拖放两个按钮Button,拖放1个显示控件PictureBox
10.png
  
11.png
将两个按钮的Text属性,分别修改为启动和停止。
为了让指示灯,循环扫描Q点状态,我们需要向C#界面,拖放一个定时器Timer
12.png
13.png
Form1.cs中,添加语句  using S7.Net,这是一句命名空间引用指令,核心作用只有一个:让你的C#程序可以直接调用S7.Net库,实现与西门子S7系列PLC(例如S7-200S7-300S7-400S7-1200S7-1500)的以太网通讯。
public partial class Form1:Form { }中,写上Plc myplc;这句话的意思是,声明了一个“Plc通信对象”的变量,给它取名字myplc。这里的PlcS7.Net库里的一个类。myplc是我们起的变量名,以后用它来连接PLC、读写数据。
双击第一个按钮,进入启动按钮的Click响应事件。双击第二个按钮,进入停止按钮的Click响应事件。双击timer1,进入timer1的定时事件。将timer1属性的Enabled设置为True
14.png
启动按钮的属性中,事件下面,选中MouseUp,双击后,进入鼠标抬起事件。同样的方法,给停止按钮,进入鼠标抬起事件。
15.png
Form1.cs的全部代码如下:
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  CPP视频讲解程序_启停程序
{
public  partial  class  Form1  : Form
{
Plc  myplc;//只是声明变量
public  Form1()
{
InitializeComponent();
myplc =  new  Plc(CpuType.S7300,  "192.168.0.1", 0, 2);//真正的创建对象,IP地//址是PLC的IP地址,后面的0是机架号,2是插槽号,这句话是告诉电脑,这个PLC在哪里。
myplc.Open();//建立 C# 程序与 S7-300 PLC 的通信连接
}
private  void  button1_Click(object  sender, EventArgs e)
{   //按下按钮执行的事情,M10.0变成True;
myplc.Write("M10.0",true);
}
private  void  button2_Click(object  sender, EventArgs e)
{   //按下按钮执行的事情,M10.1变成True;
myplc.Write("M10.1",  true);
}
private  void  button1_MouseUp(object  sender, MouseEventArgs e)
{      //鼠标从按钮上抬起时,M10.0变为false.
myplc.Write("M10.0",  false);
}
private  void  button2_MouseUp(object  sender, MouseEventArgs e)
{      //鼠标从按钮上抬起时,M10.1变为false.
myplc.Write("M10.1",  false);
}
private  void  timer1_Tick(object  sender, EventArgs e)
{
object  a=  myplc.Read("Q0.0");//object代表任何类型的数据
if  ((bool)a)  //强制转成 真 / 假
{       //控件 pictureBox1 背景变成亮绿色(表示灯亮)
pictureBox1.BackColor = Color.Lime;
}
else  
{         // 控件 pictureBox1 背景变成浅灰色(表示灯灭)
pictureBox1.BackColor = Color.FromArgb(224, 224, 224);
}            
}
}
}

3.3.  调试运行

点击菜单里的“启动”,即可运行程序。如果程序没有Bug,我们可以看到运行效果如下:
当按下“启动”按钮时,方形指示灯闪烁,按钮实物也在闪烁。当按下“停止”按钮时,方形指示灯熄灭,按钮实物熄灭。
16.png
17.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码