C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

这篇具有很好参考价值的文章主要介绍了C#学习笔记9:winform上位机与西门子PLC网口通信_上篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信:

文章提供整体代码、解释、测试效果截图、整体测试工程下载:

主要包含的知识有:下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境、C#与西门子S7的六大通信库了解

其中搭建虚拟的S7通信仿真环境是本文最主要的部分

目录

1、NuGet程序包(xktComm类库):

2、xktComm类库了解:

 建立/断开连接的函数:

读写函数:

3、了解西门子PLC通信:

4、C#与西门子PLC的六大通信库:

5、软件搭建虚拟S7通信仿真环境:

SIEMENS官方软件下载网址:

 PC虚拟接口设置:

发现报错及解决:

 打开S7-PLCSIM Advanced V3.0报错NetGroup Packet Filter Driver (NPF)

 安装winpcap驱动:

安装授权工具Sim_EKB_Install:

虚拟配置设置:

 软件界面解释:

6、博图(TIA Portal)软件:

軟件介紹:

SIEMENS下载地址:

网盘地址(在哔哩哔哩刷到的):

(1)PLC配置中,必须勾选允许来自远程对象的PUT/GET通信访问:

(2)如果需要访问DB块,必须将DB块属性中的优化的块访问去除:

 (3)博途项目属性设置。在博途项目树中右键单击项目名称→属性,在弹出对话框的“保护”选项卡中,勾选“块编译时支持仿真”,如下图所示:

7、用到的授权软件下载网址:

8、查阅的文章资料网址贴出:


1、NuGet程序包(xktComm类库):

在‘项目’--->‘管理NuGet程序包’里搜素 xktComm库并下载 xktComm通信类库

这样就能使用西门子PLC相关的程序函数库了,以连接PLC及读取数据等

当然这只是我在此次学习的时候选择的库,能与PLC通信的库还有其余五个,这在下文会有提到

using xktComm;

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

xktComm通信库的主要特点如下:
1.跨平台支特:

xktComm可以在Vindows、Linux、macOS等多个平台上使用,使用简单方便。


2.支特TCP/UDP协议:

xktComm支持TCP和UDP通信协议,用户可以根据自己的需求选择合适的协议。


3.线程安全:xktComm:

采用线程安全的设计,可以在多线程环境下使用。


4.高性能:xktComm:

采用非阻塞IO模型,提供高性能的通信能力。


5.支特多种数据类型:

xktComm支持多种数据类型的传输,包括字符串、整型、浮点型、结构体等。


6.支持特自定义协议:

xktComm支持自定义通信协议,用户可以根据自己的需求定制通信协议。 

2、xktComm类库了解:

 如图选中后按F12可以直接导航到定义的方法:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 建立/断开连接的函数:

 主要需要四个参数传入:

// 摘要:建立与PLC的连接
        // 参数:
        //   Ip:IP地址
        //   Cpu:CPU类型
        //   Rack:机架号
        //   Slot: 插槽号
        public bool Connect(string Ip, CPU_Type Cpu, int Rack, int Slot);
        // 摘要:
        //     断开连接
        public void DisConnect();

而CPU的枚举类型按F12导航可知:

namespace xktComm.Common
{
    public enum CPU_Type
    {
        S7200 = 0,
        S7200SMART = 1,
        S7300 = 10,
        S7400 = 20,
        S71200 = 21,
        S71500 = 22
    }
}

读写函数:

       
        //读单个变量
        public object Read(StoreType StoreType, int DB, int StartByteAdr, VarType VarType, int VarCount);

        //读一大串字节数组
        public byte[] ReadBytes(StoreType StoreType, int DB, int StartByteAdr, int count);
        //单写
        public bool Write(string variable, object value);

        //数组写入
        public bool WriteBytes(StoreType StoreType, int DB, int StartByteAdr, byte[] value);

3、了解西门子PLC通信:

在现代工业自动化系统中,可编程逻辑控制器(PLC)扮演着核心角色,负责执行复杂的逻辑操作、过程控制、机器运动控制等任务。

作为全球领先的自动化解决方案供应商,西门子提供了一系列高性能PLC,特别是其通信能力,为实现复杂的自动化控制系统和工业4.0应用提供了坚实的基础。

如果想实现C#/.NET与西门子PLC之间的通信,首先要对西门子PLC有一定的了解:

西门子PLC目前市场上主要使用的PLC型号包括:S7-200、S7-200Smart、S7-300、S7-400、S7-1200、S7-1500,

西门子PLC的主要存储区包括V区(在通信协议里V区即DB1)、M区、I区、Q区、DB区,其他的C区和T区,由于用得比较少,而且可以通过程序中转。

西门子PLC通信只需要IP地址和CPU类型即可,不需要端口号,因为S7协议的端口号是固定值102,之所以要选择CPU类型,是因为不同型号的CPU,握手报文是不一样的。

4、C#与西门子PLC的六大通信库:

