LabVIEW通过以太网(TCP)与S7-1200 PLC通信

LabVIEW通过以太网(TCP)与S7-1200 PLC通信

laiping    20170901

摘要:本文介绍LabView采用以太网(TCP)方式与西门子S7-1200PLC通讯

关键字:LabView、S7-1200、TCP、PLC、通信

1、概述

    西门子S7-1200 PLC支持多种协议通过以太网通讯方式,如OPC、TCP、S7、MODBUS-TCP等。TCP方式相比其它协议,具有更多的灵活性,更快的数据响应等优点,本人即介绍LabVIEW通过TCP方式与S7-1200 PLC通信。

    S7-1200 PLC的TCP通信方式,称之为“开放式用户通讯”,通过以太网发送或读取数据。

2、测试环境

2.1 硬件平台

1)       PLC:CPU 1215C  固件v4.0;

2)       PC一台;

2.2 软件平台

1)       博途 TIA V14

2)       LabVIEW 2012 或以上版本

2.3 整体思路

1)       PLC编程:配置PLC --> 添加发送和接收数据块 --> 发送数据程序 --> 接收数据程序 --> 编译下载

2)       LabVIEW编程:创建TCP连接 --> 接收或发送数据 --> 关闭连接

3、操作步骤

3.1 CPU配置

1)       打开 TIA Portal,创建项目,添加CPU为1215C。

2)       双击“设备组态”,切换到“设备视图”,点击CPU,右键选择属性。

3)       在常规栏,选择PROFINET 接口[X1]/以太网地址属性,设置CPU的IP地址,本例设置为 192.168.0.10,如下图所示:

图 1

4)       在常规栏,选择系统和时间存储器属性,启用系统存储器字节和时钟存储器字节,如下图:

图 2

5)       如果传输的数据量大,且实时性要求高,可选择通信负载属性,把由通信引起的循环负荷由默认为20%,提高到 50%。

图 3

3.2 添加数据块

1)       添加发送数据块。该数据块用于存储PLC向LabVIEW发送的数据。点击程序块/添加新块,在打开的对话框中选择数据块,输入名称,如 PlcSendData ,类型可选择全局DB。注意如果不一次性传输大量数据,可以直接使用PLC变量,单次发送一个数据,不需要创建数据块。

图 4

2)       打开该数据块PlcSendData ,添加数据,名称如 ArySendData,选择数据类型Array of Byte,即字节数组,数组长度设置为10。

图 5

3)       修改数据块属性。选中数据块PlcSendData ,右键属性,在属性栏去掉优化的块访问,以支持绝对寻址模式。

图 6

4)       添加接收数据块。该数据块用于存储LabVIEW向PLC发送的数据。数据块名称PlcRecvData,数据类型Array of Byte,操作方法同步骤1、2、3。

图 7

3.3 编写发送数据程序

1)       打开 Main 程序

2)       添加指令通信/开放式用户通信/TSEND_C到程序段1,调用选项的数据块名称采用默认。

图 8

3)       配置 TSEND_C 的通讯参数。选中 TSEND_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定连接数据选择新建系统会自动创建一个连接数据,如PLC_1_Send_DB。输入伙伴的IP地址,如192.168.0.12。由伙伴主动建立连接,PLC的端口可保留默认的2000。连接类型为TCP,连接ID采用默认值。(注:所谓伙伴即与PLC通信的另一方,可以为上位机PC、HMI等)

图 9

4)       配置 TSEND_C 的输入输出。TSEND_C在检测到参数 REQ 上升沿时执行发送作业,因此每次发送数据时,都应在REQ上产生一个脉冲,此处为了简便,调用系统时钟 Clock_10Hz(每秒10次),周期性的发送数据。参数DATA为待发送的数据,此处调用数据块 PlcSendData。注意DATA采用纯符号寻址时,发送 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。

图 10

3.4 编写接收数据程序

1)       添加指令通信/开放式用户通信/TRCV_C 到程序段2,调用选项的数据块名称采用默认。

2)       配置 TRCV_C 的通讯参数。选中 TRCV_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定连接数据选择3.3 步骤自动创建的数据,如PLC_1_Send_DB切记不要选择新建(此例的通讯连接为自动创建,因此发送与接收共用一个连接,必须保持一致才能正常通讯)。

图 11

3)       配置 TRCV_C 的输入输出。TRCV_C在检测到参数 EN_R 为1时启动接收。参数DATA为数据接收区,此处调用3.2步骤所创建的数据块PlcRecvData。注意DATA采用纯符号寻址时,接收 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。具体参数信息请查看帮助文档。

图 12

4)       为了判断PLC是否正确接收到LabVIEW所发送的数据,可通过以下两种方法测试。
a、将第3.3 的数据发送区设置为与数据接收区相同的数据块,即 PlcRecvData,使PLC把接收到数据发送回LabVIEW。
b、添加 MOVE 指令采用数据移动的方法完成此功能,如下所示:

图 13

3.5 编写LabVIEW程序

1)       创建TCP连接TCP OpenConnection。输入PLC的IP地址 192.168.0.10 和端口号2000。

图 14

2)       读取数据TCP Read。输入读取长度10(PLC程序的发送数据块长度为10个字节)。

图 15

3)       发送数据TCP Write。

图 16

4)       关闭连接TCP Close Connection。

5)       前面板如下。点击 Write,把数据WriteData写入PLC,同时PLC把该数据发回LabVIEW,通过 ReadData显示。如果ReadData数据与WriteData一致,即通信正常。

图 17

3.6 下载程序,连接测试

参考文献:

1.  SIEMENS SIMATIC S7 S7-1200 可编程控制器系统手册

附:PLC与LabVIEW源码 下载链接:

https://download.csdn.net/download/laipin7/24826129

常见问题解答

问题:通讯无法建立连接,错误代码56

解答:报错原因为上位机与PLC建立TCP连接失败,IP地址或端口号错误,请检查:

1)上位机与PLC在同一网段,并且物理连接正常(指示灯可直观判断),无IP冲突

2)上位机IP地址,与图9、图11中设置一致,即192.168.0.123

3)先开启PLC,并确认PLC处于运行模式,再运行上位机程序

  • 61
    点赞
  • 413
    收藏
    觉得还不错? 一键收藏
  • 38
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值