基于C#利用S7.net库与西门子S7-1200PLC进行通信的具体方法.pdf

基于C#利用S7.net库与西门子S7-1200PLC进行通信的具体方法.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基于C#利用S7.net库与西门子S7-1200PLC进行通信的具体方法(利用线程循环读取)

如下图所示,本次以1214CDCDCDC型号的PLC为例进行举例说明,

要读写的数据在DB1中,在监视窗口可以看到各个变量的当前值,

在设备组态中,找到PLC的属性—常规—防护与安全—连接机制,如下图所示,勾选

“允许来自远程对象的PUT/GET通信访问”,

右击DB块进入属性界面,如下图所示,取消勾选“优化的块访问”,

这样,对DB块编译之后,DB块中的变量的地址才会显示偏移量(优化的块则没有偏

移量),

本次的举例,主要针对下图中的几种数据类型的变量:Word、Int、Real、String

打开VS2019,创建基于C#的winform项目,如下图所示,

在左侧的连接控制部分,PLCIP中需输入要连接的PLC的IP地址,端口号为102(S7

连接默认的端口号就是102,不需要更改)

右侧的DBW0、DBW2、DBD4、字符串分别读取的地址为DB1中的DB1.DBW0、

DB1.DBW2、DB1.DBW4、字符串数组Sting[10]

安装S7netplus库的方法,如下图所示,右击“引用”,选择“管理Nuget程序包”,

在弹出的有哪些信誉好的足球投注网站框中有哪些信誉好的足球投注网站S7,如下图所示,即可找到“S7netplus”,点击安装即可,

安装完成后,再次点击引用,即可发现S7.net通信库已经成功添加,如下图所示,

在FrmMain.cs中引用S7.net这个命名空间,如下图所示,

双击“连接PLC”这个按钮,开始编写这个按钮对应的连接程序,如下图所示,

首先建立一个通信对象,如下图所示,然后在“连接PLC”这个按钮下new一个PLC,

这时需要点击左侧的小箭头,选择第3个重载,括号中的参数分别为:CPU类型、IP

地址、机架号、插槽号,

再定义一个连接状态标志位,如下图所示,

最终“连接PLC”这个按钮的控制程序如下图所示,即连接目标IP地址的PLC并打开

连接,如果连接成功,则显示“建立连接成功”,否则显示“建立连接失败”;若已

经建立连接,再次连接时会提示“请勿重复连接”,

点击启动程序进行测试,如下图所示,连接目标PLC的IP地址为:192.168.1.200

(前提是电脑的IP地址要和该PLC的IP地址在同一网段内),点击“连接PLC”,

系统提示:建立连接成功,

同样,“断开连接”按钮的控制程序如下图所示,

接下来给大家演示如何读取数据:

第一种情况:单个读取

双击“单次读取”按钮,进入该按钮的控制程序,如下图所示,

其中,前面3个变量为数值,第4个变量为字符串;

前面3个变量直接在plc.read方法中输入具体要读取的地址即可(使用第一个重载);

字符串读取时需要使用第2个重载,输入要读取地址的起始地址,maxLength为字符

串的总长度,从第8个字节开始读;actuLength为字符串的实际长度,从第9个字节

开始读,

原因在于:

最后,将读取到的这4个变量分别显示在4个TEXT文本框中,

启动程序测试,如下图所示,连接PLC后,点击“单次读取”,可以看到4个变量的

数据都被成功读取并显示在对应的文本框中,

在实际的项目中,如果变量较少时,可以采取这种方式来读取变量数据,但是看起来

并不太方便,我们可以采用更优化的方法来不间断地循环读取变量,

下面给大家演示如何对通信的数据进行批量读取,还是以读取以上4个变量为例进行

说明,如下图所示,从Data1-Data4共有20个字节Byte(BYTE0-BYTE19)

我们定义一个方法,如下图所示,使用plc.ReadBytes方法来一次性读取20个字节地

址的内容,

这里给大家介绍一种利用线程来循环读取的方法,仅供参考,

停止线程,如下图所示,

在断开连接时,停止线程

开启线程,如下图所示,

数据读取,如下图所示,判断线程开启后,一直执行该方法,另外,添加100ms延时

以减轻通信负载,

数据解析:

在解决方案中添加一个类,如下图所示,命名为:Variable

您可能关注的文档

文档评论(0)

195****5059 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档