一、S7.NET
S7.NET是一款开源的S7协议通信库,支持西门子S7通信。
二、Sharp7
Sharp7与S7.NET一样,是一款.NET版本的S7通信库。
三、Snap7
Snap7是一个开源的C++通信库,支持西门子S7通信。
四、Prodave
Prodave是官方提供的通信库,支持西门子PLC各种方式通信。
五、HslCommunication
HslCommunication是一个商业通信库,涵盖各种不同设备的通信。
六、xktComm
xktComm是一个工业通信库,涵盖西门子、欧姆龙、三菱、基恩士等PLC,也支持Modbus及OPC通信。

5、软件搭建虚拟S7通信仿真环境:

SIEMENS官方软件下载网址:

S7-PLCSIM Advanced

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 往下滑点这个:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

没账户就点注册(QQ邮箱可以正常注册),街道名字什么都可以随便乱填,他不会管的:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

之后他就会给你下载了:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

然后正常安装就可以了:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

由于我们貌似没有lincence,所以安装到最后一步需要选择skip lincence transfer:

最后安装成功后别忘了重启电脑:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

这时打开设置,会发现多了俩虚拟网卡:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 PC虚拟接口设置:

打开控制面板,搜素PG/PC接口设置:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

如图设置好程序访问点(找到了双击即可):

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 再将本地网卡和虚拟网卡的IP地址获取设置为自动:

管理员模式启动软件:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

发现报错及解决:

 打开S7-PLCSIM Advanced V3.0报错NetGroup Packet Filter Driver (NPF)

这个启动的报错在下面分俩部分解决:分别是驱动与密钥的问题:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 安装winpcap驱动:

以管理员模式打开cmd,输入net start npf开启npf的时候显示服务名无效,

原因是没有安装winpcap,这里需要我们自行在网络上获取这个驱动,但我这会在文章结尾打包贴出CSDN下载网址

在安装winpcap后再以管理员模式运行cmd,输入net start npf后成功打开npf。

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

安装授权工具Sim_EKB_Install:

这会在文章结尾打包贴出CSDN下载网址,Automation License Manager需要这个进行授权

然后打开这个软件,根据软件版本安装需要的密钥:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

先注意一下仿真软件版本:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 再安装密钥:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

再打开Automation License Manager查看是否有密钥:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

虚拟配置设置:

最后打开仿真设置好参数(以下为仿真已经开始正常运行的界面):

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 同时会有提示:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 软件界面解释:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

①设置仿真实例的在线访问方式,有两种:“PLCSIM”使用本地总线访问CPU实例(仅能在同一台电脑内部使用),“PLCSIM Virtual Eth. Adapter”是通过虚拟网卡,以TCP/IP协议的方式访问CPU实例。使用后者必须在安装软件时勾选NPCap(4.0版本使用,早期使用WinPCap);
②用来设置TCP/IP的通信方式,有本地和以太网两种。如果是在两台电脑之间实现仿真,需选择<以太网>;
③调整虚拟时间:通过调整该参数,可防止仿真实例因扫描周期超时而停机;
④严格的运动时间。当勾选时,将对运动控制组织块(Motion OB)缓冲区溢出进行检测,运动控制器伺服时钟与PLC周期同步,确保与硬件PLC类似的功能;若不勾选,则不检测缓冲区溢出。这种情况下仿真实例不会因缓冲区溢出而切换到停机状态,可提高仿真性能,但可能不精确;
⑤创建S7-1500仿真实例:包括实例的名称、IP地址、子网掩码、网关及CPU的型号(如下图)。当创建完成后,下次使用时,无需再次输入;
⑥PLC实例运行状态区;
⑦辅助功能区,其中“虚拟SMC卡”可打开文件夹,创建的仿真实例存放于此。若某个实例不需要时可直接删除;还可打开功能手册查看详细介绍;

6、博图(TIA Portal)软件:

軟件介紹:

[工业自动化-14]:西门子S7-15xxx编程 - 软件编程 - STEP7 TIA博途是全集成自动化软件TIA portal快速入门-CSDN博客

SIEMENS下载地址:

SIOShttps://support.industry.siemens.com/cs/document/109807109/simatic-step-7-incl-safety-s7-plcsim-and-wincc-v18-trial-download?dti=0&lc=en-US

网盘地址(在哔哩哔哩刷到的):

(1)PLC配置中,必须勾选允许来自远程对象的PUT/GET通信访问:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

(2)如果需要访问DB块,必须将DB块属性中的优化的块访问去除:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

 (3)博途项目属性设置。在博途项目树中右键单击项目名称→属性,在弹出对话框的“保护”选项卡中,勾选“块编译时支持仿真”,如下图所示:

c# plc网口通讯 connect连接状态,C#上位机学习笔记,c#,学习,笔记

7、用到的授权软件下载网址:

https://download.csdn.net/download/qq_64257614/89093770

8、查阅的文章资料网址贴出:

六大通信库,围攻西门子-dotNet工控上位机-科易网技术创新

 2021-11-23 WPF上位机 97-了解西门子PLC_modbus tcp plc wpf界面-CSDN博客

