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;

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

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


2.支特TCP/UDP协议:

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


3.线程安全:xktComm:

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


4.高性能:xktComm:

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


5.支特多种数据类型:

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


6.支持特自定义协议:

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

2、xktComm类库了解:

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

 建立/断开连接的函数:

 主要需要四个参数传入:

// 摘要:建立与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

 往下滑点这个:

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

之后他就会给你下载了:

然后正常安装就可以了:

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

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

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

 PC虚拟接口设置:

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

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

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

管理员模式启动软件:

发现报错及解决:

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

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

 安装winpcap驱动:

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

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

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

安装授权工具Sim_EKB_Install

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

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

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

 再安装密钥:

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

虚拟配置设置:

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

 同时会有提示:

 软件界面解释:

①设置仿真实例的在线访问方式,有两种:“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下载地址:

SIOSicon-default.png?t=N7T8https://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通信访问:

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

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

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通信仿真环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534553.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

连接两部VR头显的type-c DP分配器方案,可以给主机设备PD反向供电与两部VR同时供电。

随着type-c的发展&#xff0c;目前越来越多的设备都在使用type-c作为连接的接口&#xff0c; 不仅是笔记本与手机在使用现在的游戏主机如&#xff08;任天堂&#xff0c;steam&#xff0c;&#xff09;或者是VR的一体机或者是VR头显也都在使用type-c作为连接接口。 type-c接口…

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件…

Linux系统本地搭建DbGate数据库并结合内网穿透实现无公网IP远程连接

文章目录 1. 安装Docker2. 使用Docker拉取DbGate镜像3. 创建并启动DbGate容器4. 本地连接测试5. 公网远程访问本地DbGate容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统中使用Docker部署DbGate数据库管理工…

基于Java的图书借阅网站, java+springboot+vue开发的图书借阅管理系统 - 毕业设计 - 课程设计

基于Java的图书借阅网站&#xff0c; javaspringbootvue开发的图书借阅管理系统 - 毕业设计 - 课程设计 文章目录 基于Java的图书借阅网站&#xff0c; javaspringbootvue开发的图书借阅管理系统 - 毕业设计 - 课程设计一、功能介绍二、代码结构三、部署运行1、后端运行步骤2、…

css anminate 加载中三个点点动态出现

期待效果&#xff1a; 核心代码&#xff1a; css3 anminate方法 //html <div>加载中<span id"dot">...</span></div>//css <style>   #dot {display: inline-block;width: 1.5em;vertical-align: bottom;overflow: hidden;animati…

HarmonyOS开发:【NFC配置流程】

一、简介 碰一碰是HarmonyOS具备的多终端业务协同技术。其依托NFC短距通信协议&#xff0c;通过碰一碰的交互方式&#xff0c;将手机和全场景设备连接起来。然后通过手机端的原子化服务能力&#xff0c;快速完成配网、远程控制的能力&#xff0c;解决了应用与设备之间接续慢、…

文献速递:深度学习肝脏肿瘤诊断---动态对比增强 MRI 上的自动肝脏肿瘤分割使用 4D 信息:基于 3D 卷积和卷积 LSTM 的深度学习模型

Title 题目 Automatic Liver Tumor Segmentation on Dynamic Contrast Enhanced MRI Using 4D Information: Deep Learning Model Based on 3D Convolution and Convolutional LSTM 动态对比增强 MRI 上的自动肝脏肿瘤分割使用 4D 信息&#xff1a;基于 3D 卷积和卷积 LSTM …

家用洗地机哪个型号推荐?盘点四款最高性价比机型

在当今快节奏的生活中&#xff0c;有娃家庭的地面打扫已经成为日常的卫生保洁&#xff0c;对于许多家庭来说&#xff0c;洗地机成为了必备的助手。然而&#xff0c;面对市场上琳琅满目的洗地机品牌和型号&#xff0c;我们通常为选择哪款好&#xff1f;哪款性价比高而犯难。因为…

css中display所有属性简单了解及使用

css中display所有属性简单了解及使用 说明display属性介绍1.外部值&#xff0c;有3种&#xff0c;如下&#xff1a;1.display: block;2.display: inline;3.display: run-in; 2.内部值&#xff0c;有7种&#xff0c;如下&#xff1a;1.display: flow;2.display: flow-root;3.dis…

