Github上有的源码,大家随便下
是针对西门子系列PLC的驱动程序, 而且这个驱动只能用于支持Profinet通信的CPU,较常用的还是S7-1200和S7-1500,整个驱动是用C#开发的。
可以通过github进行下载,也可以在微软的Visual Studio中通过NuGet直接下载库文件
C#编程
这次我通过图形界面的方式进行与PLC的通信,界面的样子是这样的
CPU type可以选择不同类型的CPU。
IP地址是连接PLC的计算机IP,如果是本机运行可以写127.0.0.1。
Rack和Slot针对S7-1200分别是0和1
点击Connect按钮即可实现连接,连接之后,可以通过Read或者Write对*的数据区进行读取和写入。
代码基本就是下面的样子
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ;
namespace WindowsFormsApplication1
{}{
public partial class FormMain : Form
{ //
private Plc plc = null;
private ErrorCode errorState = ErrorCode.NoError;
public FormMain()
{
InitializeComponent();
}
// 关闭窗口
private void FormMain_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
if (plc != null)
{
plc.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// 窗口加载
private void FormMain_Load(object sender, EventArgs e)
{
try
{
cboxCputype.DataSource = Enum.GetNames(typeof(CpuType));
cboxCputype.SelectedIndex = 3; //for 1200 CPU
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//Connect按钮按下
private void btnConnect_Click(object sender, EventArgs e)
{
try
{
CpuType cpuType = (CpuType)Enum.Parse(typeof(CpuType), cboxCputype.SelectedValue.ToString());
string ipAddress = txtIPAddress.Text;
short rack = short.Parse(txtRack.Text);
short slot = short.Parse(txtSlot.Text);
plc = new Plc(cpuType, ipAddress, rack, slot);
errorState = plc.Open();
if (errorState != ErrorCode.NoError) throw new Exception(errorState.ToString());
btnConnect.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//Disconnect按钮按下
private void btnDisconnect_Click(object sender, EventArgs e)
{
try
{
if (plc != null)
{
plc.Close();
}
btnConnect.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//Read按钮按下
private void btnRead_Click(object sender, EventArgs e)
{
try
{
if (plc != null)
{
string variable = txtMAddress.Text;
object result = plc.Read(variable);
txtPV.Text = string.Format("{0}", result.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//Write按钮按下
private void btnWrite_Click(object sender, EventArgs e)
{
try
{
if (plc != null)
{
string variable = txtMAddress.Text;
object value = txtSP.Text;
plc.Write(variable, value);
}
}
catch (Exception ex)
{
MessageBox.Show(this, ssage, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
PLC编程
PLC的编程相对很简单,简单到就没有程序,只是建了一个数据块用于测试读取和写入的功能。使用NetToPLCSim建立模拟器月PLC Sim之前的通信,这一步可以参看之前的文章,都是一样的。
这里需要注意数据块属性中需要取消勾选优化的数据块,CPU的保护属性中需要勾选允许访问通过PUT/GET
这两个地方如果没有设置,会出现通讯不上的问题
联机测试
设置好软件参数后,按照下图,选择一个需要进行读取或者写入的数据区,点击读取,写入试试看看吧,祝大家玩的开心!!
S7-300系列PLC 结构
一、S7-300系列PLC系统结构
二、S7-300系列PLC CPU结构
1、CPU 31x(比如:CPU 312, 314, 315-2 DP)
数字表示 以下 CPU 元素 作用
① 微型存储卡 (MMC) 的插槽,包括弹出器 SIMATIC 微型存储卡 (MMC) 被用作存储器模块。可以将 MMC 用作装载存储器和便携式存储介质。
MMC卡
② 接口 X2(仅用于 CPU 315-2DP) 带有 “DP” 名称后缀的 CPU 至少配有一个 DP X2 接口。
主要用于连接分布式 I/O。例如,PROFIBUS DP 允许您创建大型子网。
可将 PROFIBUS DP 接口设置为在主站或从站模式下运行,支持的传输率较高可达 12 Mbps
③ 电源连接 每个CPU都配有一个双孔电源插座。CPU 出厂时,带有螺丝接线端子的连接器即插在此插座中。
④ 接口 X1 (MPI) 所有CPU都配有一个MPI接口X1。用于 PG/OP连接或用于在 MPI子网中进行通讯的 CPU 接口。
⑤ 模式选择器开关 用于设置 CPU 操作模式。
RUN:RUN 模式,CPU 执行用户程序。
STOP:STOP 模式,CPU 不执行用户程序。
MRES:CPU 存储器复位
带有用于CPU 存储器复位的按钮功能的模式选择器开关位置。采用模式选择器开关方式的 CPU 存储器复位需要特定操作顺序
⑥ 状态和错误显示 常规状态和错误显
1、CPU 31xC(集成I/0)
数字表示 以下 CPU 元素 作用
① 状态和错误显示 CPU 31x 的常规状态和错误显示
② 微型存储卡 (MMC) 的插槽,包括弹出器 SIMATIC 微型存储卡 (MMC) 被用作存储器模块。可以将 MMC 用作装载存储器和便携式存储介质。
MMC卡
③ CPU集成I/O模块 CPU本机集成I/O,包括有数字I/O,模拟I/O及高速计数器
④ 电源连接 每个CPU都配有一个双孔电源插座。CPU 出厂时,带有螺丝接线端子的连接器即插在此插座中。
⑤ 接口 X2(PtP 或 DP) 带有 “DP” 名称后缀的 CPU 配有一个9 针 DP 接口X2。
带有 “PtP” 名称后缀的 CPU 配有一个15针PtP接口X2。
⑥ 接口 X1 (MPI) 所有CPU都配有一个MPI接口X1。用于 PG/OP连接或用于在 MPI子网中进行通讯的 CPU 接口。
⑦ 模式选择器开关 用于设置 CPU 操作模式。
RUN:RUN 模式,CPU 执行用户程序。
STOP:STOP 模式,CPU 不执行用户程序。
MRES:CPU 存储器复位,
带有用于CPU 存储器复位的按钮功能的模式选择器开关位置。采用模式选择器开关方式的 CPU 存储器复位需要特定操作顺序
3、CPU 317-2 DP
数字表示 以下 CPU 元素 作用
① 总线错误指示器 总线错误指示器
② 状态和错误显示 CPU 31x 的常规状态和错误显示
③ 微型存储卡 (MMC) 的插槽,包括弹出器 SIMATIC 微型存储卡 (MMC) 被用作存储器模块。可以将 MMC 用作装载存储器和便携式存储介质。
MMC卡
④ 模式选择器开关 用于设置 CPU 操作模式。
RUN:RUN 模式,CPU 执行用户程序。
STOP:STOP 模式,CPU 不执行用户程序。
MRES:CPU 存储器复位
带有用于CPU 存储器复位的按钮功能的模式选择器开关位置。采用模式选择器开关方式的 CPU 存储器复位需要特定操作顺序。
⑤ 电源连接 每个CPU都配有一个双孔电源插座。CPU 出厂时,带有螺丝接线端子的连接器即插在此插座中。
⑥ 接口 X1 (MPI/DP) 所有CPU都配有一个MPI接口X1。用于 PG/OP连接或用于在 MPI子网中进行通讯的 CPU 接口。
⑦ 接口 X2 (DP) 主要用于连接分布式 I/O。例如,PROFIBUS DP 允许您创建大型子网。
可将 PROFIBUS DP 接口设置为在主站或从站模式下运行,支持的传输率较高可达 12 Mbps。
、CPU 31x-2 PN/DP
数字表示 以下 CPU 元素 作用
① 总线错误指示器 总线错误指示器
② 状态和错误显示 CPU 31x 的常规状态和错误显示
③ 微型存储卡 (MMC) 的插槽,包括弹出器 SIMATIC 微型存储卡 (MMC) 被用作存储器模块。可以将 MMC 用作装载存储器和便携式存储介质。
MMC卡
④ 模式选择器开关 用于设置 CPU 操作模式。
RUN:RUN 模式,CPU 执行用户程序。
STOP:STOP 模式,CPU 不执行用户程序。
MRES:CPU 存储器复位,
带有用于CPU 存储器复位的按钮功能的模式选择器开关位置。采用模式选择器开关方式的 CPU 存储器复位需要特定操作顺序。
⑤ * 2 个接口 (X2) 的状态显示
⑥ 接口 X2 (PN) 带有 “PtP” 名称后缀的 CPU 配有一个 PtP X2 接口。
可以使用 CPU 的集成 PROFINET 接口与“工业以太网”建立连接。
可通过 MPI 或 PROFINET 组态 CPU 的集成 PROFINET 接口。
⑦ 电源连接 每个CPU都配有一个双孔电源插座。CPU 出厂时,带有螺丝接线端子的连接器即插在此插座中。
⑧ 接口 X1 (MPI/DP) 所有CPU都配有一个MPI接口X1。用于 PG/OP连接或用于在 MPI子网中进行通讯的 CPU 接口。
五、CPU 31x-2 PN/DP
数字表示 以下 CPU 元素 作用
① 总线错误指示器
② 状态和错误显示 CPU 31x 的常规状态和错误显示
③ 微型存储卡 (MMC) 的插槽,包括弹出器 SIMATIC 微型存储卡 (MMC) 被用作存储器模块。可以将 MMC 用作装载存储器和便携式存储介质。
MMC卡
④ CPU集成I/O模块 CPU本机集成数字I/O
⑤ 模式选择器开关 用于设置 CPU 操作模式。
RUN:RUN 模式,CPU 执行用户程序。
STOP:STOP 模式,CPU 不执行用户程序。
MRES:CPU 存储器复位,
带有用于CPU 存储器复位的按钮功能的模式选择器开关位置。采用模式选择器开关方式的 CPU 存储器复位需要特定操作顺序。
⑥ 电源连接 每个CPU都配有一个双孔电源插座。CPU 出厂时,带有螺丝接线端子的连接器即插在此插座中。
⑦ 接地端子板 接地端子板
⑧ 接口 X1 (MPI/DP) 所有CPU都配有一个MPI接口X1。用于 PG/OP连接或用于在 MPI子网中进行通讯的 CPU 接口。
⑨ 接口 X3 (DP/DRIVE) 带有 “PtP” 名称后缀的 CPU 配有一个 PtP X2 接口。
可以使用 CPU 的集成 PROFINET 接口与“工业以太网”建立连接。
可通过 MPI 或 PROFINET 组态 CPU 的集成 PROFINET 接口。
表 CPU 31x 的常规状态和错误显示
LED 标志 颜色
含义
SF 红色
硬件或软件错误。。
DC5V 绿色
为 CPU 和 S7-300 总线提供 5 V 电源
FRCE 黄色
LED 亮起:已激活的强制作业
LED以2Hz的频率闪烁:节点闪烁测试功能(仅用于具有 V2.2.0 或更高版本固件的 CPU)
RUN 绿色
RUN 状态下的 CPU
STARTUP 期间 LED 以2Hz的频率闪烁,在HOLD状态下以 0.5 Hz的频率闪烁。
STOP 黄色
STOP 或 HOLD 或 STARTUP 状态下的 CPU
当CPU请求存储器复位时,LED 以0.5Hz的频率闪烁,在复位期间以2Hz的频率闪烁。
表 CPU 31x 的总线错误显示(X1和X2接口的显示)
CPU LED 标志
颜色
含义
315-2 DP BF
红色
DP 接口 (X2) 处的总线错误
317-2 DP BF1
红色
接口 1 (X1) 处的总线错误
BF2
红色
接口 2 (X1) 处的总线错误
31x-2 PN/DP BF1
红色
接口 1 (X1) 处的总线错误
BF2
红色
接口 2 (X1) 处的总线错误
LINK
绿色
接口 2 (X2) 处的通讯激活
RX/TX
黄色
在接口 2 (X2) 处接收/传输数据