西门子PLC系列连载|No.44 西门子PLC通信知识

 百度安全验证

C#与西门子PLC通信完整实例 

https://blog.51cto.com/u_4018548/6444585

解决打开S7-PLCSIM Advanced V3.0报错NetGroup Packet Filter Driver (NPF)-CSDN博客

仿真神器——S7-PLCSIM Advanced

基于S7-PLCSIM Advanced搭建S7通信仿真环境文章来源地址https://www.toymoban.com/news/detail-850487.html

到了这里,关于C#学习笔记9:winform上位机与西门子PLC网口通信_上篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 西门子200SMART笔记

    上位机 控件库 HslControls SunnyUI 初级课程 传感器接线方式 棕色(BN) + 蓝色(BL) - 黑色(BK) 信号线 NPN型 1M(M)接 +24V PNP型 1M(M)接 0V PLC输出接线 电路图 — 梯形图 过载 停止信号 输入端接常闭 ---- 因为接了常闭 所以输入点有信号 程序中的常开点闭合 程序 中使用常开 KA ===== M / V M:25

    2024年02月06日
    浏览(66)
  • C++上位软件通过LibModbus开源库和西门子S7-1200/S7-1500/S7-200 PLC进行ModbusTcp 和ModbusRTU 通信

            一直以来上位软件比如C++等和西门子等其他品牌PLC之间的数据交换都是大家比较头疼的问题,尤其是C++上位软件程序员。传统的方法一般有OPC、Socket 等,直到LibModbus 开源库出现后这种途径对程序袁来说又有了新的选择。           1 )使用简单, 利用MUDBUS库文件

    2024年02月03日
    浏览(55)
  • C#通过S7.NET库与西门子PLC数据交互

    拉了换一个简单的界面 我新建了一个DB数据块【DB1】,右键【DB1】,点击【属性】项,【优化的块访问】默认是勾选,要想显示数据块中地址偏移量,需要把【优化的块访问】勾选取消 1、右键项目名,选择图中【管理NuGet程序包】 2、在搜索框输入【S7netplus】,我安装的是第

    2024年02月12日
    浏览(44)
  • C#通过ModbusTcp协议读写西门子PLC中的浮点数

    MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。 Modbus

    2024年02月09日
    浏览(85)
  • C#语言使用EasyModbus做客户端和西门子1511PLC通信

    之前一直使用开源库NModbus,它是一个非常优秀的Modbus通信类库,偶然机会下我发现了EasyModbus,发现EasyModbus的代码非常精炼、间接,一两行代码就可以创建一个Modbus TCP Client。 EasyModbus官网:http://easymodbustcp.net/en/ 在官网下载DLL文件,在项目中添加引用。 代码如下(示例):

    2023年04月11日
    浏览(36)
  • C#与西门子PLC1500的ModbusTcp服务器通信1--项目背景

    最近在一个120万元的项目中,涉及到modbustcp通信,我作为软件总工负责项目的通信程序开发,modbus是一个在工业自动化领域中的通信协议,可以是modbusrtu,modbusascii,modbustcp三个形式,具体来说是三个不同的数据包结构,具体的细节请读者自行熟悉,这里只讲项目中应用过程

    2024年02月12日
    浏览(50)
  • 编写C#程序实现和西门子1500PLC进行Modbus Tcp通讯仿真

    前言 本文章的主题是介绍Modbus Tcp通讯仿真,其中C#编写的程序充当客户端(Client),西门子1500PLC充当的服务器端(Server),有关Modbus Tcp协议的具体内容在此也不再赘述,大家可以自行阅读官方文档。 注:在实现其基本功能的条件下,本文的代码编写以及软件配置均简化。

    2024年02月11日
    浏览(68)
  • C#与西门子PLC1500的ModbusTcp服务器通信2--ModbusTcp协议

    Modbus TCP是近年来越来越流行的工业控制系统通信协议之一,与其他通信协议相比,Modbus TCP通信速度快、可靠性高、兼容性强、适用于模拟或数字量信号的传输,阅读本文前你必须比较熟悉Modbus协议,了解tcp网络。 Modbus TCP是一种以太网协议,它将Modbus通信协议封装在TCP/IP包内

    2024年02月11日
    浏览(46)
  • C#与西门子PLC1500的ModbusTcp服务器通信4--搭建ModbusTcp客户端

    客户端可以是一个程序或一个设备,这里我以C#WINFORM程序来实现客户机与PLC的Modbustcp服务器通信,开发环境是VS2019,.NET Framework版本是4.7.2  创建类库   编写C#各种类的转换库,该库由我提供,不用操心,文章最后提供。 项目引入这个类库  找到项目,找到引用,右键“管理

    2024年02月11日
    浏览(43)
  • C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器

     注意,这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段           找到程序块main,找到右边的指令,找到通信,找到其它,拖到MB_SERVER到程序段1中    重点看mb_hold_reg和connect参数,disconnet为false表示被动连接,意思是说服务器等待客户机来连接,而

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包