SSH远程登陆系统(RedHat9)

ssh的基本用法 ssh hostname/IP # 如果没有指定用什么用户进行连接&#xff0c;默认使用当前用户登录 ssh –l username hostname/IP ssh usernamehostname ssh usernameIP在第一次连接到服务器时&#xff0c;会自动记录服务器的公钥指纹信息 如果出现密钥变更导致错误可以…

腾讯云4核8G服务器多少钱?4核8G能干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

2024年视频号小店的保证金是多少?新店缴纳多少合适?一篇详解!

大家好&#xff0c;我是电商糖果 糖果做电商已经有7年时间了&#xff0c;2022年开始做视频号小店。 现在已经经营了多家小店。 所以就有很多朋友找糖果咨询视频号小店的保证金问题&#xff0c;大家最好奇的是视频号小店保证金是多少&#xff1f;以及新店缴纳多少合适&#x…

Python初级第二次作业

一、 def reverse(num):anumt0b0cnumwhile a//10>0:if a%10>0:t1aa//10print(t)for i in range(t,-1,-1):if c%100:b0else:b(c%10)*(10**i)c//10print(b) if bnum:return Trueelse:return Falsedef isPalind(num):kreverse(num)if kTrue:print(f"{num}是回文&…

vue3+高德地图+turfjs实现等压线,色斑图(用于显示气象,环境等地图场景)

首先是turf.js(英文官网),也有中文网不过也就目录翻译了一下. 高德官网自行获得key 使用turf的isobands api实现. 数据: 需要准备geojson格式经纬度信息业务值(比如温度,高度,光照只要是number值什么数据都可以) 国内各地区geojson数据点这里获得 参考的是这位大佬写的内容 我…

振动信号频域图绘制函数(python版)

在实际应用中&#xff0c;不免会看时域图和频域图&#xff0c;封装了绘制时域图和频域图程序&#xff0c;方便调用 ## 导入包 from matplotlib import pyplot as plt from matplotlib import rcParams import numpy as np import pandas as pdconfig {"font.family"…

BTS141TC 智能低电压端电源开关 12A 60V TO-263-3

BTS141TC是英飞凌&#xff08;Infineon&#xff09;推出的一款选用SmartSIPMOS内建芯片技术的N通道垂直功率FET。它供给嵌入式维护功用&#xff0c;如逻辑电平输入输入维护(ESD)、具有锁定功用的热关断过载维护、短路维护和过电压维护等。最大电流能够经过外部电阻调节&#xf…

JL-29 雪深监测仪

安装注意事项 &#xff08;1&#xff09;将支架安装于水平地面上&#xff0c;使用紧固器件使支架牢固的固定于水平地面&#xff0c;支架的“水平安装”至关重要&#xff0c;切不可随意。 &#xff08;2&#xff09;将太阳能固定臂&#xff0c;激光头采集固定臂&#xff0c;电…

Unity 布局 HorizontalLayoutGroup 多行 换行

演示Gif&#xff1a; 现象: 子元素宽度不同&#xff0c;超出父元素后不会换行 GridLayout则是固定宽度也不能用&#xff0c; 需求 水平排版的同时&#xff0c;超出父级后换行 代码&#xff1a; 催更就展示[狗头]

云镓半导体:集成OA与ERP系统,构建“一站式”审批流

01 客户背景 云镓半导体成立于2021年&#xff0c;是一家专业从事氮化镓功率器件及解决方案的设计公司&#xff0c;现有上海、杭州、深圳三个研发及办事机构。 公司核心团队具有多年功率器件量产经验&#xff0c;具备工艺开发、器件定制、IC设计、封装测试、可靠性评估和系统应用…

计算机服务器中了faust勒索病毒怎么办?Faust勒索病毒解密工具流程步骤

对于现在的众多企业来说&#xff0c;计算机服务器成为大家工作中不可或缺的工具&#xff0c;利用计算机服务器可以更好地开展各项工作业务&#xff0c;企业计算机服务器也大大提升了企业生产运营效率。然而&#xff0c;网络技术的发展也为企业的数据安全带来威胁&#xff0c;近…